index.vue 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <!-- 左侧菜单模式:left -->
  2. <template>
  3. <el-container class="le-layout-wrap--left">
  4. <el-aside class="le-layout-aside transition-all-300 aside-m" :class="isCollapse ? 'aside-m--hidden' : ''">
  5. <div class="aside-box transition-all-300" :style="{ width: isCollapse ? '65px' : '210px' }">
  6. <div class="logo">
  7. <SvgIcon class="logo-img sidebar-logo" icon-class="logo" />
  8. <!-- <img class="logo-img" src="@/assets/icons/logo.svg" alt="logo" />-->
  9. <span v-show="!isCollapse" class="text-overflow_ellipsis logo-text" :title="title">{{ title }}</span>
  10. </div>
  11. <el-scrollbar>
  12. <el-menu
  13. class="layout-menu-wrap"
  14. :router="false"
  15. :default-active="activeMenu"
  16. :collapse="isCollapse"
  17. :unique-opened="accordion"
  18. :collapse-transition="false"
  19. >
  20. <SubMenu :menu-list="menuList" />
  21. </el-menu>
  22. </el-scrollbar>
  23. </div>
  24. </el-aside>
  25. <div
  26. class="pc:hidden absolute left-0 top-0 h-full w-full bg-[rgba(0,0,0,0.2)] layout-mobile-sider-mask transition-all-300"
  27. :class="isCollapse ? 'hidden' : ''"
  28. @click.stop="setting.changeCollapse(true)"
  29. />
  30. <el-container>
  31. <el-header class="le-layout-header">
  32. <ToolBarLeft />
  33. <ToolBarRight />
  34. </el-header>
  35. <AppMain />
  36. </el-container>
  37. </el-container>
  38. </template>
  39. <script setup lang="ts" name="layoutLeft">
  40. import { computed } from 'vue'
  41. import { useRoute } from 'vue-router'
  42. import ToolBarLeft from '@/layout/components/Header/ToolBarLeft.vue'
  43. import ToolBarRight from '@/layout/components/Header/ToolBarRight.vue'
  44. import SubMenu from '@/layout/components/Menu/SubMenu.vue'
  45. import AppMain from '@/layout/components/AppMain.vue'
  46. import useStore from '@/store'
  47. const title = import.meta.env.VITE_APP_TITLE
  48. const route = useRoute()
  49. const { permission, setting } = useStore()
  50. const accordion = computed(() => setting.accordion)
  51. const isCollapse = computed(() => setting.isCollapse)
  52. const menuList = computed(() => permission.showMenuList)
  53. const activeMenu = computed(() => (route.meta.activeMenu ? route.meta.activeMenu : route.path) as string)
  54. </script>
  55. <style lang="scss">
  56. @import './index.scss';
  57. </style>