diff --git a/src/layouts/sakai-vue/AppMenu.vue b/src/layouts/sakai-vue/AppMenu.vue index 8e1e5b1..320a1c2 100644 --- a/src/layouts/sakai-vue/AppMenu.vue +++ b/src/layouts/sakai-vue/AppMenu.vue @@ -1,37 +1,75 @@ diff --git a/src/pages/router.page.vue b/src/pages/router.page.vue index 956b0cc..3676630 100644 --- a/src/pages/router.page.vue +++ b/src/pages/router.page.vue @@ -4,69 +4,6 @@ import type { MenuItem } from 'primevue/menuitem'; import { routes } from 'vue-router/auto-routes'; const router = useRouter(); -const menuItems = computed(() => { - let flatArray: MenuItem[] = createGetRoutes(router)() - .filter((route) => !route.path.includes('/:')) - .map((route) => ({ - id: route.path, - label: `${(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}/index`; - } - // 去掉最前面的 / - id = id.replace(/^\//, ''); - - let parentId = id.replace(/\/[^/]+$/, ''); - if (parentId === id) { - parentId = '_ROOT_'; - } - return { - ...item, - parentId, - }; - }); - const groupItems = flatArray.reduce( - (acc, flatArrItem) => { - if ( - !acc.some((item) => item.id === flatArrItem.parentId) && // - flatArrItem.parentId !== '_ROOT_' - ) { - let groupItemParentId = flatArrItem.parentId.replace(/\/[^/]+$/, ''); - if (groupItemParentId === flatArrItem.parentId) groupItemParentId = '_ROOT_'; - acc.push({ - id: flatArrItem.parentId, - label: `Group ${flatArrItem.parentId}`, - parentId: groupItemParentId, - }); - } - return acc; - }, - [] as Record[], - ); - console.debug(`groupItems :>> `, groupItems); - const tree = arrayToTree(flatArray.concat(groupItems), { id: 'id', parentId: 'parentId', rootId: '_ROOT_' }); - - // 递归把 children 改为 items - function _convertChildrenToItems(tree: MenuItem[]): MenuItem[] { - return tree.map((item) => { - if (item.children.length) { - item.items = _convertChildrenToItems(item.children); - } else { - item.command = (event) => { - router.push({ name: item.label as never }); - }; - } - delete item.children; - return item; - }); - } - return _convertChildrenToItems(tree); -}); - const list = [ { title: 'routes', @@ -98,22 +35,14 @@ const list = [ components: undefined, })), }, - { - title: 'menuItems', - json: menuItems.value, - }, ];