编辑 | blame | 历史 | 原始文档

SRM 资质附件上传 - 前端联调方案

涉及页面

  • 采购管理-SRM-供应商管理-资质证书列表页
  • 采购管理-SRM-供应商管理-资质证书新增/编辑弹窗
  • 采购管理-SRM-招标项目-新增/编辑弹窗(含发布中/投标中的部分更新)
  • 采购管理-SRM-招标项目-详情页

业务流程与数据带入

  1. 用户在表单中通过上传组件选择文件
  2. 上传组件调用 /system/storage-blob/upload 获得 blobId
  3. 保存业务记录(资质证书 / 招标项目)时,将文件 ID 列表 blobIds 随业务数据一并提交
  4. 后端在业务记录保存后,通过 recordType + recordId 将文件绑定到 system_storage_attachment 中间表
  5. 查询业务记录(详情、分页)时,后端返回 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 数组元素含 idnameurlpreviewURLdownloadURL

字段展示规则

字段 展示位置 说明
证书附件 资质证书列表 新增「附件」列,显示附件名称链接,点击新窗口打开;无附件显示 --
证书附件 资质证书新增/编辑弹窗 「证书附件」上传项,支持多文件,编辑时回显已上传文件
资质要求附件 招标项目新增/编辑弹窗 「资质要求附件」上传项,支持多文件,编辑时回显已上传文件
资质要求附件 招标项目详情页 「资质要求」折叠面板内展示附件名称链接,点击新窗口打开

业务规则说明

场景 规则
编辑回显 编辑时后端返回 attachmentList,前端将其映射为上传组件文件对象(uidnameurlstatus='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/图片。