From 3ca91a731665962918a026f521c556f4745ebf35 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期一, 16 十一月 2020 19:20:19 +0800 Subject: [PATCH] 2020-11-16 --- src/components/tabview/index.jsx | 86 +++++++++++++++++++++++++++--------------- 1 files changed, 55 insertions(+), 31 deletions(-) diff --git a/src/components/tabview/index.jsx b/src/components/tabview/index.jsx index 386daec..7829c68 100644 --- a/src/components/tabview/index.jsx +++ b/src/components/tabview/index.jsx @@ -6,12 +6,13 @@ import moment from 'moment' import 'moment/locale/zh-cn' -import {modifyTabview, toggleIsiframe, refreshTabView} from '@/store/action' +import { modifyTabview, toggleIsiframe } from '@/store/action' import asyncComponent from '@/utils/asyncLoadComponent' import NotFount from '@/components/404' import options from '@/store/options.js' import mzhCN from '@/locales/zh-CN/main.js' import menUS from '@/locales/en-US/main.js' +import MKEmitter from '@/utils/events.js' import './index.scss' @@ -42,6 +43,7 @@ } state = { + activeId: '', tabviews: null, // 鏍囩闆� iFrameHeight: 0, dict: localStorage.getItem('lang') !== 'en-US' ? mzhCN : menUS @@ -55,8 +57,15 @@ return tab.MenuID !== menu.MenuID }) - if (menu.selected) { - tabs[0] && (tabs[0].selected = true) + if (menu.selected && tabs[0]) { + tabs[0].selected = true + this.setState({ + activeId: tabs[0].MenuID || '' + }) + + if (this.props.isiframe) { + this.props.toggleIsiframe(false) + } } this.props.modifyTabview(tabs) @@ -66,11 +75,7 @@ e.stopPropagation() window.GLOB.CacheMap = new Map() - let _menu = { - MenuID: menu.MenuID, - position: 'view' - } - this.props.refreshTabView(_menu) + MKEmitter.emit('reloadMenuView', menu.MenuID) } changeTab = (e, menu) => { @@ -87,8 +92,26 @@ return tab }) + if (menu) { + let _isiframe = this.props.isiframe + if (menu.type === 'iframe') { + _isiframe = true + } else { + _isiframe = false + } + + if (_isiframe !== this.props.isiframe) { + this.props.toggleIsiframe(_isiframe) + } + } + this.setState({ - tabviews: tabs + tabviews: tabs, + activeId: menu.MenuID || '' + }, () => { + if (menu.MenuID) { + MKEmitter.emit('resetActiveMenu', menu.MenuID) + } }) this.props.modifyTabview(tabs) @@ -120,21 +143,6 @@ return (<Iframe key={view.MenuID} title={view.MenuName} MenuName={view.MenuName} url={service + view.LinkUrl}/>) } else { return (<NotFount key={view.MenuID} />) - } - } - - resetWindow = (view) => { - // 绐楀彛鍦╥frame涓庢櫘閫氶〉闈㈠垏鎹㈡椂锛屼慨鏀瑰乏渚ц彍鍗曟爮鏍峰紡 - if (!view) return - let _isiframe = this.props.isiframe - if (view && view.type === 'iframe') { - _isiframe = true - } else { - _isiframe = false - } - - if (_isiframe !== this.props.isiframe) { - this.props.toggleIsiframe(_isiframe) } } @@ -173,9 +181,29 @@ UNSAFE_componentWillReceiveProps (nextProps) { if (nextProps.tabviews && !is(fromJS(this.state.tabviews), fromJS(nextProps.tabviews))) { + let view = nextProps.tabviews.filter(tab => tab.selected)[0] + + // 绐楀彛鍦╥frame涓庢櫘閫氶〉闈㈠垏鎹㈡椂锛屼慨鏀瑰乏渚ц彍鍗曟爮鏍峰紡 + let activeId = '' + if (view) { + let _isiframe = this.props.isiframe + if (view.type === 'iframe') { + _isiframe = true + } else { + _isiframe = false + } + + if (_isiframe !== this.props.isiframe) { + this.props.toggleIsiframe(_isiframe) + } + + activeId = view.MenuID + } + // 淇濆瓨淇敼鏍囩闆� this.setState({ - tabviews: nextProps.tabviews + tabviews: nextProps.tabviews, + activeId }) let node = document.getElementById('root').parentNode.parentNode @@ -196,16 +224,13 @@ render () { const { menuType } = this.props - const { tabviews } = this.state - let view = tabviews.filter(tab => tab.selected)[0] - this.resetWindow(view) - let selectedTabId = view ? view.MenuID : '' + const { tabviews, activeId } = this.state return ( <section className={'flex-container content-box' + (this.props.collapse ? ' collapsed' : '')}> <div className="content-header"> {tabviews && tabviews.length > 0 && - <Tabs activeKey={selectedTabId}> + <Tabs activeKey={activeId}> {tabviews.map(view => { return ( <Tabs.TabPane @@ -264,7 +289,6 @@ const mapDispatchToProps = (dispatch) => { return { modifyTabview: (tabviews) => dispatch(modifyTabview(tabviews)), - refreshTabView: (refreshTab) => dispatch(refreshTabView(refreshTab)), toggleIsiframe: (isiframe) => dispatch(toggleIsiframe(isiframe)) } } -- Gitblit v1.8.0