From a02fc6a77fa1b35c6516b2d37108d80e260c6c85 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 07 十一月 2024 22:05:08 +0800 Subject: [PATCH] 2024-11-07 --- src/components/tabview/index.jsx | 120 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 89 insertions(+), 31 deletions(-) diff --git a/src/components/tabview/index.jsx b/src/components/tabview/index.jsx index 1d2e3da..f4a5dc0 100644 --- a/src/components/tabview/index.jsx +++ b/src/components/tabview/index.jsx @@ -1,15 +1,12 @@ import React, {Component} from 'react' -import PropTypes from 'prop-types' -import {connect} from 'react-redux' import { fromJS } from 'immutable' -import {Tabs, BackTop, notification} from 'antd' -import { RedoOutlined, CloseOutlined } from '@ant-design/icons' +import { Tabs, BackTop, notification, Modal } from 'antd' +import { RedoOutlined, CloseOutlined, LoadingOutlined } from '@ant-design/icons' import moment from 'moment' import 'moment/locale/zh-cn' import asyncComponent from '@/utils/asyncLoadComponent' import NotFount from '@/components/404' -import options from '@/store/options.js' import MKEmitter from '@/utils/events.js' import Api from '@/api' import './index.scss' @@ -22,18 +19,18 @@ const Iframe = asyncComponent(() => import('@/tabviews/iframe')) const RoleManage = asyncComponent(() => import('@/tabviews/rolemanage')) -moment.locale('zh-cn') +if (sessionStorage.getItem('lang') === 'zh-CN') { + moment.locale('zh-cn') +} class TabViews extends Component { - static propTpyes = { - collapse: PropTypes.bool - } - state = { activeId: '', tabviews: [], - iFrameHeight: 0, + visible: false } + + reloading = false UNSAFE_componentWillMount () { if (!window.GLOB.mkHS) { @@ -41,7 +38,7 @@ activeId: 'home_page_id', tabviews: [{ MenuID: 'home_page_id', - MenuName: '棣栭〉', + MenuName: window.GLOB.dict['home'] || '棣栭〉', type: 'Home' }] }) @@ -51,6 +48,7 @@ componentDidMount () { MKEmitter.addListener('modifyTabs', this.modifyTabs) MKEmitter.addListener('closeTabView', this.closeTabView) + MKEmitter.addListener('reloadTabs', this.reloadTabs) } /** @@ -61,6 +59,7 @@ return } MKEmitter.removeListener('modifyTabs', this.modifyTabs) + MKEmitter.removeListener('reloadTabs', this.reloadTabs) MKEmitter.removeListener('closeTabView', this.closeTabView) } @@ -104,7 +103,7 @@ e.stopPropagation() window.GLOB.CacheMap = new Map() - if (options.sysType === 'local' && window.GLOB.systemType !== 'production') { + if (window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production') { let roledefer = new Promise(resolve => { Api.getSystemConfig({ func: 's_Get_TrdMenu_Role', @@ -150,6 +149,60 @@ } else { MKEmitter.emit('reloadMenuView', menu.MenuID) } + } + + reloadTabs = () => { + if (this.reloading) return + + let time = new Date().getTime() + + let oldTime = sessionStorage.getItem('mk_reloadTabs') + + if (oldTime && time - oldTime < 180000) return + + sessionStorage.setItem('mk_reloadTabs', time) + + this.reloading = true + + this.setState({visible: true}) + + Api.getAppVersion(true).then((list) => { + let _time = new Date().getTime() + let delay = _time - time + delay = delay < 3000 ? 3000 - delay : 0 + + setTimeout(() => { + this.setState({visible: false}) + this.reloading = false + + Modal.success({ + title: '鏇存柊鎴愬姛銆�', + }) + + if (list && list.length) { + let _tabIds = this.state.tabviews.map(item => item.MenuID) + list.forEach((m, i) => { + if (_tabIds.includes(m)) { + setTimeout(() => { + MKEmitter.emit('reloadMenuView', m) + }, i * 20) + } + }) + } + }, delay) + }, (message) => { + let _time = new Date().getTime() + let delay = _time - time + delay = delay < 3000 ? 3000 - delay : 0 + + setTimeout(() => { + this.setState({visible: false}) + this.reloading = false + Modal.error({ + title: message || '绯荤粺閰嶇疆鏇存柊澶辫触锛�', + }) + }, delay) + }) } modifyTabs = (tab, fixed) => { @@ -223,18 +276,18 @@ selectcomponent = (view) => { // 鏍规嵁tab椤典腑鑿滃崟淇℃伅锛岄�夋嫨鎵�闇�鐨勭粍浠� - if (view.type === 'Home') { - return (<Home MenuID={view.MenuID} MenuName={view.MenuName}/>) - } else if (view.type === 'BaseTable') { + if (view.type === 'BaseTable') { return (<BaseTable MenuID={view.MenuID} MenuName={view.MenuName} param={view.param} changeTemp={this.changeTemp}/>) } else if (view.type === 'CustomPage') { return (<CustomPage MenuID={view.MenuID} MenuName={view.MenuName} param={view.param} changeTemp={this.changeTemp}/>) + } else if (view.type === 'Home') { + return (<Home MenuID={view.MenuID} MenuName={view.MenuName}/>) + } else if (view.type === 'RolePermission') { + return (<RoleManage MenuID={view.MenuID}/>) } else if (view.type === 'CommonTable') { return (<CommonTable MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} param={view.param} changeTemp={this.changeTemp}/>) } else if (view.type === 'TreePage') { return (<TreePage MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} param={view.param}/>) - } else if (view.type === 'RolePermission') { - return (<RoleManage MenuID={view.MenuID}/>) } else if (view.type === 'iframe') { return (<Iframe MenuID={view.MenuID} title={view.MenuName} url={view.src}/>) } else { @@ -243,10 +296,10 @@ } render () { - const { tabviews, activeId } = this.state + const { tabviews, activeId, visible } = this.state return ( - <section id="mk-tabgroup-wrap" className={'mk-tabview-wrap' + (this.props.collapse ? ' collapsed' : '')}> + <section id="mk-tabgroup-wrap" className="mk-tabview-wrap"> <div className="content-header"> {tabviews.length > 0 && <Tabs activeKey={activeId}> @@ -280,19 +333,24 @@ </Tabs> } </div> + <Modal + visible={visible} + width={400} + closable={false} + centered={true} + footer={null} + destroyOnClose + > + <div className="mk-menus-update"> + <div className="tip"> + 绯荤粺鏇存柊涓紝璇风◢鍚� + </div> + <LoadingOutlined /> + </div> + </Modal> </section> ) } } -const mapStateToProps = (state) => { - return { - collapse: state.collapse, - } -} - -const mapDispatchToProps = (dispatch) => { - return {} -} - -export default connect(mapStateToProps, mapDispatchToProps)(TabViews) \ No newline at end of file +export default TabViews \ No newline at end of file -- Gitblit v1.8.0