1
- import { constantRoutes } from '@/router'
2
- import { getRouters } from '@/api/menu'
1
+ import { constantRoutes } from '@/router'
2
+ import { getRouters } from '@/api/menu'
3
3
import Layout from '@/layout/index'
4
4
import ParentView from '@/components/ParentView' ;
5
- import { toCamelCase } from "@/utils" ;
5
+ import { toCamelCase } from "@/utils" ;
6
6
7
7
const permission = {
8
8
state : {
@@ -28,15 +28,15 @@ const permission = {
28
28
} ,
29
29
actions : {
30
30
// 生成路由
31
- GenerateRoutes ( { commit } ) {
31
+ GenerateRoutes ( { commit} ) {
32
32
return new Promise ( resolve => {
33
33
// 向后端请求路由数据(菜单)
34
34
getRouters ( ) . then ( res => {
35
35
const sdata = JSON . parse ( JSON . stringify ( res . data ) ) // 【重要】用于菜单中的数据
36
36
const rdata = JSON . parse ( JSON . stringify ( res . data ) ) // 用于最后添加到 Router 中的数据
37
37
const sidebarRoutes = filterAsyncRouter ( sdata )
38
38
const rewriteRoutes = filterAsyncRouter ( rdata , false , true )
39
- rewriteRoutes . push ( { path : '*' , redirect : '/404' , hidden : true } )
39
+ rewriteRoutes . push ( { path : '*' , redirect : '/404' , hidden : true } )
40
40
commit ( 'SET_ROUTES' , rewriteRoutes )
41
41
commit ( 'SET_SIDEBAR_ROUTERS' , constantRoutes . concat ( sidebarRoutes ) )
42
42
commit ( 'SET_DEFAULT_ROUTES' , sidebarRoutes )
@@ -60,6 +60,11 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
60
60
}
61
61
// 路由地址转首字母大写驼峰,作为路由名称,适配 keepAlive
62
62
route . name = toCamelCase ( route . path , true )
63
+ // 处理三级及以上菜单路由缓存问题,将path名字赋值给name
64
+ if ( route . path . indexOf ( "/" ) !== - 1 ) {
65
+ var pathArr = route . path . split ( "/" )
66
+ route . name = toCamelCase ( pathArr [ pathArr . length - 1 ] , true )
67
+ }
63
68
route . hidden = ! route . visible
64
69
// 处理 component 属性
65
70
if ( route . children ) { // 父节点
@@ -86,10 +91,10 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
86
91
}
87
92
88
93
function filterChildren ( childrenMap , lastRouter = false ) {
89
- let children = [ ]
94
+ var children = [ ]
90
95
childrenMap . forEach ( ( el , index ) => {
91
96
if ( el . children && el . children . length ) {
92
- if ( el . component === 'ParentView' && ! lastRouter ) {
97
+ if ( ! el . component && ! lastRouter ) {
93
98
el . children . forEach ( c => {
94
99
c . path = el . path + '/' + c . path
95
100
if ( c . children && c . children . length ) {
0 commit comments