フォームのサブフォーム一括インポートによるデータ連動
このケースは三者の開発者「蘇 _ 」から来ました。
1. 使用シーン
サブフォームを一括インポートしても、配置されたデータ連動はトリガーされないので、この例ではopenapiで対応する効果を実現する方法を学びます。
2.機能を実現する
2.1ページ設定
(1) 在庫表

(2) 一括出庫

2.2ページ機能の設定
(1) 設定データ連動


(2) カスタム検証の設定出庫数量を制限する

function validateRule(value) {
// 注意按实际情况修改唯一标识
const stockCount = this.$('numberField_lf6j04m0').getValue(); // 库存数
if (!stockCount || value > stockCount) {
return false
};
return true;
}
2.3サブフォーム一括インポートイベントの設定
(1) データソースの設定
参考ドキュメント:検索条件によるインスタンス詳細リストの取得
インタフェース構成図:

(2) サブフォーム一括インポート処理の設定

コードは次のとおりです。
在庫表のformuuidを変更することに注意してください。
const formUuid = 'FORM-XXXXXXXXXXXXXX'; // 库存表 formUuid
// 子表单批量导入处理
export async function beforeImportData(data) {
const result = data.slice(0); // 拷贝数据
const loading = this.utils.toast({
title: `数据处理中,预计需要${result.length / 5}秒`,
type: 'loading'
});
const errorData = []; // 收集错误信息
for (let i = 0; i < data.length; i++) {
const delay = i === 0 ? 0 : 200;
await new Promise((resolve => {
// 注意节流,每次请求间隔 200 ms
setTimeout(async () => {
await this.dataSourceMap.getData.load({
formUuid,
searchFieldJson: JSON.stringify({
// 这里相当于数据联动的条件,只支持且关系
// 出库清单.物品名称 等于 物品名称
textField_lf6ix8iq: data[i].selectField_lf6j04ly, // 物品名称
textField_lf6ix8it: data[i].textField_lf6j04lz // 物品编号
})
}).then(res => {
const { totalCount, data } = res;
if (!totalCount) { return };
const { formData = {} } = data[0];
// 这里相当于数据联动的结果
// 库存数 联动显示为 出库清单.库存数的对应值
result[i].numberField_lf6j04m0 = formData.numberField_lf6ix8is || 0; // 库存数
}).catch(error => {
// 错误处理
errorData.push({
name: data[i].selectField_lf6j04ly,
type: data[i].textField_lf6j04lz
})
});
resolve();
}, delay);
}));
};
loading(); // 关闭loading
// 错误提示
if (errorData.length > 0) {
let content = (
<div>
{errorData.map((item) => {
return <p>物品名称:{item.name},物品编号:{item.type}</p>
})}
</div>
);
this.utils.dialog({
method: 'alert',
title: `处理完成,失败 ${errorData.length} 条`,
content,
onOk: () => { },
onCancel: () => { },
});
};
return result;
}
3.効果を実現する


4.オンラインで試してみます
この文書は機械翻訳により生成されています。翻訳により生じた齟齬や相違点は拘束力を持たず、コンプライアンスや執行目的において法的効力はありません。
このドキュメントは役に立ちましたか?

