mirror of
https://github.com/WeBankFinTech/fes.js.git
synced 2025-04-06 03:59:53 +08:00
50 lines
1.6 KiB
JavaScript
50 lines
1.6 KiB
JavaScript
const getMetaByName = (config, name) => {
|
||
let res = {};
|
||
if (Array.isArray(config)) {
|
||
for (let i = 0; i < config.length; i++) {
|
||
const item = config[i];
|
||
if (item.meta && item.meta.name === name) {
|
||
res = item.meta;
|
||
res.path = item.path;
|
||
break;
|
||
}
|
||
if (item.children && item.children.length > 0) {
|
||
res = getMetaByName(item.children, name);
|
||
if (res.path) {
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return res;
|
||
};
|
||
|
||
const fillMenuByRoute = (menuConfig, routeConfig, dep = 0) => {
|
||
dep += 1;
|
||
if (dep > 3) {
|
||
console.warn('[plugin-layout]: 菜单层级最好不要超出三层!');
|
||
}
|
||
const arr = [];
|
||
if (Array.isArray(menuConfig) && Array.isArray(routeConfig)) {
|
||
menuConfig.forEach((menu) => {
|
||
const pageConfig = {};
|
||
if (menu.name) {
|
||
Object.assign(pageConfig, getMetaByName(routeConfig, menu.name));
|
||
}
|
||
// menu的配置优先级高,当menu存在配置时,忽略页面的配置
|
||
Object.keys(pageConfig).forEach((prop) => {
|
||
if (menu[prop] === undefined || menu[prop] === null || menu[prop] === '') {
|
||
menu[prop] = pageConfig[prop];
|
||
}
|
||
});
|
||
if (menu.children && menu.children.length > 0) {
|
||
menu.children = fillMenuByRoute(menu.children, routeConfig, dep);
|
||
}
|
||
arr.push(menu);
|
||
});
|
||
}
|
||
return arr;
|
||
};
|
||
|
||
export default fillMenuByRoute;
|