From 12add7610dc9a998b4296e3f203fa858694bdbd3 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 31 八月 2021 12:59:52 +0800
Subject: [PATCH] 2021-08-31

---
 src/components/tabview/index.jsx |   41 +++++++++++++++++++++++++++++++++++------
 1 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/src/components/tabview/index.jsx b/src/components/tabview/index.jsx
index cab23a1..c1b6dc0 100644
--- a/src/components/tabview/index.jsx
+++ b/src/components/tabview/index.jsx
@@ -49,7 +49,7 @@
     dict: sessionStorage.getItem('lang') !== 'en-US' ? mzhCN : menUS,
   }
 
-  handleTabview = (e, menu) => {
+  handleTabview = (e, menu, index) => {
     e.stopPropagation()
     // 鍏抽棴tab椤碉紝閲嶆柊閫夋嫨鏄剧ず椤�
     let tabs = fromJS(this.state.tabviews).toJS()
@@ -57,10 +57,37 @@
       return tab.MenuID !== menu.MenuID
     })
     
-    if (menu.selected && tabs[0]) {
-      tabs[0].selected = true
+    if (menu.selected && tabs[index - 1]) {
+      tabs[index - 1].selected = true
       this.setState({
-        activeId: tabs[0].MenuID || ''
+        activeId: tabs[index - 1].MenuID || ''
+      })
+
+      if (this.props.isiframe) {
+        this.props.toggleIsiframe(false)
+      }
+    }
+
+    this.props.modifyTabview(tabs)
+  }
+
+  closeTabView = (id) => {
+    // 鍏抽棴tab椤碉紝閲嶆柊閫夋嫨鏄剧ず椤�
+    let tabs = fromJS(this.state.tabviews).toJS()
+    let index = 0
+    tabs = tabs.filter((tab, i) => {
+      if (tab.MenuID === id) {
+        index = i
+        return false
+      } else {
+        return true
+      }
+    })
+    
+    if (tabs[index - 1]) {
+      tabs[index - 1].selected = true
+      this.setState({
+        activeId: tabs[index - 1].MenuID || ''
       })
 
       if (this.props.isiframe) {
@@ -214,6 +241,7 @@
       }
       this.props.modifyTabview([home])
     }
+    MKEmitter.addListener('closeTabView', this.closeTabView)
   }
 
   UNSAFE_componentWillReceiveProps (nextProps) {
@@ -257,6 +285,7 @@
     this.setState = () => {
       return
     }
+    MKEmitter.removeListener('closeTabView', this.closeTabView)
   }
 
   render () {
@@ -267,7 +296,7 @@
         <div className="content-header">
           {tabviews && tabviews.length > 0 &&
             <Tabs activeKey={activeId}>
-              {tabviews.map(view => {
+              {tabviews.map((view, index) => {
                 return (
                   <Tabs.TabPane
                     tab={
@@ -277,7 +306,7 @@
                           {view.MenuName}
                         </span>
                         {view.type !== 'Home' ?
-                          <Icon type="close" onClick={(e) => {this.handleTabview(e, view)}}/> : null
+                          <Icon type="close" onClick={(e) => {this.handleTabview(e, view, index)}}/> : null
                         }
                       </span>
                     }

--
Gitblit v1.8.0