/* * @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; }