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