逐步替换代码
This commit is contained in:
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user