From a9b02f6862522b54d0824152017bf2acfec2af7b Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 21 三月 2024 10:29:50 +0800
Subject: [PATCH] 2024-03-21

---
 src/tabviews/custom/components/table/edit-table/normalTable/index.jsx |  172 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 123 insertions(+), 49 deletions(-)

diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
index ed634a0..a7571dd 100644
--- a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
+++ b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
@@ -55,7 +55,7 @@
 
     this.node.blur()
     
-    if (config.enter === '$noAct') return
+    if (/\$noAct/.test(config.enter)) return
 
     if (/\$next/.test(config.enter)) {
       MKEmitter.emit('nextLine' + config.tableId, lineId, config.enter.replace('$next_', ''))
@@ -191,7 +191,7 @@
 
     this.props.onChange(values)
 
-    if (config.enter === '$noAct') return
+    if (/\$noAct/.test(config.enter)) return
 
     if (/\$next/.test(config.enter)) {
       MKEmitter.emit('nextLine' + config.tableId, lineId, config.enter.replace('$next_', ''))
@@ -283,9 +283,11 @@
 
     this.props.onChange(values, val)
 
+    if (config.enter === '$noActX') return
+
     this.node.blur()
     
-    if (config.enter === '$noAct') return
+    if (/\$noAct/.test(config.enter)) return
 
     setTimeout(() => {
       if (/\$next/.test(config.enter)) {
@@ -308,7 +310,7 @@
     const { config, lineId } = this.props
 
     if (config.$ctrl) {
-      MKEmitter.emit('colBlur' + config.tableId, lineId, config.uuid)
+      MKEmitter.emit('colBlur' + config.tableId, lineId, config.uuid, true)
     }
 
     setTimeout(() => {
@@ -408,7 +410,7 @@
 
     this.node.blur()
     
-    if (config.enter === '$noAct') return
+    if (/\$noAct/.test(config.enter)) return
 
     if (/\$next/.test(config.enter)) {
       MKEmitter.emit('nextLine' + config.tableId, lineId, config.enter.replace('$next_', ''))
@@ -536,7 +538,7 @@
 
     this.node.blur()
     
-    if (config.enter === '$noAct') return
+    if (/\$noAct/.test(config.enter)) return
 
     setTimeout(() => {
       if (/\$next/.test(config.enter)) {
@@ -750,6 +752,10 @@
         } else if (content === config.closeVal) {
           content = config.closeText
         }
+      } else if (col.editType === 'popSelect') {
+        if (col.showField) {
+          content = record[col.showField] || content
+        }
       }
 
       if (content !== '') {
@@ -759,6 +765,10 @@
           content = `${content.substr(0, 4)}-${content.substr(5, 2)}-${content.substr(8, 2)} ${content.substr(11, 2)}:${content.substr(14, 2)}:${content.substr(17, 2)}`
         } else if (col.textFormat === 'encryption') {
           content = <span>{col.prefix || ''}<Encrypts value={content} />{col.postfix || ''}</span>
+        }
+
+        if (col.noValue === 'hide' && content < '1949-10-02') {
+          content = ''
         }
 
         if (col.textFormat !== 'encryption') {
@@ -807,8 +817,13 @@
               <MkDatePicker config={col} lineId={record.$$uuid} defaultValue={_value || null} autoFocus={true} onChange={this.onColChange} onBlur={() => this.setState({editing: false})}/>
             </td>)
           } else if (col.editType === 'popSelect') {
+            let showValue = ''
+            if (col.showField) {
+              showValue = record[col.showField] || ''
+            }
+
             return (<td onClick={(e) => e.stopPropagation()} className="editing_table_cell">
-              <MKPopSelect config={col} lineId={record.$$uuid} defaultValue={_value} BID={record.$$BID} autoFocus={true} onChange={this.onColChange} onBlur={() => this.setState({editing: false})}/>
+              <MKPopSelect config={col} lineId={record.$$uuid} defaultValue={_value} showValue={showValue} BID={record.$$BID} autoFocus={true} onChange={this.onColChange} onBlur={() => this.setState({editing: false})}/>
             </td>)
           } else {
             return (<td onClick={(e) => e.stopPropagation()} className="editing_table_cell">
@@ -1054,8 +1069,13 @@
             <MkDatePicker config={col} lineId={record.$$uuid} defaultValue={_value || null} autoFocus={false} onChange={this.onColChange}/>
           )
         } else if (col.editType === 'popSelect') {
+          let showValue = ''
+          if (col.showField) {
+            showValue = record[col.showField] || ''
+          }
+          
           children = (
-            <MKPopSelect config={col} lineId={record.$$uuid} defaultValue={_value} BID={record.$$BID} autoFocus={false} onChange={this.onColChange}/>
+            <MKPopSelect config={col} lineId={record.$$uuid} defaultValue={_value} showValue={showValue} BID={record.$$BID} autoFocus={false} onChange={this.onColChange}/>
           )
         } else {
           children = (
@@ -1076,6 +1096,10 @@
           } else if (content === config.closeVal) {
             content = config.closeText
           }
+        } else if (col.editType === 'popSelect') {
+          if (col.showField) {
+            content = record[col.showField] || content
+          }
         }
 
         if (content !== '') {
@@ -1085,6 +1109,10 @@
             content = `${content.substr(0, 4)}-${content.substr(5, 2)}-${content.substr(8, 2)} ${content.substr(11, 2)}:${content.substr(14, 2)}:${content.substr(17, 2)}`
           } else if (col.textFormat === 'encryption') {
             content = <span>{col.prefix || ''}<Encrypts value={content} />{col.postfix || ''}</span>
+          }
+
+          if (col.noValue === 'hide' && content < '1949-10-02') {
+            content = ''
           }
 
           if (col.textFormat !== 'encryption') {
@@ -1345,6 +1373,7 @@
   timer = null
   focusId = ''
   blurId = ''
+  colId = ''
 
   UNSAFE_componentWillMount () {
     const { setting, fields, columns, BID, colsCtrls } = this.props
@@ -1389,7 +1418,7 @@
               if (item.resourceType === '1') {
                 let _option = Utils.getSelectQueryOptions(item)
   
-                if (/@BID@/ig.test(_option.sql)) {
+                if (/@BID@/ig.test(_option.sql) && setting.supModule) {
                   hasBid = true
                 }
         
@@ -1470,6 +1499,10 @@
       pageOptions = pageOptions.sort((a, b) => a - b)
     }
 
+    if (setting.maxPageSize) {
+      pageOptions = pageOptions.filter(item => item <= setting.maxPageSize)
+    }
+
     let allColumns = null
     if (colsCtrls) {
       allColumns = [..._columns]
@@ -1490,14 +1523,11 @@
       pageOptions,
       columns: _columns,
       tableId: setting.tableId,
-      orderfields
+      orderfields,
+      deForms: hasBid ? deForms : null
     }, () => {
-      if (deForms.length > 0) {
-        if (hasBid && setting.supModule && !BID) {
-          this.setState({ deForms })
-        } else {
-          this.improveActionForm(deForms, BID)
-        }
+      if (deForms.length > 0 && (!hasBid || BID)) {
+        this.improveActionForm(deForms, BID)
       }
     })
   }
@@ -1552,7 +1582,11 @@
     MKEmitter.removeListener('changeRecord' + tableId, this.changeRecord)
   }
 
-  colBlur = (lineId) => {
+  colBlur = (lineId, colId, defer) => {
+    if (defer && this.focusId === lineId && this.colId !== colId) {
+      return
+    }
+    
     this.blurId = lineId
     this.focusId = ''
 
@@ -1565,8 +1599,9 @@
     }, 150)
   }
 
-  colFocus = (lineId) => {
+  colFocus = (lineId, colId) => {
     this.focusId = lineId
+    this.colId = colId
   }
 
   checkLine = () => {
@@ -1673,6 +1708,9 @@
         result = originVal === contrastVal
       } else if (item.match === '!=') {
         result = originVal !== contrastVal
+      } else if (item.match === 'regexp') {
+        let reg = new RegExp(item.contrastValue, 'ig')
+        result = reg.test(originVal)
       } else {
         originVal = isNaN(originVal) ? originVal : +originVal
         contrastVal = isNaN(contrastVal) ? contrastVal : +contrastVal
@@ -1708,9 +1746,11 @@
   }
 
   transferData = (data, type) => {
-    const { edData } = this.state
+    const { edData, tableId } = this.state
 
-    if (type === 'line') {
+    if (type === 'delete') {
+
+    } else if (type === 'line') {
       let value = ''
       Object.keys(data).sort().forEach(key => {
         if (/^\$/.test(key)) return
@@ -1728,14 +1768,18 @@
       })
     }
 
-    if (type !== 'line') {
-      let index = edData.findIndex(item => !item.$origin && !item.$forbid)
+    if (type === 'delete') {
+      let _edData = this.state.edData.filter(item => item.$$uuid !== data)
 
-      if (index > -1) {
-        this.setState({visible: true, midData: data})
-      } else {
-        this.updateMutil(data)
-      }
+      this.setState({edData: _edData, reseting: true}, () => {
+        this.setState({reseting: false})
+
+        if (this.focusId) {
+          setTimeout(() => {
+            MKEmitter.emit('setFocus' + tableId, this.focusId, this.colId)
+          }, 10)
+        }
+      })
     } else if (type === 'line') {
       let _edData = this.state.edData.map(item => {
         if (item.$$uuid === data.$$uuid) {
@@ -1747,7 +1791,21 @@
 
       this.setState({edData: _edData, reseting: true}, () => {
         this.setState({reseting: false})
+
+        if (this.focusId) {
+          setTimeout(() => {
+            MKEmitter.emit('setFocus' + tableId, this.focusId, this.colId)
+          }, 10)
+        }
       })
+    } else {
+      let index = edData.findIndex(item => !item.$origin && !item.$forbid)
+
+      if (index > -1) {
+        this.setState({visible: true, midData: data})
+      } else {
+        this.updateMutil(data)
+      }
     }
   }
 
@@ -1793,12 +1851,9 @@
   }
 
   improveActionForm = (deForms, BID) => {
-    const { setting } = this.props
-
     let deffers = []
     let mainItems = []  // 浜戠鎴栧崟鐐规暟鎹�
     let localItems = [] // 鏈湴鏁版嵁
-    let cache = setting.cache !== 'false'
     let debug = window.GLOB.debugger === true
     let _sql = `Declare @mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20)  select @mk_departmentcode='${sessionStorage.getItem('departmentcode') || ''}',@mk_organization='${sessionStorage.getItem('organization') || ''}',@mk_user_type='${sessionStorage.getItem('mk_user_type') || ''}'\n`
     let _sso = _sql
@@ -1844,13 +1899,17 @@
     }
 
     if (param.LText) {
-      param.LText = Utils.formatOptions(param.LText)
+      if (window.GLOB.execType === 'x') {
+        param.exec_type = 'x'
+      }
+      
+      param.LText = Utils.formatOptions(param.LText, param.exec_type)
       param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
-      param.secretkey = Utils.encrypt(param.LText, param.timestamp)
+      param.secretkey = Utils.encrypt(window.GLOB.execType === 'x' ? '' : param.LText, param.timestamp)
 
       deffers.push(
         new Promise(resolve => {
-          Api.getSystemCacheConfig(param, cache).then(res => {
+          Api.getSystemCacheConfig(param, false).then(res => {
             if (!res.status) {
               notification.warning({
                 top: 92,
@@ -1875,9 +1934,13 @@
     }
 
     if (mainparam.LText) {
-      mainparam.LText = Utils.formatOptions(mainparam.LText)
+      if (window.GLOB.execType === 'x') {
+        mainparam.exec_type = 'x'
+      }
+
+      mainparam.LText = Utils.formatOptions(mainparam.LText, mainparam.exec_type)
       mainparam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
-      mainparam.secretkey = Utils.encrypt(mainparam.LText, mainparam.timestamp)
+      mainparam.secretkey = Utils.encrypt(window.GLOB.execType === 'x' ? '' : mainparam.LText, mainparam.timestamp)
 
       if (window.GLOB.mainSystemApi) {
         mainparam.rduri = window.GLOB.mainSystemApi
@@ -1885,7 +1948,7 @@
 
       deffers.push(
         new Promise(resolve => {
-          Api.getSystemCacheConfig(mainparam, cache).then(res => {
+          Api.getSystemCacheConfig(mainparam, false).then(res => {
             if (!res.status) {
               notification.warning({
                 top: 92,
@@ -2001,7 +2064,7 @@
       setTimeout(() => {
         this.plusLine(colId)
       }, 10)
-    } else if (edData[index] && setting.commit !== 'change') {
+    } else if (edData[index] && (setting.commit === 'all' || setting.commit === 'amend')) {
       setTimeout(() => {
         this.submit()
       }, 10)
@@ -2142,7 +2205,7 @@
 
   checkData = () => {
     const { setting } = this.props
-    const { edData, forms, checkForms } = this.state
+    const { edData, forms, checkForms, selectedRowKeys } = this.state
 
     let data = fromJS(edData).toJS()
 
@@ -2150,6 +2213,17 @@
 
     if (setting.commit === 'amend') {
       data = data.filter(item => !item.$origin)
+    } else if (setting.commit === 'check') {
+      data = data.filter(item => selectedRowKeys.includes(item.$$uuid))
+
+      if (data.length === 0) {
+        notification.warning({
+          top: 92,
+          message: '璇烽�夋嫨闇�瑕佹彁浜ょ殑鏁版嵁锛�',
+          duration: 5
+        })
+        return null
+      }
     }
 
     if (data.length === 0) {
@@ -2291,8 +2365,8 @@
       
       delete param.excel_in
 
-      param.exec_type = 'y'
-      param.LText = Utils.formatOptions(result.sql)
+      param.exec_type = window.GLOB.execType || 'y'
+      param.LText = Utils.formatOptions(result.sql, param.exec_type)
       param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
       param.secretkey = Utils.encrypt('', param.timestamp)
 
@@ -2304,9 +2378,9 @@
 
       Api.genericInterface(param).then((res) => {
         if (res.status) {
-          this.execSuccess(res)
+          this.execSuccess(res, record)
         } else {
-          this.execError(res)
+          this.execError(res, record)
         }
       }, (error) => {
         if (error && error.ErrCode === 'LoginError') return
@@ -2323,9 +2397,9 @@
 
       Api.genericInterface(param).then((res) => {
         if (res.status) {
-          this.execSuccess(res)
+          this.execSuccess(res, record)
         } else {
-          this.execError(res)
+          this.execError(res, record)
         }
       }, (error) => {
         if (error && error.ErrCode === 'LoginError') return
@@ -2335,7 +2409,7 @@
     }
   }
 
-  execSuccess = (res) => {
+  execSuccess = (res, record) => {
     const { submit } = this.props
     const { edData } = this.state
 
@@ -2385,13 +2459,13 @@
     }
 
     if (submit.execSuccess !== 'never') {
-      MKEmitter.emit('refreshByButtonResult', submit.$menuId, submit.execSuccess, submit)
+      MKEmitter.emit('refreshByButtonResult', submit.$menuId, submit.execSuccess, submit, '', record ? [record] : null)
     }
 
     submit.syncComponentId && MKEmitter.emit('reloadData', submit.syncComponentId)
   }
 
-  execError = (res) => {
+  execError = (res, record) => {
     const { submit } = this.props
 
     if (res.ErrCode === 'E') {
@@ -2420,7 +2494,7 @@
     })
 
     if (submit.execError !== 'never') {
-      MKEmitter.emit('refreshByButtonResult', submit.$menuId, submit.execError, submit)
+      MKEmitter.emit('refreshByButtonResult', submit.$menuId, submit.execError, submit, '', record ? [record] : null)
     }
   }
 
@@ -2578,7 +2652,7 @@
         {setting.hasSubmit && edData.length > 0 ? <div className="edit-custom-table-btn-wrap" style={submit.wrapStyle}>
           <Button style={submit.style} onClick={() => setTimeout(() => {this.submit()}, 10)} loading={loading} className="submit-table" type="link">鎻愪氦</Button>
         </div> : null}
-        <div className={`edit-custom-table ${setting.tableHeader || ''} ${height ? 'fixed-height' : ''} ${setting.mode || ''} table-vertical-${setting.vertical || ''} mk-edit-${setting.editType || 'simple'}`} style={style}>
+        <div className={`edit-custom-table ${setting.tableHeader || ''} ${setting.parity === 'true' ? 'mk-parity' : ''} ${height ? 'fixed-height' : ''} ${setting.mode || ''} table-vertical-${setting.vertical || ''} mk-edit-${setting.editType || 'simple'}`} style={style}>
           <Table
             rowKey="$$uuid"
             components={components}

--
Gitblit v1.8.0