From cb83d6d90d1a9df13b296a818be47fecb097c9d7 Mon Sep 17 00:00:00 2001 From: Soybean Date: Wed, 24 Apr 2024 00:47:58 +0800 Subject: [PATCH] fix(projects): fix routes data when role is change. fixed #391 --- src/store/modules/route/index.ts | 33 +++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/store/modules/route/index.ts b/src/store/modules/route/index.ts index beab22a6..d34b7297 100644 --- a/src/store/modules/route/index.ts +++ b/src/store/modules/route/index.ts @@ -52,6 +52,19 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => { routeHome.value = routeKey; } + /** constant routes */ + const constantRoutes = shallowRef([]); + + function addConstantRoutes(routes: ElegantConstRoute[]) { + const constantRoutesMap = new Map(constantRoutes.value.map(route => [route.name, route])); + + routes.forEach(route => { + constantRoutesMap.set(route.name, route); + }); + + constantRoutes.value = Array.from(constantRoutesMap.values()); + } + /** auth routes */ const authRoutes = shallowRef([]); @@ -167,18 +180,18 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => { if (isInitConstantRoute.value) return; if (authRouteMode.value === 'static') { - const { constantRoutes } = createStaticRoutes(); + const staticRoute = createStaticRoutes(); - addAuthRoutes(constantRoutes); + addConstantRoutes(staticRoute.constantRoutes); } else { const { data, error } = await fetchGetConstantRoutes(); if (!error) { - addAuthRoutes(data); + addConstantRoutes(data); } } - handleAuthRoutes(); + handleConstantAndAuthRoutes(); setIsInitConstantRoute(true); } @@ -206,7 +219,7 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => { addAuthRoutes(filteredAuthRoutes); } - handleAuthRoutes(); + handleConstantAndAuthRoutes(); setIsInitAuthRoute(true); } @@ -220,7 +233,7 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => { addAuthRoutes(routes); - handleAuthRoutes(); + handleConstantAndAuthRoutes(); setRouteHome(home); @@ -230,9 +243,11 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => { } } - /** handle auth routes */ - function handleAuthRoutes() { - const sortRoutes = sortRoutesByOrder(authRoutes.value); + /** handle constant and auth routes */ + function handleConstantAndAuthRoutes() { + const allRoutes = [...constantRoutes.value, ...authRoutes.value]; + + const sortRoutes = sortRoutesByOrder(allRoutes); const vueRoutes = getAuthVueRoutes(sortRoutes);