表单中获取子表单的值赋值给当前主表单

1. 使用场景

需要获取子表单值的时候,比如当前出库表中的明细表,我们可以按照下面案例来操作获取。

2. 实现功能

2.1. 创建表单

主表成员字段需开启多选模式。

如下图所示:

2.2. 打开 JS 面板,编写代码

如下图所示:

下述代码可以直接复制使用,请注意表单唯一标识的替换!,子表成员单选模式和多选模式的处理方式也不一致。

解释

export function onTableChange({ value, extra }) { const { formGroupId, fieldId, from, changes = {}, tableFieldId } = extra || {}; // 必须,避免使用 updateItemValue 更新子表数据后,再次触发 onChange 陷入死循环 if (from === 'setItemValue') { return }; const tableField = this.$(tableFieldId); // 上述代码必须存在,否则会造成功能异常 // 子表单数值 if (fieldId && fieldId === 'numberField_lbncqnrz') { const sum = value.reduce((prev, cur) => { return prev + (cur.numberField_lbncqnrz || 0); }, 0); this.$('numberField_lbncqns0').setValue(sum); }; // 子表单成员1(单选模式) if (fieldId && fieldId === 'employeeField_lbbn2hsb') { const users1 = value.filter(item => { return item.employeeField_lbbn2hsb; }).map(_item => { return Array.isArray(_item.employeeField_lbbn2hsb) ? _item.employeeField_lbbn2hsb[0] : _item.employeeField_lbbn2hsb }); this.$('employeeField_lbbn2hsd').setValue(_.uniqBy(users1, 'value')); }; // 子表单成员2(多选模式) if (fieldId && fieldId === 'employeeField_li018dw5') { const employeeData = value.filter(item => { return item.employeeField_li018dw5 && item.employeeField_li018dw5.length > 0; }); const users2 = []; for (let i = 0; i < employeeData.length; i++) { for (let j = 0; j < employeeData[i].employeeField_li018dw5.length; j++) { users2.push(employeeData[i].employeeField_li018dw5[j]) } }; this.$('employeeField_li018dwa').setValue(_.uniqBy(users2, 'value')); }; }

3. 实现效果

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值