子表单关联多子表单完成数据填充
首先你参考的文档,是获取「普通表单」数据的接口,而你现在的页面是「流程表单」,文档中提供的接口不适用,需要换掉,其次文档中获取的是主表数据,而不是子表数据,所以接口建议直接使用获取子表单数据接口,宜搭接口可参考:https://docs.aliwork.com/docs/yida_support/lbtl0t/aql605#CV7py如下:
`/${window.pageConfig.appType || window.g_config.appKey}/v1/form/listTableDataByFormInstIdAndTableId.json`
2、因为接口变更,所以页面JS获取数据的接口请求参数,以及接口返回数据处理需要更换下,如下:代码如下:
export async function onAssociationFormChange({ value }) {
if (value.length) {
const batchFetchResult = []; // 请求结果
const failedInstId = []; // 请求失败的实例ID
const batchFetchLoading = this.utils.toast({
title: `处理中,请不要关闭浏览器,预计需要 ${value.length / 5} 秒`,
type: 'loading'
});
for (let i = 0; i value.length; i++) {
const delay = i === 0 ? 0 : 200;
const formInstanceId = value[i].instanceId;
await new Promise((resolve => {
// 注意节流,每次请求间隔 200 ms
setTimeout(async () => {
await this.dataSourceMap.getDataById.load({
// 数据源参数
formInstanceId,
formUuid:'FORM-2E15BB6FDC464E348C8D0E26760ECE203VUZ', // 这里是采购申请的表单formUuid
tableFieldId:'tableField_lxy0w8lw', // 这里放采购申请的子表单唯一标识
currentPage:1,
pageSize:50,
}).then(res => {
// 处理每次返回的结果
if (!res) { return };
batchFetchResult.push(res || {});
}).catch(error => {
// 处理错误,收集错误的实例ID
failedInstId.push(formInstId);
});
resolve();
}, delay);
}));
};
batchFetchLoading();
if (failedInstId.length > 0) {
let content = (
div>
{failedInstId.map((instId) => {
return p>{instId}/p>
})}
/div>
);
this.utils.dialog({
method: 'alert',
title: `处理完成,失败 ${failedInstId.length} 条`,
content,
onOk: () => { },
onCancel: () => { },
});
};
const allData = [];
// 遍历提供的数组
batchFetchResult.forEach(item => {
item.data.forEach(dataItem => {
const newTable = {
textField_lxy0urnp: dataItem.textField_lxy0w8lx,
numberField_lxy0urnq: dataItem.numberField_lxy0w8ly
};
allData.push(newTable);
});
});
this.$('tableField_lxy0urno').setValue(allData); // 合同申请里面的子表单唯一标识
}
else {
// 初始化子表单
this.$('tableField_lxy0urno').setValue([]);
};
}
效果图:1、采购申请数据2、合同申请:
赞4
踩0