123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import { asyncRouterMap, constantRouterMap } from "@/config/router.config"
- /**
- * 过滤账户是否拥有某一个权限,并将菜单从加载列表移除
- *
- * @param permission
- * @param route
- * @returns {boolean}
- */
- function hasPermission(permission, route) {
- if (route.meta && route.meta.permission) {
- let flag = -1
- for (let i = 0, len = permission.length; i < len; i++) {
- flag = route.meta.permission.indexOf(permission[i])
- if (flag >= 0) {
- return true
- }
- }
- return false
- }
- return true
- }
- /**
- * 单账户多角色时,使用该方法可过滤角色不存在的菜单
- *
- * @param roles
- * @param route
- * @returns {*}
- */
- // eslint-disable-next-line
- function hasRole(roles, route) {
- if (route.meta && route.meta.roles) {
- return route.meta.roles.indexOf(roles.id)
- } else {
- return true
- }
- }
- function filterAsyncRouter(routerMap, roles) {
- const accessedRouters = routerMap.filter(route => {
- if (hasPermission(roles.permissionList, route)) {
- if (route.children && route.children.length) {
- route.children = filterAsyncRouter(route.children, roles)
- }
- return true
- }
- return false
- })
- return accessedRouters
- }
- const permission = {
- state: {
- routers: constantRouterMap,
- addRouters: []
- },
- mutations: {
- SET_ROUTERS: (state, data) => {
- state.addRouters = data
- state.routers = constantRouterMap.concat(data)
- //console.log('-----mutations---SET_ROUTERS----', data)
- }
- },
- actions: {
- GenerateRoutes({ commit }, data) {
- return new Promise(resolve => {
- const { roles } = data
- console.log('-----mutations---data----', data)
- let accessedRouters
- accessedRouters = filterAsyncRouter(asyncRouterMap, roles)
- console.log('-----mutations---accessedRouters----', accessedRouters)
- commit('SET_ROUTERS', accessedRouters)
- resolve()
- })
- },
- // 动态添加主界面路由,需要缓存
- UpdateAppRouter({ commit }, routes) {
- return new Promise(resolve => {
- //const [ roles ] = routes.constRoutes
- let routelist = routes.constRoutes;
- commit('SET_ROUTERS', routelist)
- resolve()
- })
- }
- }
- }
- export default permission
|