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/table-card/index.jsx       |    7 
 src/tabviews/custom/components/card/prop-card/index.jsx        |   19 +
 src/utils/utils-datamanage.js                                  |   13 
 src/tabviews/custom/components/table/base-table/index.jsx      |  132 ++++++---
 src/tabviews/custom/components/card/double-data-card/index.jsx |  145 ++++++++---
 src/tabviews/custom/components/table/normal-table/index.jsx    |  187 +++++++------
 src/menu/datasource/verifycard/customscript/index.jsx          |    2 
 src/tabviews/custom/components/interfaces/interItem/index.jsx  |    2 
 src/tabviews/custom/components/carousel/data-card/index.jsx    |    2 
 src/tabviews/custom/popview/index.jsx                          |    4 
 src/tabviews/custom/components/table/edit-table/index.jsx      |    7 
 src/tabviews/basetable/index.jsx                               |    4 
 src/tabviews/custom/components/carousel/prop-card/index.jsx    |   14 
 src/tabviews/custom/components/calendar/index.jsx              |    2 
 src/tabviews/custom/index.jsx                                  |    4 
 src/tabviews/custom/components/share/normalTable/index.jsx     |   47 ++
 src/tabviews/custom/components/card/data-card/index.jsx        |  130 +++++++--
 17 files changed, 486 insertions(+), 235 deletions(-)

diff --git a/src/menu/datasource/verifycard/customscript/index.jsx b/src/menu/datasource/verifycard/customscript/index.jsx
index 95b2939..8c27284 100644
--- a/src/menu/datasource/verifycard/customscript/index.jsx
+++ b/src/menu/datasource/verifycard/customscript/index.jsx
@@ -291,7 +291,7 @@
             <Form.Item label="鍙敤瀛楁" className="field-able">
               <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'鍏叡鍊硷紝璇锋寜鐓xxx@鏍煎紡浣跨敤銆�'}><span style={{color: '#1890ff'}}>BID, LoginUID, SessionUid, UserID, Appkey, time_id, typename</span></Tooltip>,&nbsp;
               <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'绯荤粺鍙橀噺锛岀郴缁熶細瀹氫箟鍙橀噺骞惰祴鍊笺��'}><span style={{color: '#fa8c16'}}>UserName, FullName, RoleID, mk_departmentcode, mk_organization, mk_user_type, mk_nation, mk_province, mk_city, mk_district, mk_address</span></Tooltip>,&nbsp;
-              <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'鎺掑簭銆佸垎椤典互鍙婃悳绱㈡潯浠跺彉閲忥紝璇锋寜鐓xxx@鏍煎紡浣跨敤銆�'}>orderBy, pageSize, pageIndex{usefulFields ? ', ' + usefulFields : ''}{type === 'calendar' ? ', mk_year' : ''}</Tooltip>
+              <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'鎺掑簭銆佸垎椤典互鍙婃悳绱㈡潯浠跺彉閲忥紝璇锋寜鐓xxx@鏍煎紡浣跨敤銆備娇鐢ˊpageSize@浠h〃鑷畾涔夊垎椤碉紝鎬绘暟璇蜂互mk_total杩斿洖銆�'}>orderBy, pageSize, pageIndex{usefulFields ? ', ' + usefulFields : ''}{type === 'calendar' ? ', mk_year' : ''}</Tooltip>
               <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'url鍙橀噺锛岃鎸夌収@xxx@鏍煎紡浣跨敤銆�'}>{urlFields ? ', ' : ''}<span style={{color: '#13c2c2'}}>{urlFields}</span></Tooltip>
             </Form.Item>
           </Col>
diff --git a/src/tabviews/basetable/index.jsx b/src/tabviews/basetable/index.jsx
index 630f728..b84ae2e 100644
--- a/src/tabviews/basetable/index.jsx
+++ b/src/tabviews/basetable/index.jsx
@@ -569,6 +569,10 @@
 
       component.setting.customScript = _customScript // 鏁寸悊鍚庤嚜瀹氫箟鑴氭湰
 
+      if (component.setting.laypage) {
+        component.setting.custompage = /@pageSize@/i.test(component.setting.dataresource + component.setting.customScript)
+      }
+
       component.setting.delay = delay
       delay += 20
 
