From 865ecf915613a61b5d57c2450b2c52d30d1dff9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=A5=E6=B5=A9?= Date: Fri, 27 Dec 2024 13:09:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/a/{a.page.vue => a1.page.vue} | 2 +- src/pages/a/a2.page.vue | 7 +++++ src/pages/a/b/c.page.vue | 7 +++++ src/pages/router.page.vue | 35 +++++++++++++++++++++---- typed-router.d.ts | 4 ++- 5 files changed, 48 insertions(+), 7 deletions(-) rename src/pages/a/{a.page.vue => a1.page.vue} (72%) create mode 100644 src/pages/a/a2.page.vue create mode 100644 src/pages/a/b/c.page.vue diff --git a/src/pages/a/a.page.vue b/src/pages/a/a1.page.vue similarity index 72% rename from src/pages/a/a.page.vue rename to src/pages/a/a1.page.vue index 7f5e2c6..fb62d1f 100644 --- a/src/pages/a/a.page.vue +++ b/src/pages/a/a1.page.vue @@ -1,5 +1,5 @@ diff --git a/src/pages/a/a2.page.vue b/src/pages/a/a2.page.vue new file mode 100644 index 0000000..fb62d1f --- /dev/null +++ b/src/pages/a/a2.page.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/src/pages/a/b/c.page.vue b/src/pages/a/b/c.page.vue new file mode 100644 index 0000000..fb62d1f --- /dev/null +++ b/src/pages/a/b/c.page.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/src/pages/router.page.vue b/src/pages/router.page.vue index 3b87b9f..5a88b12 100644 --- a/src/pages/router.page.vue +++ b/src/pages/router.page.vue @@ -3,6 +3,31 @@ import { createGetRoutes, setupLayoutsResult } from '@/plugins/router'; import { routes } from 'vue-router/auto-routes'; const router = useRouter(); +const menuItems = computed(() => { + let flatArray: Record[] = createGetRoutes(router)() + .filter((route) => !route.path.includes('/:')) + .map((route) => ({ + id: route.path, + name: `${(route.name as string) || route.path}`, + })); + + flatArray = flatArray.map((item, index) => { + let id = item.id; + if (flatArray.some((item) => item.id.startsWith(`${id}/`))) { + id = `${id}/`; + } + // 去掉最前面的 / + id = id.replace(/^\//, ''); + return { + id: id, + parentId: id.replace(/\/[^/]+$/, ''), + name: item.name, + }; + }); + console.debug(`flatArray :>> `, JSON.stringify(flatArray, null, 2)); + return flatArray; +}); + const list = [ { title: 'routes', @@ -23,10 +48,6 @@ const list = [ components: undefined, })), }, - // { - // title: 'createGetRoutes(router, true)()', - // json: createGetRoutes(router, true)(), - // }, { title: 'router.getRoutes()', json: router.getRoutes().map((route) => ({ @@ -38,10 +59,14 @@ const list = [ components: undefined, })), }, + { + title: 'menuItems', + json: menuItems.value, + }, ];