index.vue 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. :selectedKeys="selectedKeys2"
  13. v-model: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 { ref, watch } from 'vue'
  30. import { useAppRouter } from '@/store/router'
  31. import SidebarItem from './SidebarItem.vue'
  32. import { useRouter } from 'vue-router'
  33. const appRouter = useAppRouter()
  34. const router = useRouter()
  35. console.log('appRouter.router.sider.route:', appRouter.router.sider.route)
  36. const collapsed = ref<boolean>(false)
  37. const selectedKeys2 = ref<string[]>([router.currentRoute.value.path])
  38. const openKeys = ref<string[]>(appRouter.router.sider!.openKeys)
  39. console.log(selectedKeys2, openKeys)
  40. </script>
  41. <style lang="less" scoped >
  42. /deep/ .ant-layout-sider-children {
  43. margin-top: -4px;
  44. }
  45. </style>