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/tabviews/commontable/index.jsx |  167 ++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 115 insertions(+), 52 deletions(-)

diff --git a/src/tabviews/commontable/index.jsx b/src/tabviews/commontable/index.jsx
index 6b8431d..0541d72 100644
--- a/src/tabviews/commontable/index.jsx
+++ b/src/tabviews/commontable/index.jsx
@@ -13,7 +13,6 @@
 import UtilsUpdate from '@/utils/utils-update.js'
 import asyncComponent from '@/utils/asyncComponent'
 import asyncSpinComponent from '@/utils/asyncSpinComponent'
-import { refreshTabView } from '@/store/action'
 import MKEmitter from '@/utils/events.js'
 
 import MainSearch from '@/tabviews/zshare/topSearch'
@@ -66,7 +65,6 @@
     BIDs: {},             // 涓婄骇琛╥d
     pickup: false,        // 涓昏〃鏁版嵁闅愯棌鏄剧ず鍒囨崲
     treevisible: false,   // 鑿滃崟缁撴瀯鏍戝脊妗嗘樉绀洪殣钘忔帶鍒�
-    refreshtabs: null,    // 闇�瑕佸埛鏂扮殑鏍囩闆�
     tabActive: null,      // 鏍囩椤靛睍寮�鎺у埗
     chartId: '',          // 灞曞紑鍥捐〃ID
     statFields: [],       // 鍚堣瀛楁
