From 37e28da53f6d4d7d8abe7626ba28ba7dbe16e7bb Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 08 四月 2024 15:36:01 +0800
Subject: [PATCH] 2024-04-08

---
 src/templates/sharecomponent/actioncomponent/verifyexcelout/datasource/index.jsx |  190 ++++++++++++++++++++++++++++++++---------------
 1 files changed, 128 insertions(+), 62 deletions(-)

diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelout/datasource/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelout/datasource/index.jsx
index c6f8e4e..f8240c3 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelout/datasource/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelout/datasource/index.jsx
@@ -1,9 +1,9 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Radio, Tooltip, notification } from 'antd'
+import { Form, Row, Col, Input, Radio, Tooltip, notification, InputNumber } from 'antd'
 import { QuestionCircleOutlined } from '@ant-design/icons'
 
-import Utils from '@/utils/utils.js'
+import { checkSQL } from '@/utils/utils-custom.js'
 import asyncComponent from '@/utils/asyncComponent'
 import './index.scss'
 
@@ -11,20 +11,23 @@
 
 class SettingForm extends Component {
   static propTpyes = {
+    btnType: PropTypes.any,
     setting: PropTypes.object,    // 鏁版嵁婧愰厤缃�
   }
 
   state = {
     dataType: '',
-    defaultSql: 'true'
+    defaultSql: 'true',
+    excelHandle: 'false'
   }
 
   UNSAFE_componentWillMount () {
-    const { setting } = this.props
+    const { setting, btnType } = this.props
 
     this.setState({
-      dataType: setting.dataType,
-      defaultSql: setting.defaultSql || 'true'
+      dataType: btnType === 'print' ? 'custom' : setting.dataType,
+      defaultSql: setting.defaultSql || 'true',
+      excelHandle: setting.excelHandle || 'false'
     })
   }
 
@@ -43,48 +46,9 @@
             reject()
             return
           } else if (values.defaultSql === 'true' && values.dataresource) {
-            let _quot = values.dataresource.match(/'{1}/g)
-            let _lparen = values.dataresource.match(/\({1}/g)
-            let _rparen = values.dataresource.match(/\){1}/g)
+            let pass = checkSQL(values.dataresource)
 
-            _quot = _quot ? _quot.length : 0
-            _lparen = _lparen ? _lparen.length : 0
-            _rparen = _rparen ? _rparen.length : 0
-
-            if (_quot % 2 !== 0) {
-              notification.warning({
-                top: 92,
-                message: '鏁版嵁婧愪腑\'蹇呴』鎴愬鍑虹幇',
-                duration: 5
-              })
-              reject()
-              return
-            } else if (_lparen !== _rparen) {
-              notification.warning({
-                top: 92,
-                message: '鏁版嵁婧愪腑()蹇呴』鎴愬鍑虹幇',
-                duration: 5
-              })
-              reject()
-              return
-            } else if (/--/ig.test(values.dataresource)) {
-              notification.warning({
-                top: 92,
-                message: '鏁版嵁婧愪腑锛屼笉鍙嚭鐜板瓧绗� -- 锛屾敞閲婅鐢� /*鍐呭*/',
-                duration: 5
-              })
-              reject()
-              return
-            }
-
-            let error = Utils.verifySql(values.dataresource)
-
-            if (error) {
-              notification.warning({
-                top: 92,
-                message: '鏁版嵁婧愪腑涓嶅彲浣跨敤' + error,
-                duration: 5
-              })
+            if (!pass) {
               reject()
               return
             }
@@ -99,14 +63,24 @@
   }
 
   updateDataType = (e) => {
-    this.setState({dataType: e.target.value})
     this.props.updateDataType(e.target.value)
+
+    if (e.target.value === 'custom') {
+      setTimeout(() => {
+        this.setState({
+          dataType: e.target.value,
+          defaultSql: this.props.setting.defaultSql || 'true'
+        })
+      }, 10)
+    } else {
+      this.setState({dataType: e.target.value})
+    }
   }
 
   render() {
-    const { setting } = this.props
+    const { setting, btnType } = this.props
     const { getFieldDecorator } = this.props.form
-    const { dataType, defaultSql } = this.state
+    const { dataType, defaultSql, excelHandle } = this.state
 
     const formItemLayout = {
       labelCol: {
@@ -123,7 +97,7 @@
       <div className="excelout-datasource-wrap">
         <Form {...formItemLayout}>
           <Row gutter={24}>
-            <Col span={8}>
+            {btnType !== 'print' ? <Col span={8}>
               <Form.Item label="瀵煎嚭鏁版嵁">
                 {getFieldDecorator('dataType', {
                   initialValue: setting.dataType
@@ -134,7 +108,7 @@
                   </Radio.Group>
                 )}
               </Form.Item>
-            </Col>
+            </Col> : null}
             {dataType === 'custom' ? <Col className="short-label" span={8}>
               <Form.Item label="琛ㄥ悕">
                 {getFieldDecorator('tableName', {
@@ -197,21 +171,39 @@
                 </Radio.Group>)}
               </Form.Item>
             </Col> : null}
+            {btnType !== 'print' && dataType === 'custom' && defaultSql === 'true' ? <Col className="short-label" span={8}>
+              <Form.Item label={
+                <Tooltip placement="topLeft" title="鍙嚜瀹氫箟涓婚敭锛岀┖鏃堕粯璁や负鏁版嵁婧愪富閿�傛敞锛氶�夎瀵煎嚭鏃朵娇鐢ㄣ��">
+                  <QuestionCircleOutlined className="mk-form-tip" />
+                  涓婚敭
+                </Tooltip>
+              }>
+                {getFieldDecorator('primaryKey', {
+                  initialValue: setting.primaryKey || '',
+                })(<Input placeholder={''} autoComplete="off" />)}
+              </Form.Item>
+            </Col> : null}
             {dataType === 'custom' && defaultSql === 'true' ? <Col className="short-label" span={8}>
               <Form.Item label={
-                <Tooltip placement="topLeft" title="鎺掑簭鏂瑰紡涓虹┖鏃讹紝浣跨敤琛ㄦ牸鎴栫粍浠朵腑鐨勬帓搴忔柟寮忋��">
+                <Tooltip placement="topLeft" title="濡傛灉鍦ㄨ嚜瀹氫箟鑴氭湰涓娇鐢ㄤ簡@pageSize@鎴朄orderBy@锛岃鍦ㄦ暟鎹簮涓崟鐙啓鎺掑簭璇彞銆�">
                   <QuestionCircleOutlined className="mk-form-tip" />
                   鎺掑簭鏂瑰紡
                 </Tooltip>
               }>
                 {getFieldDecorator('order', {
-                  initialValue: setting.order || ''
+                  initialValue: setting.order || '',
+                  rules: [
+                    {
+                      required: true,
+                      message: '璇峰~鍐欐帓搴忔柟寮�!'
+                    }
+                  ]
                 })(<Input placeholder={'ID asc, UID desc'} autoComplete="off" />)}
               </Form.Item>
             </Col> : null}
-            {dataType === 'custom' ? <Col span={8}>
+            {dataType === 'custom' && btnType !== 'print' ? <Col span={8}>
               <Form.Item label={
-                <Tooltip placement="topLeft" title="涓嶄娇鐢ㄦ悳绱㈡潯浠舵椂锛屼笉浼氳繘琛屾悳绱㈡潯浠剁殑鎷兼帴涓庣浉鍏崇粺璁″瓧娈电殑鏇挎崲銆傛敞锛氳嚜瀹氫箟鏁版嵁鏉ユ簮鏃讹紝鍙娇鐢ㄥ唴閮ㄦ悳绱€��">
+                <Tooltip placement="topLeft" title="涓嶄娇鐢ㄦ悳绱㈡潯浠舵椂锛屼笉浼氳繘琛屾悳绱㈡潯浠剁殑鎷兼帴涓庣浉鍏崇粺璁″瓧娈电殑鏇挎崲銆�">
                   <QuestionCircleOutlined className="mk-form-tip" />
                   鎼滅储鏉′欢
                 </Tooltip>
@@ -225,14 +217,88 @@
                 </Radio.Group>)}
               </Form.Item>
             </Col> : null}
-            {/* {dataType === 'custom' ? <Col span={8}>
-              <Form.Item label="浜嬪姟">
-                {getFieldDecorator('transaction', {
-                  initialValue: setting.transaction || 'false'
+            {btnType !== 'print' ? <Col span={8}>
+              <Form.Item label={
+                <Tooltip placement="topRight" title="鑷畾涔夌敓鎴怑xcel锛屽彲鐢ㄥ弬鏁颁负 XLSX銆乨ata銆乧olumns銆乻earches銆乧allback銆�">
+                  <QuestionCircleOutlined className="mk-form-tip" />
+                  瀵煎嚭鏍煎紡
+                </Tooltip>
+              }>
+                {getFieldDecorator('excelHandle', {
+                  initialValue: excelHandle
+                })(
+                <Radio.Group onChange={(e) => this.setState({excelHandle: e.target.value})}>
+                  <Radio value="false">榛樿</Radio>
+                  <Radio value="true">鑷畾涔�</Radio>
+                </Radio.Group>)}
+              </Form.Item>
+            </Col> : null}
+            {btnType !== 'print' && excelHandle === 'true' ? <Col span={24} style={{paddingLeft: '30px'}}>
+              <Form.Item wrapperCol={ {xs: { span: 24 }, sm: { span: 24 }} } label="">
+                {getFieldDecorator('excel_func', {
+                  initialValue: setting.excel_func || '',
+                  rules: [
+                    {
+                      required: true,
+                      message: '璇峰~鍐欒嚜瀹氫箟閫昏緫!'
+                    }
+                  ]
+                })(<CodeMirror mode="text/javascript" theme="cobalt" />)}
+              </Form.Item>
+            </Col> : null}
+            {btnType !== 'print' && excelHandle !== 'true' ? <Col span={8}>
+              <Form.Item label={
+                <Tooltip placement="topLeft" title="瀵煎嚭excel涓伐浣滆〃鍚嶇О锛岄粯璁や负Sheet1銆�">
+                  <QuestionCircleOutlined className="mk-form-tip" />
+                  宸ヤ綔琛�
+                </Tooltip>
+              }>
+                {getFieldDecorator('sheet', {
+                  initialValue: setting.sheet || ''
+                })(<Input placeholder="" autoComplete="off" />)}
+              </Form.Item>
+            </Col> : null}
+            {btnType !== 'print' && excelHandle !== 'true' ? <Col span={8}>
+              <Form.Item label={
+                <Tooltip placement="topLeft" title="瀵煎嚭excel涓殑琛岄珮銆�">
+                  <QuestionCircleOutlined className="mk-form-tip" />
+                  琛岄珮
+                </Tooltip>
+              }>
+                {getFieldDecorator('rowHeight', {
+                  initialValue: setting.rowHeight || ''
+                })(<InputNumber min={10} max={200} precision={0} />)}
+              </Form.Item>
+            </Col> : null}
+            {btnType !== 'print' && excelHandle !== 'true' ? <Col span={8}>
+              <Form.Item label={
+                <Tooltip placement="topLeft" title="璇峰皢闇�瑕佸悎骞剁殑琛ㄥご浣跨敤涓í绾垮垎闅旓紙濡傦細鍟嗗搧-鏁伴噺銆佸晢鍝�-鍗曚环锛夛紝鍓嶉儴鍒嗗皢浣滀负涓昏〃澶达紝鍚庨儴鍒嗗皢浣滀负瀛愯〃澶淬��">
+                  <QuestionCircleOutlined className="mk-form-tip" />
+                  琛ㄥご鍚堝苟
+                </Tooltip>
+              }>
+                {getFieldDecorator('merge', {
+                  initialValue: setting.merge || 'false'
                 })(
                 <Radio.Group>
-                  <Radio value="true">浣跨敤</Radio>
-                  <Radio value="false">涓嶄娇鐢�</Radio>
+                  <Radio value="false">鍚�</Radio>
+                  <Radio value="true">鏄�</Radio>
+                </Radio.Group>)}
+              </Form.Item>
+            </Col> : null}
+            {/* {btnType !== 'print' && excelHandle !== 'true' ? <Col span={8}>
+              <Form.Item label={
+                <Tooltip placement="topLeft" title="Excel鍐呭鍖烘槸鍚﹁嚜鍔ㄦ崲琛屻��">
+                  <QuestionCircleOutlined className="mk-form-tip" />
+                  鑷姩鎹㈣
+                </Tooltip>
+              }>
+                {getFieldDecorator('wrapText', {
+                  initialValue: setting.wrapText || 'false'
+                })(
+                <Radio.Group>
+                  <Radio value="false">鍚�</Radio>
+                  <Radio value="true">鏄�</Radio>
                 </Radio.Group>)}
               </Form.Item>
             </Col> : null} */}

--
Gitblit v1.8.0