From 0732077adf34e08fd6df4f462f933a9188be6ff7 Mon Sep 17 00:00:00 2001 From: xingyu Date: Wed, 14 Jun 2023 10:37:13 +0800 Subject: [PATCH] fix: url router --- src/hooks/web/usePermission.ts | 4 ++- src/router/helper/routeHelper.ts | 46 +++++++++----------------------- src/store/modules/permission.ts | 1 + src/store/modules/user.ts | 4 ++- 4 files changed, 20 insertions(+), 35 deletions(-) diff --git a/src/hooks/web/usePermission.ts b/src/hooks/web/usePermission.ts index 359073b..9f9eb7c 100644 --- a/src/hooks/web/usePermission.ts +++ b/src/hooks/web/usePermission.ts @@ -45,7 +45,9 @@ export function usePermission() { resetRouter() const routes = await permissionStore.buildRoutesAction() routes.forEach((route) => { - router.addRoute(route as unknown as RouteRecordRaw) + try { + router.addRoute(route as unknown as RouteRecordRaw) + } catch (e) {} }) permissionStore.setLastBuildMenuTime() closeAll() diff --git a/src/router/helper/routeHelper.ts b/src/router/helper/routeHelper.ts index 2d20fea..3ad4824 100644 --- a/src/router/helper/routeHelper.ts +++ b/src/router/helper/routeHelper.ts @@ -8,7 +8,6 @@ import { isUrl } from '@/utils/is' export type LayoutMapKey = 'LAYOUT' const IFRAME = () => import('@/views/base/iframe/FrameBlank.vue') -const URL_HASH_TAB = `__AGWE4H__HASH__TAG__PWHRG__` const LayoutMap = new Map Promise>() LayoutMap.set('LAYOUT', LAYOUT) @@ -21,18 +20,6 @@ function asyncImportRoute(routes: AppRouteRecordRaw[] | undefined) { dynamicViewsModules = dynamicViewsModules || import.meta.glob('../../views/**/*.{vue,tsx}') if (!routes) return routes.forEach((item) => { - if (/^\/?http(s)?/.test(item.component as string)) { - item.component = item.component.substring(1, item.component.length) - } - if (/^http(s)?/.test(item.component as string)) { - if (item.meta?.internalOrExternal) { - item.path = item.component - item.path = item.path.replace('#', URL_HASH_TAB) - } else { - item.meta.frameSrc = item.component - } - delete item.component - } if (!item.component && item.meta?.frameSrc) { item.component = 'IFRAME' } @@ -94,27 +81,20 @@ export function transformObjToRoute(routeList: AppRouteModul } else if (!route.children) { route.component = route.component as string } - + // if (isUrl(route.path)) { + // route.component = 'LAYOUT' + // const path = route.path + // route.path = '/' + route.name + // route.redirect = path + // } if (isUrl(route.path)) { - route.component = 'IFRAME' - const path = route.path - route.path = '/' + route.name - const childRoute = [ - { - path: path, - name: route.name, - component: 'IFRAME', - sort: route.sort, - meta: { - title: route.name, - icon: route.icon - } - } - ] - route.children = childRoute + route.component = 'IFrame' + // const path = route.path + // route.path = '/' + route.name + // route.redirect = path } const component = route.component as string - if (component && !isUrl(route.path)) { + if (component) { const meta = route.meta || {} meta.hideMenu = !route.visible meta.orderNo = route.sort @@ -125,8 +105,8 @@ export function transformObjToRoute(routeList: AppRouteModul route.component = LayoutMap.get('LAYOUT'.toUpperCase()) } else if (component.toUpperCase() === 'IFRAME') { route.component = LayoutMap.get('IFRAME'.toUpperCase()) - meta.frameSrc = route.path - route.path = '/' + route.name + // meta.frameSrc = route.path + // route.path = '/' + route.name } else { //处理顶级非目录路由 meta.single = true diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts index 2a0a172..16b984a 100644 --- a/src/store/modules/permission.ts +++ b/src/store/modules/permission.ts @@ -236,6 +236,7 @@ export const usePermissionStore = defineStore('app-permission', { routeList = routeList.filter(routeRemoveIgnoreFilter) routeList = flatMultiLevelRoutes(routeList) routes = [PAGE_NOT_FOUND_ROUTE, dashboard, ...routeList, about] + console.info(routes) break } diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index a01e84f..7cb61a3 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -141,7 +141,9 @@ export const useUserStore = defineStore('app-user', { if (!permissionStore.isDynamicAddedRoute) { const routes = await permissionStore.buildRoutesAction() routes.forEach((route) => { - router.addRoute(route as unknown as RouteRecordRaw) + try { + router.addRoute(route as unknown as RouteRecordRaw) + } catch (e) {} }) router.addRoute(PAGE_NOT_FOUND_ROUTE as unknown as RouteRecordRaw) permissionStore.setDynamicAddedRoute(true)