File tree Expand file tree Collapse file tree 1 file changed +31
-1
lines changed Expand file tree Collapse file tree 1 file changed +31
-1
lines changed Original file line number Diff line number Diff line change @@ -37,6 +37,35 @@ function hasRole(roles, route) {
3737 }
3838}
3939
40+ /**
41+ * 简易深拷贝
42+ * @param target
43+ * @returns {Object }
44+ */
45+ function deepClone ( target ) {
46+ let result
47+ if ( typeof target === 'object' ) {
48+ if ( Array . isArray ( target ) ) {
49+ result = [ ]
50+ for ( const i in target ) {
51+ result . push ( deepClone ( target [ i ] ) )
52+ }
53+ } else if ( target === null ) {
54+ result = null
55+ } else if ( target . constructor === RegExp ) {
56+ result = target
57+ } else {
58+ result = { }
59+ for ( const i in target ) {
60+ result [ i ] = deepClone ( target [ i ] )
61+ }
62+ }
63+ } else {
64+ result = target
65+ }
66+ return result
67+ }
68+
4069function filterAsyncRouter ( routerMap , roles ) {
4170 const accessedRouters = routerMap . filter ( route => {
4271 if ( hasPermission ( roles . permissionList , route ) ) {
@@ -65,7 +94,8 @@ const permission = {
6594 GenerateRoutes ( { commit } , data ) {
6695 return new Promise ( resolve => {
6796 const { roles } = data
68- const accessedRouters = filterAsyncRouter ( asyncRouterMap , roles )
97+ const routerMap = deepClone ( asyncRouterMap )
98+ const accessedRouters = filterAsyncRouter ( routerMap , roles )
6999 commit ( 'SET_ROUTERS' , accessedRouters )
70100 resolve ( )
71101 } )
You can’t perform that action at this time.
0 commit comments