index.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <template>
  2. <div :class="{'tjm_navbar_container': true, 'layoutStyleHorizontal': layoutStyle == 'horizontal'}">
  3. <div class="tjm_navbar_left" v-if="layoutStyle == 'vertical'">
  4. <el-icon
  5. class="tjm_collapse_icon"
  6. size="28"
  7. @click="collapse = !collapse"
  8. >
  9. <tjm-icon-ep-fold v-if="!collapse" />
  10. <tjm-icon-ep-expand v-else />
  11. </el-icon>
  12. &nbsp; &nbsp; &nbsp;
  13. <Breadcrumb />
  14. </div>
  15. <div class="tjm_navbar_left" v-else>
  16. <tjm-side-bar />
  17. </div>
  18. <div class="tjm_navbar_right">
  19. <div class="tjm_tools_container">
  20. <full-screen-btn></full-screen-btn>
  21. <menu-search></menu-search>
  22. <!-- <layout-style-set></layout-style-set> -->
  23. </div>
  24. <div class="tjm_user_container">
  25. <el-dropdown>
  26. <el-avatar :size="36" :src="avatar" />
  27. <template #dropdown>
  28. <el-dropdown-menu>
  29. <el-dropdown-item @click='goUserInfo'>个人信息</el-dropdown-item>
  30. <el-dropdown-item @click="logout">退出登录</el-dropdown-item>
  31. </el-dropdown-menu>
  32. </template>
  33. </el-dropdown>
  34. </div>
  35. </div>
  36. </div>
  37. </template>
  38. <script setup>
  39. import TjmSideBar from '../SideBar/indexH.vue'
  40. import Breadcrumb from './components/Breadcrumb.vue'
  41. import FullScreenBtn from '@/layout/components/NavBar/components/FullScreenBtn.vue'
  42. import MenuSearch from '@/layout/components/NavBar/components/MenuSearch.vue'
  43. import LayoutStyleSet from '@/layout/components/NavBar/components/LayoutStyleSet.vue'
  44. import { useSettingStore } from '@/store/settings.js'
  45. const settingStore = useSettingStore()
  46. const { collapse, layoutStyle } = storeToRefs(settingStore)
  47. import { useUserStore } from '@/store/user.js'
  48. const router = useRouter()
  49. const avatar = ref(useUserStore().userInfo.avatar || "https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png");
  50. function goUserInfo() {
  51. router.push('/userInfo')
  52. }
  53. const logout = () => {
  54. ElMessageBox.confirm('确定注销并退出系统吗?', '提示', {
  55. confirmButtonText: '确定',
  56. cancelButtonText: '取消',
  57. type: 'warning'
  58. }).then(() => {
  59. useUserStore().logOut().then(() => {
  60. location.href = '/index'
  61. })
  62. }).catch(() => { })
  63. }
  64. </script>
  65. <style lang="scss" scoped>
  66. .tjm_navbar_container {
  67. position: relative;
  68. height: $base-navbar-height;
  69. overflow: hidden;
  70. user-select: none;
  71. box-shadow: $base-box-shadow;
  72. background: $base-color-white;
  73. padding-right: $base-padding;
  74. padding-left: $base-padding;
  75. display: flex;
  76. align-items: center;
  77. justify-content: space-between;
  78. .tjm_navbar_left {
  79. display: flex;
  80. align-items: center;
  81. flex: 1;
  82. }
  83. .tjm_navbar_right {
  84. padding-left: 80px;
  85. display: flex;
  86. align-items: center;
  87. .tjm_tools_container {
  88. display: flex;
  89. align-items: center;
  90. margin-right: 20px;
  91. .tjm_tools_icon {
  92. margin-left: 10px;
  93. cursor: pointer;
  94. }
  95. }
  96. .tjm_user_container {
  97. cursor: pointer;
  98. }
  99. }
  100. }
  101. .layoutStyleHorizontal {
  102. background: #283a5e;
  103. }
  104. </style>