From 316877c1d9e5b6d92334f30b03d97d7e833cd934 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 02 二月 2021 16:01:57 +0800 Subject: [PATCH] 2021-02-02 --- src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx | 206 +++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 181 insertions(+), 25 deletions(-) diff --git a/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx b/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx index c1c0e77..e303c63 100644 --- a/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx +++ b/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx @@ -9,6 +9,8 @@ import CodeMirror from '@/templates/zshare/codemirror' import './index.scss' +const { TextArea } = Input + class SettingForm extends Component { static propTpyes = { config: PropTypes.object, // 椤甸潰閰嶇疆 @@ -17,10 +19,13 @@ setting: PropTypes.object, // 鏁版嵁婧愰厤缃� columns: PropTypes.array, // 鍒楄缃� scripts: PropTypes.array, // 鑷畾涔夎剼鏈� + updateStatus: PropTypes.func, // 鐘舵�佹洿鏂� } state = { interType: 'system', + procMode: 'script', + requestMode: 'system', funcTooltip: '', funcRules: [] } @@ -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) => { @@ -176,7 +190,7 @@ render() { 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: { @@ -230,10 +244,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 +269,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 +392,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,7 +407,7 @@ })(<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={'浣跨敤绯荤粺鍑芥暟鏃讹紝闇�濉啓鏁版嵁婧愩�傛敞锛氭暟鎹潈闄愭浛鎹㈢ $@ -> /* 鎴� \'\'銆� @$ -> */ 鎴� \'\''}> <Icon type="question-circle" /> @@ -318,7 +419,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 +435,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' @@ -378,6 +479,61 @@ })(<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="鎵ц娆℃暟"> + {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', { -- Gitblit v1.8.0