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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步