逐步替换代码

This commit is contained in:
2026-04-01 00:03:39 +08:00
parent c83e3a293b
commit b870115444
58 changed files with 828 additions and 1083 deletions
+20 -24
View File
@@ -29,8 +29,8 @@
<!-- 菜单标题 -->
<h3>{{ isCollapse ? "管理" : asideTitle }}</h3>
<!-- 无模块时显示提示 -->
<el-menu-item v-if="!currentModule" index="/home">
<!-- 无模块时显示提示在首页 /home 时不显示避免重复 -->
<el-menu-item v-if="!currentModule && route.path !== '/home'" index="/home">
<i class="fa-solid fa-house"></i>
<template #title>返回首页</template>
</el-menu-item>
@@ -245,29 +245,22 @@ const currentModule = computed(() => {
});
const displayMenus = computed(() => {
if (!currentModule.value) {
return [];
}
const currentPath = route.path;
// 访问“父级 index 页面”时不展开子菜单;只有进入“子页面”后才展示 children。
// 例如:/apps/cms/products(父级)时不展示其 children(如 /apps/cms/products/types)。
if (currentPath === currentModule.value.path) {
return [];
}
return currentModule.value.children || [];
// 侧边栏始终展示完整菜单树,不随当前路由切换为“子菜单视图”
return list.value;
});
const asideTitle = computed(() => {
if (isCollapse.value) return "管理";
if (!currentModule.value) return "菜单";
return displayMenus.value.length > 0 ? (currentModule.value.title || "子菜单") : "子菜单";
return "菜单";
});
const processMenus = (menus) => {
return menus
.filter((menu) => {
// isPlatform 控制“平台端是否展示”,0 表示不在平台端显示
if (menu.isPlatform !== undefined && Number(menu.isPlatform) === 0) {
return false;
}
// is_visible 控制“侧边栏是否展示”,不参与动态路由与缓存层面的过滤
if (menu.is_visible !== undefined && Number(menu.is_visible) === 0) {
return false;
@@ -298,16 +291,19 @@ const list = computed(() => {
const allMenus = processMenus(menuData);
const sortMenusRecursively = (menus) => {
// 先对当前层级排序
menus.sort((a, b) => {
const orderA = Number(a.order) ?? 999999;
const orderB = Number(b.order) ?? 999999;
if (orderA === orderB) {
return (a.id || 0) - (b.id || 0);
}
return orderA - orderB;
});
// 再递归对子级排序
menus.forEach((menu) => {
if (menu.children && menu.children.length > 0) {
menu.children.sort((a, b) => {
const orderA = Number(a.order) ?? 999999;
const orderB = Number(b.order) ?? 999999;
if (orderA === orderB) {
return (a.id || 0) - (b.id || 0);
}
return orderA - orderB;
});
sortMenusRecursively(menu.children);
}
});