Index.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <script setup lang="ts">
  2. import { useRoute } from 'vue-router'
  3. import { onMounted, computed } from 'vue'
  4. import Main from '@/layouts/Main/index.vue'
  5. import Header from '@/layouts/Header/index.vue'
  6. import { GlobalStore } from '@/stores/index'
  7. import Logo from '@/layouts/Menu/Logo.vue'
  8. import SubMenu from '@/layouts/Menu/SubMenu.vue'
  9. const route = useRoute()
  10. const globalStore = GlobalStore()
  11. const defaultActive = computed(() => route.path)
  12. const routerList = computed(() => globalStore.expandMenuList)
  13. onMounted(() => {
  14. globalStore.SET_User_Dept_List()
  15. })
  16. </script>
  17. <template>
  18. <el-container class="home-container">
  19. <el-aside>
  20. <div class="menu" :style="{ width: globalStore.GET_isCollapse ? '65px' : '210px' }">
  21. <Logo />
  22. <el-scrollbar>
  23. <el-menu
  24. :default-active="defaultActive"
  25. :collapse="globalStore.GET_isCollapse"
  26. :collapse-transition="false"
  27. :unique-opened="true"
  28. active-text-color="#ffd04b"
  29. text-color="#fff"
  30. background-color="rgba(18, 21, 39, 0.86)"
  31. >
  32. <SubMenu :menu-list="routerList"></SubMenu>
  33. </el-menu>
  34. </el-scrollbar>
  35. </div>
  36. </el-aside>
  37. <el-container>
  38. <el-header>
  39. <Header />
  40. </el-header>
  41. <Main />
  42. </el-container>
  43. </el-container>
  44. </template>
  45. <style scoped lang="scss">
  46. .home-container {
  47. height: 100%;
  48. .scrollbar {
  49. border-right: solid 1px var(--el-menu-border-color);
  50. :deep(.el-menu) {
  51. border-right: none;
  52. }
  53. }
  54. .el-aside {
  55. width: auto;
  56. overflow: inherit;
  57. background-color: rgba(18, 21, 39);
  58. border-right: 1px solid var(--el-border-color);
  59. transition: all 0.3s ease;
  60. .menu {
  61. display: flex;
  62. flex-direction: column;
  63. height: 100%;
  64. transition: all 0.3s ease;
  65. .el-menu {
  66. overflow-x: hidden;
  67. border-right: none;
  68. }
  69. }
  70. }
  71. .el-header {
  72. display: flex;
  73. align-items: center;
  74. z-index: 10;
  75. box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.5);
  76. }
  77. }
  78. </style>