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

资料审核列表显示对应文件(前端联调方案)

涉及页面

页面 路由 说明
项目详情 - 资料审核 Tab /mes/pd/project/detail/{id}?tab=audit 需新增「文件」列

需求

审核人在「资料审核」列表中需要直接看到并打开被审核资料对应的文件,用于审核前查阅。当前列表只有审核单号、资料名称、版本、审核状态等,没有文件入口。

数据来源与关联关系

审核记录(mes_pd_document_audit)本身不存文件,文件挂在「设计资料」上,关联链路如下:

mes_pd_document_audit.document_id
        └──> mes_pd_document.id   (设计资料)
                   └──> system_storage_attachment(recordType = mes_pd_document, recordId = 设计资料 ID)
                              └──> 文件地址 / 文件名

文件仍然走 system 模块的 Storage Attachment 机制,未在业务表新增任何文件地址列。

API

方法 路径 说明
GET /mes/pd/document-audit/page 资料审核分页(响应新增字段)
GET /mes/pd/document-audit/get 资料审核详情(响应新增字段)

请求参数: 无变更。

响应字段新增:

字段 类型 说明
fileName String 资料文件名,取该资料第一个附件的名称;无附件时为 null
fileUrl String 资料文件地址,取该资料第一个附件的可访问 URL;无附件时为 null

响应示例:

{
  "code": 0,
  "data": {
    "list": [
      {
        "id": 3023,
        "auditNo": "AUD2024001",
        "documentId": 1017,
        "documentName": "产品设计图",
        "documentVersion": "V1.0",
        "fileName": "design_v1.pdf",
        "fileUrl": "https://xxx/design_v1.pdf",
        "auditStatus": 0,
        "remark": null,
        "createTime": "2026-10-15 02:26:28"
      }
    ],
    "total": 1
  }
}

前端修改点

需要改动的文件:

文件 改动
src/api/mes/pd/document-audit/index.ts MesPdDocumentAuditApi.DocumentAudit 接口补 fileName、fileUrl 两个可选字段
src/views/mes/pd/project/modules/document-audit-list.vue grid 列增加「文件」列(slots.default = 'file'),并在模板中增加对应具名插槽

「文件」列的渲染规则与「设计资料」列表(document-list.vue 的 #file 插槽)保持完全一致,可直接复用同一写法。

字段展示规则

字段 展示位置 说明
fileUrl 列表「文件」列 有值时渲染为可点击链接,新窗口打开
fileName 列表「文件」列 作为链接文案;为空时回退为「查看文件」

建议列宽 minWidth: 140,位置放在「资料版本」之后。

业务规则说明

场景 规则
资料有多个附件 只取第一个附件的地址与名称(与设计资料列表口径一致)
资料无附件 fileUrl / fileName 均为 null,列内显示 -,不渲染链接
审核记录已删除资料 documentId 查不到附件,同样显示 -
未配置存储 / 附件读取失败 后端不抛异常,字段留空,列表照常返回

注意事项

  • 本次为**纯新增字段**,老前端不升级也不会报错。
  • fileUrl 由后端拼接,前端**不要**再单独调用 /system/storage-attachment/list,避免每行一次额外请求。
  • 导出 Excel /mes/pd/document-audit/export-excel 同步新增了「文件」列(内容为文件名),无需前端改动。

相关但独立的问题:审核结果字段被隐藏

问题:**自动审批模式**下,document-audit-form.vue 中「审核结果」字段(原 fieldName = 'auditStatus')被 src/adapter/form.ts 的自动审批字段过滤逻辑(isAuditField 命中 auditStatus 正则)整条从表单 schema 中移除,导致:
1. 审核人看不到、也无法选择「审核通过/审核不通过」;
2. 提交时 auditStatus 缺省,后端拆箱产生 NPE。

已修复(前端 + 后端两侧):

侧 改动
前端 document-audit-form.vue 字段名 auditStatus → auditResult(避开 isAuditField 正则),提交时映射回 auditStatus;表单打开时显式清空 auditResult
后端 MesPdDocumentAuditServiceImpl#updateDocumentAudit auditStatus 为空时抛 PD_DOCUMENT_AUDIT_STATUS_REQUIRED(「审核结果不能为空:请选择「审核通过」或「审核不通过」后重新提交」);非 1/2 抛 PD_DOCUMENT_AUDIT_STATUS_INVALID;审核人、审核时间统一由后端记录

注意:其他表单若出现同名 auditStatus / auditTime / approvalStatus 等字段,同样会被自动审批模式过滤,需逐一核查。