1. 使用场景
进销存的场景中,在进货表一次进货多种物品,如果同时填写了进购货物苹果 20 和 苹果 30,那么在库存表中希望直接展示出苹果 50
进销存的场景中,在进货表一次进货多种物品,如果同时填写了进购货物苹果 20 和 苹果 30,那么在库存表中希望直接展示出苹果 50
在进货表中添加一个子表单名为进货详情子表单,用来做数据的添加。再添加一个子表单名为进货详情,用来将重复的货物名称进行合并,并将进货数量进行相加。

表单编辑页面添加子表单
进货详情这个子表单可以设置隐藏,这样在提交数据的时候就不会觉得有两个子表单,让人很混乱。即使是设置了隐藏,数据还是一样的会统计的。
注意:进货详情这个子表单设置隐藏后需要点击高级 >> 数据提交 >> 选择始终提交

设置进货详情子表单

给子表单新建动作

JS 面板
参考代码:
export function onChange({ value, extra }){
var temp = {};//定义一个对象
for (var i in value) {
var key = value[i].selectField_kq7ykbt2; //判断依据,利用对象的属性不能重复进行判断。
if (temp[key]) {
temp[key] .selectField_kq7ykbt8 = value[i].selectField_kq7ykbt2;
temp[key] .numberField_kq7ykbt9 += value[i].numberField_kq7ykbt5;// 进货数量相加
} else {
temp[key] = {};
temp[key] .selectField_kq7ykbt8 = value[i].selectField_kq7ykbt2;
temp[key] .numberField_kq7ykbt9 = value[i].numberField_kq7ykbt5;
}
}
//console.log("temp[key]", temp)
var newArry = [];
for (var k in temp) {
newArry.push(temp[k]);
}
//console.log(newArry);
this.$("tableField_kq7ykbt7").setValue(newArry)
}在进货表的表单提交时触发,使用 UPSERT 公式将数据插入或者更新到库存表中

添加业务关联规则
业务关联规则参考下图

配置 UPSERT 函数
无雀数字化公众号
无雀数字化抖音号

