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