From 7af09e42b49cd18f160c19297f47c4622b1eedc3 Mon Sep 17 00:00:00 2001 From: liyj <1003249715@qq.com> Date: Wed, 24 Jun 2020 17:14:37 +0800 Subject: [PATCH] ... --- src/index.js | 67 +++++++++++++++++++++++---------- 1 files changed, 46 insertions(+), 21 deletions(-) diff --git a/src/index.js b/src/index.js index aa04fd0..167584b 100644 --- a/src/index.js +++ b/src/index.js @@ -22,6 +22,7 @@ // oa路由映射 import OaRouteDom from './routeDom/oaRouteDom'; import UserRouteDom from './routeDom/userRouteDom'; +import { oaMenus, userMenus } from './menu'; export const Context = React.createContext(); @@ -33,7 +34,7 @@ super(props); this.state = { context: { - role: 'oa', + role: '', roleMenuList: [], setContext: this.setContext, }, @@ -42,27 +43,33 @@ componentDidMount() { let pathname = history.location.pathname; + console.log(history, pathname); let menusListByRole = window.localStorage.getItem('menusListByRole') ? JSON.parse(window.localStorage.getItem('menusListByRole')) : []; - let role = Object.keys(menusListByRole).reduce((p, n) => { - if ( - menusListByRole[n].menus - .reduce((p, n) => { - if (n.children) { - return p.concat(n.children); - } else { - return p.concat(n); - } - }, []) - .find(({ path }) => path == pathname) - ) { - return p.concat(n); - } else { - return p; - } - }, []); + // let menuMap = { oa: { menus: oaMenus }, user: { menus: userMenus } }; + + let role = Object.keys(menusListByRole) + .reduce((p, n) => { + if ( + menusListByRole[n].menus + .reduce((p, n) => { + if (n.children) { + return p.concat(n.children); + } else { + return p.concat(n); + } + }, []) + .find(({ path }) => path == pathname) + ) { + return p.concat(n); + } else { + return p; + } + }, []) + .join(''); + console.log('role', role); this.setState({ context: { @@ -70,6 +77,18 @@ role, }, }); + + if (!role && menusListByRole.length == 0) { + history.push('/login'); + } + if (!role && window.localStorage.getItem('role')) { + this.setState({ + context: { + ...this.state.context, + role: window.localStorage.getItem('role'), + }, + }); + } } setContext = (data) => { @@ -80,6 +99,7 @@ ...data, }, //更新context }); + window.localStorage.setItem('role', data.role || ''); }; render() { @@ -106,9 +126,14 @@ </Switch> <Layout> <Content> - {context.role == 'oa' && <OaRouteDom />} - {context.role == 'user' && <UserRouteDom />} - <Route path="/login" component={Login} /> + <Switch> + <Route + path="/login" + component={() => <Login setContext={this.setContext} />} + /> + {context.role == 'oa' && <OaRouteDom />} + {context.role == 'user' && <UserRouteDom />} + </Switch> </Content> </Layout> </Layout> -- Gitblit v1.8.0