From 2ff464f30d94235b3ad04475593b75a74a354de9 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 09 四月 2020 19:04:01 +0800
Subject: [PATCH] 2020-04-09

---
 src/components/header/index.jsx |  147 +++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 113 insertions(+), 34 deletions(-)

diff --git a/src/components/header/index.jsx b/src/components/header/index.jsx
index c32acd7..cd58ef4 100644
--- a/src/components/header/index.jsx
+++ b/src/components/header/index.jsx
@@ -15,6 +15,7 @@
   resetEditState,
   resetEditLevel,
   initPermission,
+  initActionPermission,
   initMenuPermission,
   logout
 } from '@/store/action'
@@ -56,6 +57,7 @@
     // 灞曞紑銆佹敹璧峰乏渚ц彍鍗曟爮
     if (!this.props.editState) {
       this.props.toggleCollapse(!this.props.collapse)
+      localStorage.setItem('collapse', !this.props.collapse)
     }
   }
 
@@ -201,44 +203,89 @@
 
   async getRolesMenu () {
     // 鑾峰彇瑙掕壊鏉冮檺
-    let result = await Api.getSystemConfig({func: 'sPC_Get_RolesMenu'})
+    let promiseRole = new Promise(resolve => {
+      Api.getSystemConfig({func: 'sPC_Get_RolesMenu'}).then(result => {
+        let _permAction = {}
+        let _permRoles = []
+        if (result && result.status) {
+          if (result.UserRoles) {
+            result.UserRoles.forEach(role => {
+              _permRoles.push(role.RoleID)
 
-    // 鐧诲綍瓒呮椂
-    if (!result) return
-    
-    if (result.status) {
-      let _permAction = {}
-      let _permRoles = []
-      let _permFuncField = []
-      if (result.UserRoles) {
-        result.UserRoles.forEach(role => {
-          _permRoles.push(role.RoleID)
-
-          role.RoleMenu.forEach(menu => {
-            if (!menu.MenuID) return
-            _permAction[menu.MenuID] = true
-          })
-        })
-      }
-
-      if (result.sModular && result.sModular.length > 0) {
-        result.sModular.forEach(field => {
-          if (field.ModularNo) {
-            _permFuncField.push(field.ModularNo)
+              role.RoleMenu.forEach(menu => {
+                if (!menu.MenuID) return
+                _permAction[menu.MenuID] = true
+              })
+            })
           }
-        })
-        _permFuncField = _permFuncField.sort()
-      }
+        } else if (result) {
+          notification.error({
+            top: 92,
+            message: result.message,
+            duration: 15
+          })
+        }
 
-      this.props.initPermission(_permRoles, _permAction, _permFuncField)
-      this.loadmenu()
-    } else {
-      notification.error({
-        top: 92,
-        message: result.message,
-        duration: 15
+        resolve({permAction: _permAction, permRoles: _permRoles})
       })
+    })
+    
+    // 鑾峰彇涓昏彍鍗曞弬鏁�
+    let promiseMenu = new Promise(resolve => {
+      Api.getSystemConfig({func: 'sPC_Get_MainMenu', systemType: options.systemType}).then(result => {
+        let mainMenu = null
+        if (result && result.status) {
+          if (result.debug === 'true') { // 鏄惁涓篸ebug妯″紡锛屽嵆鍙鍒惰彍鍗曞弬鏁�
+            this.props.resetDebug()
+          }
+    
+          let MainMenuId = sessionStorage.getItem('MainMenu') // 鏄惁涓烘墦寮�鏂伴〉闈�
+          if (MainMenuId) {
+            // 閫氳繃url涓璵enuid绛涢�夊嚭閫変腑鐨勪富鑿滃崟
+            let _menu = result.data.filter(item => item.MenuID === MainMenuId)[0]
+            sessionStorage.removeItem('MainMenu')
+            mainMenu = _menu || result.data[0]
+          } else {
+            mainMenu = result.data[0]
+          }
+    
+          this.setState({
+            menulist: result.data.map((item, index) => {
+              item.id = index
+              item.text = item.MenuName
+              if (item.PageParam) {
+                try {
+                  item.PageParam = JSON.parse(item.PageParam)
+                } catch (e) {
+                  item.PageParam = {OpenType: 'menu', linkUrl: ''}
+                }
+              } else {
+                item.PageParam = {OpenType: 'menu', linkUrl: ''}
+              }
+              return item
+            }),
+            systems: result.Systems.filter(sys => sys.LinkUrl1 && sys.AppKey !== window.GLOB.appkey)
+          })
+        } else if (result) {
+          notification.error({
+            top: 92,
+            message: result.message,
+            duration: 15
+          })
+        }
+
+        resolve(mainMenu)
+      })
+    })
+    
+    let _mainMenu = await promiseMenu
+    if (_mainMenu) {
+      this.props.modifyMainMenu(_mainMenu)
     }
+
+    let _role = await promiseRole
+
+    this.props.initActionPermission(_role.permRoles, _role.permAction)
   }
 
   reload = () => {
@@ -280,6 +327,36 @@
       this.loadmenu()
       this.props.modifyMainMenu('')
       this.props.resetEditState(state)
+    }
+
+    if (state && this.props.sysRoles.length === 0 && this.props.permFuncField.length === 0) {
+      Api.getSystemConfig({func: 'sPC_Get_Roles_sModular'}).then(res => {
+        if (res.status) {
+          let _permFuncField = []
+          let _sysRoles = []
+
+          if (res.Roles && res.Roles.length > 0) {
+            _sysRoles = res.Roles.map(role => {
+              return {
+                uuid: Utils.getuuid(),
+                value: role.RoleID,
+                text: role.RoleName
+              }
+            })
+          }
+
+          if (res.sModular && res.sModular.length > 0) {
+            res.sModular.forEach(field => {
+              if (field.ModularNo) {
+                _permFuncField.push(field.ModularNo)
+              }
+            })
+            _permFuncField = _permFuncField.sort()
+          }
+
+          this.props.initPermission(_sysRoles, _permFuncField)
+        }
+      })
     }
   }
 
@@ -496,6 +573,7 @@
     editState: state.editState,
     editLevel: state.editLevel,
     permAction: state.permAction,
+    sysRoles: state.sysRoles,
     permFuncField: state.permFuncField
   }
 }
@@ -506,7 +584,8 @@
     modifyMainMenu: (selectmenu) => dispatch(modifyMainMenu(selectmenu)),
     resetEditState: (state) => dispatch(resetEditState(state)),
     resetEditLevel: (level) => dispatch(resetEditLevel(level)),
-    initPermission: (permRoles, permAction, permFuncField) => dispatch(initPermission(permRoles, permAction, permFuncField)),
+    initActionPermission: (permRoles, permAction) => dispatch(initActionPermission(permRoles, permAction)),
+    initPermission: (sysRoles, permFuncField) => dispatch(initPermission(sysRoles, permFuncField)),
     initMenuPermission: (permMenus) => dispatch(initMenuPermission(permMenus)),
     resetState: () => dispatch(resetState()),
     resetDebug: () => dispatch(resetDebug()),

--
Gitblit v1.8.0