修复菜单:修复侧边栏空白折叠项与无可见子项目录展示异常

This commit is contained in:
wangzhibiao committed 2026-09-20 11:34:05 +08:00
1 parent 215107b132
commit dea668459d
2 files changed
+29 -4

No files matched your search

@@ -1,16 +1,16 @@
<template>
<div v-if="!item.hidden">
<div v-if="!item.hidden && isMenuVisible(item)">
<template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
<app-link v-if="onlyOneChild.meta && onlyOneChild.meta.title" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
<item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
</el-menu-item>
</app-link>
</template>
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
<el-submenu v-else-if="hasShowingChildren(item.children) && item.meta && item.meta.title" ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
<template slot="title">
<item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
<item :icon="item.meta && item.meta.icon" :title="item.meta.title" />
</template>
<sidebar-item
v-for="child in item.children"
@@ -94,6 +94,30 @@ export default {
return { path: path.resolve(this.basePath, routePath), query: query }
}
return path.resolve(this.basePath, routePath)
},
hasShowingChildren(children = []) {
if (!children || !children.length) {
return false
}
return children.some(child => !child.hidden)
},
isMenuVisible(item) {
if (!item || item.hidden) {
return false
}
if (item.children && item.children.length > 0) {
const hasVisibleChild = this.hasShowingChildren(item.children)
if (!hasVisibleChild) {
if (!item.component || item.component === 'Layout' || item.redirect === 'noRedirect') {
return false
}
}
} else {
if (!item.meta || !item.meta.title) {
return false
}
}
return true
}
}
}
+1
View File
@@ -101,6 +101,7 @@ export const constantRoutes = [
{
path: '/train',
component: Layout,
hidden: true,
redirect: '/train/auth',
children: [
{