跳到主要内容

表单中子表发起子流程

本案例来自三方开发者「冯鹏」

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 © 2024钉钉(中国)信息技术有限公司和/或其关联公司浙ICP备18037475号-4