// 菜单树过滤 (展示的? ) export function filterMenu(menuList) { return menuList // 过滤不是4级的 123 为菜单 .filter(menu => menu.menuType ===1 || menu.menuType === 2 || menu.menuType === 3) .map(menu => ({ ...menu, children: menu.children ? filterMenu(menu.children) : [] })) .sort((a, b) => a.id - b.id); // 按 id 升序 } // 过滤 只获得第三级的菜单 export function filterFirstMenu(menuList) { return menuList .map(menu => ({ ...menu, children: menu.children ? filterMenu(menu.children) : [] })) .sort((a, b) => a.id - b.id); // 按 id 升序 } // 辅助函数:查找第一个可访问的菜单项 export function findFirstThirdLevelMenu(menuList) { if (!menuList || menuList.length === 0) return null; for (const menu of menuList) { // 先检查当前菜单是否为三级菜单 if (menu.menuType === 1) { return menu; } // 若不是,递归查找其子菜单(无论当前菜单是几级,都深入子菜单找三级) const childResult = findFirstThirdLevelMenu(menu.children); if (childResult) { return childResult; } } return null; } // 路由映射(左侧菜单栏) export const getRoutePath = (menu) => { // 路由映射表:key为接口menuName,value为对应路由路径 const routeMap = { '工作台': '/workbench', '金币管理': '/goldManage', '现金管理': '/moneyManage', '金币审核': '/audit', '金豆审核': '/beanAudit', '汇率管理': '/rate', '金币充值': '/coinRecharge', '金豆充值': '/beanRecharge', '金币消耗': '/coinConsume', '金豆消耗': '/beanConsume', '退款管理': '/coinRefund', '历史数据查询': '/history', '新版金币查询': '/history/newHistory', '旧版金币查询': '/history/oldHistory', '权限管理': '/permissions', '用户管理': '/permissions/userPermission', '角色管理': '/permissions/rolePermission', '金币客户账户明细': '/usergold', '金豆客户账户明细': '/userbean', '收款明细': '/moneyManage/receiveDetail', '收款-地区客服':'/moneyManage/receiveDetail/receiveService', '收款-地区财务':'/moneyManage/receiveDetail/receiveArea', '收款-地区负责人':'/moneyManage/receiveDetail/receiveArea', '收款-总部财务':'/moneyManage/receiveDetail/receiveHead', '退款明细': '/moneyManage/refundDetail', '退款-地区客服':'/moneyManage/refundDetail/refundService', '退款-地区财务':'/moneyManage/refundDetail/refundFinance', '退款-地区负责人':'/moneyManage/refundDetail/refundCharge', '退款-总部财务':'/moneyManage/refundDetail/refundHeader', '执行明细': '/moneyManage/executor', }; // 未匹配的菜单默认使用id作为路由(可根据实际需求调整) return routeMap[menu.menuName] || '/noPermission' }