|
@@ -23,13 +23,15 @@ const generateRoutes=(routes,asyncRoutes=[])=>{
|
|
|
const inRoutes=[];
|
|
const inRoutes=[];
|
|
|
const popRoutes=[];
|
|
const popRoutes=[];
|
|
|
//路由等级
|
|
//路由等级
|
|
|
- const _generate=(list,plevel)=>{
|
|
|
|
|
|
|
+ //ppath parent path
|
|
|
|
|
+ const _generate=(list,plevel,ppath)=>{
|
|
|
Object.keys(list).map((key)=>{
|
|
Object.keys(list).map((key)=>{
|
|
|
let route=list[key];
|
|
let route=list[key];
|
|
|
if (route){
|
|
if (route){
|
|
|
if (allMap[route.path]==null){
|
|
if (allMap[route.path]==null){
|
|
|
//level
|
|
//level
|
|
|
route.plv=plevel;
|
|
route.plv=plevel;
|
|
|
|
|
+ route.ppath=ppath;
|
|
|
route.lv=plevel+key+"_";
|
|
route.lv=plevel+key+"_";
|
|
|
allMap[route.path]=route;
|
|
allMap[route.path]=route;
|
|
|
let type=route.type;
|
|
let type=route.type;
|
|
@@ -37,12 +39,12 @@ const generateRoutes=(routes,asyncRoutes=[])=>{
|
|
|
else if (type==ROUTE_TYPE_POP)popRoutes.push(route);
|
|
else if (type==ROUTE_TYPE_POP)popRoutes.push(route);
|
|
|
}
|
|
}
|
|
|
let subs=route.subs;
|
|
let subs=route.subs;
|
|
|
- if (subs!=null)_generate(subs,route.lv);
|
|
|
|
|
|
|
+ if (subs!=null)_generate(subs,route.lv,route.path);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
const allroutes=[...routes, ...asyncRoutes];
|
|
const allroutes=[...routes, ...asyncRoutes];
|
|
|
- _generate(allroutes,"");
|
|
|
|
|
|
|
+ _generate(allroutes,"","");
|
|
|
const gnavs=generateNavs(allroutes);
|
|
const gnavs=generateNavs(allroutes);
|
|
|
return {allMap,inRoutes,popRoutes,blockNavs:gnavs.navs,allNavs:gnavs.allNavs};
|
|
return {allMap,inRoutes,popRoutes,blockNavs:gnavs.navs,allNavs:gnavs.allNavs};
|
|
|
}
|
|
}
|
|
@@ -54,6 +56,9 @@ const reducerRoutes=(state,action)=>{
|
|
|
Object.assign(state, {routes:routes,asyncRoutes:data,...generData});
|
|
Object.assign(state, {routes:routes,asyncRoutes:data,...generData});
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+const routesStatus=(state,status,arg)=>{
|
|
|
|
|
+ state.status=status;
|
|
|
|
|
+}
|
|
|
export const Main=createSlice({
|
|
export const Main=createSlice({
|
|
|
name: 'main',
|
|
name: 'main',
|
|
|
initialState: {
|
|
initialState: {
|
|
@@ -67,7 +72,7 @@ export const Main=createSlice({
|
|
|
extraReducers: (builder) => {
|
|
extraReducers: (builder) => {
|
|
|
// Add reducers for additional action types here, and handle loading state as needed
|
|
// Add reducers for additional action types here, and handle loading state as needed
|
|
|
// reducerRoutes(builder);
|
|
// reducerRoutes(builder);
|
|
|
- buildReqReducer(builder,reqGetRoutes,reducerRoutes);
|
|
|
|
|
|
|
+ buildReqReducer(builder,reqGetRoutes,reducerRoutes,routesStatus);
|
|
|
},
|
|
},
|
|
|
})
|
|
})
|
|
|
export const {} = Main.actions;
|
|
export const {} = Main.actions;
|
|
@@ -95,6 +100,21 @@ export const getRoute=(path)=>(state)=>{
|
|
|
if (route==null)return {};
|
|
if (route==null)return {};
|
|
|
return route;
|
|
return route;
|
|
|
}
|
|
}
|
|
|
|
|
+export const getRouteChain=(path)=>(state)=>{
|
|
|
|
|
+ let map=routesMap(state);
|
|
|
|
|
+ let list=[];
|
|
|
|
|
+ let getChain=(cpath)=>{
|
|
|
|
|
+ let route=map[cpath];
|
|
|
|
|
+ if (route!=null){
|
|
|
|
|
+ list.unshift(route);
|
|
|
|
|
+ if (route.ppath!=null&&route.ppath!==""){
|
|
|
|
|
+ getChain(route.ppath);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ getChain(path);
|
|
|
|
|
+ return list;
|
|
|
|
|
+}
|
|
|
export const isFullRoute=(path)=>(state)=>{
|
|
export const isFullRoute=(path)=>(state)=>{
|
|
|
let route=routesMap(state)[path];
|
|
let route=routesMap(state)[path];
|
|
|
if (route)return route.type===ROUTE_TYPE_FULL;
|
|
if (route)return route.type===ROUTE_TYPE_FULL;
|