From 6b202fcb9446a289d64dd1a36e881b688c9bb72b Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 28 七月 2023 19:25:19 +0800
Subject: [PATCH] 2023-07-28

---
 src/tabviews/custom/components/card/data-card/index.jsx |  130 +++++++++++++++++++++++++++++++++----------
 1 files changed, 100 insertions(+), 30 deletions(-)

diff --git a/src/tabviews/custom/components/card/data-card/index.jsx b/src/tabviews/custom/components/card/data-card/index.jsx
index 08b1383..a3232f0 100644
--- a/src/tabviews/custom/components/card/data-card/index.jsx
+++ b/src/tabviews/custom/components/card/data-card/index.jsx
@@ -32,12 +32,12 @@
     pageSize: 10,
     orderBy: '',
     pageOptions: [],
-    activeKey: '',             // 閫変腑鍗�
-    selectKeys: [],            // 澶氶�夋椂閫変腑鍗$墖
-    selectedData: [],          // 閫変腑鏁版嵁锛岀敤浜庡伐鍏锋爮鎸夐挳
-    loading: false,            // 鏁版嵁鍔犺浇鐘舵��
-    card: null,                // 鍗$墖璁剧疆
-    data: null,                // 鏁版嵁
+    activeKey: '',
+    selectKeys: [],
+    selectedData: [],
+    loading: false,
+    card: null,
+    data: null,
     total: null,
     precards: [],
     nextcards: [],
@@ -457,9 +457,7 @@
 
     if (selected === 'false' && !id) return
 
-    setTimeout(() => {
-      this.checkTopLine(id)
-    }, 200)
+    this.checkTopLine(id)
 
     if (selected === 'init') {
       this.setState({selected: 'false'})
@@ -812,12 +810,17 @@
         })
       }
 
+      let total = result.total || 0
+      if (config.setting.custompage && data.length) {
+        total = data[data.length - 1].mk_total || 0
+      }
+
       this.setState({
         activeKey: '',
         selectKeys: [],
         selectedData: [],
         data: data,
-        total: result.total,
+        total: total,
         loading: false
       })
 
@@ -888,33 +891,99 @@
     let result = await Api.genericInterface(param)
     if (result.status) {
       let data = fromJS(this.state.data).toJS()
+      let selectedData = fromJS(this.state.selectedData).toJS()
+      let selectKeys = fromJS(this.state.selectKeys).toJS()
+      let activeKey = this.state.activeKey
+
       if (result.data && result.data[0]) {
         let _data = result.data[0]
+        _data.$$uuid = _data[config.setting.primaryKey] || ''
+        _data.$$BID = BID || ''
+        _data.$$BData = BData || ''
 
-        try {
-          data = data.map(item => {
-            if (item[config.setting.primaryKey] === _data[config.setting.primaryKey]) {
-              _data.key = item.key
-              _data.$$uuid = _data[config.setting.primaryKey] || ''
-              _data.$$BID = BID || ''
-              _data.$$BData = BData || ''
-              _data.$Index = item.$Index
-              return _data
-            } else {
-              return item
-            }
+        data = data.map(item => {
+          if (item.$$uuid === _data.$$uuid) {
+            _data.key = item.key
+            _data.$Index = item.$Index
+            return _data
+          }
+          return item
+        })
+
+        if (!_data.$Index) {
+          this.setState({
+            loading: false
           })
-        } catch (e) {
-          console.warn('鏁版嵁鏌ヨ閿欒')
+          return
         }
 
-        MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data)
-      }
+        selectedData = selectedData.map(item => {
+          if (item.$$uuid === _data.$$uuid) {
+            return _data
+          }
+          return item
+        })
 
-      this.setState({
-        data: data,
-        loading: false
-      })
+        this.setState({
+          data: data,
+          selectedData: selectedData,
+          loading: false
+        })
+
+        if (_data.key === activeKey) {
+          MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data)
+        }
+        if (config.setting.$hasSyncModule) {
+          MKEmitter.emit('syncBalconyData', config.uuid, selectedData, data.length === selectedData.length)
+        }
+      } else {
+        let index = data.findIndex(item => item.$$uuid === id)
+
+        if (index === -1) {
+          this.setState({
+            loading: false
+          })
+          return
+        }
+
+        data = data.filter(item => item.$$uuid !== id)
+        data = data.map((item, i) => {
+          item.key = i
+          return item
+        })
+        
+        let trans = activeKey === index
+        let _item = null
+        
+        if (config.wrap.cardType) {
+          selectKeys = selectKeys.filter(key => key !== index)
+          selectKeys = selectKeys.map(key => key > index ? key - 1 : key)
+
+          selectedData = selectKeys.map(key => data[key]).filter(Boolean)
+
+          activeKey = selectKeys.length ? selectKeys[selectKeys.length - 1] : ''
+
+          if (trans && selectedData.length) {
+            _item = selectedData[selectedData.length - 1]
+          }
+        }
+
+        this.setState({
+          data: data,
+          activeKey: activeKey,
+          selectKeys: selectKeys,
+          selectedData: selectedData,
+          loading: false
+        })
+
+        if (trans) {
+          MKEmitter.emit('resetSelectLine', config.uuid, (_item ? _item.$$uuid : ''), _item)
+        }
+
+        if (config.setting.$hasSyncModule) {
+          MKEmitter.emit('syncBalconyData', config.uuid, selectedData, data.length === selectedData.length)
+        }
+      }
     } else {
       this.setState({
         loading: false
@@ -1022,6 +1091,7 @@
       if (activeKey === index) return
 
       _selectedData = [item]
+      _selectKeys = [index]
       _activeKey = index
     }
 

--
Gitblit v1.8.0