diff --git a/src/tabviews/custom/components/calendar/index.jsx b/src/tabviews/custom/components/calendar/index.jsx
index 6363ec0..52c638a 100644
--- a/src/tabviews/custom/components/calendar/index.jsx
+++ b/src/tabviews/custom/components/calendar/index.jsx
@@ -208,7 +208,7 @@
     if (result.status) {
       this.loaded = true
       if (config.$cache && config.setting.onload !== 'false') {
-        Api.writeCacheConfig(config.uuid, result.data || '')
+        Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
       let data = []
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
     }
 
diff --git a/src/tabviews/custom/components/card/double-data-card/index.jsx b/src/tabviews/custom/components/card/double-data-card/index.jsx
index 8f4e530..4d0098b 100644
--- a/src/tabviews/custom/components/card/double-data-card/index.jsx
+++ b/src/tabviews/custom/components/card/double-data-card/index.jsx
@@ -190,7 +190,7 @@
       wrapStyle: wrapStyle,
       card: _card,
       search: _config.$searches,
-      arr_field: _config.columns.map(col => col.field).join(','),
+      arr_field: _config.columns.map(col => col.field).join(',')
     })
   }
 
@@ -712,13 +712,18 @@
         opens = []
       }
 
+      let total = result.total || 0
+      if (config.setting.custompage && data.length) {
+        total = data[data.length - 1].mk_total || 0
+      }
+
       this.setState({
         activeKey: '',
         selectKeys: [],
         opens: opens,
         selectedData: [],
         data: data,
-        total: result.total,
+        total: total,
         loading: false
       })
 
@@ -789,56 +794,115 @@
     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]) {
-              let children = []
+        data = data.map(item => {
+          if (item.$$uuid === _data.$$uuid) {
+            let children = []
 
-              if (_data[config.setting.subdata]) {
-                let _children = _data[config.setting.subdata]
+            if (_data[config.setting.subdata]) {
+              let _children = _data[config.setting.subdata]
 
-                delete _data[config.setting.subdata]
+              delete _data[config.setting.subdata]
 
-                _children.forEach((cell, i) => {
-                  cell.key = i
-                  cell.$$uuid = cell[config.setting.subKey] || ''
-                  cell.$$parentId = _data[config.setting.primaryKey] || ''
-                  cell.$$BID = _data[config.setting.primaryKey] || ''
-                  cell.$$BData = {..._data}
-                  cell.$Index = i + 1 + ''
+              _children.forEach((cell, i) => {
+                cell.key = i
+                cell.$$uuid = cell[config.setting.subKey] || ''
+                cell.$$parentId = _data[config.setting.primaryKey] || ''
+                cell.$$BID = _data[config.setting.primaryKey] || ''
+                cell.$$BData = {..._data}
+                cell.$Index = i + 1 + ''
 
-                  if (cell.$$uuid) {
-                    children.push(cell)
-                  }
-                })
-              }
-
-              _data.children = children
-
-              _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
+                if (cell.$$uuid) {
+                  children.push(cell)
+                }
+              })
             }
+
+            _data.children = children
+            _data.key = item.key
+            _data.$Index = item.$Index
+            return _data
+          } else {
+            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)
+        }
+      } 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)
+        }
+      }
     } else {
       this.setState({
         loading: false
@@ -929,6 +993,7 @@
       if (activeKey === index) return
 
       _selectedData = [item]
+      _selectKeys = [index]
       _activeKey = index
     }
 
diff --git a/src/tabviews/custom/components/card/prop-card/index.jsx b/src/tabviews/custom/components/card/prop-card/index.jsx
index 3ea4c17..e22cc5b 100644
--- a/src/tabviews/custom/components/card/prop-card/index.jsx
+++ b/src/tabviews/custom/components/card/prop-card/index.jsx
@@ -66,7 +66,7 @@
 
         window.GLOB.SyncData.delete(_config.dataName)
       }
-    } else if (_config.wrap.datatype === 'public' && window.GLOB.CacheData.get(_config.wrap.publicId)) {
+    } else if (_config.wrap.datatype === 'public' && window.GLOB.CacheData.has(_config.wrap.publicId)) {
       _data = window.GLOB.CacheData.get(_config.wrap.publicId)
       _data = fromJS(_data).toJS()
       this.loaded = true
@@ -193,6 +193,19 @@
       
               this.setState({data: _data})
             })
