From 3410959e2feaf93734b4ae90f045593e3467ab9a Mon Sep 17 00:00:00 2001
From: Mr Ke <kelq@hugeinfo.com.cn>
Date: Mon, 01 Jun 2020 16:09:15 +0800
Subject: [PATCH] 修复userId参数错误问题

---
 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