refactor: ♻️ 菜单路由优化

This commit is contained in:
Ray.Hao
2025-05-20 23:14:31 +08:00
parent 1914657ce1
commit 1e584e9bc5
6 changed files with 29 additions and 35 deletions

View File

@@ -8,12 +8,12 @@ const modules = import.meta.glob("../../views/**/**.vue");
const Layout = () => import("@/layout/index.vue");
export const usePermissionStore = defineStore("permission", () => {
// 储所有路由,包括静态路由和动态路由
// 储所有路由,包括静态路由和动态路由
const routes = ref<RouteRecordRaw[]>([]);
// 混合模式左侧菜单路由
const mixedLayoutLeftRoutes = ref<RouteRecordRaw[]>([]);
const sideMenuRoutes = ref<RouteRecordRaw[]>([]);
// 路由是否加载完成
const isRoutesLoaded = ref(false);
const routesLoaded = ref(false);
/**
* 获取后台动态路由数据,解析并注册到全局路由
@@ -26,7 +26,7 @@ export const usePermissionStore = defineStore("permission", () => {
.then((data) => {
const dynamicRoutes = parseDynamicRoutes(data);
routes.value = [...constantRoutes, ...dynamicRoutes];
isRoutesLoaded.value = true;
routesLoaded.value = true;
resolve(dynamicRoutes);
})
.catch((error) => {
@@ -36,14 +36,14 @@ export const usePermissionStore = defineStore("permission", () => {
}
/**
* 根据父菜单路径设置混合模式左侧菜单
* 根据父菜单路径设置侧菜单
*
* @param parentPath 父菜单的路径,用于查找对应的菜单项
*/
const setMixedLayoutLeftRoutes = (parentPath: string) => {
const updateSideMenu = (parentPath: string) => {
const matchedItem = routes.value.find((item) => item.path === parentPath);
if (matchedItem && matchedItem.children) {
mixedLayoutLeftRoutes.value = matchedItem.children;
sideMenuRoutes.value = matchedItem.children;
}
};
@@ -60,16 +60,16 @@ export const usePermissionStore = defineStore("permission", () => {
// 清空本地存储的路由和菜单数据
routes.value = [];
mixedLayoutLeftRoutes.value = [];
isRoutesLoaded.value = false;
sideMenuRoutes.value = [];
routesLoaded.value = false;
};
return {
routes,
mixedLayoutLeftRoutes,
isRoutesLoaded,
sideMenuRoutes,
routesLoaded,
generateRoutes,
setMixedLayoutLeftRoutes,
updateSideMenu,
resetRouter,
};
});