From 547e5fe219ee7bee309ecd67db74bc8df66b5433 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 23 八月 2023 11:47:45 +0800
Subject: [PATCH] 2023-08-23

---
 src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx |  398 ++++++++++++++++++++------------------------------------
 1 files changed, 142 insertions(+), 256 deletions(-)

diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
index 8f566d2..a99543e 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
@@ -1,9 +1,10 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
-import { Form, Tabs, Row, Col, Button, notification, Modal, message, InputNumber, Radio, Spin, Typography, Popconfirm } from 'antd'
+import { Form, Tabs, Row, Col, Button, notification, Modal, message, InputNumber, Spin, Typography, Popconfirm } from 'antd'
 import { EditOutlined, StopOutlined, CheckCircleOutlined, SwapOutlined, DeleteOutlined } from '@ant-design/icons'
 import moment from 'moment'
+import md5 from 'md5'
 
 import Api from '@/api'
 import Utils from '@/utils/utils.js'
@@ -11,7 +12,6 @@
 import ColumnForm from './columnform'
 import DataSource from './datasource'
 import CustomScript from './customscript'
-import CodeMirror from '@/templates/zshare/codemirror'
 import asyncComponent from '@/utils/asyncComponent'
 import './index.scss'
 
@@ -28,8 +28,8 @@
 
   state = {
     verify: {},
+    debugId: '',
     activeKey: 'setting',
-    defaultscript: '', // 鑷畾涔夎剼鏈�
     excelColumns: [
       {
         title: '瀛楁',
@@ -133,7 +133,7 @@
         width: '10%',
         editable: true,
         inputType: 'radio',
-        render: (text, record) => record.required === 'true' ? '鏄�' : '鍚�',
+        render: (text, record) => record.required === 'true' ? <span style={{color: 'red'}}>鏄�</span> : '鍚�',
         options: [
           {value: 'true', text: '鏄�'},
           {value: 'false', text: '鍚�'}
@@ -163,12 +163,10 @@
         dataIndex: 'position',
         width: '10%',
         render: (text, record) => {
-          if (record.position === 'init') {
-            return <span style={{color: 'orange'}}>鍒濆鍖�</span>
-          } else if (record.position === 'front') {
-            return <span style={{color: '#26C281'}}>sql鍓�</span>
+          if (record.position === 'back') {
+            return <span style={{color: 'orange'}}>鍚庣疆</span>
           } else {
-            return <span style={{color: '#1890ff'}}>sql鍚�</span>
+            return <span style={{color: '#26C281'}}>鍓嶇疆</span>
           }
         }
       },
@@ -219,14 +217,10 @@
       _verify = fromJS(card.verify).toJS()
     }
 
-    _verify.enable = _verify.enable || 'false'
     _verify.dataType = _verify.dataType || 'default'
     _verify.columns = _verify.columns || []
     _verify.scripts = _verify.scripts || []
 
-    if (card.intertype !== 'system') {
-      _verify.enable = 'false'
-    }
     _verify.columns = _verify.columns.map(col => {
       col.type = col.type || 'text'
       col.output = col.output || 'true'
@@ -242,16 +236,6 @@
 
       return col
     })
-
-    let defaultscript = ''
-    if (!_verify.script && card.intertype === 'system') {
-      let search = this.formatSearch(config.search)
-      search = Utils.joinMainSearchkey(search)
-      search = search.replace(/@\$@/ig, '')
-      search = search ? 'where ' + search : ''
-      
-      defaultscript = `update ${config.setting.tableName || ''} set idefine5= idefine5+1 ,modifydate=getdate(),cdefine5='宸插鍑�',modifyuserid=@userid@ ${search}`
-    }
 
     let appType = sessionStorage.getItem('appType')
     let searches = []
@@ -370,8 +354,7 @@
     this.setState({
       verify: _verify,
       searches: searches,
-      activeKey: card.intertype === 'system' && _verify.dataType === 'custom' ? 'setting' : 'columns',
-      defaultscript: defaultscript
+      activeKey: card.intertype === 'system' && _verify.dataType === 'custom' ? 'setting' : 'columns'
     })
   }
 
@@ -415,53 +398,6 @@
     this.setState({
       verify: verify
     })
-  }
-
-  /**
-   * @description 鑾峰彇鍏ㄩ儴鎼滅储鏉′欢
-   * @param {Array} searches 鎼滅储鏉′欢鏁扮粍
-   */
-  formatSearch (searches) {
-    if (!searches || searches.length === 0) return []
-
-    let newsearches = []
-    searches.forEach(search => {
-      if (!search.field) return
-      
-      let item = {
-        key: search.field,
-        match: search.match,
-        type: search.type,
-        label: search.label,
-        value: search.initval,
-        required: search.required === 'true'
-      }
-      if (item.type === 'group') {
-        item.key = search.datefield
-        item.type = 'daterange'
-        item.match = 'between'
-        item.value = [moment().format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')].join(',')
-
-        newsearches.push(item)
-        return
-      } else if (item.type === 'date') {
-        item.value = moment().format('YYYY-MM-DD')
-      } else if (item.type === 'datemonth') {
-        item.value = moment().format('YYYY-MM')
-      } else if (item.type === 'dateweek') {
-        item.value = moment().format('YYYY-MM-DD')
-      } else if (item.type === 'daterange') {
-        item.value = [moment().format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')].join(',')
-      } else if (item.type === 'multiselect' || (item.type === 'checkcard' && search.multiple === 'true')) {
-        item.type = 'multi'
-        item.value = '@$@'
-      } else {
-        item.value = '@$@'
-      }
-      newsearches.push(item)
-    })
-    
-    return newsearches
   }
 
   columnChange = (values) => {
@@ -580,11 +516,20 @@
         return
       }
 
-      if (activeKey === 'backscript' && verify.enable === 'true') {
-        this.checkScript(resolve, reject)
-      } else if (activeKey === 'setting') {
+      if (activeKey === 'setting') {
         this.settingForm.handleConfirm().then(res => {
           let _verify = {...verify, ...res}
+
+          if (res.dataType !== 'custom') {
+            delete _verify.tableName
+            delete _verify.dataresource
+            delete _verify.queryType
+            delete _verify.defaultSql
+            delete _verify.order
+
+            _verify.scripts = []
+          }
+          
           this.setState({
             verify: _verify
           }, () => {
@@ -657,104 +602,6 @@
     })
   }
 
-  checkScript = (_resolve, _reject) => {
-    this.props.form.validateFieldsAndScroll((err, values) => {
-      if (!err) {
-        values.sql = values.sql || ''
-
-        let _quot = values.sql.match(/'{1}/g)
-        let _lparen = values.sql.match(/\({1}/g)
-        let _rparen = values.sql.match(/\){1}/g)
-
-        _quot = _quot ? _quot.length : 0
-        _lparen = _lparen ? _lparen.length : 0
-        _rparen = _rparen ? _rparen.length : 0
-
-        if (_quot % 2 !== 0) {
-          notification.warning({
-            top: 92,
-            message: 'sql涓璡'蹇呴』鎴愬鍑虹幇',
-            duration: 5
-          })
-          return
-        } else if (_lparen !== _rparen) {
-          notification.warning({
-            top: 92,
-            message: 'sql涓�()蹇呴』鎴愬鍑虹幇',
-            duration: 5
-          })
-          return
-        } else if (/--/ig.test(values.sql)) {
-          notification.warning({
-            top: 92,
-            message: '鑷畾涔塻ql璇彞涓紝涓嶅彲鍑虹幇瀛楃 -- 锛屾敞閲婅鐢� /*鍐呭*/',
-            duration: 5
-          })
-          return
-        }
-
-        let error = Utils.verifySql(values.sql, 'customscript')
-
-        if (error) {
-          notification.warning({
-            top: 92,
-            message: 'sql涓笉鍙娇鐢�' + error,
-            duration: 5
-          })
-          return
-        }
-
-        let param = {
-          func: 's_debug_sql',
-          exec_type: 'y',
-          LText: values.sql
-        }
-
-        param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
-        param.LText = param.LText.replace(/@\$|\$@/ig, '').replace(/@(BID|ID|LoginUID|SessionUid|UserID|Appkey|time_id)@/ig, `'${param.timestamp}'`)
-        param.LText = param.LText.replace(/\n/g, ' ')
-        
-        param.LText = Utils.formatOptions(param.LText)
-        param.secretkey = Utils.encrypt('', param.timestamp)
-        
-        this.setState({
-          loading: true
-        })
-        Api.genericInterface(param).then(res => {
-          this.setState({
-            loading: false
-          })
-          if (res.status) {
-            let verify = {...this.state.verify, script: values.sql}
-
-            this.setState({verify: verify}, () => {
-              _resolve(verify)
-            })
-          } else {
-            Modal.error({
-              title: res.message
-            })
-          }
-        })
-      } else {
-        notification.warning({
-          top: 92,
-          message: '鑷畾涔夎剼鏈笉鍙负绌猴紒',
-          duration: 5
-        })
-        _reject()
-      }
-    })
-  }
-
-  changeEnable = (e) => {
-    const { verify } = this.state
-
-    this.setState({
-      verify: {...verify, enable: e.target.value}
-    })
-  }
-
   columnFieldInput = () => {
     const { config } = this.props
     const { verify } = this.state
@@ -785,6 +632,31 @@
       columns.push(cell)
     })
 
+    if (config.subtype === 'dualdatacard') {
+      config.subColumns.forEach(item => {
+        if (fields.includes(item.field) || !item.field) return
+        fields.push(item.field)
+  
+        let cell = {
+          Column: item.field,
+          Text: item.label,
+          Width: 20,
+          abs: 'false',
+          output: 'true',
+          required: 'false',
+          type: 'text',
+          uuid: Utils.getuuid()
+        }
+  
+        if (item.type === 'number') {
+          cell.type = 'number'
+          cell.decimal = item.decimal
+        }
+  
+        columns.push(cell)
+      })
+    }
+
     this.setState({
       verify: {...verify, columns: columns}
     })
@@ -811,22 +683,37 @@
   changeColumns = (columns) => {
     const { verify } = this.state
 
-    if (columns[0] && !['image', 'text', 'number'].includes(columns[0].type)) {
-      columns = columns.map(col => {
-        let _cell = {
-          uuid: Utils.getuuid(),
-          Column: col.Column,
-          Text: col.Text,
-          Width: 20,
-          abs: 'false',
-          output: col.output || 'true',
-          required: col.required || 'false',
-          type: 'text',
-        }
+    columns = columns.map(col => {
+      col.type = col.type || 'text'
+      col.output = col.output || 'true'
+      col.required = col.required || 'false'
 
-        return _cell
-      })
-    }
+      if (!['text', 'image', 'number'].includes(col.type)) {
+        if (/^Decimal/ig.test(col.type)) {
+          col.type = 'number'
+        } else {
+          col.type = 'text'
+        }
+      }
+
+      return col
+    })
+    // if (columns[0] && !['image', 'text', 'number'].includes(columns[0].type)) {
+    //   columns = columns.map(col => {
+    //     let _cell = {
+    //       uuid: Utils.getuuid(),
+    //       Column: col.Column,
+    //       Text: col.Text,
+    //       Width: 20,
+    //       abs: 'false',
+    //       output: col.output || 'true',
+    //       required: col.required || 'false',
+    //       type: 'text',
+    //     }
+
+    //     return _cell
+    //   })
+    // }
 
     this.setState({verify: {...verify, columns}})
   }
@@ -836,13 +723,7 @@
     const { card } = this.props
     const { activeKey, verify } = this.state
 
-    if (activeKey === 'backscript' && verify.enable === 'true') {
-      this.checkScript(() => {
-        this.setState({
-          activeKey: val
-        })
-      }, () => {})
-    } else if (card.intertype !== 'system' || verify.dataType !== 'custom') {
+    if (card.intertype !== 'system' || verify.dataType !== 'custom') {
       this.setState({activeKey: val})
       return
     } else if (activeKey === 'setting') {
@@ -915,7 +796,7 @@
     }
   }
 
-  scriptsChange = (values, callback) => {
+  scriptsChange = (values, callback, skip) => {
     let verify = JSON.parse(JSON.stringify(this.state.verify))
 
     if (values.uuid) {
@@ -931,24 +812,31 @@
       verify.scripts.push(values)
     }
 
-    this.setState({loading: true})
-
-    this.sqlverify(() => { // 楠岃瘉鎴愬姛
+    if (skip) {
       this.setState({
-        loading: false,
         verify: verify
       })
       callback(true)
-    }, () => {             // 楠岃瘉澶辫触
-      this.setState({
-        loading: false
-      })
-      callback(false)
-    }, verify.scripts)
+    } else {
+      this.setState({loading: true})
+  
+      this.sqlverify(() => { // 楠岃瘉鎴愬姛
+        this.setState({
+          loading: false,
+          verify: verify
+        })
+        callback(true)
+      }, () => {             // 楠岃瘉澶辫触
+        this.setState({
+          loading: false
+        })
+        callback(false)
+      }, verify.scripts)
+    }
   }
 
   sqlverify = (_resolve, _reject, scripts) => {
-    const { searches, verify } = this.state
+    const { searches, verify, debugId } = this.state
 
     if (verify.dataType !== 'custom') {
       _resolve()
@@ -956,7 +844,15 @@
     }
 
     let timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
-    let sql = SettingUtils.getDebugSql(verify, scripts, (verify.useSearch === 'true' ? searches : []), Utils, timestamp)
+    let sql = SettingUtils.getDebugSql(verify, scripts, (verify.useSearch === 'true' ? searches : []), Utils, '2023-04-20 15:29:37')
+
+    let _debugId = md5(sql)
+
+    if (debugId === _debugId) {
+      _resolve()
+      return
+    }
+
     let param = {
       func: 's_debug_sql',
       exec_type: 'y',
@@ -968,6 +864,7 @@
 
     Api.genericInterface(param).then(result => {
       if (result.status) {
+        this.setState({debugId: _debugId})
         _resolve()
       } else {
         _reject()
@@ -979,13 +876,27 @@
   }
 
   updateDataType = (val) => {
-    this.setState({verify: {...this.state.verify, dataType: val}})
+    const { config } = this.props
+
+    let verify = {...this.state.verify, dataType: val}
+    if (val === 'custom' && config.setting) {
+      verify.tableName = verify.tableName || config.setting.tableName || ''
+      verify.dataresource = verify.dataresource || config.setting.dataresource || ''
+      verify.queryType = verify.queryType || config.setting.queryType || ''
+      verify.defaultSql = verify.defaultSql || config.setting.execute || ''
+      verify.order = verify.order || config.setting.order || ''
+
+      if (verify.scripts.length === 0 && config.scripts && config.scripts.length > 0) {
+        verify.scripts = fromJS(config.scripts).toJS()
+      }
+    }
+
+    this.setState({verify: verify})
   }
 
   render() {
     const { card } = this.props
-    const { verify, excelColumns, defaultscript, scriptsColumns, activeKey, loading, searches } = this.state
-    const { getFieldDecorator } = this.props.form
+    const { verify, excelColumns, scriptsColumns, activeKey, loading, searches } = this.state
     const formItemLayout = {
       labelCol: {
         xs: { span: 24 },
@@ -1036,44 +947,11 @@
             />
             <EditTable actions={['move']} data={verify.scripts} columns={scriptsColumns} onChange={(scripts) => {this.setState({verify: {...verify, scripts}})}}/>
           </TabPane> : null}
-          {card.intertype === 'system' ? <TabPane tab={
-            <span>
-              鍥炶皟鑴氭湰
-              {verify.enable === 'true' ? <span className="count-tip">1</span> : null}
-            </span>
-          } key="backscript">
-            <Form {...formItemLayout} className="verify-form">
-              <Row gutter={24}>
-                <Col span={8}>
-                  <Form.Item style={{marginBottom: 10}} label={'鍚敤'}>
-                    <Radio.Group defaultValue={verify.enable || 'false'} onChange={this.changeEnable}>
-                      <Radio value="true">鏄�</Radio>
-                      <Radio value="false">鍚�</Radio>
-                    </Radio.Group>
-                  </Form.Item>
-                </Col>
-                <div style={{color: '#959595', fontSize: '13px', paddingTop: '30px', float: 'right'}}>鎵ц鎴愬姛鍚庣殑鍥炶皟鍑芥暟銆�</div>
-                <Col span={24} className="sql">
-                  <Form.Item label={'sql'}>
-                    {getFieldDecorator('sql', {
-                      initialValue: verify.script || defaultscript,
-                      rules: [
-                        {
-                          required: true,
-                          message: '璇疯緭鍏ql!'
-                        }
-                      ]
-                    })(<CodeMirror />)}
-                  </Form.Item>
-                </Col>
-              </Row>
-            </Form>
-          </TabPane> : null}
           <TabPane tab="淇℃伅鎻愮ず" key="message">
             <Form {...formItemLayout}>
               <Row gutter={24}>
                 <Col offset={6} span={6}>
-                  <Form.Item label={'鎻愮ず缂栫爜'}>
+                  <Form.Item label="鎻愮ず缂栫爜">
                     <span className="errorval"> S </span>
                     <Button onClick={() => {this.showError('S')}} type="primary" size="small">
                       鏌ョ湅
@@ -1081,14 +959,14 @@
                   </Form.Item>
                 </Col>
                 <Col span={8}>
-                  <Form.Item label={'鍋滅暀鏃堕棿'}>
+                  <Form.Item label="鍋滅暀鏃堕棿">
                     <InputNumber defaultValue={verify.stime || 2} min={1} max={10000} precision={0} onChange={(val) => {this.timeChange(val, 'stime')}} />
                   </Form.Item>
                 </Col>
               </Row>
               <Row gutter={24}>
                 <Col offset={6} span={6}>
-                  <Form.Item label={'鎻愮ず缂栫爜'}>
+                  <Form.Item label="鎻愮ず缂栫爜">
                     <span className="errorval"> Y </span>
                     <Button onClick={() => {this.showError('Y')}} type="primary" size="small">
                       鏌ョ湅
@@ -1098,7 +976,15 @@
               </Row>
               <Row gutter={24}>
                 <Col offset={6} span={6}>
-                  <Form.Item label={'鎻愮ず缂栫爜'}>
+                  <Form.Item label="鎻愮ず缂栫爜">
+                    <span className="errorval"> -1 </span>
+                    鎵ц鎴愬姛鏃犳彁绀恒��
+                  </Form.Item>
+                </Col>
+              </Row>
+              <Row gutter={24}>
+                <Col offset={6} span={6}>
+                  <Form.Item label="鎻愮ず缂栫爜">
                     <span className="errorval"> N </span>
                     <Button onClick={() => {this.showError('N')}} type="primary" size="small">
                       鏌ョ湅
@@ -1106,14 +992,14 @@
                   </Form.Item>
                 </Col>
                 <Col span={8}>
-                  <Form.Item label={'鍋滅暀鏃堕棿'}>
+                  <Form.Item label="鍋滅暀鏃堕棿">
                     <InputNumber defaultValue={verify.ntime || 10} min={1} max={10000} precision={0} onChange={(val) => {this.timeChange(val, 'ntime')}} />
                   </Form.Item>
                 </Col>
               </Row>
               <Row gutter={24}>
                 <Col offset={6} span={6}>
-                  <Form.Item label={'鎻愮ず缂栫爜'}>
+                  <Form.Item label="鎻愮ず缂栫爜">
                     <span className="errorval"> F </span>
                     <Button onClick={() => {this.showError('F')}} type="primary" size="small">
                       鏌ョ湅
@@ -1121,14 +1007,14 @@
                   </Form.Item>
                 </Col>
                 <Col span={8}>
-                  <Form.Item label={'鍋滅暀鏃堕棿'}>
+                  <Form.Item label="鍋滅暀鏃堕棿">
                     <InputNumber defaultValue={verify.ftime || 10} min={1} max={10000} precision={0} onChange={(val) => {this.timeChange(val, 'ftime')}} />
                   </Form.Item>
                 </Col>
               </Row>
               <Row gutter={24}>
                 <Col offset={6} span={6}>
-                  <Form.Item label={'鎻愮ず缂栫爜'}>
+                  <Form.Item label="鎻愮ず缂栫爜">
                     <span className="errorval"> E </span>
                     <Button onClick={() => {this.showError('E')}} type="primary" size="small">
                       鏌ョ湅
@@ -1138,7 +1024,7 @@
               </Row>
               <Row gutter={24}>
                 <Col offset={6} span={6}>
-                  <Form.Item label={'鎻愮ず缂栫爜'}>
+                  <Form.Item label="鎻愮ず缂栫爜">
                     <span className="errorval"> NM </span>
                     <Button onClick={() => {this.showError('NM')}} type="primary" size="small">
                       鏌ョ湅
@@ -1148,9 +1034,9 @@
               </Row>
               <Row gutter={24}>
                 <Col offset={6} span={6}>
-                  <Form.Item label={'鎻愮ず缂栫爜'}>
-                    <span className="errorval"> -1 </span>
-                    涓嶆彁绀�
+                  <Form.Item label="鎻愮ず缂栫爜">
+                    <span className="errorval"> -2 </span>
+                    鎵ц澶辫触鏃犳彁绀�
                   </Form.Item>
                 </Col>
               </Row>

--
Gitblit v1.8.0