/**
|
* 向后端请求用户的菜单,动态生成路由
|
*/
|
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
|