/** 引入类型 */ /** 引入路由相关的资源 */ import router, { modules } from './index' /** 引入vuex实例 */ import store from '@/store' /** 引入后端路由控制器 */ import { isBackMenu } from '@/config' /** 引入纯前端路由 */ import FrontRoutes from './permission/front' /** 引入后端路由 */ import getMenu from './permission/back' import Layout from '@/layout/index.vue' import { createNameComponent } from './createNode' /** * @name 动态路由的权限新增,供登录后调用 * @other 如果需要进行后端接口控制菜单的话,请在此拿到后端的菜单树与asyncRoutes对比,生成一个新的值 */ async function addRoutes() { // 已验证完成,下面代码添加的可以实时同步至菜单中去,可以添加setTimeout(() => {}) 模拟异步代码的操作 // 利用前端路由表模拟后端数据问题 // 等待后端接口返回数据后再回调出去,防止刷新跳转404 return new Promise((resolve) => { if (isBackMenu) { getMenu() .then((data) => { data.forEach(item => { modules.push(item) router.addRoute(item) }) resolve() }) return } FrontRoutes.forEach(item => { modules.push(item) router.addRoute(item) }) resolve() }) } /** * @des 登录了之后会执行这个方法,实现动态路由的功能 */ export async function getAuthRoutes() { // 判断token是否存在,存在则调用添加路由的方法 if (store.state.user.token) { // 判断当前账号是否为推广人员 if(store.state.user.info.userType === 11) { modules.push(...userModule) router.addRoute(...userModule) } else { await addRoutes() } } } //推广人路由权限 const userModule = [ { path: '/userModule', redirect: '/userModule/userList/index', component: Layout, meta: { title: '用户模块', icon: 'iconfont icon-user' }, children: [ { path: 'userList/index', name: 'UserList', component: createNameComponent(() => import('@/views/main/userModule/userList.vue')), meta: { title: '用户列表' }, }, ], }, ]