From ff30a564164c47b4acc51c9c2022b1faca166cc3 Mon Sep 17 00:00:00 2001 From: Mr Ke <kelq@hugeinfo.com.cn> Date: Wed, 27 May 2020 11:44:03 +0800 Subject: [PATCH] 修复初始状态导致的页面空白问题 --- src/index.js | 160 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 99 insertions(+), 61 deletions(-) diff --git a/src/index.js b/src/index.js index e9f3628..aa04fd0 100644 --- a/src/index.js +++ b/src/index.js @@ -3,9 +3,6 @@ import ReactDOM from 'react-dom'; import './index.css'; -import Menu from './pages/menu/menu'; -import Header from './components/common/HeadView'; - import * as serviceWorker from './serviceWorker'; import { Router, Route, Switch, Redirect } from 'react-router-dom'; import { ConfigProvider } from 'antd'; @@ -17,72 +14,113 @@ import 'react-app-polyfill/ie11'; import 'react-app-polyfill/stable'; -// 引进页面(pages) -import Index from './pages/Index'; -import Login from './pages/login/login'; -import Workbench from './pages/index/workbench';//首页--工作台 -import System from './pages/index/System';//首页--工作制度 -import Announcement from './pages/index/Announcement';//全部通知 +// 公用结构组件 +import Menu from './module/menu/menu'; +import Header from './components/common/HeadView'; +import Login from './module/login/login'; -import DocumentEdit from './pages/document/DocumentEdit';//新建文档 -import DocumentDetail from './pages/document/DocumentDetail';//文档详情 -import BrowseLog from './pages/logManage/browseLog';//浏览日志 -import OperLog from './pages/logManage/operLog';//操作日志 -import Rawler from './pages/logManage/Rawler';//爬虫词条管理 -import Information from './pages/personal/information';//个人信息 +// oa路由映射 +import OaRouteDom from './routeDom/oaRouteDom'; +import UserRouteDom from './routeDom/userRouteDom'; + +export const Context = React.createContext(); const { Content } = Layout; const history = createHashHistory(); -ReactDOM.render( - <ConfigProvider locale={zh_CN}> - <Router history={history}> - <Layout className="h-100"> - <Switch> - <Route path="/login" component={null} /> - <Route component={Menu} /> - </Switch> - <Layout> - <Switch> - <Route path="/login" component={null} /> - <Route component={Header} /> - </Switch> - <Content> - <Switch> - {/* 新建文档 */} - <Route path="/document/create/:id?" component={DocumentEdit} /> - {/* 文档、通知详情 */} - <Route path="/document/detail/:id" component={DocumentDetail} /> +class RouteDom extends React.Component { + constructor(props) { + super(props); + this.state = { + context: { + role: 'oa', + roleMenuList: [], + setContext: this.setContext, + }, + }; + } - {/* 全部通知 */} - <Route path="/index/workbench/announcement" component={Announcement} /> - {/* 规章制度 */} - <Route path="/index/rules" component={System} /> - {/* 首页 */} - <Route path="/index" component={Workbench} /> + componentDidMount() { + let pathname = history.location.pathname; + let menusListByRole = window.localStorage.getItem('menusListByRole') + ? JSON.parse(window.localStorage.getItem('menusListByRole')) + : []; - {/* 浏览日志 */} - <Route path="/logManage/browseLog" component={BrowseLog} /> - {/* 操作日志 */} - <Route path="/logManage/operLog" component={OperLog} /> - {/* 爬虫词条管理 */} - <Route path="/logManage/rawler" component={Rawler} /> - {/* 个人信息 */} - <Route path="/personal/information" component={Information} /> + 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; + } + }, []); - {/* 登录页 */} - <Route path="/login" component={Login} /> - <Route path="/" component={Workbench} /> - {/* 路由的页面重定向 */} - <Redirect to="/" component={Workbench} /> - </Switch> - </Content> - </Layout> - </Layout> - </Router> - </ConfigProvider>, - document.getElementById('root') -); + this.setState({ + context: { + ...this.state.context, + role, + }, + }); + } + + setContext = (data) => { + console.log('data', data); + this.setState({ + context: { + ...this.state.context, + ...data, + }, //更新context + }); + }; + + render() { + let { context } = this.state; + return ( + <ConfigProvider locale={zh_CN}> + <Context.Provider value={context}> + <Router history={history}> + <Layout className="h-100"> + {/* 顶部-侧边布局-通栏 */} + {/* 顶部 */} + <Switch> + <Route path="/login" component={null} /> + <Route + component={() => ( + <Header setContext={this.setContext} props={this.props} /> + )} + /> + </Switch> + <Layout> + <Switch> + <Route path="/login" component={null} /> + <Route component={Menu} /> + </Switch> + <Layout> + <Content> + {context.role == 'oa' && <OaRouteDom />} + {context.role == 'user' && <UserRouteDom />} + <Route path="/login" component={Login} /> + </Content> + </Layout> + </Layout> + </Layout> + </Router> + </Context.Provider> + </ConfigProvider> + ); + } +} + +ReactDOM.render(<RouteDom></RouteDom>, document.getElementById('root')); // If you want your app to work offline and load faster, you can change // unregister() to register() below. Note this comes with some pitfalls. -- Gitblit v1.8.0