增加悬浮窗功能

This commit is contained in:
2025-12-31 11:47:15 +08:00
parent c4066a3b45
commit cc44bdc9b1
8 changed files with 351 additions and 78 deletions

View File

@@ -16,6 +16,7 @@ export const usePermissionStore = defineStore("permission", () => {
// 路由是否加载完成
const isRoutesLoaded = ref(false);
const menus = ref<RouteVO[]>([])
/**
@@ -31,6 +32,7 @@ export const usePermissionStore = defineStore("permission", () => {
}
MenuAPI.getRoutes()
.then((data) => {
menus.value = data
if (!isTest) {
const dynamicRoutes = parseDynamicRoutes(data.filter(v => v.type == 0));
dynamicRoutes.forEach((route) => {
@@ -93,8 +95,60 @@ export const usePermissionStore = defineStore("permission", () => {
});
isRoutesLoaded.value = false;
};
function getMenuMap() {
// 初始化Map
const map = new Map();
// 定义递归函数处理菜单节点
function processMenuNode(menuNode) {
// 将当前节点存入Map
map.set(menuNode.menuId, menuNode);
// 如果有子节点且子节点数组不为空,则递归处理每个子节点
if (menuNode.children && Array.isArray(menuNode.children) && menuNode.children.length > 0) {
menuNode.children.forEach((childNode) => {
processMenuNode(childNode);
});
}
}
// 遍历根级菜单,逐个处理
if (menus.value && Array.isArray(menus.value)) {
menus.value.forEach((rootMenu) => {
processMenuNode(rootMenu);
});
}
return map;
}
function returnMenuName(menuId: number | string) {
const menu = menusIdMap.value.get(`${menuId}`);
return menu ? menu.title : '';
}
const menusIdMap = computed(() => {
const map = getMenuMap();
return map;
});
function menuJump(menuId: number | string) {
const menu = menusIdMap.value.get(`${menuId}`);
console.log('menu', menu);
if (menu) {
if (menu.name) {
router.push({ name: menu.name as string })
} else {
router.push({ path: menu.path as string })
}
}
}
return {
menuJump,
returnMenuName,
menus,
routes,
mixedLayoutLeftRoutes,
isRoutesLoaded,