@@ -545,6 +543,59 @@
   }
 
   /**
+   * @description 鑾峰彇鍗曡鏁版嵁
+   */ 
+  async loadmainLinedata (id) {
+    const { setting, arr_field, search, orderBy, BID, pageIndex, pageSize } = this.state
+
+    this.setState({
+      loading: true
+    })
+
+    let _orderBy = orderBy || setting.order
+    let param = UtilsDM.getQueryDataParams(setting, arr_field, search, _orderBy, pageIndex, pageSize, BID, this.props.menuType, this.props.dataManager, id)
+
+    if (param.func === 'sPC_Get_TableData') {
+      param.menuname = this.props.MenuName || ''
+    }
+
+    let result = await Api.genericInterface(param)
+    if (result.status) {
+      let data = fromJS(this.state.data).toJS()
+      if (result.data && result.data[0]) {
+        let _data = result.data[0]
+
+        try {
+          data = data.map(item => {
+            if (item[setting.primaryKey] === _data[setting.primaryKey]) {
+              _data.key = item.key
+              return _data
+            } else {
+              return item
+            }
+          })
+        } catch {
+          console.warn('鏁版嵁鏌ヨ閿欒')
+        }
+      }
+
+      this.setState({
+        data: data,
+        loading: false
+      })
+    } else {
+      this.setState({
+        loading: false
+      })
+      notification.error({
+        top: 92,
+        message: result.message,
+        duration: 10
+      })
+    }
+  }
+
+  /**
    * @description 鑾峰彇鍚堣瀛楁鍊�
    */
   getStatFieldsValue = () => {
@@ -649,21 +700,27 @@
   /**
    * @description 琛ㄦ牸鍒锋柊
    */
-  reloadtable = () => {
-    MKEmitter.emit('resetTable', this.props.MenuID + 'mainTable') // 鍒楄〃閲嶇疆
-    this.setState({
-      pageIndex: 1
-    }, () => {
+  reloadtable = (btn) => {
+    if (!btn || btn.resetPageIndex !== 'false') {
+      MKEmitter.emit('resetTable', this.props.MenuID + 'mainTable') // 鍒楄〃閲嶇疆
+      this.setState({
+        pageIndex: 1
+      }, () => {
+        this.loadmaindata()
+        this.getStatFieldsValue()
+      })
+    } else {
+      MKEmitter.emit('resetTable', this.props.MenuID + 'mainTable', 'false') // 鍒楄〃閲嶇疆
       this.loadmaindata()
       this.getStatFieldsValue()
-    })
+    }
   }
 
   /**
    * @description 椤甸潰鍒锋柊锛岄噸鏂拌幏鍙栭厤缃�
    */
   reloadview = () => {
-    this.setState({ loadingview: true, viewlost: false, lostmsg: '',
+    this.setState({ loadingview: true, viewlost: false, config: {}, setting: null,
       data: null, total: 0, loading: false, pageIndex: 1,
       pageSize: 10, orderBy: '', search: '', BIDs: {}, pickup: false
     }, () => {
@@ -674,38 +731,9 @@
   /**
    * @description 鎸夐挳鎿嶄綔瀹屾垚鍚庯紙鎴愬姛鎴栧け璐ワ級锛岄〉闈㈠埛鏂帮紝閲嶇疆椤电爜鍙婇�夋嫨椤�
    */
-  refreshbyaction = (position) => {
-    if (position === 'grid') {
-      this.reloadtable()
-    } else if (position === 'view') {
-      this.reloadview()
-    }
-  }
-
-  /**
-   * @description 瀛愯〃鎿嶄綔瀹屾垚鍚庡埛鏂颁富琛�
-   */
-  handleMainTable = (type, tab) => {
-    if (type === 'maingrid' && tab.supMenu === 'mainTable') {
-      this.reloadtable()
-    } else if (type === 'mainline' && tab.supMenu === 'mainTable') {
-      this.reloadtable()
-    } else if ((type === 'maingrid' || type === 'mainline') && tab.supMenu) {
-      this.setState({
-        refreshtabs: [type, tab.supMenu]
-      }, () => {
-        this.setState({
-          refreshtabs: null
-        })
-      })
-    } else if (type === 'equaltab' && tab.equalTab && tab.equalTab.length > 0) {
-      this.setState({
-        refreshtabs: tab.equalTab
-      }, () => {
-        this.setState({
-          refreshtabs: null
-        })
-      })
+  refreshbyaction = (position, btn) => {
+    if (position === 'grid' || position === 'view') {
+      this.reloadtable(btn)
     }
   }
 
@@ -822,16 +850,47 @@
     this.setState({chartId: uuid})
   }
 
+  reloadData = (menuId, id, btn) => {
+    const { MenuID } = this.props
+
+    if (MenuID !== menuId) return
+    if (id === 'empty') return
+
+    if (id === 'formtab') { // 琛ㄥ崟鏍囩椤靛埛鏂�
+      this.reloadtable(btn)
+      return
+    }
+    
+    if (!id) {
+      this.reloadtable()
+    } else {
+      this.loadmainLinedata(id)
+    }
+  }
+
+  reloadMenuView = (menuId) => {
+    const { MenuID } = this.props
+
+    if (MenuID !== menuId) return
+
+    this.reloadview()
+  }
+
+  resetActiveMenu = (menuId) => {
+    const { MenuID } = this.props
+
+    if (MenuID !== menuId) return
+
+    this.setShortcut()
+  }
+
   UNSAFE_componentWillMount () {
     // 缁勪欢鍔犺浇鏃讹紝鑾峰彇鑿滃崟鏁版嵁
     this.loadconfig()
   }
 
   UNSAFE_componentWillReceiveProps(nextProps) {
-    if (nextProps.refreshTab && nextProps.refreshTab.MenuID === this.props.MenuID) {
-      this.reloadview()
-      this.props.refreshTabView('')
-    } else if (!is(fromJS(this.props.tabviews), fromJS(nextProps.tabviews))) {
+     if (!is(fromJS(this.props.tabviews), fromJS(nextProps.tabviews))) {
       let selectTab = nextProps.tabviews.filter(tab => tab.selected)[0]
       if (selectTab && selectTab.MenuID === this.props.MenuID) {
         this.setShortcut()
@@ -851,6 +910,12 @@
     return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState))
   }
 
+  componentDidMount () {
+    MKEmitter.addListener('reloadData', this.reloadData)
+    MKEmitter.addListener('reloadMenuView', this.reloadMenuView)
+    MKEmitter.addListener('resetActiveMenu', this.resetActiveMenu)
+  }
+
   /**
    * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊锛屾竻闄ゅ揩鎹烽敭璁剧疆
    */
@@ -859,6 +924,9 @@
       return
     }
     document.onkeydown = () => {}
+    MKEmitter.removeListener('reloadData', this.reloadData)
+    MKEmitter.removeListener('reloadMenuView', this.reloadMenuView)
+    MKEmitter.removeListener('resetActiveMenu', this.resetActiveMenu)
   }
 
   render() {
@@ -1001,12 +1069,10 @@
                       mainSearch={_tab.searchPass === 'true' ? search : null}
                       userConfig={userConfig ? userConfig[_tab.uuid] : null}
                       SupMenuID={this.props.MenuID}
-                      refreshtabs={this.state.refreshtabs}
                       ContainerId={this.state.ContainerId}
                       BID={this.state.BIDs[_tab.supMenu] || ''}
                       BData={this.state.BIDs[_tab.supMenu + 'data'] || ''}
                       handleTableId={this.handleTableId}
-                      handleMainTable={(type) => this.handleMainTable(type, _tab)}
                     />
                   </TabPane>
                 )
@@ -1050,7 +1116,6 @@
   return {
     menuType: state.editLevel,
     tabviews: state.tabviews,
-    refreshTab: state.refreshTab,
     permAction: state.permAction,
     permMenus: state.permMenus,
     permRoles: state.permRoles,
@@ -1058,10 +1123,8 @@
   }
 }
 
-const mapDispatchToProps = (dispatch) => {
-  return {
-    refreshTabView: (refreshTab) => dispatch(refreshTabView(refreshTab))
-  }
+const mapDispatchToProps = () => {
+  return {}
 }
 
 export default connect(mapStateToProps, mapDispatchToProps)(NormalTable)
\ No newline at end of file

--
Gitblit v1.8.0