/*
|
* @Author: your name
|
* @Date: 2021-09-13 14:28:39
|
* @LastEditTime: 2023-08-24 17:30:55
|
* @LastEditors: zhaoxiaoqiang 287285524@qq.com
|
* @Description: In User Settings Edit
|
* @FilePath: \cw_plat\src\utils\MenuUtils.js
|
*/
|
|
// import Main from '../views/Main.vue';
|
import Layout from '@/layout'
|
export default (arr) => {
|
// 这里之所以要重新遍历一下,是因为,通常我们动态路由的时候,是获取服务端数据,
|
// 这个component属性是一个字符串,或者可能连字段名都是其他的key
|
// 所以这里要做一些转换
|
// 结构创建
|
let data = arr ? arr : []
|
console.log(data)
|
for (let i = 0, j = data.length; i < j; i++) {
|
if (data[i].childPowerInfos == null || data[i].childPowerInfos.length == 0) {
|
data[i].childPowerInfos = [{
|
"childPowerInfos": [],
|
"btnInfos": data[i].btnInfos,
|
"powerId": data[i].powerId,
|
"powerName": data[i].powerName,
|
"routePath": data[i].routePath,
|
"routeName": data[i].routeName,
|
"routeComp": data[i].routeComp,
|
"iconPath": data[i].iconPath
|
}];
|
data[i].routePath = data[i].routePath.split('-')[0];
|
data[i].routeName =data[i].routeName?data[i].routeName.split('-')[0]:"";
|
data[i].routeComp = null;
|
} else if (data[i].childPowerInfos.length == 1) {
|
data[i].powerName = data[i].powerName;
|
data[i].iconPath = data[i].iconPath;
|
}
|
}
|
return generaMenu(data,false);
|
};
|
|
/**
|
* 将登陆后返回的菜单目录结构转化为当前的所需要的目录结构
|
* @param routers 转化后的菜单数组
|
* @param data 菜单数据源
|
*/
|
function generaMenu(data) {
|
let routers = [];
|
let arr = data ? data : []
|
|
arr.forEach(item => {
|
let menu = {};
|
menu.path = item.routePath;
|
menu.name = item.routeName;
|
menu.meta ={icon: item.iconPath,title:item.powerName}
|
if (item.routeComp) {
|
menu.component = resolve => {require(['@/views' + item.routeComp + '.vue'], resolve); };
|
} else {
|
menu.component = Layout;
|
}
|
if (item.childPowerInfos instanceof Array && item.childPowerInfos.length) {
|
menu.children = generaMenu(item.childPowerInfos,true);
|
} else {
|
// debugger
|
// menu.children = [];
|
}
|
routers.push(menu);
|
});
|
return routers;
|
}
|