合同金额自动计算

  • 如下图.进入页面的时候合同金额默认值为系统自动计算

image.png

  • 在有行信息的时候.需要把金额累加.给合同金额赋值.

image.png

实现思路:

1:通过props传值,2:通过reduce计算总金额,3:通过form.setFieldsValue方法.给合同金额赋值

// 父组件页面:父组件调用子组件的时候. 给子组件一个方法.用来接收子组件的返回值
    render(
        <TableForm 
            ...
            handleTotal={value =>this.handleTotal(value)}
        />
    )
// 子组件页面:子组件每次新增行信息后都会调用一次获取行信息列表的方法,在这里把返回值直接给到父组件
  getList = () => {
    const { queryAll } = this.props;
    queryAll({ contractNum: this.props.contractNum }, res => {
      const { handleTotal } = this.props;
      handleTotal && handleTotal(res);
      this.setState({ data: res });
    });
  };

// 父组件页面:调用给到子组件的方法.获取行项目总金额
  handleTotal = value => {
    const total = value.reduce((total, item) => total + Number(item.totalPrice), 0)
    .toFixed(2);
    this.props.form.setFieldsValue({
      contractMoney:total
    })
  }

通过三目判断和form.getFieldValue方法判断合同金额是否展示默认值

    <Col md={8} sm={24}>
        <Form.Item label="合同金额">
            {getFieldDecorator('contractMoney', {
            initialValue: form.getFieldValue('contractMoney') === undefined ? '系统自动计算' : form.getFieldValue('contractMoney'),
            rules: [{ required: true}],
            })(<Input placeholder="请填写" disabled />)}
        </Form.Item>
    </Col>

Timor
37 声望20 粉丝