diff --git a/src/layout/components/Aside/index.vue b/src/layout/components/Aside/index.vue index 8831d19..1b64175 100644 --- a/src/layout/components/Aside/index.vue +++ b/src/layout/components/Aside/index.vue @@ -2,7 +2,7 @@
- +
@@ -12,9 +12,11 @@ import Logo from "@/layout/components/Logo/index.vue"; import Menu from "@/layout/components/Menu/index.vue"; import { storeToRefs } from "pinia"; import { useThemeConfig } from "@/store/modules/theme-config"; - +import { useRoutesListStore } from "@/store/modules/route-list"; const themeStore = useThemeConfig(); const { collapsed, asideDark } = storeToRefs(themeStore); +const routerStore = useRoutesListStore(); +const { routeTree } = storeToRefs(routerStore); diff --git a/src/layout/components/Menu/index.vue b/src/layout/components/Menu/index.vue index 47cce20..d5f1152 100644 --- a/src/layout/components/Menu/index.vue +++ b/src/layout/components/Menu/index.vue @@ -10,7 +10,7 @@ :selected-keys="[currentRoute.name]" @menu-item-click="onMenuItem" > - + @@ -23,10 +23,19 @@ import { useRouter } from "vue-router"; import { useRoutingMethod } from "@/hooks/useRoutingMethod"; const router = useRouter(); const routerStore = useRoutesListStore(); -const { routeTree, currentRoute } = storeToRefs(routerStore); +const { currentRoute } = storeToRefs(routerStore); const themeStore = useThemeConfig(); const { collapsed, isAccordion, layoutType, asideDark } = storeToRefs(themeStore); +interface Props { + routeTree: Menu.MenuOptions[]; +} +// props的数据类型 +// type类型参考:https://cn.vuejs.org/guide/typescript/composition-api.html#typing-component-props +const props = withDefaults(defineProps(), { + routeTree: () => [] +}); + /** * @description 菜单点击事件 * @param {String} key @@ -41,14 +50,6 @@ const onMenuItem = (key: string) => { router.push("/404"); } }; - -// const mode = computed(() => { -// if (layoutType.value === "layoutDefaults") { -// return "vertical"; -// } else { -// return "horizontal"; -// } -// }); diff --git a/src/layout/layout-mixing/index.vue b/src/layout/layout-mixing/index.vue index 597c462..890c789 100644 --- a/src/layout/layout-mixing/index.vue +++ b/src/layout/layout-mixing/index.vue @@ -3,7 +3,7 @@
- +
@@ -19,22 +19,13 @@ - - + + + + {{ $t(`language.${item.meta.title}`) }} + @@ -52,7 +43,6 @@ import Main from "@/layout/components/Main/index.vue"; import Footer from "@/layout/components/Footer/index.vue"; import Menu from "@/layout/components/Menu/index.vue"; import HeaderRight from "@/layout/components/Header/components/header-right/index.vue"; -import MenuItem from "@/layout/components/Menu/menu-item.vue"; import MenuItemIcon from "@/layout/components/Menu/menu-item-icon.vue"; import { useRouter } from "vue-router"; import { useRoutesListStore } from "@/store/modules/route-list"; @@ -60,27 +50,47 @@ import { useRoutingMethod } from "@/hooks/useRoutingMethod"; import { storeToRefs } from "pinia"; import { useThemeConfig } from "@/store/modules/theme-config"; defineOptions({ name: "LayoutMixing" }); - -const themeStore = useThemeConfig(); -const { isFooter, collapsed, asideDark } = storeToRefs(themeStore); - +const route = useRoute(); const router = useRouter(); const routerStore = useRoutesListStore(); -const { routeTree, currentRoute } = storeToRefs(routerStore); +const themeStore = useThemeConfig(); +const { isFooter, collapsed, asideDark } = storeToRefs(themeStore); +const { routeTree } = storeToRefs(routerStore); // 折叠 const onCollapsed = () => { themeStore.setCollapsed(!collapsed.value); }; -/** - * @description 菜单点击事件 - * @param {String} key - */ + +console.log("路由信息", route); + +// 由于刷新后,路由信息丢失,所以需要重新获取 +// 混合布局的横向菜单为顶层路由下的一级菜单 +// 这里通过当前路由信息直接获取 +const aciveRoute = computed(() => { + if (route.matched.length >= 2) { + return route.matched[1].name; + } else { + return route.matched[0].name; + } +}); + +// 横向菜单点击事件 +// 将一级菜单下的children给左侧菜单 +// 如果没有children则直接自身菜单给左侧菜单 +const routeList = ref([]); const onMenuItem = (key: string) => { const { findLinearArray } = useRoutingMethod(); const find = findLinearArray(key); // 路由存在则存入并跳转,不存在则跳404 if (find) { + // 将父级的chindren给左侧树 + if (find.children && find.children.length > 0) { + routeList.value = find.children; + } else { + // 如果没有则直接将父级给左侧树,做一级兜底 + routeList.value = [find]; + } router.push(find.path); } else { router.push("/404");