king
2021-11-12 0c84df247914f893ef5e41d57a422e10a2dc814c
src/templates/zshare/verifycard/billcodeform/index.jsx
@@ -1,7 +1,10 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Form, Row, Col, Select, Button, InputNumber } from 'antd'
import { Form, Row, Col, Select, Button, InputNumber, Input, Tooltip } from 'antd'
import { QuestionCircleOutlined } from '@ant-design/icons'
import { formRule } from '@/utils/option.js'
import './index.scss'
@@ -22,29 +25,31 @@
    modularDetail: [],
    funFields: [],
    billFields: [],
    type: '1'
    type: '1',
    TypeCharOne: 'Lp'
  }
  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)) {
      if (_field.type === 'text' && !fieldMap.has(_field.field.toLowerCase())) {
        _billFields.push(_field)
        fieldMap.set(_field.field, true)
        fieldMap.set(_field.field.toLowerCase(), true)
      }
    })
    if (this.props.btn.Ot !== 'notRequired') {
      this.props.columns.forEach(_field => {
        if (_field.type === 'text' && !fieldMap.has(_field.field)) {
        if (_field.type === 'text' && !fieldMap.has(_field.field.toLowerCase())) {
          _billFields.push(_field)
          fieldMap.set(_field.field, true)
          fieldMap.set(_field.field.toLowerCase(), true)
        }
      })
    }
@@ -84,7 +89,8 @@
        type: '2',
        funFields: _funFields,
        editItem: record,
        modularDetail: _detail
        modularDetail: _detail,
        TypeCharOne: record.TypeCharOne
      }, () => {
        this.props.form.setFieldsValue({
          field: record.field,
@@ -98,13 +104,18 @@
        type: '1',
        funFields: _funFields,
        editItem: record,
        TypeCharOne: record.TypeCharOne
      }, () => {
        this.props.form.setFieldsValue({
        let _form = {
          field: record.field,
          TypeCharOne: record.TypeCharOne,
          Type: record.Type,
          linkField: record.linkField,
        })
          linkField: record.linkField
        }
        if (record.TypeCharOne === 'Lp') {
          _form.mark = record.mark || ''
        }
        this.props.form.setFieldsValue(_form)
      })
    }
  }
@@ -123,11 +134,13 @@
  TypeCharOneChange = (value) => {
    if (value === 'Y' || value === 'n') {
      this.setState({
        type: '2'
        type: '2',
        TypeCharOne: value
      })
    } else {
      this.setState({
        type: '1'
        type: '1',
        TypeCharOne: value
      })
    }
  }
@@ -170,27 +183,30 @@
          values.linkFieldName = _billField ? _billField.label : ''
        }
        this.props.orderChange(values)
        this.setState({
          editItem: null
        }, () => {
          this.props.orderChange(values)
          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: '',
        })
        let _form = {
          field: ''
        }
        if (this.state.TypeCharOne === 'Lp') {
          _form.mark = ''
        }
        this.props.form.setFieldsValue(_form)
      }
    })
  }
  render() {
    const { getFieldDecorator } = this.props.form
    const { type } = this.state
    const { type, TypeCharOne } = this.state
    const formItemLayout = {
      labelCol: {
        xs: { span: 24 },
@@ -205,7 +221,7 @@
    return (
      <Form {...formItemLayout} className="verify-form">
        <Row gutter={24}>
          <Col span={10}>
          <Col span={7}>
            <Form.Item label={this.props.dict['header.form.funcvar']}>
              {getFieldDecorator('field', {
                initialValue: '',
@@ -226,7 +242,7 @@
              )}
            </Form.Item>
          </Col>
          <Col span={10}>
          <Col span={7}>
            <Form.Item label={'类型'}>
              {getFieldDecorator('TypeCharOne', {
                initialValue: 'Lp',
@@ -246,12 +262,7 @@
              )}
            </Form.Item>
          </Col>
          <Col span={4} className="add">
            <Button onClick={this.handleConfirm} type="primary">
              确定
            </Button>
          </Col>
          {type === '1' ? <Col span={10}>
          {type === '1' ? <Col span={7}>
            <Form.Item label={'关联字段'}>
              {getFieldDecorator('linkField', {
                initialValue: '',
@@ -272,20 +283,7 @@
              )}
            </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}>
          {type === '2' ? <Col span={7}>
            <Form.Item label={'凭证类型'}>
              {getFieldDecorator('ModularCode', {
                initialValue: this.props.modular[0] ? this.props.modular[0].ID : '',
@@ -310,7 +308,25 @@
              )}
            </Form.Item>
          </Col> : null}
          {type === '2' ? <Col span={10}>
          <Col span={3} className="add">
            <Button onClick={this.handleConfirm} className="mk-green">
              保存
            </Button>
          </Col>
          {type === '1' ? <Col span={7}>
            <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={7}>
            <Form.Item label={'凭证标识'}>
              {getFieldDecorator('ModularDetailCode', {
                initialValue: this.state.modularDetail[0] ? this.state.modularDetail[0].ModularDetailCode : '',
@@ -326,7 +342,7 @@
                  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}>
                    <Select.Option style={{whiteSpace: 'unset'}} title={option.CodeName} id={option.ModularDetailCode} key={option.ModularDetailCode} value={option.ModularDetailCode}>
                      {option.CodeName}
                    </Select.Option>
                  )}
@@ -334,6 +350,28 @@
              )}
            </Form.Item>
          </Col> : null}
          {TypeCharOne === 'Lp' ? <Col span={7}>
            <Form.Item label={
              <Tooltip placement="topLeft" title="该标识用于生成行号规则">
                <QuestionCircleOutlined className="mk-form-tip" />
                标识
              </Tooltip>
            }>
              {getFieldDecorator('mark', {
                initialValue: '',
                rules: [
                  {
                    required: true,
                    message: this.props.dict['form.required.input'] + '标识!'
                  },
                  {
                    pattern: /^[a-zA-Z0-9]*$/ig,
                    message: formRule.input.letternummsg
                  }
                ]
              })(<Input placeholder="" autoComplete="off" />)}
            </Form.Item>
          </Col> : null}
        </Row>
      </Form>
    )