fix(projects): fix repeat routes

This commit is contained in:
Soybean 2024-03-25 03:13:53 +08:00
parent 37d20b8e0d
commit 2c543f19ec
2 changed files with 19 additions and 14 deletions

View File

@ -14,7 +14,7 @@ export const generatedRoutes: GeneratedRoute[] = [
title: '403', title: '403',
i18nKey: 'route.403', i18nKey: 'route.403',
constant: true, constant: true,
hideInMenu: true hideInMenu: true
} }
}, },
{ {
@ -25,7 +25,7 @@ hideInMenu: true
title: '404', title: '404',
i18nKey: 'route.404', i18nKey: 'route.404',
constant: true, constant: true,
hideInMenu: true hideInMenu: true
} }
}, },
{ {
@ -36,7 +36,7 @@ hideInMenu: true
title: '500', title: '500',
i18nKey: 'route.500', i18nKey: 'route.500',
constant: true, constant: true,
hideInMenu: true hideInMenu: true
} }
}, },
{ {
@ -140,7 +140,8 @@ hideInMenu: true
title: 'function_super-page', title: 'function_super-page',
i18nKey: 'route.function_super-page', i18nKey: 'route.function_super-page',
icon: 'ic:round-supervisor-account', icon: 'ic:round-supervisor-account',
order: 5 order: 5,
roles: ['R_SUPER']
} }
}, },
{ {
@ -162,8 +163,7 @@ hideInMenu: true
title: 'function_toggle-auth', title: 'function_toggle-auth',
i18nKey: 'route.function_toggle-auth', i18nKey: 'route.function_toggle-auth',
icon: 'ic:round-construction', icon: 'ic:round-construction',
order: 4, order: 4
roles: ['R_SUPER']
} }
} }
] ]
@ -188,7 +188,7 @@ hideInMenu: true
title: 'login', title: 'login',
i18nKey: 'route.login', i18nKey: 'route.login',
constant: true, constant: true,
hideInMenu: true hideInMenu: true
} }
}, },
{ {
@ -225,7 +225,7 @@ hideInMenu: true
i18nKey: 'route.manage_role', i18nKey: 'route.manage_role',
icon: 'carbon:user-role', icon: 'carbon:user-role',
order: 2, order: 2,
roles: ['R_ADMIN'] roles: ['R_SUPER']
} }
}, },
{ {

View File

@ -56,7 +56,13 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => {
const authRoutes = shallowRef<ElegantConstRoute[]>([]); const authRoutes = shallowRef<ElegantConstRoute[]>([]);
function addAuthRoutes(routes: ElegantConstRoute[]) { function addAuthRoutes(routes: ElegantConstRoute[]) {
authRoutes.value = [...authRoutes.value, ...routes]; const authRoutesMap = new Map(authRoutes.value.map(route => [route.name, route]));
routes.forEach(route => {
authRoutesMap.set(route.name, route);
});
authRoutes.value = Array.from(authRoutesMap.values());
} }
const removeRouteFns: (() => void)[] = []; const removeRouteFns: (() => void)[] = [];
@ -227,6 +233,8 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => {
const vueRoutes = getAuthVueRoutes(sortRoutes); const vueRoutes = getAuthVueRoutes(sortRoutes);
resetVueRoutes();
addRoutesToVueRouter(vueRoutes); addRoutesToVueRouter(vueRoutes);
getGlobalMenus(sortRoutes); getGlobalMenus(sortRoutes);
@ -241,10 +249,6 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => {
*/ */
function addRoutesToVueRouter(routes: RouteRecordRaw[]) { function addRoutesToVueRouter(routes: RouteRecordRaw[]) {
routes.forEach(route => { routes.forEach(route => {
if (route.name && router.hasRoute(route.name)) {
router.removeRoute(route.name);
}
const removeFn = router.addRoute(route); const removeFn = router.addRoute(route);
addRemoveRouteFn(removeFn); addRemoveRouteFn(removeFn);
}); });
@ -291,7 +295,8 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => {
} }
if (authRouteMode.value === 'static') { if (authRouteMode.value === 'static') {
return isRouteExistByRouteName(routeName, authRoutes.value); const { authRoutes: staticAuthRoutes } = createStaticRoutes();
return isRouteExistByRouteName(routeName, staticAuthRoutes);
} }
const { data } = await fetchIsRouteExist(routeName); const { data } = await fetchIsRouteExist(routeName);