TopNav.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <template>
  2. <el-menu
  3. class="el-menu-demo"
  4. mode="horizontal"
  5. background-color="#334157"
  6. text-color="#fff"
  7. active-text-color="#fff"
  8. >
  9. <el-button
  10. class="button_icon"
  11. :icon="collapsed ? 'el-icon-s-fold' : 'el-icon-s-unfold'"
  12. @click="doToggle()"
  13. />
  14. <el-submenu index="2" class="submenu">
  15. <template slot="title">{{ user.username }}</template>
  16. <el-menu-item index="2-1" @click="backToHome">
  17. <i class="el-icon-s-home" />
  18. <span slot="title">回到前台</span>
  19. </el-menu-item>
  20. <el-menu-item index="2-3" @click.native="goToLogout">
  21. <i class="el-icon-close" />
  22. <span slot="title">登出</span>
  23. </el-menu-item>
  24. </el-submenu>
  25. </el-menu>
  26. </template>
  27. <script>
  28. import { userMixin } from 'assets/js/mixin'
  29. import { getAuthedUser } from '@/utils/auth'
  30. export default {
  31. name: 'TopNav',
  32. mixins: [userMixin],
  33. data() {
  34. return {
  35. user: null,
  36. collapsed: false,
  37. imgshow: require('@/assets/img/logo.png'),
  38. imgsq: require('@/assets/img/logo.png')
  39. }
  40. },
  41. created() {
  42. this.user = getAuthedUser()
  43. },
  44. methods: {
  45. doToggle() {
  46. // 主要控制 collapsed 为 true 或 false
  47. this.collapsed = !this.collapsed
  48. this.$root.Bus.$emit('HandleSideMenu', this.collapsed)
  49. },
  50. backToHome() {
  51. const path = '/vod'
  52. if (this.$route.path === path) {
  53. this.$router.go(0)
  54. return
  55. }
  56. this.$router.push(path)
  57. }
  58. }
  59. }
  60. </script>
  61. <style scoped>
  62. .el-menu-vertical-demo:not(.el-menu--collapse) {
  63. border: none;
  64. }
  65. .submenu {
  66. float: right;
  67. }
  68. .button_icon {
  69. height: 60px;
  70. background-color: transparent;
  71. border: none;
  72. }
  73. </style>