From 98930eb3823c1ffcecf013501a1c80252d494bdf Mon Sep 17 00:00:00 2001 From: Bt4Girls Date: Thu, 24 Jun 2021 10:11:15 +0800 Subject: [PATCH 1/2] multiple loads route --- src/store/modules/permission.js | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index bb39b02427..888083f7a4 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -37,6 +37,35 @@ function hasRole(roles, route) { } } +/** + * 简易深拷贝 + * @param target + * @returns {Object} + */ +function deepClone (target) { + let result + if (typeof target === 'object') { + if (Array.isArray(target)) { + result = [] + for (const i in target) { + result.push(deepClone(target[i])) + } + } else if (target === null) { + result = null + } else if (target.constructor === RegExp) { + result = target + } else { + result = {} + for (const i in target) { + result[i] = deepClone(target[i]) + } + } + } else { + result = target + } + return result +} + function filterAsyncRouter (routerMap, roles) { const accessedRouters = routerMap.filter(route => { if (hasPermission(roles.permissionList, route)) { @@ -65,7 +94,8 @@ const permission = { GenerateRoutes ({ commit }, data) { return new Promise(resolve => { const { roles } = data - const accessedRouters = filterAsyncRouter(asyncRouterMap, roles) + const routerMap = deepClone(asyncRouterMap) + const accessedRouters = filterAsyncRouter(routerMap, roles) commit('SET_ROUTERS', accessedRouters) resolve() }) From 7474c75d07210423a1e2c3fa52c8a65959fc238e Mon Sep 17 00:00:00 2001 From: Bt4Girls Date: Fri, 16 Jul 2021 18:22:32 +0800 Subject: [PATCH 2/2] multiple loads route --- src/store/modules/permission.js | 32 ++------------------------------ 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index 888083f7a4..856fabf8c4 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -1,4 +1,5 @@ import { asyncRouterMap, constantRouterMap } from '@/config/router.config' +import cloneDeep from 'lodash.clonedeep' /** * 过滤账户是否拥有某一个权限,并将菜单从加载列表移除 @@ -37,35 +38,6 @@ function hasRole(roles, route) { } } -/** - * 简易深拷贝 - * @param target - * @returns {Object} - */ -function deepClone (target) { - let result - if (typeof target === 'object') { - if (Array.isArray(target)) { - result = [] - for (const i in target) { - result.push(deepClone(target[i])) - } - } else if (target === null) { - result = null - } else if (target.constructor === RegExp) { - result = target - } else { - result = {} - for (const i in target) { - result[i] = deepClone(target[i]) - } - } - } else { - result = target - } - return result -} - function filterAsyncRouter (routerMap, roles) { const accessedRouters = routerMap.filter(route => { if (hasPermission(roles.permissionList, route)) { @@ -94,7 +66,7 @@ const permission = { GenerateRoutes ({ commit }, data) { return new Promise(resolve => { const { roles } = data - const routerMap = deepClone(asyncRouterMap) + const routerMap = cloneDeep(asyncRouterMap) const accessedRouters = filterAsyncRouter(routerMap, roles) commit('SET_ROUTERS', accessedRouters) resolve()