代理后端前端代码(带权限管理)
zj
2024-06-03 59782819ef818c3457aaf750a0358b485de3c249
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/**
 * 向后端请求用户的菜单,动态生成路由
 */
import { menuGetInfo } from '@/api/login'
import { constantRouterMap } from '@/config/router.config'
import { generatorDynamicRouter } from '@/router/generator-routers'
import cloneDeep from 'lodash.clonedeep'
function hasPermission(permission, route) {
  // console.log('hasPermission')
  // if (route.meta && route.meta.permission) {
 
  //   if (permission === undefined) {
  //     return false
  //   }
  //   let flag = false
  //   for (let i = 0, len = permission.length; i < len; i++) {
  //     flag = route.meta.permission.includes(permission[i])
  //     if (flag) {
  //       return true
  //     }
  //   }
  //   return false
  // }
  return true
}
 
function filterAsyncRouter(routerMap, role) {
  const accessedRouters = routerMap.filter((route) => {
    if (hasPermission(role.permissionList, route)) {
      if (route.children && route.children.length) {
        route.children = filterAsyncRouter(route.children, role)
      }
      return true
    }
    return false
  })
  return accessedRouters
}
const permission = {
  state: {
    routers: constantRouterMap,
    addRouters: [],
    addBut: [],
  },
  mutations: {
    SET_ROUTERS: (state, routers) => {
      console.log(routers)
      state.addRouters = routers
      state.routers = constantRouterMap.concat(routers)
    },
    SET_MENU_INFO: (state, routers) => {
      state.addBut = routers
    },
  },
  actions: {
    SetMenuGetInfo({ commit }, data) {
      commit('SET_MENU_INFO', data.menuIds)
    },
    GenerateRoutes({ commit }, data) {
      return new Promise(async (resolve, reject) => {
        const { token } = data
        generatorDynamicRouter(token)
          .then((routers) => {
            // debugger
            // console.log(routers)
            console.log(routers, '=====')
            commit('SET_ROUTERS', routers)
            resolve()
          })
          .catch((e) => {
            reject(e)
          })
        resolve()
      })
    },
  },
}
 
export default permission