mirror of
https://github.com/WeBankFinTech/fes.js.git
synced 2025-08-26 08:15:45 +08:00
35 lines
954 B
JavaScript
35 lines
954 B
JavaScript
import { computed, ref } from 'vue';
|
||
// eslint-disable-next-line
|
||
import { useAccess } from '../../plugin-access/core';
|
||
|
||
if (!useAccess) {
|
||
throw new Error(
|
||
'[plugin-layout]: pLugin-layout depends on plugin-access,please install plugin-access first!'
|
||
);
|
||
}
|
||
|
||
export const hasAccessByMenuItem = (item) => {
|
||
const hasChild = item.children && item.children.length;
|
||
if (item.path && !hasChild) {
|
||
return useAccess(item.path);
|
||
}
|
||
if (hasChild) {
|
||
return computed(() => item.children.some((child) => {
|
||
const rst = hasAccessByMenuItem(child);
|
||
return rst && rst.value;
|
||
}));
|
||
}
|
||
return ref(true);
|
||
};
|
||
|
||
export const transform = menus => menus.map((menu) => {
|
||
const hasAccess = hasAccessByMenuItem(menu);
|
||
if (!hasAccess.value) {
|
||
return false;
|
||
}
|
||
if (menu.children) {
|
||
menu.children = transform(menu.children);
|
||
}
|
||
return menu;
|
||
}).filter(Boolean);
|