From c98e45bfac25e9110ad0383faac54a54d98ea9d5 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 18 十一月 2021 20:47:04 +0800 Subject: [PATCH] 2021-11-18 --- src/components/header/index.jsx | 236 ++++++++++++++++++++++------------------------------------ 1 files changed, 91 insertions(+), 145 deletions(-) diff --git a/src/components/header/index.jsx b/src/components/header/index.jsx index 23b1052..952e442 100644 --- a/src/components/header/index.jsx +++ b/src/components/header/index.jsx @@ -4,17 +4,16 @@ import {connect} from 'react-redux' import { is, fromJS } from 'immutable' import moment from 'moment' -import { Dropdown, Menu, Icon, Modal, Form, notification, Switch, Input, Badge } from 'antd' +import { Dropdown, Menu, Icon, Modal, Form, notification, Switch, Input } from 'antd' import { toggleCollapse, - modifyMenuTree, modifyMainMenu, - modifyTabview, initActionPermission, initMenuPermission, logout } from '@/store/action' +import asyncComponent from '@/utils/asyncComponent' import Api from '@/api' import MKEmitter from '@/utils/events.js' import options from '@/store/options.js' @@ -22,12 +21,12 @@ import enUS from '@/locales/en-US/main.js' import Utils from '@/utils/utils.js' import avatar from '@/assets/img/avatar.jpg' -import Resetpwd from './resetpwd' -import LoginForm from './loginform' import './index.scss' const { confirm } = Modal const { Search } = Input +const Resetpwd = asyncComponent(() => import('./resetpwd')) +const LoginForm = asyncComponent(() => import('./loginform')) class Header extends Component { static propTpyes = { @@ -40,16 +39,15 @@ confirmLoading: false, userName: sessionStorage.getItem('User_Name'), logourl: window.GLOB.mainlogo, + appVersion: window.GLOB.appVersion, loginVisible: false, loginLoading: false, avatar: Utils.getrealurl(sessionStorage.getItem('avatar')), systems: [], searchkey: '', thdMenuList: [], - oriVersion: '', - newVersion: '', debug: sessionStorage.getItem('debug') === 'true', - navBar: ['linkage_navigation', 'linkage', 'menu_board'].includes(window.GLOB.navBar) ? 'topmenu' : '', + navBar: ['linkage_navigation', 'linkage', 'menu_board', 'menu_board_navigation'].includes(window.GLOB.navBar) ? 'topmenu' : '', menuType: window.GLOB.navBar } @@ -90,9 +88,14 @@ if (result.status) { notification.success({ top: 92, - message: this.state.dict['main.password.resetsuccess'], + message: '淇敼鎴愬姛锛岃閲嶆柊鐧诲綍銆�', duration: 2 }) + setTimeout(() => { + sessionStorage.clear() + this.props.logout() + this.props.history.replace('/login') + }, 2000) } else { notification.warning({ top: 92, @@ -139,31 +142,33 @@ // 鑾峰彇瑙掕壊鏉冮檺 let roledefer = new Promise(resolve => { // edition_type 鎺ュ彛鐗堟湰鎺у埗 ''銆�'Y'銆�'A' - Api.getSystemConfig({ - func: 's_Get_TrdMenu_Role', - edition_type: 'A', - pro_sys: window.GLOB.systemType === 'production' ? 'Y' : '' - }).then(result => { - let _permAction = {loaded: true} // 鎸夐挳鏉冮檺 - - if (result && result.status) { - if (result.UserRoles_Menu) { - result.UserRoles_Menu.forEach(menu => { - if (!menu.MenuID) return - _permAction[menu.MenuID] = true + setTimeout(() => { + Api.getSystemConfig({ + func: 's_Get_TrdMenu_Role', + edition_type: 'A', + pro_sys: window.GLOB.systemType === 'production' ? 'Y' : '' + }).then(result => { + let _permAction = {loaded: true} // 鎸夐挳鏉冮檺 + + if (result && result.status) { + if (result.UserRoles_Menu) { + result.UserRoles_Menu.forEach(menu => { + if (!menu.MenuID) return + _permAction[menu.MenuID] = true + }) + } + } else if (result) { + notification.error({ + top: 92, + message: result.message, + duration: 10 }) } - } else if (result) { - notification.error({ - top: 92, - message: result.message, - duration: 10 - }) - } - - this.props.initActionPermission(_permAction) - resolve() - }) + + this.props.initActionPermission(_permAction) + resolve() + }) + }, 50) }) // 鑾峰彇涓昏彍鍗曞弬鏁� @@ -213,7 +218,6 @@ sessionStorage.removeItem('ThirdMenu') } - this.props.modifyMenuTree(menulist) this.props.modifyMainMenu(mainMenu) this.props.initMenuPermission([...thdMenuList, {MenuID: 'home_page_id', EasyCode: '', MenuName: 'home', type: 'CustomPage'}]) @@ -223,21 +227,12 @@ Promise.all([roledefer, menudefer]).then(response => { if (response[1]) { - let tabs = fromJS(this.props.tabviews).toJS() let menu = fromJS(response[1]).toJS() - if (this.state.navBar === 'topmenu') { - menu.selected = true - this.props.modifyTabview([menu]) + if (this.state.navBar === 'topmenu' && this.state.menuType !== 'menu_board_navigation') { + MKEmitter.emit('modifyTabs', menu, 'replace') } else { - tabs = tabs.map(tab => { - tab.selected = false - return tab - }) - - menu.selected = true - tabs.push(menu) - this.props.modifyTabview(tabs) + MKEmitter.emit('modifyTabs', menu, 'plus') } } }) @@ -341,7 +336,7 @@ _param.Full_Name = sessionStorage.getItem('Full_Name') trdItem.src = _url + window.btoa(window.encodeURIComponent(JSON.stringify(_param))) - } catch { + } catch (e) { console.warn('鑿滃崟鍙傛暟瑙f瀽閿欒锛�') } } @@ -386,9 +381,7 @@ sessionStorage.setItem('dataM', sessionStorage.getItem('cloudDataM')) sessionStorage.setItem('isEditState', 'true') - this.props.modifyMenuTree([]) this.props.modifyMainMenu(null) - this.props.modifyTabview([]) this.props.history.replace('/design') } @@ -414,11 +407,7 @@ sessionStorage.setItem('isEditState', 'true') this.setSystemFuncs() - - this.props.modifyMenuTree([]) this.props.modifyMainMenu(null) - this.props.modifyTabview([]) - this.props.history.replace('/design') } else { if (res.message.indexOf('瀵嗙爜閿欒') > -1) { @@ -585,23 +574,10 @@ this.getRolesMenu() } - UNSAFE_componentWillReceiveProps (nextProps) { - if (!is(fromJS(this.props.menuTree), fromJS(nextProps.menuTree)) && !is(fromJS(this.state.menulist), fromJS(nextProps.menuTree))) { - this.setState({ - menulist: nextProps.menuTree - }) - } - } - componentDidMount () { // 鑾峰彇绯荤粺鐨勭増鏈俊鎭紝寤舵椂鏌ヨ setTimeout(() => { - Api.getAppVersion().then(res => { - this.setState({ - oriVersion: res.oldVersion, - newVersion: res.newVersion - }) - }, () => {}) + Api.getAppVersion().then(() => {}, () => {}) }, 1000) } @@ -616,38 +592,6 @@ this.setState = () => { return } - } - - verup = () => { - const { oriVersion, newVersion } = this.state - const _this = this - - confirm({ - title: this.state.dict['main.verup'], - content: `鏈�鏂扮増鏈�${newVersion}锛屽綋鍓嶇増鏈�${oriVersion}`, - onOk() { - return new Promise(resolve => { - if (!window.GLOB.WebSql) { - notification.warning({ - top: 92, - message: '鍗囩骇澶辫触锛岃鍒锋柊椤甸潰閲嶈瘯锛�', - duration: 2 - }) - resolve() - } else { - Api.updateAppVersion(newVersion) - notification.success({ - top: 92, - message: '鍗囩骇鎴愬姛锛�', - duration: 2 - }) - _this.setState({oriVersion: newVersion}) - resolve() - } - }) - }, - onCancel() {} - }) } gotoDoc = () => { @@ -671,27 +615,11 @@ if (menu.OpenType === 'newpage' || menu.OpenType === 'NewPage') { // NewPage涓烘墦寮�澶栭儴椤甸潰鍦板潃锛宯ewpage涓烘墦寮�绯荤粺鑿滃崟 window.open(menu.src) } else if (menu.OpenType === 'blank') { - menu.selected = true - this.props.modifyTabview([menu]) - } else if (this.state.navBar === 'topmenu') { - menu.selected = true - this.props.modifyTabview([menu]) + MKEmitter.emit('modifyTabs', menu, 'replace') + } else if (this.state.navBar === 'topmenu' && this.state.menuType !== 'menu_board_navigation') { + MKEmitter.emit('modifyTabs', menu, 'replace') } else { - let tabs = fromJS(this.props.tabviews).toJS() - tabs = tabs.filter(tab => { - tab.selected = false - return tab.MenuID !== menu.MenuID - }) - - if (this.props.tabviews.length > tabs.length) { - this.props.modifyTabview(fromJS(tabs).toJS()) - } - - this.setState({}, () => { - menu.selected = true - tabs.push(menu) - this.props.modifyTabview(tabs) - }) + MKEmitter.emit('modifyTabs', menu, 'plus') } if (window.GLOB.systemType === 'production') { @@ -700,9 +628,45 @@ } } + verup = () => { + confirm({ + title: '椤甸潰鏇存柊', + content: '閲嶆柊鍔犺浇搴旂敤淇℃伅', + onOk() { + return new Promise(resolve => { + if (!window.GLOB.WebSql && !window.GLOB.IndexDB) { + notification.warning({ + top: 92, + message: '鏇存柊澶辫触锛岃鍒锋柊椤甸潰閲嶈瘯锛�', + duration: 2 + }) + resolve() + } else { + Api.updateAppVersion() + setTimeout(() => { + notification.success({ + top: 92, + message: '鏇存柊鎴愬姛锛�', + duration: 2 + }) + resolve() + }, 1000) + } + }) + }, + onCancel() {} + }) + } + + about = () => { + Modal.success({ + title: '绯荤粺鐗堟湰v' + this.state.appVersion + }) + } + render () { const { mainMenu, collapse } = this.props - const { thdMenuList, searchkey, oriVersion, newVersion, debug, menulist, navBar, menuType } = this.state + const { thdMenuList, searchkey, debug, menulist, navBar, menuType, appVersion } = this.state const menu = ( <Menu className="header-dropdown"> @@ -717,8 +681,11 @@ ))} </Menu.SubMenu> : null} <Menu.Item key="doc" onClick={this.gotoDoc}>{this.state.dict['main.doc']}</Menu.Item> - {oriVersion ? <Menu.Item key="verup" onClick={this.verup}> - <Badge dot={oriVersion !== newVersion}>{this.state.dict['main.verup']}</Badge> + <Menu.Item key="verup" onClick={this.verup}> + 椤甸潰鏇存柊 + </Menu.Item> + {appVersion ? <Menu.Item key="version" onClick={this.about}> + 鍏充簬 </Menu.Item> : null} <Menu.Item key="logout" onClick={this.logout}>{this.state.dict['main.logout']}</Menu.Item> </Menu> @@ -742,7 +709,7 @@ })} </ul> : null } - {navBar === 'topmenu' && menuType !== 'menu_board' && menulist ? + {navBar === 'topmenu' && menuType !== 'menu_board' && menuType !== 'menu_board_navigation' && menulist ? <ul className="header-menu vertical-menu">{ menulist.map(item => { if (item.children && item.children.length > 0) { @@ -785,7 +752,7 @@ })} </ul> : null } - {navBar === 'topmenu' && menuType === 'menu_board' && menulist ? + {navBar === 'topmenu' && (menuType === 'menu_board' || menuType === 'menu_board_navigation') && menulist ? <ul className="header-menu vertical-menu">{ menulist.map(item => { if (item.children && item.children.length > 0) { @@ -807,22 +774,6 @@ ) })} </div> - // <Menu mode="horizontal"> - // {item.children.map(cell => { - // return ( - // <Menu.Item key={cell.MenuID}> - // <div>{cell.MenuName}</div> - // <div> - // {cell.children && cell.children.map(m => ( - // <Menu.Item key={m.MenuID} onClick={() => {this.changeVerMenu(m)}}> - // {m.MenuName} - // </Menu.Item> - // ))} - // </div> - // </Menu.Item> - // ) - // })} - // </Menu> }> <li> <span>{item.MenuName}</span> @@ -914,19 +865,14 @@ const mapStateToProps = (state) => { return { - tabviews: state.tabviews, collapse: state.collapse, - menuTree: state.menuTree, - mainMenu: state.mainMenu, - permAction: state.permAction, + mainMenu: state.mainMenu } } const mapDispatchToProps = (dispatch) => { return { toggleCollapse: (collapse) => dispatch(toggleCollapse(collapse)), - modifyTabview: (tabviews) => dispatch(modifyTabview(tabviews)), - modifyMenuTree: (menuTree) => dispatch(modifyMenuTree(menuTree)), modifyMainMenu: (mainMenu) => dispatch(modifyMainMenu(mainMenu)), initActionPermission: (permAction) => dispatch(initActionPermission(permAction)), initMenuPermission: (permMenus) => dispatch(initMenuPermission(permMenus)), -- Gitblit v1.8.0