permission.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /** 引入类型 */
  2. /** 引入路由相关的资源 */
  3. import router, { modules } from './index'
  4. /** 引入vuex实例 */
  5. import store from '@/store'
  6. /** 引入后端路由控制器 */
  7. import { isBackMenu } from '@/config'
  8. /** 引入纯前端路由 */
  9. import FrontRoutes from './permission/front'
  10. /** 引入后端路由 */
  11. import getMenu from './permission/back'
  12. import Layout from '@/layout/index.vue'
  13. import { createNameComponent } from './createNode'
  14. /**
  15. * @name 动态路由的权限新增,供登录后调用
  16. * @other 如果需要进行后端接口控制菜单的话,请在此拿到后端的菜单树与asyncRoutes对比,生成一个新的值
  17. */
  18. async function addRoutes() {
  19. // 已验证完成,下面代码添加的可以实时同步至菜单中去,可以添加setTimeout(() => {}) 模拟异步代码的操作
  20. // 利用前端路由表模拟后端数据问题
  21. // 等待后端接口返回数据后再回调出去,防止刷新跳转404
  22. return new Promise((resolve) => {
  23. if (isBackMenu) {
  24. getMenu()
  25. .then((data) => {
  26. data.forEach(item => {
  27. modules.push(item)
  28. router.addRoute(item)
  29. })
  30. resolve()
  31. })
  32. return
  33. }
  34. FrontRoutes.forEach(item => {
  35. modules.push(item)
  36. router.addRoute(item)
  37. })
  38. resolve()
  39. })
  40. }
  41. /**
  42. * @des 登录了之后会执行这个方法,实现动态路由的功能
  43. */
  44. export async function getAuthRoutes() {
  45. // 判断token是否存在,存在则调用添加路由的方法
  46. if (store.state.user.token) {
  47. // 判断当前账号是否为推广人员
  48. if(store.state.user.info.userType === 11) {
  49. modules.push(...userModule)
  50. router.addRoute(...userModule)
  51. } else {
  52. await addRoutes()
  53. }
  54. }
  55. }
  56. //推广人路由权限
  57. const userModule = [
  58. {
  59. path: '/userModule',
  60. redirect: '/userModule/userList/index',
  61. component: Layout,
  62. meta: { title: '用户模块', icon: 'iconfont icon-user' },
  63. children: [
  64. {
  65. path: 'userList/index',
  66. name: 'UserList',
  67. component: createNameComponent(() => import('@/views/main/userModule/userList.vue')),
  68. meta: { title: '用户列表' },
  69. },
  70. ],
  71. },
  72. ]