From deb2536eaaa559d6c8ec94f81afb94b6c7806b4d Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 29 三月 2024 16:15:14 +0800 Subject: [PATCH] 2024-03-29 --- src/components/tabview/index.jsx | 77 ++++++++++++++++++++++++++++++++++++-- 1 files changed, 73 insertions(+), 4 deletions(-) diff --git a/src/components/tabview/index.jsx b/src/components/tabview/index.jsx index 06635eb..51f9743 100644 --- a/src/components/tabview/index.jsx +++ b/src/components/tabview/index.jsx @@ -1,7 +1,7 @@ import React, {Component} from 'react' 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' @@ -25,8 +25,10 @@ state = { activeId: '', tabviews: [], - iFrameHeight: 0, + visible: false } + + reloading = false UNSAFE_componentWillMount () { if (!window.GLOB.mkHS) { @@ -44,6 +46,10 @@ componentDidMount () { MKEmitter.addListener('modifyTabs', this.modifyTabs) MKEmitter.addListener('closeTabView', this.closeTabView) + + if (window.GLOB.forcedUpdate) { + MKEmitter.addListener('reloadTabs', this.reloadTabs) + } } /** @@ -54,6 +60,7 @@ return } MKEmitter.removeListener('modifyTabs', this.modifyTabs) + MKEmitter.removeListener('reloadTabs', this.reloadTabs) MKEmitter.removeListener('closeTabView', this.closeTabView) } @@ -143,6 +150,53 @@ } else { MKEmitter.emit('reloadMenuView', menu.MenuID) } + } + + reloadTabs = () => { + if (this.reloading) return + + this.reloading = true + let time = new Date().getTime() + + 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) => { @@ -236,7 +290,7 @@ } render () { - const { tabviews, activeId } = this.state + const { tabviews, activeId, visible } = this.state return ( <section id="mk-tabgroup-wrap" className="mk-tabview-wrap"> @@ -273,6 +327,21 @@ </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> ) } -- Gitblit v1.8.0