开发者社区 问答 正文

子表单内某行下拉变化后,联动查询数据源并填充当前行字段,如何实现?

【使用场景说明】
我在一个子表单 tableField_maotisgw 中有多行,每一行都有一个下拉组件 selectField_maro1hwf,用于选择工艺组合(例如:金盾400+金格500+黑卡110)。还有一个字段是 textField_matj1npp,表示该行的“门幅”。

我想要实现的目标是:

当某一行的工艺组合发生变化时,自动触发 JS 代码,仅影响当前行,不影响其他行。

系统应将该工艺组合拆分为多个原材料(如 “金盾400”、“金格500”、“黑卡110”)。

再结合当前行的门幅值(如 160),去远程数据源(原材料库存表,表单 ID 是:FORM-8D82D2897A9A4077A66AE834059D176C3RAJ)中查询库存。

匹配字段为:textField_hb9bu9q(品名克重) 和 numberField_jiby0em(门幅)。

查询到的 numberField_mfi29v8(库存数量)应拼接成文本,填入 textareaField_maw8s4za 字段,仅回填当前行。image.png

已尝试方案:
export async function onChange2({ value, extra }) {
const { formGroupId, changes } = extra || {};

if (!formGroupId || !changes || changes.fieldId !== 'selectField_maro1hwf') return;

const table = this.$('tableField_maotisgw');
const row = table.getItemValue(formGroupId);

const craftCombo = row.selectField_maro1hwf;
const width = row.textField_matj1npp;

if (!craftCombo || !width) return;

const loading = this.utils.toast({
title: '正在查询库存...',
type: 'loading'
});

try {
// 拆分工艺组合为多个品名克重
const materials = craftCombo.split('+').map(item => item.trim());

const stockResult = [];

// 遍历每种原料查库存
for (let material of materials) {
  const res = await this.dataSourceMap.getData.load({
    searchFieldJson: JSON.stringify({
      textField_hb9bu9q: material,
      numberField_jiby0em: width
    })
  });

  const data = res && res.data ? res.data : [];

  if (data.length > 0) {
    const match = data[0].formData;
    const stock = match.numberField_mfi29v8 || 0;
    stockResult.push(`${material}:${stock}`);
  } else {
    stockResult.push(`${material}:无数据`);
  }
}

// 回填到该行 textareaField_maw8s4za
table.updateItemValue(formGroupId, {
  textareaField_maw8s4za: stockResult.join('\n')
});

} catch (err) {
this.utils.toast({
title: '查询失败',
type: 'error'
});
console.error(err);
} finally {
loading();
}
}

一直实现不了,求大神指导

展开
收起
理想中年 2025-05-30 15:40:24 72 分享 版权
来自: 钉钉宜搭
1 条回答
写回答
取消 提交回答
  • 若问题得到了解决,辛苦点下采纳回答哦~

    在【下拉组件 selectField_maro1hwf】的change事件里。直接this.$("子表单内 其他组件的唯一标识")。就可以给当前行的其他列字段赋值,不会影响其他行

    2025-06-05 08:05:30
    赞同 306 展开评论
问答分类:
问答地址:
关联地址: