SRM 资质附件上传 - 前端联调方案
涉及页面
- 采购管理-SRM-供应商管理-资质证书列表页
- 采购管理-SRM-供应商管理-资质证书新增/编辑弹窗
- 采购管理-SRM-招标项目-新增/编辑弹窗(含发布中/投标中的部分更新)
- 采购管理-SRM-招标项目-详情页
业务流程与数据带入
- 用户在表单中通过上传组件选择文件
- 上传组件调用
/system/storage-blob/upload 获得 blobId
- 保存业务记录(资质证书 / 招标项目)时,将文件 ID 列表
blobIds 随业务数据一并提交
- 后端在业务记录保存后,通过
recordType + recordId 将文件绑定到 system_storage_attachment 中间表
- 查询业务记录(详情、分页)时,后端返回
attachmentList(含文件 URL、名称),前端展示下载链接
API
1. 资质证书附件
| 方法 |
路径 |
说明 |
| POST |
/system/storage-blob/upload |
上传文件,入参 multipart 的 files,返回 Blob 列表(含 id) |
| POST |
/srm/supplier-certificate/create |
创建资质证书,新增入参 blobIds |
| PUT |
/srm/supplier-certificate/update |
更新资质证书,新增入参 blobIds(增量更新附件) |
| DELETE |
/srm/supplier-certificate/delete |
删除资质证书,同步删除附件 |
| GET |
/srm/supplier-certificate/page |
分页查询,响应新增 attachmentList |
| GET |
/srm/supplier-certificate/get |
详情查询,响应新增 attachmentList |
| GET |
/srm/supplier-certificate/list-by-supplier |
按供应商查询,响应新增 attachmentList |
请求参数(create/update 新增字段):
| 参数 |
类型 |
必填 |
说明 |
| blobIds |
Array<Long> |
否 |
资质证书附件文件 ID 列表 |
响应字段新增(attachmentList 数组元素):
| 字段 |
类型 |
说明 |
| id |
Long |
文件 ID |
| name |
String |
原文件名 |
| url |
String |
文件访问地址 |
| previewURL |
String |
预览地址 |
| downloadURL |
String |
下载地址 |
响应示例:
{
"code": 0,
"data": {
"id": 1,
"supplierId": 10,
"certificateName": "ISO9001质量管理体系",
"attachmentList": [
{
"id": 1001,
"name": "iso9001_cert.pdf",
"url": "https://example.com/files/xxx.pdf"
}
]
}
}
2. 招标项目资质要求附件
| 方法 |
路径 |
说明 |
| POST |
/system/storage-blob/upload |
上传文件,入参 multipart 的 files,返回 Blob 列表(含 id) |
| POST |
/srm/tender-project/create |
创建招标项目,新增入参 blobIds |
| PUT |
/srm/tender-project/update |
更新招标项目,新增入参 blobIds(草稿/发布中/投标中均增量更新附件) |
| PUT |
/srm/tender-project/update-info |
部分更新(发布中/投标中),新增入参 blobIds |
| DELETE |
/srm/tender-project/delete |
删除招标项目,同步删除附件 |
| GET |
/srm/tender-project/get |
详情查询,响应新增 attachmentList |
| GET |
/srm/tender-project/page |
分页查询,响应新增 attachmentList |
请求参数(create/update/update-info 新增字段):
| 参数 |
类型 |
必填 |
说明 |
| blobIds |
Array<Long> |
否 |
资质要求附件文件 ID 列表 |
响应字段新增: 同资质证书,attachmentList 数组元素含 id、name、url、previewURL、downloadURL。
字段展示规则
| 字段 |
展示位置 |
说明 |
| 证书附件 |
资质证书列表 |
新增「附件」列,显示附件名称链接,点击新窗口打开;无附件显示 -- |
| 证书附件 |
资质证书新增/编辑弹窗 |
「证书附件」上传项,支持多文件,编辑时回显已上传文件 |
| 资质要求附件 |
招标项目新增/编辑弹窗 |
「资质要求附件」上传项,支持多文件,编辑时回显已上传文件 |
| 资质要求附件 |
招标项目详情页 |
「资质要求」折叠面板内展示附件名称链接,点击新窗口打开 |
业务规则说明
| 场景 |
规则 |
| 编辑回显 |
编辑时后端返回 attachmentList,前端将其映射为上传组件文件对象(uid、name、url、status='done'、id)并赋给 blobIds,提交时按 valueKey='id' 提取文件 ID 提交 |
| 附件更新 |
后端按「增量更新」处理:以本次提交的 blobIds 为准,自动删除已移除的文件绑定、新增新上传的文件绑定 |
| 删除业务记录 |
删除资质证书/招标项目时,后端同步删除其附件 |
| 发布中/投标中编辑 |
招标项目在发布中/投标中阶段通过 update-info 接口仅能修改招标说明、资质要求及资质要求附件 |
| 上传格式 |
支持 jpg、jpeg、png、pdf、doc、docx,单个文件不超过 2MB |
注意事项
- 上传必须走
/system/storage-blob/upload,禁止使用旧版 /infra/file/* 接口。
- 资质证书与招标项目使用不同的
recordType:资质证书为 srm_supplier_certificate,招标项目为 srm_tender_project,前端无需关心,由后端处理。
- 编辑回显时若用户未改动附件,提交的
blobIds 仍应包含原有文件 ID(由上传组件回显对象携带),避免附件被误删。
- 招标项目部分更新(
update-info)请求体同样需携带 blobIds。
- 列表页附件链接建议
target="_blank" 新窗口打开,便于预览 PDF/图片。