提交
This commit is contained in:
1 parent
5ad07c8cac
commit
a79aee2614
61 files changed
+9220
-9348
No files matched your search
@@ -115,24 +115,20 @@ export class MenuProcessor {
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据 menu code 过滤菜单(仅补齐顶级父菜单)
|
||||
* 根据 menu code 过滤菜单(保留有权限的叶子及其各级父目录)
|
||||
*/
|
||||
private filterMenuByCodes(
|
||||
menu: AppRouteRecord[],
|
||||
codes: Set<string>,
|
||||
level = 1
|
||||
): AppRouteRecord[] {
|
||||
private filterMenuByCodes(menu: AppRouteRecord[], codes: Set<string>): AppRouteRecord[] {
|
||||
return menu.reduce((acc: AppRouteRecord[], item) => {
|
||||
const rawCode = (item.meta as any)?.menuCode ?? item.name
|
||||
const code = this.normalizeMenuCode(rawCode)
|
||||
const hasSelfPermission = !!code && codes.has(code)
|
||||
const filteredChildren = item.children?.length
|
||||
? this.filterMenuByCodes(item.children, codes, level + 1)
|
||||
? this.filterMenuByCodes(item.children, codes)
|
||||
: item.children
|
||||
|
||||
const shouldKeep =
|
||||
hasSelfPermission ||
|
||||
(level === 1 && Array.isArray(filteredChildren) && filteredChildren.length > 0)
|
||||
(Array.isArray(filteredChildren) && filteredChildren.length > 0)
|
||||
|
||||
if (shouldKeep) {
|
||||
acc.push({
|
||||
|
||||
Reference in new issue
Block a user