From 063b983daaf51a7f1e8677bde1e9c0e618866c91 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 21 二月 2020 10:30:19 +0800 Subject: [PATCH] 2020-02-21 --- src/templates/tableshare/verifycard/billcodeform/index.jsx | 368 ++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 269 insertions(+), 99 deletions(-) diff --git a/src/templates/tableshare/verifycard/billcodeform/index.jsx b/src/templates/tableshare/verifycard/billcodeform/index.jsx index c88deb9..d140531 100644 --- a/src/templates/tableshare/verifycard/billcodeform/index.jsx +++ b/src/templates/tableshare/verifycard/billcodeform/index.jsx @@ -1,27 +1,184 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' -import { Form, Row, Col, Input, Select, Button, InputNumber } from 'antd' +import { is, fromJS } from 'immutable' +import { Form, Row, Col, Select, Button, InputNumber } from 'antd' import './index.scss' class UniqueForm extends Component { static propTpyes = { - dict: PropTypes.object, // 瀛楀吀椤� - billCode: PropTypes.object, // 琛ㄥ崟 - billCodeChange: PropTypes.func // 琛ㄥ崟 + dict: PropTypes.object, // 瀛楀吀椤� + fields: PropTypes.array, // 琛ㄥ崟 + billcodes: PropTypes.array, // 琛ㄥ崟 + columns: PropTypes.array, // 琛ㄥ崟 + modular: PropTypes.array, // 琛ㄥ崟 + modularDetail: PropTypes.array, // 琛ㄥ崟 + orderChange: PropTypes.func // 琛ㄥ崟 } + state = { + editItem: null, + modularDetail: [], + funFields: [], + billFields: [], + type: '1' + } + + UNSAFE_componentWillMount() { + let _modularDetail = [] + let _billFields = [] + if (this.props.modular.length > 0) { + _modularDetail = this.props.modularDetail.filter(item => item.BID === this.props.modular[0].ID) + } + + let fieldMap = new Map() + this.props.fields.forEach(_field => { + if (_field.type === 'text' && !fieldMap.has(_field.field)) { + _billFields.push(_field) + fieldMap.set(_field.field, true) + } + }) + this.props.columns.forEach(_field => { + if (_field.type === 'text' && !fieldMap.has(_field.field)) { + _billFields.push(_field) + fieldMap.set(_field.field, true) + } + }) + + let _usedfields = this.props.billcodes.map(item => item.field) + + this.setState({ + modularDetail: _modularDetail, + funFields: this.props.fields.filter(field => field.type === 'funcvar' && !_usedfields.includes(field.field)), + billFields: _billFields + }) + } + + UNSAFE_componentWillReceiveProps (nextProps) { + if (!is(fromJS(this.props.modular), fromJS(nextProps.modular))) { + let _detail = nextProps.modularDetail.filter(item => item.BID === nextProps.modular[0].ID) + + this.setState({ + modularDetail: _detail + }) + } + } + + edit = (record) => { + let _usedfields = this.props.billcodes.map(item => item.field) + let _funFields = this.props.fields.filter(field => field.type === 'funcvar' && (!_usedfields.includes(field.field) || field.field === record.field)) + + if (record.TypeCharOne === 'Y' || record.TypeCharOne === 'n') { + let _detail = this.props.modularDetail.filter(item => item.BID === record.ModularCode) + let _modularDetailCode = '' + + if (_detail.filter(item => item.ModularDetailCode === record.ModularDetailCode).length > 0) { + _modularDetailCode = record.ModularDetailCode + } + + this.setState({ + type: '2', + funFields: _funFields, + editItem: record, + modularDetail: _detail + }, () => { + this.props.form.setFieldsValue({ + field: record.field, + TypeCharOne: record.TypeCharOne, + ModularCode: record.ModularCode, + ModularDetailCode: _modularDetailCode, + }) + }) + } else { + this.setState({ + type: '1', + funFields: _funFields, + editItem: record, + }, () => { + this.props.form.setFieldsValue({ + field: record.field, + TypeCharOne: record.TypeCharOne, + Type: record.Type, + linkField: record.linkField, + }) + }) + } + } + + voucherChange = (value) => { + let _detail = this.props.modularDetail.filter(item => item.BID === value) + + this.setState({ + modularDetail: _detail + }) + this.props.form.setFieldsValue({ + ModularDetailCode: _detail[0] ? _detail[0].ModularDetailCode : '' + }) + } + + TypeCharOneChange = (value) => { + if (value === 'Y' || value === 'n') { + this.setState({ + type: '2' + }) + } else { + this.setState({ + type: '1' + }) + } + } handleConfirm = () => { + const { funFields, billFields } = this.state // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭� this.props.form.validateFieldsAndScroll((err, values) => { if (!err) { values.uuid = this.state.editItem ? this.state.editItem.uuid : '' - values.field = values.field.join(',') - this.props.uniqueChange(values) + let _funField = funFields.filter(item => item.field === values.field)[0] + values.fieldName = _funField ? _funField.label : '' + + // 涓�绾ц彍鍗曞�间负20190203125926873D6029A9C511041719420鏃禩ypeCharTwo=TableCode锛屽叾浠栫敤BillCode + if (values.ModularCode === '20190203125926873D6029A9C511041719420') { + values.TypeCharTwo = 'TableCode' + } else { + values.TypeCharTwo = 'BillCode' + } + // 璁剧疆绫诲瀷鍚嶇О锛岀敤浜庡垪琛ㄦ樉绀� + let billType = { + Y: '鍗曞彿', + n: '缂栫爜', + Lp: '琛屽彿', + BN: '鎵规', + } + values.billType = billType[values.TypeCharOne] + + if (values.TypeCharOne === 'Y' || values.TypeCharOne === 'n') { + // 璁剧疆鍑瘉绫诲瀷涓枃鍚� + let ModularCode = this.props.modular.filter(item => item.ID === values.ModularCode)[0] + values.ModularCodeName = ModularCode.NameNO + + // 璁剧疆娴佹按鍙蜂綅鏁� + let _detail = this.state.modularDetail.filter(item => item.ModularDetailCode === values.ModularDetailCode)[0] + values.Type = _detail.Type + } else { + let _billField = billFields.filter(item => item.field === values.linkField)[0] + values.linkFieldName = _billField ? _billField.label : '' + } + + this.props.orderChange(values) this.setState({ editItem: null + }, () => { + + let _usedfields = this.props.billcodes.map(item => item.field) + + this.setState({ + funFields: this.props.fields.filter(field => field.type === 'funcvar' && !_usedfields.includes(field.field)), + }) + }) + this.props.form.setFieldsValue({ + field: '', }) } }) @@ -29,45 +186,54 @@ render() { const { getFieldDecorator } = this.props.form - const { billCode } = this.props + const { type } = this.state const formItemLayout = { labelCol: { xs: { span: 24 }, - sm: { span: 8 } + sm: { span: 10 } }, wrapperCol: { xs: { span: 24 }, - sm: { span: 16 } + sm: { span: 14 } } } + return ( - <Form {...formItemLayout} className="custom-verify-form"> + <Form {...formItemLayout} className="verify-form"> <Row gutter={24}> - <Col span={6}> - <Form.Item label={'瀛楁'}> + <Col span={10}> + <Form.Item label={this.props.dict['header.form.funcvar']}> {getFieldDecorator('field', { - initialValue: billCode.ModularDetailCode || '', + initialValue: '', rules: [ { required: true, - message: this.props.dict['form.required.input'] + '鍑瘉鏍囪瘑!' - } - ] - })(<Input placeholder="" autoComplete="off" />)} - </Form.Item> - </Col> - <Col span={6}> - <Form.Item label={'鍗曞彿绫诲瀷'}> - {getFieldDecorator('TypeCharOne', { - initialValue: billCode.TypeCharOne || 'Y', - rules: [ - { - required: true, - message: this.props.dict['form.required.select'] + '鍗曞彿绫诲瀷!' + message: this.props.dict['form.required.input'] + this.props.dict['header.form.funcvar'] + '!' } ] })( <Select> + {this.state.funFields.map(option => + <Select.Option title={option.label} id={option.uuid} key={option.uuid} value={option.field}> + {option.label} + </Select.Option> + )} + </Select> + )} + </Form.Item> + </Col> + <Col span={10}> + <Form.Item label={'绫诲瀷'}> + {getFieldDecorator('TypeCharOne', { + initialValue: 'Lp', + rules: [ + { + required: true, + message: this.props.dict['form.required.select'] + '绫诲瀷!' + } + ] + })( + <Select onChange={(value) => {this.TypeCharOneChange(value)}}> <Select.Option value="Y"> 鍗曞彿 </Select.Option> <Select.Option value="n"> 缂栫爜 </Select.Option> <Select.Option value="Lp"> 琛屽彿 </Select.Option> @@ -76,90 +242,94 @@ )} </Form.Item> </Col> - <Col span={6}> + <Col span={4} className="add"> + <Button onClick={this.handleConfirm} type="primary"> + 纭畾 + </Button> + </Col> + {type === '1' ? <Col span={10}> + <Form.Item label={'鍏宠仈瀛楁'}> + {getFieldDecorator('linkField', { + initialValue: '', + rules: [ + { + required: true, + message: this.props.dict['form.required.input'] + '鍏宠仈瀛楁!' + } + ] + })( + <Select> + {this.state.billFields.map(option => + <Select.Option title={option.label} id={option.uuid} key={option.uuid} value={option.field}> + {option.label} + </Select.Option> + )} + </Select> + )} + </Form.Item> + </Col> : null} + {type === '1' ? <Col span={10}> + <Form.Item label={'浣嶆暟'}> + {getFieldDecorator('Type', { + initialValue: 4, + rules: [ + { + required: true, + message: this.props.dict['form.required.input'] + '浣嶆暟!' + } + ] + })(<InputNumber min={1} max={10} precision={0} />)} + </Form.Item> + </Col> : null} + {type === '2' ? <Col span={10}> + <Form.Item label={'鍑瘉绫诲瀷'}> + {getFieldDecorator('ModularCode', { + initialValue: this.props.modular[0] ? this.props.modular[0].ID : '', + rules: [ + { + required: true, + message: this.props.dict['form.required.input'] + '鍑瘉绫诲瀷!' + } + ] + })( + <Select + showSearch + filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0} + onChange={(value) => {this.voucherChange(value)}} + > + {this.props.modular.map(option => + <Select.Option title={option.NameNO} id={option.ID} key={option.ID} value={option.ID}> + {option.NameNO} + </Select.Option> + )} + </Select> + )} + </Form.Item> + </Col> : null} + {type === '2' ? <Col span={10}> <Form.Item label={'鍑瘉鏍囪瘑'}> {getFieldDecorator('ModularDetailCode', { - initialValue: billCode.ModularDetailCode || '', + initialValue: this.state.modularDetail[0] ? this.state.modularDetail[0].ModularDetailCode : '', rules: [ { required: true, message: this.props.dict['form.required.input'] + '鍑瘉鏍囪瘑!' } ] - })(<Input placeholder="" autoComplete="off" />)} - </Form.Item> - </Col> - <Col span={6}> - <Form.Item label={'娴佹按鐮佷綅鏁�'}> - {getFieldDecorator('Type', { - initialValue: billCode.Type || 4, - rules: [ - { - required: true, - message: this.props.dict['form.required.input'] + '娴佹按鐮佷綅鏁�!' - } - ] - })(<InputNumber defaultValue={4} min={1} max={10} precision={0} />)} - </Form.Item> - </Col> - <Col span={6}> - <Form.Item label={'绫诲瀷'}> - {getFieldDecorator('TypeCharTwo', { - initialValue: billCode.TypeCharTwo || 'BillCode', - rules: [ - { - required: true, - message: this.props.dict['form.required.select'] + '绫诲瀷!' - } - ] })( - <Select> - <Select.Option value="BillCode"> 涓氬姟 </Select.Option> - <Select.Option value="TableCode"> 涓绘暟鎹� </Select.Option> + <Select + showSearch + filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0} + > + {this.state.modularDetail.map(option => + <Select.Option title={option.CodeName} id={option.ModularDetailCode} key={option.ModularDetailCode} value={option.ModularDetailCode}> + {option.CodeName} + </Select.Option> + )} </Select> )} </Form.Item> - </Col> - <Col span={6}> - <Form.Item label={'鎶ラ敊淇℃伅'}> - {getFieldDecorator('errmsg', { - initialValue: '', - rules: [ - { - required: true, - message: this.props.dict['form.required.input'] + '鎶ラ敊淇℃伅!' - } - ] - })(<Input placeholder="" autoComplete="off" />)} - </Form.Item> - </Col> - <Col span={6}> - <Form.Item label={'鎶ラ敊缂栫爜'}> - {getFieldDecorator('errorCode', { - initialValue: 'E', - rules: [ - { - required: true, - message: this.props.dict['form.required.select'] + '鎶ラ敊缂栫爜!' - } - ] - })( - <Select> - <Select.Option value="E"> E </Select.Option> - <Select.Option value="N"> N </Select.Option> - <Select.Option value="F"> F </Select.Option> - <Select.Option value="NM"> NM </Select.Option> - <Select.Option value="S"> S </Select.Option> - <Select.Option value="-1"> -1 </Select.Option> - </Select> - )} - </Form.Item> - </Col> - <Col span={2}> - <Button onClick={this.handleConfirm} type="primary" className="add-row"> - 纭畾 - </Button> - </Col> + </Col> : null} </Row> </Form> ) -- Gitblit v1.8.0