|
|
@@ -60,12 +60,26 @@ function filterMenuRouter(router: RouteRecordRaw[]) {
|
|
|
return accessedRouters
|
|
|
}
|
|
|
|
|
|
+const keepAliveRouter: any = []
|
|
|
+function filterKeepAliveRouter(router: RouteRecordRaw[]) {
|
|
|
+ router.forEach(item => {
|
|
|
+ if (item.meta?.keepAlive || item.children?.some(child => child.meta?.keepAlive)) {
|
|
|
+ keepAliveRouter.push(item.meta?.viewName)
|
|
|
+ }
|
|
|
+ if (item.children?.length) {
|
|
|
+ filterKeepAliveRouter(item.children)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return keepAliveRouter
|
|
|
+}
|
|
|
+
|
|
|
export const useRouterStore = defineStore({
|
|
|
id: 'router',
|
|
|
state: () => ({
|
|
|
menuRouter: <any>[],
|
|
|
asyncRouter: <any>[],
|
|
|
- dynamicRouter: <any>[]
|
|
|
+ dynamicRouter: <any>[],
|
|
|
+ keepAliveRouter: <any>[]
|
|
|
}),
|
|
|
actions: {
|
|
|
generatorRouter(role?: any[]): Promise<RouteRecordRaw[]> {
|
|
|
@@ -73,6 +87,8 @@ export const useRouterStore = defineStore({
|
|
|
this.asyncRouter = role ? filterAsyncRouter(asyncRouter, role) : asyncRouter
|
|
|
// this.asyncRouter = generatorDynamicRouter(this.dynamicRouter)
|
|
|
this.menuRouter = filterMenuRouter(this.asyncRouter)
|
|
|
+ this.keepAliveRouter = filterKeepAliveRouter(this.menuRouter)
|
|
|
+ console.log(this.keepAliveRouter)
|
|
|
resolve(this.asyncRouter)
|
|
|
})
|
|
|
},
|