index.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <el-container id="hc-layout-box" class="hc-layout-box">
  3. <el-header class="hc-layout-header">
  4. <div class="hc-layout-header-logo" :style="`width: ${isCollapse ? '90px' : '200px'};`" @click="logoClick">
  5. <span v-if="!isCollapse" class="logo-name">{{ appLogoName }}</span>
  6. <span v-else class="logo-name sub">管理后台</span>
  7. </div>
  8. <div class="header-top-collapse-bar" @click="collapseChange">
  9. <hc-icon v-if="isCollapse" name="menu-unfold" />
  10. <hc-icon v-else name="menu-fold" />
  11. </div>
  12. <div class="header-top-menu-bar">
  13. <TopMenu />
  14. </div>
  15. <div class="header-content-bar">
  16. <hc-upload-bar />
  17. <HcRefresh />
  18. <HcColor />
  19. <HcTheme />
  20. <UserInfoBar @load="userInfoLoad" />
  21. </div>
  22. </el-header>
  23. <el-container class="hc-layout-container">
  24. <el-aside class="hc-layout-aside" :class="[isCollapse ? 'is-collapse' : '']" :width="isCollapse ? '90px' : '200px'">
  25. <MenuBar :collapse="isCollapse" :cur="menuBarKey" :datas="menuBarData" :msg-count="msgCount" @change="menuBarChange" />
  26. </el-aside>
  27. <el-main class="hc-layout-main">
  28. <div class="hc-router-menu-bar">
  29. <RouterMenu @load="routerMenuLoad" />
  30. </div>
  31. <div id="hc-main-box" class="hc-main-page">
  32. <MainBody />
  33. </div>
  34. </el-main>
  35. </el-container>
  36. </el-container>
  37. </template>
  38. <script setup>
  39. import { onMounted, ref } from 'vue'
  40. import { useAppStore } from '~src/store'
  41. import { useRouter } from 'vue-router'
  42. import { initButtons } from '~sto/app'
  43. //初始组合式
  44. const router = useRouter()
  45. const store = useAppStore()
  46. //子组件
  47. import TopMenu from './modules/TopMenu.vue'
  48. import MenuBar from './modules/MenuBar.vue'
  49. import HcRefresh from './modules/Refresh.vue'
  50. import HcColor from './modules/Color.vue'
  51. import HcTheme from './modules/Theme.vue'
  52. import UserInfoBar from './modules/UserInfoBar.vue'
  53. import RouterMenu from './modules/RouterMenu.vue'
  54. import MainBody from './modules/mainBody.vue'
  55. //logo
  56. const appLogoName = ref(store.getLogoName)
  57. //菜单数据
  58. const menuBarKey = ref('')
  59. const menuBarData = ref(store.getMenus)
  60. //渲染完成
  61. onMounted(() => {
  62. initButtons()
  63. })
  64. //路由信息
  65. const routerMenuLoad = ({ key }) => {
  66. menuBarKey.value = key
  67. }
  68. // 是否折叠
  69. const isCollapse = ref(false)
  70. const collapseChange = () => {
  71. const bool = !isCollapse.value
  72. isCollapse.value = bool
  73. store.setCollapse(bool)
  74. }
  75. //菜单被点击
  76. const menuBarChange = ({ code }) => {
  77. menuBarKey.value = code
  78. router.push({ name: code })
  79. }
  80. //消息数量
  81. const msgCount = ref({
  82. allCount: 0,
  83. taskCount: 0,
  84. messageCount: 0,
  85. messageCount_1: 0,
  86. messageCount_2: 0,
  87. messageCount_3: 0,
  88. messageCount_4: 0,
  89. messageCount_5: 0,
  90. })
  91. //用户信息
  92. const userInfoLoad = ({ user_id }) => {
  93. console.log('用户信息', user_id)
  94. }
  95. //首页
  96. const logoClick = () => {
  97. router.push({ name: 'index' })
  98. }
  99. </script>
  100. <style lang="scss">
  101. @import "./index.scss";
  102. </style>