|
|
|
|
@ -12,21 +12,18 @@ export function getModulesKey() {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export function createRouteRecord(menus) { |
|
|
|
|
// 过滤掉null或undefined的菜单项
|
|
|
|
|
const validMenus = menus.filter(menu => menu != null) |
|
|
|
|
|
|
|
|
|
return validMenus.map(menu => { |
|
|
|
|
return menus.map(menu => { |
|
|
|
|
const routeRecord: RouteRecordRaw = { |
|
|
|
|
path: menu.paths || '/', |
|
|
|
|
name: Symbol(menu.paths || Math.random().toString()), |
|
|
|
|
path: menu.paths, |
|
|
|
|
name: Symbol(menu.paths), |
|
|
|
|
meta: { |
|
|
|
|
hidden: !menu.isShow, |
|
|
|
|
keepAlive: !!menu.isCache, |
|
|
|
|
title: menu.menuName || '', |
|
|
|
|
title: menu.menuName, |
|
|
|
|
perms: menu.perms, |
|
|
|
|
icon: menu.icon, |
|
|
|
|
type: menu.menuType, |
|
|
|
|
openOutside: menu.openOutside, |
|
|
|
|
openOutside:menu.openOutside, |
|
|
|
|
openNewPage: menu.openNewPage |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -35,13 +32,10 @@ export function createRouteRecord(menus) {
|
|
|
|
|
routeRecord.component = LAYOUT |
|
|
|
|
break |
|
|
|
|
case MenuEnum.MENU: |
|
|
|
|
routeRecord.component = loadRouteView(menu.component || '') |
|
|
|
|
break |
|
|
|
|
default: |
|
|
|
|
routeRecord.component = RouterView |
|
|
|
|
routeRecord.component = loadRouteView(menu.component) |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
if (menu.children && menu.children.length) { |
|
|
|
|
if (menu.children.length) { |
|
|
|
|
routeRecord.children = createRouteRecord(menu.children) |
|
|
|
|
} |
|
|
|
|
return routeRecord |
|
|
|
|
@ -51,13 +45,6 @@ export function createRouteRecord(menus) {
|
|
|
|
|
// 动态加载组件
|
|
|
|
|
function loadRouteView(component: string) { |
|
|
|
|
try { |
|
|
|
|
// 检查是否是URL类型的组件路径
|
|
|
|
|
if (component.startsWith('http://') || component.startsWith('https://')) { |
|
|
|
|
// 对于URL类型的组件,返回RouterView作为占位符
|
|
|
|
|
// 实际的URL打开会通过openOutside或openNewPage处理
|
|
|
|
|
return RouterView |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const key = Object.keys(modules).find((key) => { |
|
|
|
|
return key.includes(`${component}.vue`) |
|
|
|
|
}) |
|
|
|
|
|