import type { Menu, MenuModule } from '/@/router/types'; import type { RouteRecordNormalized } from 'vue-router'; import { appStore } from '/@/store/modules/app'; import { permissionStore } from '/@/store/modules/permission'; import { transformMenuModule, getAllParentPath } from '/@/router/helper/menuHelper'; import { filter } from '/@/utils/helper/treeHelper'; import router from '/@/router'; import { PermissionModeEnum } from '/@/enums/appEnum'; import { pathToRegexp } from 'path-to-regexp'; import modules from 'globby!/@/router/menus/modules/**/*.@(ts)'; const reg = /(((https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/; const menuModules: MenuModule[] = []; Object.keys(modules).forEach((key) => { const moduleItem = modules[key]; const menuModule = Array.isArray(moduleItem) ? [...moduleItem] : [moduleItem]; menuModules.push(...menuModule); }); // =========================== // ==========Helper=========== // =========================== const isBackMode = () => { return appStore.getProjectConfig.permissionMode === PermissionModeEnum.BACK; }; 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() { // 前端角色控制菜单 直接取菜单文件 return !isBackMode() ? staticMenus : permissionStore.getBackMenuListState; } // 获取菜单 树级 export const getMenus = async (): Promise