Navbar.vue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <template>
  2. <el-menu class="navbar" mode="horizontal">
  3. <hamburger :toggle-click="toggleSideBar" :is-active="sidebar.opened" class="hamburger-container"/>
  4. <breadcrumb />
  5. <el-dropdown class="avatar-container" trigger="click">
  6. <div class="avatar-wrapper">
  7. <img :src="avatar+'?imageView2/1/w/80/h/80'" class="user-avatar">
  8. <i class="el-icon-caret-bottom"/>
  9. </div>
  10. <el-dropdown-menu slot="dropdown" class="user-dropdown">
  11. <router-link class="inlineBlock" to="/">
  12. <el-dropdown-item>
  13. Home
  14. </el-dropdown-item>
  15. </router-link>
  16. <el-dropdown-item divided>
  17. <span style="display:block;" @click="logout">LogOut</span>
  18. </el-dropdown-item>
  19. </el-dropdown-menu>
  20. </el-dropdown>
  21. </el-menu>
  22. </template>
  23. <script>
  24. import { mapGetters } from 'vuex'
  25. import Breadcrumb from '@/components/Breadcrumb'
  26. import Hamburger from '@/components/Hamburger'
  27. export default {
  28. components: {
  29. Breadcrumb,
  30. Hamburger
  31. },
  32. computed: {
  33. ...mapGetters([
  34. 'sidebar',
  35. 'avatar'
  36. ])
  37. },
  38. methods: {
  39. toggleSideBar() {
  40. this.$store.dispatch('ToggleSideBar')
  41. },
  42. logout() {
  43. this.$store.dispatch('LogOut').then(() => {
  44. location.reload() // 为了重新实例化vue-router对象 避免bug
  45. })
  46. }
  47. }
  48. }
  49. </script>
  50. <style rel="stylesheet/scss" lang="scss" scoped>
  51. .navbar {
  52. height: 50px;
  53. line-height: 50px;
  54. border-radius: 0px !important;
  55. .hamburger-container {
  56. line-height: 58px;
  57. height: 50px;
  58. float: left;
  59. padding: 0 10px;
  60. }
  61. .screenfull {
  62. position: absolute;
  63. right: 90px;
  64. top: 16px;
  65. color: red;
  66. }
  67. .avatar-container {
  68. height: 50px;
  69. display: inline-block;
  70. position: absolute;
  71. right: 35px;
  72. .avatar-wrapper {
  73. cursor: pointer;
  74. margin-top: 5px;
  75. position: relative;
  76. line-height: initial;
  77. .user-avatar {
  78. width: 40px;
  79. height: 40px;
  80. border-radius: 10px;
  81. }
  82. .el-icon-caret-bottom {
  83. position: absolute;
  84. right: -20px;
  85. top: 25px;
  86. font-size: 12px;
  87. }
  88. }
  89. }
  90. }
  91. </style>