Browse Source

目录调整--支持添加外链菜单--回退

master
buaixuexideshitongxue 21 hours ago
parent
commit
6465dd7ce3
  1. 20
      src/permission.ts
  2. 27
      src/router/index.ts

20
src/permission.ts

@ -40,24 +40,14 @@ router.beforeEach(async (to, from, next) => {
router.addRoute(INDEX_ROUTE) router.addRoute(INDEX_ROUTE)
routes.forEach((route: any) => { routes.forEach((route: any) => {
// 动态添加可访问路由表 // 动态添加可访问路由表
try { if (!route.children) {
if (!route) { if (route.meta.type === MenuEnum.CATALOGUE) {
return return
} }
if (!route.path || !route.name) { router.addRoute(INDEX_ROUTE_NAME, route)
return return
}
if (!route.children) {
if (route.meta?.type === MenuEnum.CATALOGUE) {
return
}
router.addRoute(INDEX_ROUTE_NAME, route)
return
}
router.addRoute(route)
} catch (error) {
console.error('添加路由失败:', error)
} }
router.addRoute(route)
}) })
next({ ...to, replace: true }) next({ ...to, replace: true })
return return

27
src/router/index.ts

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

Loading…
Cancel
Save