diff --git a/src/modules/base/layout/components/amenu.vue b/src/modules/base/layout/components/amenu.vue index 85b86a5..9353f5f 100644 --- a/src/modules/base/layout/components/amenu.vue +++ b/src/modules/base/layout/components/amenu.vue @@ -18,6 +18,7 @@ import { onMounted, ref } from "vue"; import { useBase } from "/$/base"; import { useCool } from "/@/cool"; +import { Menu } from "../../types"; const { router, route } = useCool(); const { menu } = useBase(); @@ -26,20 +27,20 @@ const { menu } = useBase(); const active = ref(""); // 选择导航 -function select(index: any) { +function select(index: number) { menu.setMenu(index); // 获取第一个菜单地址 - const url = menu.getPath(menu.group[index].children); + const url = menu.getPath(menu.group[index]); router.push(url); } onMounted(function () { // 设置默认 - function deep(e: any, i: number) { + function deep(e: Menu.Item, i: number) { switch (e.type) { case 0: - e.children.forEach((e: any) => { + (e.children || []).forEach((e) => { deep(e, i); }); break; @@ -55,7 +56,7 @@ onMounted(function () { } } - menu.group.forEach((e: any, i: number) => { + menu.group.forEach((e, i) => { deep(e, i); }); }); diff --git a/src/modules/base/store/menu.ts b/src/modules/base/store/menu.ts index 8409e2a..5c475e6 100644 --- a/src/modules/base/store/menu.ts +++ b/src/modules/base/store/menu.ts @@ -136,24 +136,30 @@ export const useMenuStore = defineStore("menu", function () { } // 获取菜单路径 - function getPath(list?: Menu.List) { - list = list || group.value; - + function getPath(item?: Menu.Item) { let path = ""; - function deep(arr: Menu.List) { - arr.forEach((e: Menu.Item) => { - if (e.type == 1) { - if (!path) { - path = e.path; - } - } else { - deep(e.children || []); + switch (item?.type) { + case 0: + function deep(arr: Menu.List) { + arr.forEach((e: Menu.Item) => { + if (e.type == 1) { + if (!path) { + path = e.path; + } + } else { + deep(e.children || []); + } + }); } - }); - } - deep(list); + deep(item.children || group.value || []); + break; + + case 1: + path = item.path; + break; + } return path || "/"; }