From 6afdec0062dacbded57e166230eb22cc55ced0c1 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期六, 08 五月 2021 14:30:21 +0800 Subject: [PATCH] 2021-05-08 --- src/templates/sharecomponent/columncomponent/columnform/index.jsx | 164 +++++++++++++++++++++++++++--------------------------- 1 files changed, 82 insertions(+), 82 deletions(-) diff --git a/src/templates/sharecomponent/columncomponent/columnform/index.jsx b/src/templates/sharecomponent/columncomponent/columnform/index.jsx index 2e59742..5932983 100644 --- a/src/templates/sharecomponent/columncomponent/columnform/index.jsx +++ b/src/templates/sharecomponent/columncomponent/columnform/index.jsx @@ -1,18 +1,18 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' -import { Form, Row, Col, Input, Select, InputNumber, Radio, Tooltip, Icon, Cascader, notification } from 'antd' +import { Form, Row, Col, Input, Select, InputNumber, Radio, Tooltip, Icon, Cascader } from 'antd' import { formRule } from '@/utils/option.js' -import options from '@/store/options.js' -import Api from '@/api' import './index.scss' +const { TextArea } = Input const columnTypeOptions = { - text: ['label', 'field', 'type', 'Align', 'Hide', 'IsSort', 'Width', 'prefix', 'postfix', 'fieldlength', 'blacklist', 'linkmenu'], - number: ['label', 'field', 'type', 'Align', 'Hide', 'IsSort', 'Width', 'decimal', 'format', 'prefix', 'postfix', 'blacklist', 'linkmenu'], + text: ['label', 'field', 'type', 'Align', 'Hide', 'IsSort', 'Width', 'prefix', 'postfix', 'textFormat', 'fieldlength', 'blacklist', 'perspective', 'rowspan'], + number: ['label', 'field', 'type', 'Align', 'Hide', 'IsSort', 'Width', 'decimal', 'format', 'prefix', 'postfix', 'blacklist', 'perspective', 'sum', 'rowspan'], link: ['label', 'field', 'type', 'nameField', 'Align', 'Hide', 'IsSort', 'joint', 'Width', 'fieldlength', 'blacklist'], textarea: ['label', 'field', 'type', 'Align', 'Hide', 'IsSort', 'Width', 'prefix', 'postfix', 'fieldlength', 'blacklist'], - picture: ['label', 'field', 'type', 'Align', 'Hide', 'IsSort', 'Width', 'fieldlength', 'blacklist', 'scale', 'maxHeight'] + picture: ['label', 'field', 'type', 'Align', 'Hide', 'IsSort', 'Width', 'fieldlength', 'blacklist', 'scale', 'maxHeight'], + index: ['label', 'type', 'Align', 'Width'] } class MainSearch extends Component { @@ -26,6 +26,7 @@ state = { formlist: null, + type: '', menulist: null } @@ -34,8 +35,16 @@ let _menulist = this.props.formlist.filter(form => form.key === 'linkmenu')[0] || '' let _options = JSON.parse(JSON.stringify(columnTypeOptions[card.type])) + if (card.type === 'text' || card.type === 'number') { + if (card.perspective === 'linkmenu') { + _options.push('linkmenu', 'linkfields') + } else if (card.perspective === 'linkurl') { + _options.push('linkurl', 'linkfields') + } + } this.setState({ + type: card.type, menulist: _menulist.options || [], formlist: this.props.formlist.map(item => { item.hidden = !_options.includes(item.key) @@ -62,8 +71,18 @@ } typeChange = (key, value) => { + const { card } = this.props if (key === 'type') { let _options = JSON.parse(JSON.stringify(columnTypeOptions[value])) + + if (card.type === 'text' || card.type === 'number') { + if (card.perspective === 'linkmenu') { + _options.push('linkmenu', 'linkfields') + } else if (card.perspective === 'linkurl') { + _options.push('linkurl', 'linkfields') + } + } + let fieldlength = 50 if (value !== 'text') { @@ -71,6 +90,7 @@ } this.setState({ + type: value, formlist: this.props.formlist.map(item => { item.hidden = !_options.includes(item.key) @@ -84,6 +104,26 @@ } else if (key === 'format' && value === 'percent') { this.props.form.setFieldsValue({postfix: '%'}) } + } + + changeRadio = (key, value) => { + if (key === 'perspective') { + let _options = JSON.parse(JSON.stringify(columnTypeOptions[this.state.type])) + if (value === 'linkmenu') { + _options.push('linkmenu', 'linkfields') + } else if (value === 'linkurl') { + _options.push('linkurl', 'linkfields') + } + + this.setState({ + formlist: this.props.formlist.map(item => { + item.hidden = !_options.includes(item.key) + + return item + }) + }) + } + } handleSubmit = (e) => { @@ -110,7 +150,7 @@ max: formRule.field.max, message: formRule.field.maxMessage }] - } else { + } else if (item.key !== 'linkurl') { rules = [{ max: formRule.input.max, message: formRule.input.message @@ -134,6 +174,27 @@ ...rules ] })(<Input placeholder="" autoComplete="off" disabled={item.readonly} onPressEnter={this.handleSubmit} />)} + </Form.Item> + </Col> + ) + } else if (item.type === 'textarea') { // 鏂囨湰鎼滅储 + fields.push( + <Col span={24} key={index} className="textarea"> + <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: [ + { + required: !!item.required, + message: this.props.dict['form.required.input'] + item.label + '!' + } + ] + })(<TextArea rows={2} disabled={item.readonly} onPressEnter={this.handleSubmit} />)} </Form.Item> </Col> ) @@ -191,7 +252,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" overlayClassName={item.tooltipClass} title={item.tooltip}> + <Icon type="question-circle" /> + {item.label} + </Tooltip> : item.label + }> {getFieldDecorator(item.key, { initialValue: item.initVal, rules: [ @@ -201,7 +267,7 @@ } ] })( - <Radio.Group> + <Radio.Group onChange={(e) => {this.changeRadio(item.key, e.target.value)}}> { item.options.map(option => { return ( @@ -239,11 +305,16 @@ <Col span={12} key={index}> <Form.Item label={item.label}> {getFieldDecorator(item.key, { - initialValue: item.initVal || [] + initialValue: item.initVal || [], + rules: [ + { + required: !!item.required, + message: this.props.dict['form.required.select'] + item.label + '!' + } + ] })( <Cascader options={this.state.menulist} - loadData={this.loadData} placeholder="" getPopupContainer={() => document.getElementById('columnwinter')} /> @@ -256,84 +327,13 @@ return fields } - loadData = selectedOptions => { - const { MenuID } = this.props - const targetOption = selectedOptions[selectedOptions.length - 1] - targetOption.loading = true - - let _param = { - func: 'sPC_Get_FunMenu', - ParentID: targetOption.value, - systemType: options.sysType, - debug: 'Y' - } - - Api.getSystemConfig(_param).then(result => { - if (result.status) { - targetOption.loading = false - targetOption.children = result.data.map(item => { - let submenu = { - value: item.ParentID, - label: item.MenuNameP, - children: item.FunMenu.map(cell => { - return { - value: cell.MenuID, - label: cell.MenuName, - MenuID: cell.MenuID, - MenuName: cell.MenuName, - MenuNo: cell.MenuNo, - Ot: cell.Ot, - PageParam: cell.PageParam, - LinkUrl: cell.LinkUrl, - disabled: cell.MenuID === MenuID - } - }) - } - - return submenu - }) - - this.setState({ - menulist: [...this.state.menulist] - }) - } else { - notification.warning({ - top: 92, - message: result.message, - duration: 5 - }) - targetOption.loading = false - } - }) - } - handleConfirm = () => { - const { menulist } = this.state // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭� 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.marks = this.props.card.marks || '' - - if ((values.type === 'text' || values.type === 'number') && values.linkmenu && values.linkmenu.length > 0) { - let linkThdMenu = '' - menulist.forEach(menu => { - if (menu.value === values.linkmenu[0]) { - menu.children.forEach(item => { - if (item.value === values.linkmenu[1]) { - item.children.forEach(cell => { - if (cell.value === values.linkmenu[2]) { - linkThdMenu = cell - } - }) - } - }) - } - }) - values.linkThdMenu = linkThdMenu - } resolve(values) } else { -- Gitblit v1.8.0