|
@@ -1,90 +1,96 @@
|
|
-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()
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
|
|
+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,reject) => {
|
|
|
|
+ //const [ roles ] = routes.constRoutes
|
|
|
|
+ let routelist = routes.constRoutes;
|
|
|
|
+ console.log(routelist,98471293847219)
|
|
|
|
+ commit('SET_ROUTERS', routelist)
|
|
|
|
+ if(routelist){
|
|
|
|
+ resolve()
|
|
|
|
+ }else{
|
|
|
|
+ reject()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
export default permission
|
|
export default permission
|