update: 优化动态路由

This commit is contained in:
xieyonghong 2023-02-22 09:08:20 +08:00
parent 4599a01de7
commit 1851833bc4
2 changed files with 16 additions and 10 deletions

View File

@ -8,7 +8,10 @@ import { useMenuStore } from 'store/menu'
const router = createRouter({
history: createWebHashHistory(),
routes: menus
routes: menus,
scrollBehavior(to, form, savedPosition) {
return savedPosition || { top: 0 }
}
})
const filterPath = [
@ -37,11 +40,11 @@ router.beforeEach((to, from, next) => {
menuData.forEach(r => {
router.addRoute('base', r)
})
router.addRoute('base',{
path: '/:pathMatch(.*)',
name: 'error',
component: () => NotFindPage
})
// router.addRoute('base',{
// path: '/:pathMatch(.*)',
// name: 'error',
// component: () => NotFindPage
// })
next({ ...to, replace: true })
})

View File

@ -1,6 +1,6 @@
import { cloneDeep } from 'lodash-es'
import { BlankLayoutPage, BasicLayoutPage } from 'components/Layout'
const pagesComponent = import.meta.glob('../views/**/index.vue', { eager: true });
const pagesComponent = import.meta.glob('../views/**/*.vue');
/**
*
@ -151,9 +151,12 @@ const resolveComponent = (name: any) => {
const importPage = pagesComponent[`../views/${name}/index.vue`];
if (!importPage) {
console.warn(`Unknown page ${name}. Is it located under Pages with a .vue extension?`)
return undefined
} else {
const res = () => importPage()
return res
}
//@ts-ignore
return !!importPage ? importPage.default : undefined
}
const findChildrenRoute = (code: string, url: string, routes: any[] = []): MenuItem[] => {
@ -225,7 +228,7 @@ export function filterAsnycRouter(asyncRouterMap: any, parentCode = '', level =
silder.children = _silderMenus
const showChildren = _route.children.some((r: any) => !r.meta.hideInMenu)
if (showChildren) {
_route.component = () => level === 1 ? BasicLayoutPage : BlankLayoutPage
_route.component = level === 1 ? BasicLayoutPage : BlankLayoutPage
_route.redirect = route.children[0].url
} else {
const myComponent = resolveComponent(route.code)
@ -239,7 +242,7 @@ export function filterAsnycRouter(asyncRouterMap: any, parentCode = '', level =
}
}
} else {
_route.component = route.component || resolveComponent(route.code) || BlankLayoutPage;
_route.component = route.component || resolveComponent(route.code) || BlankLayoutPage
}
menusData.push(_route)
silderMenus.push(silder)