华西海圻ELN前端工程
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

240 lines
5.5 KiB

  1. <template>
  2. <div class="navbar">
  3. <div class="navbar-header">
  4. <div>
  5. <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container"
  6. @toggleClick="toggleSideBar" />
  7. <breadcrumb v-if="!topNav" id="breadcrumb-container" class="breadcrumb-container" />
  8. <top-nav v-if="topNav" id="topmenu-container" class="topmenu-container" />
  9. </div>
  10. <div>
  11. <div class="right-menu">
  12. <template v-if="device !== 'mobile'">
  13. <!-- <screenfull id="screenfull" class="right-menu-item hover-effect" />
  14. <el-tooltip content="布局大小" effect="dark" placement="bottom">
  15. <size-select id="size-select" class="right-menu-item hover-effect" />
  16. </el-tooltip> -->
  17. </template>
  18. <div class="notice-count" @click="gotoNotice"><span>{{$t('page.business.home.xx')}}</span><el-badge :value="menuCount.noticeCount" class="item"></el-badge></div>
  19. <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover">
  20. <div class="avatar-wrapper">
  21. <img src="@/assets/images/profile.jpg" class="user-avatar">
  22. <span class="user-nickname"> {{ nickName }} </span>
  23. </div>
  24. <el-dropdown-menu slot="dropdown">
  25. <router-link to="/user/profile">
  26. <el-dropdown-item>{{ $t('login.profile') }}</el-dropdown-item>
  27. </router-link>
  28. <el-dropdown-item divided @click.native="logout">
  29. <span>{{ $t('login.logOut') }}</span>
  30. </el-dropdown-item>
  31. </el-dropdown-menu>
  32. </el-dropdown>
  33. <lang-select class="set-language" style="margin-left: 10px;"/>
  34. </div>
  35. </div>
  36. </div>
  37. </div>
  38. </template>
  39. <script>
  40. import { mapGetters,mapState } from 'vuex'
  41. import Breadcrumb from '@/components/Breadcrumb'
  42. import TopNav from '@/components/TopNav'
  43. import Hamburger from '@/components/Hamburger'
  44. import Screenfull from '@/components/Screenfull'
  45. import SizeSelect from '@/components/SizeSelect'
  46. import Search from '@/components/HeaderSearch'
  47. import RuoYiGit from '@/components/RuoYi/Git'
  48. import RuoYiDoc from '@/components/RuoYi/Doc'
  49. import LangSelect from '@/components/LangSelect'
  50. export default {
  51. emits: ['setLayout'],
  52. components: {
  53. Breadcrumb,
  54. TopNav,
  55. Hamburger,
  56. Screenfull,
  57. SizeSelect,
  58. Search,
  59. RuoYiGit,
  60. RuoYiDoc,
  61. LangSelect
  62. },
  63. computed: {
  64. ...mapGetters([
  65. 'sidebar',
  66. 'avatar',
  67. 'device',
  68. 'nickName',
  69. ]),
  70. ...mapState(["menuCount"]),
  71. setting: {
  72. get() {
  73. return this.$store.state.settings.showSettings
  74. }
  75. },
  76. topNav: {
  77. get() {
  78. return this.$store.state.settings.topNav
  79. }
  80. }
  81. },
  82. methods: {
  83. toggleSideBar() {
  84. this.$store.dispatch('app/toggleSideBar')
  85. },
  86. setLayout(event) {
  87. this.$emit('setLayout')
  88. },
  89. logout() {
  90. this.$confirm(this.$t('system.logOut'), this.$t('system.tip'), {
  91. confirmButtonText: this.$t('form.confirm'),
  92. cancelButtonText: this.$t('form.cancel'),
  93. type: 'warning'
  94. }).then(() => {
  95. this.$store.dispatch('LogOut').then(() => {
  96. location.href = '/user/work'
  97. })
  98. }).catch(() => { })
  99. },
  100. gotoNotice(){
  101. this.$router.push('/user/work')
  102. }
  103. }
  104. }
  105. </script>
  106. <style lang="scss" scoped>
  107. .navbar {
  108. // height: 50px;
  109. overflow: hidden;
  110. position: relative;
  111. background: #fff;
  112. // box-shadow: 0 1px 4px rgba(0,21,41,.08);
  113. .navbar-header {
  114. background-image: url("../../assets/images/header.png");
  115. background-size: cover;
  116. background-repeat: no-repeat;
  117. height: 50px;
  118. line-height: 50px;
  119. display: flex;
  120. justify-content: space-between;
  121. }
  122. .set-language {
  123. float: right;
  124. height: 100%;
  125. line-height: 50px;
  126. right: 10px;
  127. }
  128. .hamburger-container {
  129. line-height: 46px;
  130. height: 100%;
  131. float: left;
  132. cursor: pointer;
  133. transition: background .3s;
  134. -webkit-tap-highlight-color: transparent;
  135. &:hover {
  136. background: rgba(0, 0, 0, .025)
  137. }
  138. }
  139. .breadcrumb-container {
  140. float: left;
  141. }
  142. .topmenu-container {
  143. position: absolute;
  144. left: 50px;
  145. }
  146. .errLog-container {
  147. display: inline-block;
  148. vertical-align: top;
  149. }
  150. .right-menu {
  151. float: right;
  152. height: 100%;
  153. line-height: 50px;
  154. padding-right: 20px;
  155. display: flex;
  156. align-items: center;
  157. &:focus {
  158. outline: none;
  159. }
  160. .notice-count{
  161. margin-right: 10px;
  162. cursor: pointer;
  163. }
  164. .right-menu-item {
  165. display: inline-block;
  166. padding: 0 8px;
  167. height: 100%;
  168. font-size: 18px;
  169. color: #5a5e66;
  170. vertical-align: text-bottom;
  171. &.hover-effect {
  172. cursor: pointer;
  173. transition: background .3s;
  174. &:hover {
  175. background: rgba(0, 0, 0, .025)
  176. }
  177. }
  178. }
  179. .avatar-container {
  180. margin-right: 0px;
  181. padding-right: 0px;
  182. .avatar-wrapper {
  183. margin-top: 10px;
  184. right: 8px;
  185. position: relative;
  186. .user-avatar {
  187. cursor: pointer;
  188. width: 30px;
  189. height: 30px;
  190. border-radius: 50%;
  191. }
  192. .user-nickname {
  193. position: relative;
  194. bottom: 10px;
  195. left: 2px;
  196. font-size: 14px;
  197. font-weight: bold;
  198. }
  199. .el-icon-caret-bottom {
  200. cursor: pointer;
  201. position: absolute;
  202. right: -20px;
  203. top: 25px;
  204. font-size: 12px;
  205. }
  206. }
  207. }
  208. }
  209. }
  210. </style>