/**头部路由一级菜单点击逻辑 */ function headrRouter(initialState: any, history: any) { let ok = true let u = navigator?.userAgent let isPhone = !!u.match(/AppleWebKit.*Mobile.*/) || u?.indexOf('iPad') > -1 //登录时指向/辅助处理看当前用户的一级菜单有哪些,找到第一个符合的跳转 initialState?.menu?.data.forEach((item: { roles: string[], path: string, routes: { path: string, routes: any[] }[] }) => { if (ok) { ok = false let path = item?.routes?.length > 0 ? item?.routes[0]?.routes?.length > 0 ? item?.routes[0]?.routes[0]?.path ? item?.routes[0]?.routes[0]?.path : item?.routes[0].path : item?.routes[0].path : item?.routes[0].path if (history?.location?.pathname === '/') { history.push(path) } } }) if (history?.location?.pathname === '/launchSystemNew') { //当切换一级菜单的辅助跳转 history?.goBack() initialState?.menu?.data.forEach((item: { roles: string[], path: string, routes: { path: string, routes: any[] }[] }) => { if (item?.routes?.some((i: { path: string }) => i.path?.includes('/launchSystemNew'))) { let path = item?.routes?.length > 0 ? (item?.routes[0]?.routes?.length > 0 && item?.routes[0]?.routes[0]?.path) ? item?.routes[0]?.routes[0]?.path : item?.routes[0].path : item?.routes[0].path isPhone ? history.push(path) : window.open(location.origin + '/#' + path) } }) } if (history?.location?.pathname === '/toutiao') { //当切换一级菜单的辅助跳转 history?.goBack() initialState?.menu?.data.forEach((item: { roles: string[], path: string, routes: { path: string, routes: any[] }[] }) => { if (item?.routes?.some((i: { path: string }) => i.path?.includes('/toutiao'))) { let path = item?.routes?.length > 0 ? (item?.routes[0]?.routes?.length > 0 && item?.routes[0]?.routes[0]?.path) ? item?.routes[0]?.routes[0]?.path : item?.routes[0].path : item?.routes[0].path isPhone ? history.push(path) : window.open(location.origin + '/#' + path) } }) } if (history?.location?.pathname === '/launchSystemV3') { //当切换一级菜单的辅助跳转 history?.goBack() initialState?.menu?.data.forEach((item: { roles: string[], path: string, routes: { path: string, routes: any[] }[] }) => { if (item?.routes?.some((i: { path: string }) => i.path?.includes('/launchSystemV3'))) { let path = item?.routes?.length > 0 ? (item?.routes[0]?.routes?.length > 0 && item?.routes[0]?.routes[0]?.path) ? item?.routes[0]?.routes[0]?.path : item?.routes[0].path : item?.routes[0].path isPhone ? history.push(path) : window.open(location.origin + '/#' + path) } }) } } //返回按钮路由 function btnFun(items: any) { return items?.childrenBtn?.map((btn: any,) => { return { name: btn.meta.title, key: btn?.menuId } }) } //返回子路由 function routeFun(items: any) { return items.children.map((route: any) => {//循环重组 // console.log(route) if (route?.children?.length > 0) { let arr = routeFun(route) return { path: route.path, name: route.meta.title, component: route.component, routes: arr, icon: route.meta.icon, key: route?.menuId } } if (route?.childrenBtn?.length > 0) { let arr = btnFun(route) return { path: route.path, name: route.meta.title, component: route.component, routes: arr, icon: route.meta.icon, key: route?.menuId } } return { path: route.path, name: route.meta.title, component: route.component, icon: route.icon, key: route?.menuId } }) } /**获取线上菜单并重组路由格式和权限*/ function getMyMenu(code: any, data: any,) { let newData: any = [] // let roles = userInfo?.roles.map((role: any) => role.roleKey)//权限从个人信息中取,以防路由列表中有错误 if (code === 200) { let new_data: any[] = [] // 循环判断不为空的主菜单加入 Object.keys(data)?.reverse()?.map((key) => { if (Array.isArray(data[key]) && data[key]?.length > 0) { new_data.push(data[key][0]) } }) // 处理顺序 new_data = new_data?.sort((a, b) => { let v1 = a.orderNum let v2 = b.orderNum return v1 - v2 }) new_data?.forEach((items: any) => { if (items?.children?.length === 0) {//假如路由的子路由只有一个代表当前组件没有子路由,将children中的component组件路径给外层component newData.push({ path: items.children[0].path, name: items.meta.title, icon: items.meta.icon, component: items.children[0].component, key: items.menuId }) // roles: roles } if (items?.children?.length >= 0) {//假如路由的子路由个数大于1代表有子路由 let arr: any[] = routeFun(items) newData.push({ path: items.path, name: items.meta.title, icon: items.meta.icon, routes: arr, key: items.menuId })//最后添加进routes , roles: roles } }) } return newData } /** 投放系统 */ const launchSystem = { path: '/launchSystemNew', routes: [ { path: '/launchSystemNew/adMonitorList', name: '广告监控', component: './adMonitor/adMonitorList', access: 'adMonitorList', }, { path: '/launchSystemNew/account', name: '广告账户管理', access: 'account', routes: [ { name: '小说', path: '/launchSystemNew/account/novel', access: 'novel', component: './launchSystemNew/account/novel', }, { name: '游戏', path: '/launchSystemNew/account/game', access: 'game', component: './launchSystemNew/account/game', }, ], }, { path: '/launchSystemNew/adq', name: '腾讯广告', component: './launchSystemNew/adq', access: 'adq', }, { path: '/launchSystemNew/sysWarningRule', name: '监控告警', component: './launchSystemNew/sysWarningRule', access: 'sysWarningRule', }, { path: '/launchSystemNew/launchManage', name: '广告投放', access: 'launchManage', routes: [ { path: '/launchSystemNew/launchManage/localAd', name: '广告模板', access: 'localAd', component: './launchSystemNew/launchManage/localAd', }, { path: '/launchSystemNew/launchManage/createAd', name: '创建广告', access: 'createAd', component: './launchSystemNew/launchManage/createAd', }, { path: '/launchSystemNew/launchManage/taskList', name: '任务列表', access: 'taskList', component: './launchSystemNew/launchManage/taskList', } ] }, { path: '/launchSystemNew/material', name: '素材管理', access: 'material', icon: 'DatabaseOutlined', routes: [ { name: '本地素材', path: '/launchSystemNew/material/cloud', access: 'cloud', component: './launchSystemNew/material/cloud', }, ], }, { path: '/launchSystemNew/adminSpecialUseConsume', name: '管理员拉消耗专用', component: './launchSystemNew/adminSpecialUseConsume', access: 'adminSpecialUseConsume', }, ], } const launchSystemV3 = { path: '/launchSystemV3', routes: [ { path: '/launchSystemV3/adMonitorListV3', name: '广告监控', component: './launchSystemV3/adMonitorListV3', access: 'adMonitorListV3', }, { path: '/launchSystemV3/adqv3', name: '腾讯广告', component: './launchSystemV3/adqv3', access: 'adqv3', } ] } /** 头条 */ const adMonitor = { path: '/toutiao', routes: [ { path: '/toutiao/ttAccountManage', name: '广告监控', component: './toutiao/ttAccountManage', access: 'ttAccountManage', }, ] } export { headrRouter, getMyMenu, launchSystem, adMonitor, launchSystemV3 }