react根据antd下拉框监听事件带出表单输入框值

 

// 招待费根据招待人数,陪同人数,人均标准自动带出申请金额

  peopleChange = (value,field) => {
    const {form} = this.props
    if (value === null) {
      form.setFieldsValue({amount: 0})
      return
    }

    const { expenseTypeInfo } = this.state
    const fieldIds = []

    let flag1 = true
    let flag2 = false

    //获取表单该行input对应值
    const fixed = {}
    const rjbz = expenseTypeInfo.fields.find(item => {
      return item.name === '人均标准' && item.id !== field.id
    })
    //如果改变的下拉值是GWZD则赋200否则390带出到rjbz  表单input对应框行
    if( value[0] === 'GWZD'){
      fixed[`field-${rjbz.id}`] = 200
      form.setFieldsValue(fixed)
    }else {
      fixed[`field-${rjbz.id}`] = 390
      form.setFieldsValue(fixed)
     }
    
    //遍历表单
    expenseTypeInfo.fields.map(item => {
      if ((item.fieldType === 'POSITIVE_INTEGER' || item.fieldType === 'DOUBLE' ) && item.id !== field.id) {
        fieldIds.push(`field-${item.id}`)
      }
      if (item.fieldDataCode === 'PTRS') {
        (form.getFieldValue(`field-${item.id}`) === 0) && (flag2 = true)
      }
    })
    
    form.getFieldsValue(fieldIds) && Object.values(form.getFieldsValue(fieldIds)).forEach(item => {
      if (!item) flag1 = false
    })
    if ((field.fieldDataCode === 'PTRS' ? value !== '': value) && (flag1 || flag2)) {
      const zdrs = expenseTypeInfo.fields.find(item => {
        return item.name === '招待人数' && item.id !== field.id
      })
      const ptrs = expenseTypeInfo.fields.find(item => {
        return item.name === '陪同人数' && item.id !== field.id
      })
      const rjbz = expenseTypeInfo.fields.find(item => {
        return item.name === '人均标准' && item.id !== field.id
      })
      // (招待人数+陪同人数)*人均标准
      const result = new BigNumber(form.getFieldValue(`field-${zdrs?.id}`) || value).plus(typeof form.getFieldValue(`field-${ptrs?.id}`) === 'number' ? form.getFieldValue(`field-${ptrs?.id}`) : value).times(form.getFieldValue(`field-${rjbz?.id}`) || value).toFixed(2)
      form.setFieldsValue({amount: result})
    }
  }

本文作者:chillymint

本文链接:https://www.cnblogs.com/chillymint/p/17265532.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   chillymint  阅读(138)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