场景:
测试链接
导入多条数据后,在数据列表中对多行数据进行相同的附件上传并保存。
效果图:
实现思路:
先获取到上传附件的内容,准备接口参数,将文件发送后端获取文件对应的 ID,最后定位到具体上传附件的行就行 ID 插入并保存。
参考代码:
const { context, data,utils = {} } = configs;
//上传附件
const files = await utils.extra.getValue('upload')({ fileType: 'file', fileAccept: '.xlsx,.xls,.et' });
const adata = new FormData();
//准备参数
adata.append('files', files[0]);
adata.append('catalogId', 'e9eead4b58ee401d8bf46722a773e718');
adata.append('categoryId', '/csb_obj_file/2i0eec1f1aa04442bcc14f7b6h833d24')
// 将文件发送后端,上传文件,得到fileIds
const importRes = await utils.fetch({
url:'/apis/common/proxy/annex/(TenantId)/v2/upload/batch',
method: 'post',
data:adata,
});
console.log("返回后的数据:",importRes)
if (importRes.message !== 'success') {
utils.message.warning('导入数据出错');
}else{
//提取出fileIds
let fileIds = importRes.data.result.fileIds;
const extraData = configs?.data?.extraData || {};
const keyMap = extraData?.entity?.allColObj || {};
// 获取当前页列表的所有行数据
const tableList = extraData?.entity?.list?.data?.list || [];
const selectedRows = extraData?.ref?.selectedRows || [];
// 遍历获取当前选中行的行索引,并剔除非法选中行
const selectedRowsIndex = [...selectedRows || []]
.map(row => typeof row?.__index === 'number' ? row.__index - 1 : undefined)
.filter(v => typeof v === 'number');
// 获取「上传附件」字段列的id内容
const updFileColKey = keyMap?.['附件组件编码']?.dataIndex;
// 根据当前选中行索引修改当前页列表中其对应行的字段数据
selectedRowsIndex.forEach(i => {
if (!tableList[i]) return;
tableList[i][updFileColKey] = fileIds[0];
})
console.log('tableList:', tableList)
}
参数获取示例:手动上传查看入参
作者:tz_docs 创建时间:2024-11-08 10:05
最后编辑:tz_docs 更新时间:2025-05-12 18:04
最后编辑:tz_docs 更新时间:2025-05-12 18:04