import type { Menu, MenuModule } from '/@/router/types'; import type { RouteRecordNormalized } from 'vue-router'; import { useAppStoreWithOut } from '/@/store/modules/app'; import { usePermissionStore } from '/@/store/modules/permission'; import { transformMenuModule, getAllParentPath } from '/@/router/helper/menuHelper'; import { filter } from '/@/utils/helper/treeHelper'; import { isUrl } from '/@/utils/is'; import { router } from '/@/router'; import { PermissionModeEnum } from '/@/enums/appEnum'; import { pathToRegexp } from 'path-to-regexp'; const modules = import.meta.glob('./modules/**/*.ts', { eager: true }); const menuModules: MenuModule[] = []; Object.keys(modules).forEach((key) => { const mod = (modules as Recordable)[key].default || {}; const modList = Array.isArray(mod) ? [...mod] : [mod]; menuModules.push(...modList); }); // =========================== // ==========Helper=========== // =========================== const getPermissionMode = () => { const appStore = useAppStoreWithOut(); return appStore.getProjectConfig.permissionMode; }; const isBackMode = () => { return getPermissionMode() === PermissionModeEnum.BACK; }; const isRouteMappingMode = () => { return getPermissionMode() === PermissionModeEnum.ROUTE_MAPPING; }; const isRoleMode = () => { return getPermissionMode() === PermissionModeEnum.ROLE; }; const staticMenus: Menu[] = []; (() => { menuModules.sort((a, b) => { return (a.orderNo || 0) - (b.orderNo || 0); }); for (const menu of menuModules) { staticMenus.push(transformMenuModule(menu)); } })(); async function getAsyncMenus() { const permissionStore = usePermissionStore(); if (isBackMode()) { return permissionStore.getBackMenuList.filter((item) => !item.meta?.hideMenu && !item.hideMenu); } if (isRouteMappingMode()) { return permissionStore.getFrontMenuList.filter((item) => !item.hideMenu); } return staticMenus; } export const getMenus = async (): Promise