From 31ec63f0419895876cbaba99637a884a32d33d0d Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 01 九月 2021 10:31:45 +0800 Subject: [PATCH] 2021-09-01 --- src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx | 272 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 239 insertions(+), 33 deletions(-) diff --git a/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx b/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx index 7521f34..8069d17 100644 --- a/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx +++ b/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx @@ -1,6 +1,6 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' -import { Form, Row, Col, Input, Radio, Tooltip, Icon, notification, Select } from 'antd' +import { Form, Row, Col, Input, Radio, Tooltip, Icon, notification, Select, InputNumber } from 'antd' import moment from 'moment' import Api from '@/api' @@ -9,18 +9,23 @@ import CodeMirror from '@/templates/zshare/codemirror' import './index.scss' +const { TextArea } = Input + class SettingForm extends Component { static propTpyes = { - type: PropTypes.string, // 鑿滃崟绫诲瀷锛宮ain鎴杝ubtable + config: PropTypes.object, // 椤甸潰閰嶇疆 dict: PropTypes.object, // 瀛楀吀椤� menu: PropTypes.object, // 鑿滃崟淇℃伅 setting: PropTypes.object, // 鏁版嵁婧愰厤缃� columns: PropTypes.array, // 鍒楄缃� scripts: PropTypes.array, // 鑷畾涔夎剼鏈� + updateStatus: PropTypes.func, // 鐘舵�佹洿鏂� } state = { interType: 'system', + procMode: 'script', + requestMode: 'system', funcTooltip: '', funcRules: [] } @@ -32,7 +37,7 @@ if (usefulFields) { try { usefulFields = JSON.parse(usefulFields) - } catch { + } catch (e) { usefulFields = [] } } else { @@ -55,6 +60,8 @@ this.setState({ interType: setting.interType || 'system', + procMode: setting.procMode || 'script', + requestMode: setting.requestMode || 'system', funcTooltip: tooltip, funcRules: rules }) @@ -156,13 +163,20 @@ this.setState({ interType: value }) - } else if (key === 'sysInterface') { - if (value === 'true') { - this.props.form.setFieldsValue({ - interface: window.GLOB.mainSystemApi || '' - }) - } + } else if (key === 'procMode') { + this.setState({ + procMode: value + }) + } else if (key === 'requestMode') { + this.setState({ + requestMode: value + }) + } else if (key === 'sysInterface' && value === 'true') { + this.props.form.setFieldsValue({ + interface: window.GLOB.mainSystemApi || '' + }) } + this.props.updateStatus({[key]: value}) } primaryKeyChange = (val) => { @@ -174,9 +188,9 @@ } render() { - const { setting, dict, menu, type, columns } = this.props + const { setting, dict, menu, config, columns } = this.props const { getFieldDecorator } = this.props.form - const { interType, funcRules, funcTooltip } = this.state + const { interType, funcRules, funcTooltip, procMode, requestMode } = this.state const formItemLayout = { labelCol: { @@ -202,6 +216,10 @@ required: true, message: dict['form.required.input'] + '琛ㄥ悕!' }, + { + max: 50, + message: '琛ㄥ悕鏈�闀夸负50涓瓧绗�!' + } ] })(<Input placeholder={''} autoComplete="off" />)} </Form.Item> @@ -230,10 +248,11 @@ }, ] })( - <Radio.Group onChange={(e) => {this.onRadioChange(e, 'interType')}}> + <Radio.Group style={{whiteSpace: 'nowrap'}} onChange={(e) => {this.onRadioChange(e, 'interType')}}> <Radio value="system">绯荤粺</Radio> <Radio value="inner">鍐呴儴</Radio> <Radio value="outer">澶栭儴</Radio> + <Radio value="custom">鑷畾涔�</Radio> </Radio.Group>)} </Form.Item> </Col> @@ -254,7 +273,106 @@ </Radio.Group>)} </Form.Item> </Col> : null} - {interType === 'inner' ? <Col span={12}> + {interType === 'custom' ? <Col span={12}> + <Form.Item label="鍙傛暟澶勭悊"> + {getFieldDecorator('procMode', { + initialValue: procMode, + rules: [ + { + required: true, + message: dict['form.required.select'] + '鍙傛暟澶勭悊鏂瑰紡!' + }, + ] + })( + <Radio.Group style={{whiteSpace: 'nowrap'}} onChange={(e) => {this.onRadioChange(e, 'procMode')}}> + <Radio value="script">鍓嶇疆鑴氭湰</Radio> + <Radio value="inner">鍓嶇疆鍑芥暟</Radio> + </Radio.Group>)} + </Form.Item> + </Col> : null} + {interType === 'custom' && procMode === 'inner' ? <Col span={12}> + <Form.Item label={ + <Tooltip placement="topLeft" title={funcTooltip}> + <Icon type="question-circle" /> + 鍓嶇疆鍑芥暟 + </Tooltip> + }> + {getFieldDecorator('prevFunc', { + initialValue: setting.prevFunc || '', + rules: [ + { + required: true, + message: dict['form.required.input'] + '鍓嶇疆鍑芥暟!' + }, + { + max: formRule.func.max, + message: formRule.func.maxMessage + }, + ...funcRules + ] + })(<Input placeholder={''} autoComplete="off" />)} + </Form.Item> + </Col> : null} + {interType === 'outer' || interType === 'custom' ? <Col className="data-source" span={24}> + <Form.Item label="娴嬭瘯鍦板潃"> + {getFieldDecorator('interface', { + initialValue: setting.interface || '', + rules: [ + { + required: true, + message: dict['form.required.input'] + '娴嬭瘯鍦板潃!' + }, + ] + })(<TextArea rows={2} />)} + </Form.Item> + </Col> : null} + {interType === 'outer' || interType === 'custom' ? <Col className="data-source" span={24}> + <Form.Item label={ + <Tooltip placement="topLeft" title="姝e紡绯荤粺鎵�浣跨敤鐨勭殑鎺ュ彛鍦板潃銆�"> + <Icon type="question-circle" /> + 姝e紡鍦板潃 + </Tooltip> + }> + {getFieldDecorator('proInterface', { + initialValue: setting.proInterface || '' + })(<TextArea rows={2} />)} + </Form.Item> + </Col> : null} + {interType === 'custom' ? <Col span={12}> + <Form.Item label="璇锋眰鏂瑰紡"> + {getFieldDecorator('method', { + initialValue: setting.method || 'post', + rules: [ + { + required: true, + message: dict['form.required.select'] + '璇锋眰鏂瑰紡!' + }, + ] + })( + <Radio.Group> + <Radio value="get">GET</Radio> + <Radio value="post">POST</Radio> + </Radio.Group>)} + </Form.Item> + </Col> : null} + {interType === 'custom' ? <Col span={12}> + <Form.Item label="鏁版嵁璇锋眰"> + {getFieldDecorator('requestMode', { + initialValue: requestMode, + rules: [ + { + required: true, + message: dict['form.required.select'] + '鏁版嵁璇锋眰鏂瑰紡!' + }, + ] + })( + <Radio.Group style={{whiteSpace: 'nowrap'}} onChange={(e) => {this.onRadioChange(e, 'requestMode')}}> + <Radio value="system">绯荤粺鍑芥暟</Radio> + <Radio value="inner">鍐呴儴鍑芥暟</Radio> + </Radio.Group>)} + </Form.Item> + </Col> : null} + {interType === 'inner' || (interType === 'custom' && requestMode === 'inner') ? <Col span={12}> <Form.Item label={ <Tooltip placement="topLeft" title={funcTooltip}> <Icon type="question-circle" /> @@ -278,19 +396,6 @@ </Form.Item> </Col> : null} {interType === 'outer' ? <Col span={12}> - <Form.Item label="鎺ュ彛鍦板潃"> - {getFieldDecorator('interface', { - initialValue: setting.interface || '', - rules: [ - { - required: true, - message: dict['form.required.input'] + '鎺ュ彛鍦板潃!' - }, - ] - })(<Input placeholder={''} autoComplete="off" />)} - </Form.Item> - </Col> : null} - {interType === 'outer' ? <Col span={12}> <Form.Item label="澶栭儴鍑芥暟"> {getFieldDecorator('outerFunc', { initialValue: setting.outerFunc || '', @@ -306,9 +411,9 @@ })(<Input placeholder={''} autoComplete="off" />)} </Form.Item> </Col> : null} - {interType === 'system' ? <Col span={24} className="data-source" style={{paddingLeft: '7px'}}> + {interType === 'system' || (interType === 'custom' && requestMode === 'system') ? <Col span={24} className="data-source" style={{paddingLeft: '7px'}}> <Form.Item help={'鏁版嵁ID锛�' + menu.MenuID} labelCol={{xs: { span: 24 }, sm: { span: 4 }}} wrapperCol={ {xs: { span: 24 }, sm: { span: 20 }} } label={ - <Tooltip placement="topLeft" title={'浣跨敤绯荤粺鍑芥暟鏃讹紝闇�濉啓鏁版嵁婧愩�傛敞锛氭暟鎹潈闄愭浛鎹㈢ $@ -> /* 鎴� \'\'銆� @$ -> */ 鎴� \'\''}> + <Tooltip placement="topLeft" title={`浣跨敤绯荤粺鍑芥暟鏃讹紝闇�濉啓鏁版嵁婧愩�傛敞锛氭暟鎹潈闄愭浛鎹㈢ $@ -> /* 鎴� ''銆� @$ -> */ 鎴� ''锛涙煡璇㈡浛鎹㈢ $select@ -> /* 鎴� ''銆� @select$ -> */ 鎴� ''锛涚粺璁℃浛鎹㈢ $sum@ -> /* 鎴� ''銆� @sum$ -> */ 鎴� ''銆俙}> <Icon type="question-circle" /> 鏁版嵁婧� </Tooltip> @@ -318,7 +423,7 @@ })(<CodeMirror />)} </Form.Item> </Col> : null} - {interType === 'system' ? <Col span={12}> + {interType === 'system' || (interType === 'custom' && requestMode === 'system') ? <Col span={12}> <Form.Item label={ <Tooltip placement="topLeft" title={'鏌ヨ鏃讹紝鎼滅储鏉′欢浠here鏉′欢鎷兼帴杩涘叆sql锛岀粺璁℃椂锛屽皢鏁版嵁婧愪腑浠モ�淍+鎼滅储瀛楁+@鈥濈殑鍐呭锛屼互鎼滅储鏉′欢涓殑鍊艰繘琛屾浛鎹㈠悗锛屾彁浜ゆ煡璇紝娉細鏌ヨ绫诲瀷浠呭湪浣跨敤绯荤粺鍑芥暟鏃舵湁鏁堛��'}> <Icon type="question-circle" /> @@ -334,7 +439,7 @@ </Radio.Group>)} </Form.Item> </Col> : null} - {interType === 'system' ? <Col span={12}> + {interType === 'system' || (interType === 'custom' && requestMode === 'system') ? <Col span={12}> <Form.Item label="榛樿sql"> {getFieldDecorator('default', { initialValue: setting.default || 'true' @@ -364,7 +469,7 @@ <Col span={12}> <Form.Item label="榛樿鎺掑簭"> {getFieldDecorator('order', { - initialValue: setting.order || '', + initialValue: setting.order || 'ID desc', rules: [ { required: true, @@ -378,6 +483,77 @@ })(<Input placeholder={'ID asc, UID desc'} autoComplete="off" />)} </Form.Item> </Col> + {interType === 'custom' ? <Col span={12}> + <Form.Item label="鍥炶皟鏂瑰紡"> + {getFieldDecorator('callbackType', { + initialValue: setting.callbackType || 'script' + })( + <Radio.Group onChange={(e) => {this.onRadioChange(e, 'callbackType')}}> + <Radio value="default">榛樿鑴氭湰</Radio> + <Radio value="script">鑷畾涔夎剼鏈�</Radio> + </Radio.Group>)} + </Form.Item> + </Col> : null} + {interType === 'custom' ? <Col span={12}> + <Form.Item label="鍥炶皟琛ㄥ悕"> + {getFieldDecorator('cbTable', { + initialValue: setting.cbTable || '', + rules: [ + { + required: true, + message: dict['form.required.input'] + '鍥炶皟琛ㄥ悕!' + }, + { + max: formRule.input.max, + message: formRule.input.message + } + ] + })(<Input placeholder={''} autoComplete="off" />)} + </Form.Item> + </Col> : null} + {interType === 'custom' ? <Col span={12}> + <Form.Item label={ + <Tooltip placement="topLeft" title={'鍚屾鎵ц锛氬閮ㄦ帴鍙h皟鐢ㄦ垚鍔熷悗鍐嶈姹傛暟鎹紱寮傛鎵ц锛氬閮ㄦ帴鍙h皟鐢ㄤ笌璇锋眰鏁版嵁鍚屾椂杩涜銆�'}> + <Icon type="question-circle" /> + 鎵ц鏂瑰紡 + </Tooltip> + }> + {getFieldDecorator('execType', { + initialValue: setting.execType || 'sync' + })( + <Radio.Group> + <Radio value="sync">鍚屾</Radio> + <Radio value="async">寮傛</Radio> + </Radio.Group>)} + </Form.Item> + </Col> : null} + {interType === 'custom' ? <Col span={12}> + <Form.Item label={ + <Tooltip placement="topLeft" title={'濡傛灉鑷畾涔夋帴鍙d笉鏀寔璺ㄥ煙璇锋眰锛屼細閫氳繃褰撳墠绯荤粺杞彂銆�'}> + <Icon type="question-circle" /> + 璺ㄥ煙璇锋眰 + </Tooltip> + }> + {getFieldDecorator('cross', { + initialValue: setting.cross || 'true' + })( + <Radio.Group> + <Radio value="true">鏀寔</Radio> + <Radio value="false">涓嶆敮鎸�</Radio> + </Radio.Group>)} + </Form.Item> + </Col> : null} + {interType === 'custom' ? <Col span={12}> + <Form.Item label="鎵ц娆℃暟"> + {getFieldDecorator('execTime', { + initialValue: setting.execTime || 'once' + })( + <Radio.Group> + <Radio value="always">濮嬬粓</Radio> + <Radio value="once">涓�娆�</Radio> + </Radio.Group>)} + </Form.Item> + </Col> : null} <Col span={12}> <Form.Item label="鏄惁鍒嗛〉"> {getFieldDecorator('laypage', { @@ -400,7 +576,7 @@ </Radio.Group>)} </Form.Item> </Col> - {type === 'main' ? <Col span={12}> + {config.Template === 'CommonTable' ? <Col span={12}> <Form.Item label="鎸夐挳鍥哄畾"> {getFieldDecorator('actionfixed', { initialValue: setting.actionfixed === 'true' || setting.actionfixed === true ? 'true' : 'false' @@ -411,7 +587,7 @@ </Radio.Group>)} </Form.Item> </Col> : null} - {type === 'main' ? <Col span={12}> + {config.Template === 'CommonTable' ? <Col span={12}> <Form.Item label={ <Tooltip placement="topLeft" title={'鍚湁鍚堝苟鍒楁垨琛ㄦ牸鍑虹幇妯悜婊氬姩鏃朵細鏄剧ず寮傚父锛岃鎱庣敤锛�'}> <Icon type="question-circle" /> @@ -438,6 +614,36 @@ </Radio.Group>)} </Form.Item> </Col> + <Col span={12}> + <Form.Item label={ + <Tooltip placement="topLeft" title="楂樼骇鎼滅储寮圭獥鐨勫搴︼紝娉細褰撳搴﹀�煎皬浜�100鏃惰〃绀哄崰绐楀彛鐨勭櫨鍒嗘瘮锛屽ぇ浜�100鏃惰〃绀哄搴︾殑缁濆鍊笺��"> + <Icon type="question-circle" /> + 楂樼骇鎼滅储 + </Tooltip> + }> + {getFieldDecorator('advanceWidth', { + initialValue: setting.advanceWidth || 1000 + })(<InputNumber min={10} max={3000} precision={0}/>)} + </Form.Item> + </Col> + <Col span={12}> + <Form.Item label={ + <Tooltip placement="topLeft" title="鍙屽嚮琛ㄦ牸涓锛岃Е鍙戠殑鎸夐挳銆�"> + <Icon type="question-circle" /> + 鍙屽嚮浜嬩欢 + </Tooltip> + }> + {getFieldDecorator('doubleClick', { + initialValue: setting.doubleClick || '' + })( + <Select allowClear> + {config.action.map(option => + <Select.Option key={option.uuid} value={option.uuid}>{option.label}</Select.Option> + )} + </Select> + )} + </Form.Item> + </Col> </Row> </Form> </div> -- Gitblit v1.8.0