index.vue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <script setup lang="ts">
  2. import {useRoute} from "vue-router";
  3. import SidebarItem from "./SidebarItem.vue";
  4. import Logo from "./Logo.vue";
  5. import {useSettingsStore} from "@/store/modules/settings";
  6. import {usePermissionStore} from "@/store/modules/permission";
  7. import {useAppStore} from "@/store/modules/app";
  8. import {storeToRefs} from "pinia";
  9. const settingsStore = useSettingsStore();
  10. const permissionStore = usePermissionStore();
  11. const appStore = useAppStore();
  12. const currRoute = useRoute();
  13. const {sidebarLogo} = storeToRefs(settingsStore);
  14. </script>
  15. <template>
  16. <div :class="{'has-logo': sidebarLogo}">
  17. <logo v-if="sidebarLogo" :collapse="!appStore.sidebar.opened" />
  18. <el-scrollbar>
  19. <el-menu
  20. size="large"
  21. :default-active="currRoute.path"
  22. :collapse="!appStore.sidebar.opened"
  23. :unique-opened="false"
  24. :collapse-transition="false"
  25. mode="vertical">
  26. <sidebar-item
  27. v-for="route in permissionStore.routes"
  28. :key="route.path"
  29. :item="route"
  30. :base-path="route.path"
  31. :is-collapse="!appStore.sidebar.opened" />
  32. </el-menu>
  33. </el-scrollbar>
  34. </div>
  35. </template>