From dc258e4600bea2fba1e25054d163a2f4b1326a85 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 08 八月 2023 10:23:38 +0800
Subject: [PATCH] 2023-08-08

---
 src/tabviews/custom/components/table/normal-table/index.jsx |  196 ++++++++++++++++++++++++++----------------------
 1 files changed, 105 insertions(+), 91 deletions(-)

diff --git a/src/tabviews/custom/components/table/normal-table/index.jsx b/src/tabviews/custom/components/table/normal-table/index.jsx
index 262deee..ae27a14 100644
--- a/src/tabviews/custom/components/table/normal-table/index.jsx
+++ b/src/tabviews/custom/components/table/normal-table/index.jsx
@@ -215,15 +215,15 @@
       if (config.$time && !setting.laypage) {
         if (!this.loaded) {
           Api.getLCacheConfig(config.uuid, config.$time).then(res => {
-            if (!res && config.setting.onload === 'true') {
+            if (!res.valid && config.setting.onload === 'true') {
               setTimeout(() => {
                 this.loadmaindata()
               }, config.setting.delay || 0)
             }
   
-            if (!res || this.loaded) return
+            if (!res.data || this.loaded) return
 
-            this.setState({data: res.map((item, index) => {
+            this.setState({data: res.data.map((item, index) => {
               item.key = index
               item.$$uuid = item[config.setting.primaryKey] || ''
               item.$$key = '' + item.key + item.$$uuid
@@ -250,9 +250,9 @@
       } else {
         if (!this.loaded) {
           Api.getLCacheConfig(config.uuid, 0).then(res => {
-            if (!res || this.loaded) return
+            if (!res.data || this.loaded) return
     
-            this.setState({data: res.map((item, index) => {
+            this.setState({data: res.data.map((item, index) => {
               item.key = index
               item.$$uuid = item[config.setting.primaryKey] || ''
               item.$$key = '' + item.key + item.$$uuid
@@ -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,23 @@
 
     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 && 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 +573,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 +880,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>
     )

--
Gitblit v1.8.0