+          } else {
+            if (config.wrap.goback === 'true' && data.$$empty) {
+              this.timer && this.timer.stop()
+    
+              MKEmitter.emit('closeTabView', config.$pageId)
+            } else {
+              if (selected !== 'false') {
+                this.checkTopLine()
+              } else {
+                this.transferLine()
+              }
+              this.autoExec()
+            }
           }
         } else {
           if (!this.loaded) {
@@ -260,9 +273,7 @@
       }
     } else {
       if (selected !== 'false') {
-        setTimeout(() => {
-          this.checkTopLine()
-        }, 200)
+        this.checkTopLine()
       }
 
       if (config.$cache && config.$time && config.wrap.autoExec) {
diff --git a/src/tabviews/custom/components/card/table-card/index.jsx b/src/tabviews/custom/components/card/table-card/index.jsx
index 1d47c0b..8f693fa 100644
--- a/src/tabviews/custom/components/card/table-card/index.jsx
+++ b/src/tabviews/custom/components/card/table-card/index.jsx
@@ -403,9 +403,14 @@
         })
       }
 
+      let total = result.total || 0
+      if (config.setting.custompage && data.length) {
+        total = data[data.length - 1].mk_total || 0
+      }
+
       this.setState({
         data: data,
-        total: result.total,
+        total: total,
         loading: false
       })
 
diff --git a/src/tabviews/custom/components/carousel/data-card/index.jsx b/src/tabviews/custom/components/carousel/data-card/index.jsx
index 06dc320..f83040f 100644
--- a/src/tabviews/custom/components/carousel/data-card/index.jsx
+++ b/src/tabviews/custom/components/carousel/data-card/index.jsx
@@ -166,6 +166,8 @@
     
             this.setState({data: _data})
           })
+        } else {
+          this.openModal()
         }
       } else {
         if (!this.loaded) {
diff --git a/src/tabviews/custom/components/carousel/prop-card/index.jsx b/src/tabviews/custom/components/carousel/prop-card/index.jsx
index ba2b928..0088328 100644
--- a/src/tabviews/custom/components/carousel/prop-card/index.jsx
+++ b/src/tabviews/custom/components/carousel/prop-card/index.jsx
@@ -160,6 +160,8 @@
       
               this.setState({data: _data})
             })
+          } else {
+            this.openModal()
           }
         } else {
           if (!this.loaded) {
@@ -188,7 +190,7 @@
       } else if (this.loaded) {
         this.openModal()
       }
-    } else if (config.wrap.display === 'modal' && config.wrap.datatype === 'static') {
+    } else if (config.wrap.datatype === 'static') {
       this.openModal()
     }
   }
@@ -215,9 +217,7 @@
     this.loaded = true
 
     this.setState({data: _data}, () => {
-      if (config.wrap.display === 'modal') {
-        this.openModal()
-      }
+      this.openModal()
     })
 
     window.GLOB.SyncData.delete(config.dataName)
@@ -237,6 +237,8 @@
 
   openModal = (ErrCode) => {
     const { config, data } = this.state
+
+    if (config.wrap.display !== 'modal') return
     
     let code = config.wrap.code || ('modal' + config.uuid)
     let tip = localStorage.getItem(code)
@@ -374,9 +376,7 @@
         data: _data,
         loading: false
       }, () => {
-        if (config.wrap.display === 'modal') {
-          this.openModal(result.ErrCode)
-        }
+        this.openModal(result.ErrCode)
       })
 
       if (config.timer && config.clearField && result.data && result.data[0]) {
diff --git a/src/tabviews/custom/components/interfaces/interItem/index.jsx b/src/tabviews/custom/components/interfaces/interItem/index.jsx
index 7e8c885..893397e 100644
--- a/src/tabviews/custom/components/interfaces/interItem/index.jsx
+++ b/src/tabviews/custom/components/interfaces/interItem/index.jsx
@@ -122,8 +122,6 @@
         _data.$$uuid = _data[config.setting.primaryKey] || ''
       }
       
-      _data.$$loaded = true
-
       window.GLOB.CacheData.set(config.uuid, _data)
 
       MKEmitter.emit('mkPublicData', config.uuid, _data)
diff --git a/src/tabviews/custom/components/share/normalTable/index.jsx b/src/tabviews/custom/components/share/normalTable/index.jsx
index b16b14a..b286f49 100644
--- a/src/tabviews/custom/components/share/normalTable/index.jsx
+++ b/src/tabviews/custom/components/share/normalTable/index.jsx
@@ -750,9 +750,6 @@
     }
   }
 
