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/formtabconfig/actionform/index.jsx | 207 +++++++++++++++++++++++++++++++++++---------------- 1 files changed, 142 insertions(+), 65 deletions(-) diff --git a/src/templates/formtabconfig/actionform/index.jsx b/src/templates/formtabconfig/actionform/index.jsx index f768035..6fd1b18 100644 --- a/src/templates/formtabconfig/actionform/index.jsx +++ b/src/templates/formtabconfig/actionform/index.jsx @@ -2,76 +2,68 @@ import PropTypes from 'prop-types' import { Form, Row, Col, Input, Select, Icon, Radio, notification, Tooltip, InputNumber } from 'antd' import { btnIcons, btnClasses, formRule } from '@/utils/option.js' -import Utils from '@/utils/utils.js' +// import Utils from '@/utils/utils.js' import './index.scss' const { TextArea } = Input class MainSearch extends Component { static propTpyes = { - dict: PropTypes.object, // 瀛楀吀椤� - formlist: PropTypes.any, // 琛ㄥ崟淇℃伅 - card: PropTypes.any, // 鎸夐挳淇℃伅 - tabs: PropTypes.array // 鎵�鏈夋爣绛鹃〉 + dict: PropTypes.object, // 瀛楀吀椤� + formlist: PropTypes.any, // 琛ㄥ崟淇℃伅 + card: PropTypes.any, // 鎸夐挳淇℃伅 + tabs: PropTypes.array, // 鎵�鏈夋爣绛鹃〉 + inputSubmit: PropTypes.any // 鍥炶溅鎻愪氦浜嬩欢 } state = { formlist: null, // 琛ㄥ崟淇℃伅 openType: null, // 鎵撳紑鏂瑰紡 interType: null, // 鎺ュ彛绫诲瀷锛氬唴閮ㄣ�佸閮� - position: null, // 鎸夐挳浣嶇疆 - reqOptionSgl: [{ - value: 'requiredSgl', - text: this.props.dict['header.form.requiredSgl'] - }], - reqOptions: [{ - value: 'notRequired', - text: this.props.dict['header.form.notRequired'] - }, { - value: 'requiredSgl', - text: this.props.dict['header.form.requiredSgl'] - }], - reqOptionsMutil: [{ - value: 'notRequired', - text: this.props.dict['header.form.notRequired'] - }, { - value: 'requiredSgl', - text: this.props.dict['header.form.requiredSgl'] - }, { - value: 'required', - text: this.props.dict['header.form.required'] - }, { - value: 'requiredOnce', - text: this.props.dict['header.form.requiredOnce'] - }], insertUpdateOptions: [{ value: '', - text: this.props.dict['header.form.empty'] + text: this.props.dict['model.empty'] }, { value: 'insert', text: this.props.dict['header.form.action.insert'] }, { value: 'update', text: this.props.dict['header.form.action.update'] + }, { + value: 'insertOrUpdate', + text: this.props.dict['header.form.action.insertOrUpdate'] + }], + returnoptions: [{ // 杩斿洖鍚�-涓嶅埛鏂般�佸埛鏂伴〉闈€�佸埛鏂拌〃鏍� + value: 'never', + text: this.props.dict['header.form.refresh.never'] + }, { + value: 'grid', + text: this.props.dict['header.form.refresh'] + }], + currentoptions: [{ // 涓嶈繑鍥炴椂-涓嶅埛鏂般�佸埛鏂� + value: 'never', + text: this.props.dict['header.form.refresh.never'] + }, { + value: 'refresh', + text: this.props.dict['header.form.refresh'] }] } UNSAFE_componentWillMount () { + const { card } = this.props let _intertype = '' - let _options = null this.props.formlist.forEach(form => { if (form.key === 'intertype') { _intertype = form.initVal + if (card.btnType !== 'confirm') { + form.options = form.options.filter(op => op.value !== 'system') + } } }) - if (_intertype === 'outer') { - _options = ['label', 'OpenType', 'intertype', 'innerFunc', 'interface', 'outerFunc', 'callbackFunc', 'sysInterface', 'icon', 'class', 'execSuccess', 'execError', 'method'] - } else { - _options = ['label', 'OpenType', 'intertype', 'innerFunc', 'icon', 'class', 'execSuccess', 'execError', 'sql', 'sqlType'] - } + let _options = this.getOptions(card.btnType, _intertype) this.setState({ formlist: this.props.formlist.map(item => { @@ -79,9 +71,32 @@ item.options = btnClasses } else if (item.key === 'icon') { item.options = btnIcons + } else if (item.key === 'resetPageIndex') { + item.tooltip = '椤甸潰鍏抽棴锛屼笖鎵ц鍒锋柊鏃剁敓鏁�' } else if (item.key === 'sqlType') { item.options = this.state.insertUpdateOptions + } else if (item.key === 'OpenType') { + item.options = [ + { + value: 'prompt', + text: this.props.dict['model.form.prompt'] + }, { + value: 'exec', + text: this.props.dict['model.form.exec'] + } + ] + if (card.btnType === 'cancel') { + item.readonly = true + } + } else if (item.key === 'execSuccess' && card.btnType === 'cancel') { + item.label = '鍏抽棴鍚�' + item.options[1].text = '鍒锋柊' + } else if (item.key === 'execSuccess' || item.key === 'execError') { + item.options[1].text = '鍒锋柊' + } else if (item.key === 'innerFunc' && card.btnType !== 'confirm' && _intertype === 'inner') { + item.required = true } + item.hidden = !_options.includes(item.key) return item }) @@ -95,28 +110,87 @@ try { let _form = document.getElementById('label') _form.select() - } catch { + } catch (e) { console.warn('琛ㄥ崟focus澶辫触锛�') } } } - onChange = (e, key) => { - let value = e.target.value - if (key === 'intertype') { - let _options = null - if (value === 'inner') { - _options = ['label', 'OpenType', 'intertype', 'innerFunc', 'icon', 'class', 'execSuccess', 'execError', 'sql', 'sqlType'] + getOptions = (btnType, intertype) => { + let _options = [] + + if (btnType === 'cancel') { + _options = ['label', 'OpenType', 'icon', 'class', 'execSuccess', 'resetPageIndex'] + } else if (btnType === 'confirm') { + if (intertype === 'outer') { + _options = ['label', 'OpenType', 'intertype', 'innerFunc', 'interface', 'outerFunc', 'callbackFunc', 'sysInterface', 'icon', 'class', 'execSuccess', 'execError', 'afterExecSuccess', 'afterExecError', 'resetPageIndex'] + } else if (intertype === 'system') { + _options = ['label', 'OpenType', 'intertype', 'icon', 'class', 'execSuccess', 'execError', 'sql', 'sqlType', 'afterExecSuccess', 'afterExecError', 'resetPageIndex'] } else { - _options = ['label', 'OpenType', 'intertype', 'innerFunc', 'icon', 'class', 'execSuccess', 'execError', 'sysInterface', 'interface', 'outerFunc', 'callbackFunc', 'method'] + _options = ['label', 'OpenType', 'intertype', 'innerFunc', 'icon', 'class', 'execSuccess', 'execError', 'afterExecSuccess', 'afterExecError', 'resetPageIndex'] } + } else { + if (intertype === 'outer') { + _options = ['label', 'OpenType', 'intertype', 'innerFunc', 'interface', 'outerFunc', 'callbackFunc', 'sysInterface', 'icon', 'class', 'execSuccess', 'execError', 'afterExecSuccess', 'afterExecError', 'resetPageIndex'] + } else { + _options = ['label', 'OpenType', 'intertype', 'innerFunc', 'icon', 'class', 'execSuccess', 'execError', 'afterExecSuccess', 'afterExecError', 'resetPageIndex'] + } + } + + return _options + } + + onChange = (e, key) => { + const { card } = this.props + + let value = e.target.value + + if (key === 'intertype') { + let _options = this.getOptions(card.btnType, value) + this.setState({ interType: value, formlist: this.state.formlist.map(item => { item.hidden = !_options.includes(item.key) + + if (item.key === 'interface') { + item.readonly = false + } else if (item.key === 'sysInterface') { + item.initVal = 'false' + } else if (item.key === 'innerFunc' && value === 'inner') { + item.required = true + } else if (item.key === 'innerFunc' && value === 'outer') { + item.required = false + } + return item }) }) + } else if (key === 'sysInterface') { + if (value === 'true') { + this.props.form.setFieldsValue({ + interface: window.GLOB.mainSystemApi || '' + }) + } + this.setState({ + formlist: this.state.formlist.map(item => { + if (item.key === 'interface' && value === 'true') { + item.readonly = true + } else if (item.key === 'interface') { + item.readonly = false + } + + return item + }) + }) + } + } + + handleSubmit = (e) => { + e.preventDefault() + + if (this.props.inputSubmit) { + this.props.inputSubmit() } } @@ -170,7 +244,7 @@ }, ..._rules ] - })(<Input placeholder="" autoComplete="off" disabled={item.readonly} />)} + })(<Input placeholder="" autoComplete="off" disabled={item.readonly} onPressEnter={this.handleSubmit} />)} </Form.Item> </Col> ) @@ -211,6 +285,7 @@ showSearch filterOption={(input, option) => option.props.children[2].toLowerCase().indexOf(input.toLowerCase()) >= 0} getPopupContainer={() => document.getElementById('winter')} + disabled={!!item.readonly} > {item.options.map((option, index) => <Select.Option id={`${index}`} title={option.text} key={`${index}`} value={option.value}> @@ -225,7 +300,12 @@ } else if (item.type === 'radio') { fields.push( <Col span={12} key={index}> - <Form.Item label={item.label}> + <Form.Item label={item.tooltip ? + <Tooltip placement="topLeft" title={item.tooltip}> + <Icon type="question-circle" /> + {item.label} + </Tooltip> : item.label + }> {getFieldDecorator(item.key, { initialValue: item.initVal, rules: [ @@ -253,8 +333,14 @@ <Col span={24} key={index}> <Form.Item label={item.label} className="textarea"> {getFieldDecorator(item.key, { - initialValue: item.initVal - })(<TextArea rows={4} />)} + initialValue: item.initVal, + rules: [ + { + required: item.readonly ? false : !!item.required, + message: this.props.dict['form.required.input'] + item.label + '!' + } + ] + })(<TextArea rows={4} readOnly={item.readonly}/>)} </Form.Item> </Col> ) @@ -268,34 +354,25 @@ return new Promise((resolve, reject) => { this.props.form.validateFieldsAndScroll((err, values) => { if (!err) { - values.id = this.props.card.id values.uuid = this.props.card.uuid values.verify = this.props.card.verify || null + values.btnType = this.props.card.btnType || 'tabFormBtn' - if (values.OpenType === 'excelIn' || values.OpenType === 'excelOut') { - values.position = 'toolbar' - values.Ot = 'notRequired' - } else if (values.OpenType === 'popview' && !values.linkTab) { // 娌℃湁鍏宠仈鏍囩锛堟柊寤烘椂锛夛紝鍒涘缓鏂版爣绛綢d - values.linkTab = Utils.getuuid() - } if (values.innerFunc === '' && values.sql === '') { notification.warning({ top: 92, - message: this.props.dict['header.form.actionhelp.datasource'], - duration: 10 + message: '浣跨敤绯荤粺鍑芥暟鏃讹紝璇峰~鍐欒〃鍚嶏紝浣跨敤鑷畾涔夊嚱鏁版椂锛屽彲蹇界暐銆�', + duration: 5 }) } else if (values.innerFunc === '' && values.sql !== '' && values.sqlType === '') { notification.warning({ top: 92, - message: this.props.dict['header.form.actionhelp.sqlType'], - duration: 10 + message: '浣跨敤绯荤粺鍑芥暟鏃讹紝璇烽�夋嫨鎿嶄綔绫诲瀷锛屼娇鐢ㄨ嚜瀹氫箟鍑芥暟鏃讹紝鍙拷鐣ャ��', + duration: 5 }) } else { - resolve({ - type: 'action', - values - }) + resolve(values) } } else { reject(err) @@ -316,7 +393,7 @@ } } return ( - <Form {...formItemLayout} className="ant-advanced-search-form commontable-action-form" id="winter"> + <Form {...formItemLayout} className="formtab-action-list-form" id="winter"> <Row gutter={24}>{this.getFields()}</Row> </Form> ) -- Gitblit v1.8.0