From 25bf481493bcf18fca79e4d250f9c91dedf832e5 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 02 四月 2024 15:15:58 +0800
Subject: [PATCH] 2024-04-02

---
 src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx |  288 +++++++++++++++++++++++++++++++--------------------------
 1 files changed, 157 insertions(+), 131 deletions(-)

diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
index fb05456..7362e15 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
@@ -67,7 +67,8 @@
         inputType: 'select',
         editable: true,
         required: false,
-        width: '12%',
+        keyCol: true,
+        width: '8%',
         render: (text) => {
           if (text === 'image') {
             return '鍥剧墖'
@@ -84,44 +85,12 @@
         ]
       },
       {
-        title: '鍙栫粷瀵瑰��',
-        dataIndex: 'abs',
-        inputType: 'radio',
-        editable: true,
-        required: false,
-        width: '12%',
-        render: (text, record) => {
-          if (record.type !== 'number') return ''
-
-          if (text === 'true') {
-            return '鏄�'
-          } else {
-            return '鍚�'
-          }
-        },
-        options: [
-          {value: 'true', text: '鏄�'},
-          {value: 'false', text: '鍚�'}
-        ]
-      },
-      {
-        title: '灏忔暟浣�',
-        dataIndex: 'decimal',
-        inputType: 'number',
-        min: 0,
-        max: 18,
-        editable: true,
-        required: false,
-        width: '12%',
-        render: (text, record) => record.type === 'number' ? text : ''
-      },
-      {
         title: '瀵煎嚭',
         dataIndex: 'output',
         inputType: 'radio',
         editable: true,
         required: false,
-        width: '12%',
+        width: '10%',
         render: (text) => {
           if (text !== 'false') {
             return '鏄�'
@@ -146,6 +115,62 @@
           {value: 'false', text: '鍚�'}
         ]
       },
+      {
+        title: '鍙栫粷瀵瑰��',
+        dataIndex: 'abs',
+        inputType: 'radio',
+        editable: true,
+        required: false,
+        keyVals: ['number'],
+        width: '10%',
+        render: (text, record) => {
+          if (record.type !== 'number') return ''
+
+          if (text === 'true') {
+            return '鏄�'
+          } else {
+            return '鍚�'
+          }
+        },
+        options: [
+          {value: 'true', text: '鏄�'},
+          {value: 'false', text: '鍚�'}
+        ]
+      },
+      {
+        title: '0鍊煎鍑�',
+        dataIndex: 'noValue',
+        inputType: 'radio',
+        editable: true,
+        required: false,
+        keyVals: ['number'],
+        width: '10%',
+        render: (text, record) => {
+          if (record.type !== 'number') return ''
+
+          if (text !== 'false') {
+            return '鏄�'
+          } else {
+            return '鍚�'
+          }
+        },
+        options: [
+          {value: 'true', text: '鏄�'},
+          {value: 'false', text: '鍚�'}
+        ]
+      },
+      {
+        title: '灏忔暟浣�',
+        dataIndex: 'decimal',
+        inputType: 'number',
+        min: 0,
+        max: 18,
+        editable: true,
+        required: false,
+        keyVals: ['number'],
+        width: '12%',
+        render: (text, record) => record.type === 'number' ? text : ''
+      }
     ],
     scriptsColumns: [
       {
@@ -202,12 +227,12 @@
         dataIndex: 'operation',
         render: (text, record) =>
           (<div style={{textAlign: 'center'}}>
-            <span className="operation-btn" title="缂栬緫" onClick={() => this.handleEdit(record, 'scripts')} style={{color: '#1890ff'}}><EditOutlined /></span>
-            <span className="operation-btn" title="鐘舵�佸垏鎹�" onClick={() => this.handleStatus(record, 'scripts')} style={{color: '#8E44AD'}}><SwapOutlined /></span>
+            <span className="operation-btn" title="缂栬緫" onClick={() => this.handleEdit(record)} style={{color: '#1890ff'}}><EditOutlined /></span>
+            <span className="operation-btn" title="鐘舵�佸垏鎹�" onClick={() => this.handleStatus(record)} style={{color: '#8E44AD'}}><SwapOutlined /></span>
             <Popconfirm
               overlayClassName="popover-confirm"
               title="纭畾鍒犻櫎鍚�?"
-              onConfirm={() => this.handleDelete(record, 'scripts')
+              onConfirm={() => this.handleDelete(record)
             }>
               <span className="operation-btn" style={{color: '#ff4d4f'}}><DeleteOutlined /></span>
             </Popconfirm>
@@ -232,6 +257,7 @@
       col.type = col.type || 'text'
       col.output = col.output || 'true'
       col.required = col.required || 'false'
+      col.noValue = col.noValue || 'true'
 
       if (!['text', 'image', 'number'].includes(col.type)) {
         if (/^Decimal/ig.test(col.type)) {
@@ -366,14 +392,9 @@
     })
   }
 
-  handleEdit = (record, type) => {
-    let node = null
-
-    if (type === 'scripts') {
-      this.scriptsForm.edit(record)
-      node = document.getElementById('mk-exout-script')
-    }
-
+  handleEdit = (record) => {
+    this.scriptsForm.edit(record)
+    let node = document.getElementById('mk-exout-script')
 
     if (node && node.scrollTop) {
       let inter = Math.ceil(node.scrollTop / 10)
@@ -389,26 +410,24 @@
     }
   }
 
-  handleStatus = (record, type) => {
+  handleStatus = (record) => {
     let verify = JSON.parse(JSON.stringify(this.state.verify))
     record.status = record.status === 'false' ? 'true' : 'false'
 
-    if (type === 'scripts') {
-      verify.scripts = verify.scripts.map(item => {
-        if (item.uuid === record.uuid) {
-          return record
-        } else {
-          return item
-        }
-      })
-    }
+    verify.scripts = verify.scripts.map(item => {
+      if (item.uuid === record.uuid) {
+        return record
+      } else {
+        return item
+      }
+    })
 
     this.setState({
       verify: verify
     })
   }
 
-  columnChange = (values) => {
+  columnChange = (values, callback) => {
     let verify = JSON.parse(JSON.stringify(this.state.verify))
 
     let fields = verify.columns.map(item => item.Column)
@@ -419,6 +438,8 @@
         duration: 5
       })
       return
+    } else {
+      callback()
     }
     values.uuid = Utils.getuuid()
     values.abs = 'false'
@@ -431,38 +452,12 @@
     })
   }
 
-  handleDelete = (record, type) => {
-    const { verify } = this.state
+  handleDelete = (record) => {
+    let verify = JSON.parse(JSON.stringify(this.state.verify))
 
-    verify.columns = verify.columns.filter(item => item.uuid !== record.uuid)
+    verify.scripts = verify.scripts.filter(item => item.uuid !== record.uuid)
 
     this.setState({ verify: verify })
-  }
-
-  handleUpDown = (record, type, direction) => {
-    let verify = JSON.parse(JSON.stringify(this.state.verify))
-    let index = 0
-
-    verify.columns = verify.columns.filter((item, i) => {
-      if (item.uuid === record.uuid) {
-        index = i
-      }
-
-      return item.uuid !== record.uuid
-    })
-    if ((index === 0 && direction === 'up') || (index === verify.columns.length && direction === 'down')) {
-      return
-    }
-
-    if (direction === 'up') {
-      verify.columns.splice(index - 1, 0, record)
-    } else {
-      verify.columns.splice(index + 1, 0, record)
-    }
-
-    this.setState({
-      verify: verify
-    })
   }
 
   showError = (errorType) => {
@@ -525,9 +520,36 @@
         return
       }
 
+      if (verify.dataType === 'custom') {
+        if (this.scriptsForm && this.scriptsForm.props.form.getFieldValue('sql') && !/^\s+$/.test(this.scriptsForm.props.form.getFieldValue('sql'))) {
+          notification.warning({
+            top: 92,
+            message: '瀛樺湪鏈繚瀛樿剼鏈紝璇风偣鍑荤‘瀹氫繚瀛橈紝鎴栫偣鍑诲彇娑堟斁寮冧慨鏀癸紒',
+            duration: 5
+          })
+          this.setState({activeKey: 'scripts'})
+          return
+        }
+      }
+      if (this.columnRef && this.columnRef.state.editingKey) {
+        notification.warning({
+          top: 92,
+          message: '瀛楁鏈繚瀛橈紒',
+          duration: 5
+        })
+        return
+      }
+
       if (card.intertype === 'system' && verify.dataType !== 'custom' && verify.columns.length > 0 && config.$c_ds && config.setting.interType === 'system' && config.columns && config.columns.length > 0) {
         let cols = []
         let columns = config.columns.map(c => c.field)
+
+        if (config.subtype === 'dualdatacard' && config.subColumns) {
+          config.subColumns.forEach(item => {
+            columns.push(item.field)
+          })
+        }
+
         verify.columns.forEach(col => {
           if (col.output === 'false' || col.Column === '$Index') return
           if (!columns.includes(col.Column)) {
@@ -571,19 +593,10 @@
                 loading: false
               })
               reject()
-            }, verify.scripts)
+            }, verify.scripts, 'submit')
           })
         })
       } else if (activeKey === 'columns') {
-        if (this.columnRef && this.columnRef.state.editingKey) {
-          notification.warning({
-            top: 92,
-            message: '瀛楁鏈繚瀛橈紒',
-            duration: 5
-          })
-          return
-        }
-
         if (this.props.card.intertype !== 'system' || verify.dataType !== 'custom') {
           resolve(verify)
         } else {
@@ -599,18 +612,9 @@
               loading: false
             })
             reject()
