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