-  /**
-   * 
-   */
   onSelectChange = (selectedRowKeys, e) => {
     const { setting, MenuID, data } = this.props
 
@@ -812,7 +809,7 @@
     }
 
     let selects = this.props.data.filter((item, _index) => newkeys.includes(_index) && !item.$disabled)
-    
+
     this.props.chgSelectData(selects)
 
     if (setting.$hasSyncModule) {
@@ -854,20 +851,52 @@
     MKEmitter.emit('resetSelectLine', MenuID, _id, _data)
   }
 
-  resetTable = (id, repage, pageIndex) => {
-    const { MenuID } = this.props
+  resetTable = (id, type, Index) => {
+    const { MenuID, setting, data } = this.props
 
     if (id !== MenuID) return
 
-    if (repage === 'false') {
+    if (type === 'delete') {
+      let selectKeys = fromJS(this.state.selectedRowKeys).toJS()
+      let activeKey = this.state.activeIndex
+
+      let trans = activeKey === Index
+      let _item = null
+      let selects = []
+      
+      if (setting.tableType) {
+        selectKeys = selectKeys.filter(key => key !== Index)
+        selectKeys = selectKeys.map(key => key > Index ? key - 1 : key)
+
+        selects = selectKeys.map(key => data[key]).filter(Boolean)
+
+        activeKey = selectKeys.length ? selectKeys[selectKeys.length - 1] : null
+
+        if (trans && selects.length) {
+          _item = selects[selects.length - 1]
+        }
+      }
+
+      this.setState({ selectedRowKeys: selectKeys, activeIndex: activeKey })
+
+      this.props.chgSelectData(selects)
+
+      if (trans) {
+        MKEmitter.emit('resetSelectLine', MenuID, (_item ? _item.$$uuid : ''), _item)
+      }
+
+      if (setting.$hasSyncModule) {
+        MKEmitter.emit('syncBalconyData', MenuID, selects, data.length === selects.length)
+      }
+    } else if (type === 'false') {
       this.setState({
         selectedRowKeys: [],
         activeIndex: null,
         pickup: false
       })
-    } else if (repage === 'repage') {
+    } else if (type === 'repage') {
       this.setState({
-        pageIndex: pageIndex,
+        pageIndex: Index,
         selectedRowKeys: [],
         activeIndex: null,
         pickup: false
diff --git a/src/tabviews/custom/components/table/base-table/index.jsx b/src/tabviews/custom/components/table/base-table/index.jsx
index 9d3b50f..c05ea6d 100644
--- a/src/tabviews/custom/components/table/base-table/index.jsx
+++ b/src/tabviews/custom/components/table/base-table/index.jsx
@@ -179,32 +179,39 @@
         start = pageSize * (pageIndex - 1) + 1
       }
 
-      this.setState({
-        data: result.data.map((item, index) => {
-          item.key = index
-          item.$$uuid = item[setting.primaryKey] || ''
-          item.$$key = '' + item.key + item.$$uuid
-          item.$$BID = BID || ''
-          item.$$BData = BData || ''
-          item.$Index = start + index + ''
+      let data = result.data.map((item, index) => {
+        item.key = index
+        item.$$uuid = item[setting.primaryKey] || ''
+        item.$$key = '' + item.key + item.$$uuid
+        item.$$BID = BID || ''
+        item.$$BData = BData || ''
+        item.$Index = start + index + ''
 
-          if (config.absFields) {
-            config.absFields.forEach(f => {
-              if (!isNaN(item[f])) {
-                item[f] = Math.abs(item[f])
-              }
-            })
-          }
-          if (setting.controlField) {
-            if (setting.controlVal.includes(item[setting.controlField] + '')) {
-              item.$disabled = true
+        if (config.absFields) {
+          config.absFields.forEach(f => {
+            if (!isNaN(item[f])) {
+              item[f] = Math.abs(item[f])
             }
+          })
+        }
+        if (setting.controlField) {
+          if (setting.controlVal.includes(item[setting.controlField] + '')) {
+            item.$disabled = true
           }
-          
-          return item
-        }),
+        }
+        
+        return item
+      })
+
+      let total = result.total || 0
+      if (config.setting.custompage && data.length) {
+        total = data[data.length - 1].mk_total || 0
+      }
+
+      this.setState({
+        data: data,
         selectedData: [],
-        total: result.total,
+        total: total,
         loading: false
       })
 
@@ -281,6 +288,7 @@
     if (result.status) {
       let data = fromJS(this.state.data).toJS()
       let selectedData = fromJS(this.state.selectedData).toJS()
+
       if (result.data && result.data[0]) {
         let _data = result.data[0] || {}
         _data.$$uuid = _data[setting.primaryKey] || ''
@@ -295,35 +303,67 @@
           })
         }
 
-        try {
-          data = data.map(item => {
-            if (item.$$uuid === _data.$$uuid) {
-              _data.key = item.key
-              _data.$$key = '' + item.key + item.$$uuid
-              _data.$Index = item.$Index
-              return _data
-            } else {
-              return item
-            }
-          })
-          selectedData = selectedData.map(item => {
-            if (_data.$$uuid === item.$$uuid) {
-              return _data
-            }
+        data = data.map(item => {
+          if (item.$$uuid === _data.$$uuid) {
+            _data.key = item.key
+            _data.$$key = '' + item.key + item.$$uuid
+            _data.$Index = item.$Index
+            return _data
+          } else {
             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 (_data.$$uuid === item.$$uuid) {
+            return _data
+          }
+          return item
+        })
 
-      this.setState({
-        data,
-        selectedData,
-        loading: false
-      })
+        if (selectedData.length && _data.$$uuid === selectedData[selectedData.length - 1].$$uuid) {
+          MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data)
+        }
+        
+        this.setState({
+          data,
+          selectedData,
+          loading: false
+        })
+      } 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
+          item.$$key = '' + item.key + item.$$uuid
+
+          return item
+        })
+
+        this.setState({
+          data: data,
+          loading: false
+        })
+
+        setTimeout(() => {
+          MKEmitter.emit('resetTable', config.uuid, 'delete', index)
+        }, 20)
+      }
     } else {
       this.setState({
         loading: false
diff --git a/src/tabviews/custom/components/table/edit-table/index.jsx b/src/tabviews/custom/components/table/edit-table/index.jsx
index 6450750..fc305fe 100644
--- a/src/tabviews/custom/components/table/edit-table/index.jsx
+++ b/src/tabviews/custom/components/table/edit-table/index.jsx
@@ -252,10 +252,15 @@
         return item
       })
 
+      let total = result.total || 0
+      if (config.setting.custompage && data.length) {
+        total = data[data.length - 1].mk_total || 0
+      }
+
       this.setState({
         data: data,
         selectedData: [],
-        total: result.total,
+        total: total,
         loading: false
       })
 
diff --git a/src/tabviews/custom/components/table/normal-table/index.jsx b/src/tabviews/custom/components/table/normal-table/index.jsx
index 262deee..af23f19 100644
--- a/src/tabviews/custom/components/table/normal-table/index.jsx
+++ b/src/tabviews/custom/components/table/normal-table/index.jsx
@@ -401,7 +401,7 @@
     if (result.status) {
       this.loaded = true
       if (config.$cache && pageIndex === 1 && config.setting.onload !== 'false') {
-        Api.writeCacheConfig(config.uuid, result.data || '')
+        Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
       if (repage === 'false' && result.data && result.data.length === 0 && result.total > 0 && pageIndex > 1) {
@@ -467,10 +467,15 @@
         return item
       })
 
+      let total = result.total || 0
+      if (config.setting.custompage && data.length) {
+        total = data[data.length - 1].mk_total || 0
+      }
+
       this.setState({
         data: data,
         selectedData: [],
-        total: result.total,
+        total: total,
         loading: false
       })
 
@@ -541,31 +546,24 @@
 
     let result = await Api.genericInterface(param)
     if (result.status) {
-      if (!result.data || !result.data[0]) {
-        this.setState({
-          loading: false
-        })
-
-        return
-      }
-
       let data = fromJS(this.state.data).toJS()
       let selectedData = fromJS(this.state.selectedData).toJS()
 
-      let _data = result.data[0]
-      _data.$$uuid = _data[setting.primaryKey] || ''
-      _data.$$BID = BID || ''
-      _data.$$BData = BData || ''
-
-      if (config.absFields) {
-        config.absFields.forEach(f => {
-          if (!isNaN(_data[f])) {
-            _data[f] = Math.abs(_data[f])
-          }
-        })
-      }
-
-      try {
+      if (!result.data) {
+      // if (result.data && result.data[0]) {
+        let _data = result.data[0]
+        _data.$$uuid = _data[setting.primaryKey] || ''
+        _data.$$BID = BID || ''
+        _data.$$BData = BData || ''
+  
+        if (config.absFields) {
+          config.absFields.forEach(f => {
+            if (!isNaN(_data[f])) {
+              _data[f] = Math.abs(_data[f])
+            }
+          })
+        }
+  
         data = data.map(item => {
           if (item.$$uuid === _data.$$uuid) {
             _data.key = item.key
@@ -576,23 +574,61 @@
             return item
           }
         })
+
+        if (!_data.$Index) {
+          this.setState({
+            loading: false
+          })
+          return
+        }
+
         selectedData = selectedData.map(item => {
           if (_data.$$uuid === item.$$uuid) {
             return _data
           }
           return item
         })
-      } catch (e) {
-        console.warn('鏁版嵁鏌ヨ閿欒')
+
+        if (selectedData.length && _data.$$uuid === selectedData[selectedData.length - 1].$$uuid) {
+          MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data)
+        }
+  
+        this.setState({
+          data,
+          selectedData,
+          loading: false
+        })
+
+        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
+          item.$$key = '' + item.key + item.$$uuid
+
+          return item
+        })
+
+        this.setState({
+          data: data,
+          loading: false
+        })
+
+        setTimeout(() => {
+          MKEmitter.emit('resetTable', config.uuid, 'delete', index)
+        }, 20)
       }
-
-      MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data)
-
-      this.setState({
-        data,
-        selectedData,
-        loading: false
-      })
     } else {
       this.setState({
         loading: false
@@ -845,65 +881,44 @@
       style.display = 'none'
     }
 
+    let content = <>
+      {config.search && config.search.length ?
+        <MainSearch BID={BID} config={config} refreshdata={this.refreshbysearch}/> : null
+      }
+      {actions.length > 0 ? <MainAction
+        BID={BID}
+        setting={setting}
+        actions={actions}
+        BData={BData}
+        columns={config.columns}
+        selectedData={selectedData}
+      /> : <div className="mk-action-space" style={{height: '25px'}}></div>}
+      <div className={'main-table-box ' + (!actions || actions.length === 0 ? 'no-action' : '')}>
+        <MainTable
+          setting={setting}
+          columns={columns}
+          MenuID={config.uuid}
+          data={this.state.data}
+          fields={config.columns}
+          total={this.state.total}
+          lineMarks={config.lineMarks}
+          loading={this.state.loading}
+          refreshdata={this.refreshbytable}
+          statFValue={this.state.statFValue}
+          chgSelectData={(selects) => this.setState({selectedData: selects})}
+        />
+      </div>
+    </>
+
     return (
       <div className="custom-normal-table" id={'anchor' + config.uuid} style={style}>
         {config.wrap.collapse === 'true' ? <Collapse bordered={false} defaultActiveKey="1" expandIconPosition="right">
           <Panel forceRender={true} header={<NormalHeader config={config}/>} key="1">
-            {config.search && config.search.length ?
-              <MainSearch BID={BID} config={config} refreshdata={this.refreshbysearch}/> : null
-            }
-            {actions.length > 0 ? <MainAction
-              BID={BID}
-              setting={setting}
-              actions={actions}
-              BData={BData}
-              columns={config.columns}
-              selectedData={selectedData}
-            /> : <div className="mk-action-space" style={{height: '25px'}}></div>}
-            <div className="main-table-box">
-              <MainTable
-                setting={setting}
-                columns={columns}
-                MenuID={config.uuid}
-                data={data}
-                fields={config.columns}
-                total={this.state.total}
-                lineMarks={config.lineMarks}
-                loading={this.state.loading}
-                refreshdata={this.refreshbytable}
-                statFValue={this.state.statFValue}
-                chgSelectData={(selects) => this.setState({selectedData: selects})}
-              />
-            </div>
+            {content}
           </Panel>
         </Collapse> : <>
           <NormalHeader config={config}/>
-          {config.search && config.search.length ?
-            <MainSearch BID={BID} config={config} refreshdata={this.refreshbysearch}/> : null
-          }
-          {actions.length > 0 ? <MainAction
-            BID={BID}
-            setting={setting}
-            actions={actions}
-            BData={BData}
-            columns={config.columns}
-            selectedData={selectedData}
-          /> : <div className="mk-action-space" style={{height: '25px'}}></div>}
-          <div className={'main-table-box ' + (!actions || actions.length === 0 ? 'no-action' : '')}>
-            <MainTable
-              setting={setting}
-              columns={columns}
-              MenuID={config.uuid}
-              data={this.state.data}
-              fields={config.columns}
-              total={this.state.total}
-              lineMarks={config.lineMarks}
-              loading={this.state.loading}
-              refreshdata={this.refreshbytable}
-              statFValue={this.state.statFValue}
-              chgSelectData={(selects) => this.setState({selectedData: selects})}
-            />
-          </div>
+          {content}
         </>}
       </div>
     )
diff --git a/src/tabviews/custom/index.jsx b/src/tabviews/custom/index.jsx
index df5b969..a94a759 100644
--- a/src/tabviews/custom/index.jsx
+++ b/src/tabviews/custom/index.jsx
@@ -996,6 +996,10 @@
 
       component.setting.customScript = _customScript // 鏁寸悊鍚庤嚜瀹氫箟鑴氭湰
 
+      if (component.setting.laypage) {
+        component.setting.custompage = /@pageSize@/i.test(component.setting.dataresource + component.setting.customScript)
+      }
+
       if (component.setting.sync === 'true') {
         // pageable 鏄惁鍒嗛〉锛岀粍浠跺睘鎬э紝涓嶅垎椤电殑缁勪欢鎵嶅彲浠ョ粺涓�鏌ヨ
         if ((!component.pageable || (component.pageable && !component.setting.laypage)) && component.setting.onload === 'true') {
diff --git a/src/tabviews/custom/popview/index.jsx b/src/tabviews/custom/popview/index.jsx
index 9b2324c..502f9b9 100644
--- a/src/tabviews/custom/popview/index.jsx
+++ b/src/tabviews/custom/popview/index.jsx
@@ -771,6 +771,10 @@
 
       component.setting.customScript = _customScript // 鏁寸悊鍚庤嚜瀹氫箟鑴氭湰
 
+      if (component.setting.laypage) {
+        component.setting.custompage = /@pageSize@/i.test(component.setting.dataresource + component.setting.customScript)
+      }
+
       if (component.setting.sync === 'true') {
         // pageable 鏄惁鍒嗛〉锛岀粍浠跺睘鎬э紝涓嶅垎椤电殑缁勪欢鎵嶅彲浠ョ粺涓�鏌ヨ
         if ((!component.pageable || (component.pageable && !component.setting.laypage)) && component.setting.onload === 'true') {
diff --git a/src/utils/utils-datamanage.js b/src/utils/utils-datamanage.js
index d3609d7..f3ed7f4 100644
--- a/src/utils/utils-datamanage.js
+++ b/src/utils/utils-datamanage.js
@@ -189,7 +189,6 @@
     }
 
     let _search = ''
-    let cus_page = /@pageSize@/i.test(_dataresource + _customScript)
     
     if (_dataresource) {
       if (setting.queryType === 'statistics') { // 缁熻鏁版嵁婧愶紝鍐呭鏇挎崲
@@ -228,15 +227,15 @@
     }
 
     if (_dataresource && setting.laypage && orderBy && !id) {
-      if (cus_page) {
+      if (setting.custompage) {
         LText = `/*system_query*/select ${arrFields} from ${_dataresource} ${_search} `
       } else {
         LText = `/*system_query*/select top ${pageSize} ${arrFields} from (select ${arrFields} ,ROW_NUMBER() over(order by ${orderBy}) as rows from ${_dataresource} ${_search}) tmptable where rows > ${pageSize * (pageIndex - 1)} order by tmptable.rows `
-      }
-      if (setting.sub_field) {
-        DateCount = `/*system_query*/select count(1) as total from (select distinct ${setting.primaryKey} from ${_dataresource} ${_search})a`
-      } else {
-        DateCount = `/*system_query*/select count(1) as total from ${_dataresource} ${_search}`
+        if (setting.sub_field) {
+          DateCount = `/*system_query*/select count(1) as total from (select distinct ${setting.primaryKey} from ${_dataresource} ${_search})a`
+        } else {
+          DateCount = `/*system_query*/select count(1) as total from ${_dataresource} ${_search}`
+        }
       }
     } else if (_dataresource && orderBy) {
       LText = `/*system_query*/select ${arrFields} from (select ${arrFields} ,ROW_NUMBER() over(order by ${orderBy}) as rows from ${_dataresource} ${_search}) tmptable order by tmptable.rows `

--
Gitblit v1.8.0