天波用户运营管理后台系统
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

157 lines
4.3KB

  1. <template>
  2. <div class="navbar">
  3. <hamburger
  4. :is-active="sidebar.opened"
  5. class="hamburger-container"
  6. @toggleClick="toggleSideBar"
  7. />
  8. <breadcrumb class="breadcrumb-container" />
  9. <!-- todo 接口暂没有名称 暂时取消显示 -->
  10. <div class="left-menu" v-show="false">
  11. <span class="current-user">当前用户:{{name}}</span>
  12. </div>
  13. <div class="right-menu">
  14. <el-dropdown class="avatar-container" trigger="click">
  15. <div class="avatar-wrapper">
  16. <!-- <img :src="avatar+'?imageView2/1/w/80/h/80'" class="user-avatar" /> -->
  17. <img :src="avatarImg" />
  18. <i class="el-icon-caret-bottom" />
  19. </div>
  20. <el-dropdown-menu slot="dropdown" class="user-dropdown">
  21. <router-link to="/">
  22. <el-dropdown-item>首页</el-dropdown-item>
  23. </router-link>
  24. <!-- <a target="_blank" href="https://panjiachen.github.io/vue-element-admin-site/#/">
  25. <el-dropdown-item>Docs</el-dropdown-item>
  26. </a>-->
  27. <el-dropdown-item divided @click.native="logout">
  28. <span style="display:block;">退出登录</span>
  29. </el-dropdown-item>
  30. </el-dropdown-menu>
  31. </el-dropdown>
  32. </div>
  33. </div>
  34. </template>
  35. <script>
  36. import { mapGetters } from "vuex";
  37. import Breadcrumb from "@/components/Breadcrumb";
  38. import Hamburger from "@/components/Hamburger";
  39. import { getToken, setToken, removeToken } from '@/utils/auth';
  40. import { resetRouter } from '@/router'
  41. export default {
  42. components: {
  43. Breadcrumb,
  44. Hamburger
  45. },
  46. computed: {
  47. ...mapGetters(["sidebar", "avatar", "name"])
  48. },
  49. data() {
  50. return {
  51. /* currentUser: this.$store.getters.name, */
  52. avatarImg: require('../../assets/telpo.png')
  53. }
  54. },
  55. methods: {
  56. toggleSideBar() {
  57. this.$store.dispatch("app/toggleSideBar");
  58. },
  59. async logout() {
  60. /* await this.$store.dispatch("user/logout"); */
  61. removeToken() // must remove token first
  62. resetRouter()
  63. this.$router.push(`/login?redirect=${this.$route.fullPath}`);
  64. }
  65. }
  66. };
  67. </script>
  68. <style lang="scss" scoped>
  69. .navbar {
  70. height: 50px;
  71. overflow: hidden;
  72. position: relative;
  73. background: #fff;
  74. width: 100%;
  75. box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
  76. .hamburger-container {
  77. float: left;
  78. line-height: 46px;
  79. cursor: pointer;
  80. transition: background 0.3s;
  81. -webkit-tap-highlight-color: transparent;
  82. &:hover {
  83. background: rgba(0, 0, 0, 0.025);
  84. }
  85. }
  86. .breadcrumb-container {
  87. line-height: 50px;
  88. float: left;
  89. }
  90. .left-menu {
  91. float: left;
  92. margin-left: 150px;
  93. height: 100%;
  94. line-height: 50px;
  95. // 当前用户
  96. .current-user {
  97. line-height: 50px;
  98. }
  99. }
  100. .right-menu {
  101. float: right;
  102. height: 100%;
  103. line-height: 50px;
  104. &:focus {
  105. outline: none;
  106. }
  107. .right-menu-item {
  108. display: inline-block;
  109. padding: 0 8px;
  110. height: 100%;
  111. font-size: 18px;
  112. color: #5a5e66;
  113. vertical-align: text-bottom;
  114. &.hover-effect {
  115. cursor: pointer;
  116. transition: background 0.3s;
  117. &:hover {
  118. background: rgba(0, 0, 0, 0.025);
  119. }
  120. }
  121. }
  122. .avatar-container {
  123. margin-right: 30px;
  124. .avatar-wrapper {
  125. margin-top: 5px;
  126. position: relative;
  127. .user-avatar {
  128. cursor: pointer;
  129. width: 40px;
  130. height: 40px;
  131. border-radius: 10px;
  132. }
  133. .el-icon-caret-bottom {
  134. cursor: pointer;
  135. position: absolute;
  136. right: -20px;
  137. top: 25px;
  138. font-size: 12px;
  139. }
  140. }
  141. }
  142. }
  143. }
  144. </style>