| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /** 引入类型 */
- /** 引入路由相关的资源 */
- 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: '用户列表' },
- },
- ],
- },
- ]
|