メインコンテンツまでスキップ

フォーム内のサブテーブル発行サブフロー

このケースは三者開発者「馮鵬」から来た

1. 使用シーン

この例では、適切にフォームを提出した後、サブフォームの内容に基づいてサブプロセスを開始する方法を学習します。

2.機能を実現する

2.1プロセスページの設定

2.2フォームページの設定

Uuidフィールド式の編集:

2.3機能設定

(1) 変数設定

デフォルト値は必要に応じて変更されます。

(2) データソース構成

参考ドキュメント:プロセス開始

インタフェース構成図:

データソースのアドレス:

データソースパラメータ:

(3) ページbeforesubmitは以下の関数をバインドする

export async function beforeSubmit({ formDataMap }) {
if (!this.utils.isSubmissionPage()) {
return Promise.resolve(true);
}
const arr = this.$('tableField_l9y2sfwe').getValue();
const uuid = this.$('textField_la98d80q').getValue();
const warehouseName = this.$('selectField_l9y2sfwc').getValue();
let data = [];
let errors = [];
const count = arr.length;
const dialog = this.utils.dialog({
method: 'alert',
title: '处理中,请不要关闭浏览器',
content: `预计需要 ${count / 5}`,
footer: false,
});

// 循环调用发起流程接口,注意节流
for (let i = 0; i < arr.length; i++) {
const delay = i === 0 ? 0 : 200;
await new Promise((resolve => {
setTimeout(async () => {
const empArr = arr[i].employeeField_l9y2sfwk.map((item) => {
return item.value;
});
const imgArr = arr[i].imageField_l9y2sfwm.map((items) => {
return {
downloadUrl: items.downloadURL,
name: items.name,
previewUrl: items.url,
url: items.downloadURL,
};
});
this.setState({
formDataJson: JSON.stringify({
textField_la98qwt1: uuid,
selectField_l9yc8jpd: warehouseName,
employeeField_l9yc8jpe: window.loginUser.userId,
numberField_l9yc8jpc: arr[i].numberField_l9ybnzr5,
employeeField_l9y2tffz: empArr,
textField_l9y2tffv: arr[i].textField_l9y2sfwg,
selectField_l9y2tffx: arr[i].selectField_l9y2sfwi,
dateField_l9y2tfg1: arr[i].dateField_l9y2sfwn,
imageField_l9y2tfg3: imgArr
})
});
try {
const res = await this.dataSourceMap.addData.load();
data.push(res);
} catch (e) {
errors.push(e.message);
}
resolve();
}, delay);
}));
}
dialog.hide();
let content = '处理成功';
if (errors.length > 0) {
content = (
<div>
{errors.map((error) => {
return <p>{error}</p>
})}
</div>
);
}
this.utils.dialog({
method: 'alert',
title: `处理完成,共发起 ${data.length} 条,失败 ${errors.length}`,
content,
onOk: () => { },
onCancel: () => { },
});
return Promise.resolve(true);
}

3.効果を実現する

4.オンラインで試してみます

Copyright © 2025钉钉(中国)信息技术有限公司和/或其关联公司浙ICP备18037475号-4