-          }, verify.scripts)
+          }, verify.scripts, 'submit')
         }
       } else if (activeKey === 'scripts') {
-        if (this.scriptsForm && this.scriptsForm.props.form.getFieldValue('sql') && !/^\s+$/.test(this.scriptsForm.props.form.getFieldValue('sql'))) {
-          notification.warning({
-            top: 92,
-            message: '瀛樺湪鏈繚瀛樿剼鏈紝璇风偣鍑荤‘瀹氫繚瀛橈紝鎴栫偣鍑诲彇娑堟斁寮冧慨鏀癸紒',
-            duration: 5
-          })
-          return
-        }
-  
         this.setState({loading: true})
         this.sqlverify(() => { // 楠岃瘉鎴愬姛
           this.setState({
@@ -622,7 +626,7 @@
             loading: false
           })
           reject()
-        }, verify.scripts)
+        }, verify.scripts, 'submit')
       } else {
         resolve(verify)
       }
@@ -710,6 +714,8 @@
 
       confirm({
         content: '閮ㄥ垎瀛楁鍚嶇О涓庢樉绀哄垪涓嶄竴鑷达紝鏄惁鏇存柊锛�',
+        okText: '鏇存柊',
+        cancelText: '涓嶆洿鏂�',
         onOk() {
           columns = columns.map(item => {
             let key = item.Column.toLowerCase()
@@ -763,6 +769,8 @@
       col.type = col.type || 'text'
       col.output = col.output || 'true'
       col.required = col.required || 'false'
+      col.noValue = col.noValue || 'true'
+      col.Width = col.Width || 20
 
       if (!['text', 'image', 'number'].includes(col.type)) {
         if (/^Decimal/ig.test(col.type)) {
@@ -799,28 +807,32 @@
     const { card } = this.props
     const { activeKey, verify } = this.state
 
-    if (card.intertype !== 'system' || verify.dataType !== 'custom') {
+    if (activeKey === 'setting') {
+      this.settingForm.handleConfirm().then(res => {
+        if (card.intertype !== 'system' || verify.dataType !== 'custom') {
+          this.setState({activeKey: val, verify: {...verify, ...res}})
+        } else {
+          this.setState({
+            verify: {...verify, ...res}
+          }, () => {
+            this.setState({loading: true})
+            this.sqlverify(() => { // 楠岃瘉鎴愬姛
+              this.setState({
+                activeKey: val,
+                loading: false
+              })
+            }, () => {             // 楠岃瘉澶辫触
+              this.setState({
+                activeKey: val,
+                loading: false
+              })
+            }, verify.scripts)
+          })
+        }
+      })
+    } else if (card.intertype !== 'system' || verify.dataType !== 'custom') {
       this.setState({activeKey: val})
       return
-    } else if (activeKey === 'setting') {
-      this.settingForm.handleConfirm().then(res => {
-        this.setState({
-          verify: {...verify, ...res}
-        }, () => {
-          this.setState({loading: true})
-          this.sqlverify(() => { // 楠岃瘉鎴愬姛
-            this.setState({
-              activeKey: val,
-              loading: false
-            })
-          }, () => {             // 楠岃瘉澶辫触
-            this.setState({
-              activeKey: val,
-              loading: false
-            })
-          }, verify.scripts)
-        })
-      })
     } else if (activeKey === 'columns') {
       if (this.columnRef && this.columnRef.state.editingKey) {
         notification.warning({
@@ -911,7 +923,7 @@
     }
   }
 
-  sqlverify = (_resolve, _reject, scripts) => {
+  sqlverify = (_resolve, _reject, scripts, type) => {
     const { searches, verify, debugId } = this.state
 
     if (verify.dataType !== 'custom') {
@@ -933,10 +945,24 @@
         this.setState({debugId: _debugId})
         _resolve()
       } else {
-        _reject()
-        Modal.error({
-          title: result.message
-        })
+        if (type === 'submit') {
+          Modal.confirm({
+            title: result.message,
+            okText: '鐭ラ亾浜�',
+            cancelText: '寮哄埗淇濆瓨',
+            onOk: () => {
+              _reject()
+            },
+            onCancel() {
+              _resolve()
+            }
+          })
+        } else {
+          _reject()
+          Modal.error({
+            title: result.message
+          })
+        }
       }
     })
   }

--
Gitblit v1.8.0