index.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <template>
  2. <a-row>
  3. <a-col>
  4. <a-layout-sider
  5. :trigger="null"
  6. v-model:collapsed="collapsed"
  7. collapsible
  8. style="background: #fff; height: 95%;"
  9. breakpoint="lg"
  10. >
  11. <a-menu
  12. v-model:selectedKeys="selectedKeys2"
  13. :openKeys="openKeys"
  14. mode="inline"
  15. :style="{ height: '100%', borderRight: 0 }"
  16. >
  17. <sidebar-item
  18. :item="route"
  19. v-for="route in appRouter.router.sider.route"
  20. :key="route.path"
  21. :base-path="route.path"
  22. />
  23. </a-menu>
  24. </a-layout-sider>
  25. </a-col>
  26. </a-row>
  27. </template>
  28. <script lang="ts" setup >
  29. import { onMounted, ref, watch } from 'vue'
  30. import { useAppRouter } from '@/store/router'
  31. import SidebarItem from './SidebarItem.vue'
  32. import { useRouter, useRoute } from 'vue-router'
  33. const appRouter = useAppRouter()
  34. const route = useRoute()
  35. const collapsed = ref<boolean>(false)
  36. const selectedKeys2 = ref<string[]>([])
  37. const openKeys = ref<string[]>(appRouter.router.sider!.openKeys)
  38. // 如果是产品类型这种 需要找到父节点 设置openKeys
  39. // 刷新后也需要打开openKeys
  40. onMounted(() => {
  41. selectedKeys2.value = [route.path]
  42. })
  43. </script>
  44. <style lang="less" scoped >
  45. /deep/ .ant-layout-sider-children {
  46. margin-top: -4px;
  47. }
  48. </style>