开发者社区 问答 正文

请问如何将子表单赋值给主表单(数据要去重,或者第一行的值也可以)

image.png

我按照教程操作,子表多行情况下,主表会重复,如图

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_lu6e8px6') {
const sum = value.reduce((prev, cur) => {
return prev + (cur.numberField_lu6e8px6 || 0);
}, 0);
this.$('numberField_lu80ss80').setValue(sum);
};

// 子表单数值-物料凭证
if (fieldId && fieldId === 'textField_lu6e8pxa') {
const sum = value.reduce((prev, cur) => {
return prev + (cur.textField_lu6e8pxa || 0);
}, 0);
this.$('textField_lu7q4agk').setValue(sum);
};
}

展开
收起
k5r4vl5ehch2i 2024-03-26 20:28:03 136 分享 版权
1 条回答
写回答
取消 提交回答
  • 阿里云大降价~

    要实现将子表单的值赋值给主表单,通常涉及到数据处理和去重的逻辑。以下是具体的步骤和代码示例:

    1. 创建表单:确保您的主表成员字段开启了多选模式,这样才能容纳多个子表单的数据。
    2. 编写代码:在JS面板中编写代码来处理数据。如果您的子表成员是单选模式,处理方式会与多选模式不同。以下是一个代码示例,用于将子表单的值累加到主表单的某个字段上:
    export function onTableChange({ value, extra }) {
      const sum = value.reduce((prev, cur) => {
        return prev + (cur.numberField || 0);
      }, 0);
      // 将计算结果赋值给主表单的相应字段
    }
    
    1. 使用插件:如果您使用的是宜搭平台,可以选择安装「子表单-单行数据赋值到主表字段」的插件。通过设置填入规则,您可以自定义操作成功或失败后显示的文案内容。
    2. 数据去重:如果需要对子表单的数据进行去重,可以在数据处理时使用JavaScript的Set对象或者数组的filter方法来实现。
    3. 测试和验证:在完成上述步骤后,您应该进行充分的测试,以确保数据正确无误地从子表单传递到主表单。
    4. 注意唯一标识:在处理数据时,请注意替换表单的唯一标识,确保数据的准确对应。

    总的来说,通过上述步骤,您应该能够实现将子表单的数据赋值给主表单,并进行必要的数据去重处理。请根据您的具体需求调整代码和插件设置。

    2024-03-27 08:51:22
    赞同 展开评论
问答地址:
关联地址: