feat(mes): 设计项目列表新增「审核文件」按钮,按文件审核状态显隐「提交审批」

- 操作列二选一:pendingAuditCount>0 显示「审核文件」(跳详情页?tab=audit),=0 显示「提交审批」
- 详情页支持 route.query.tab=audit 定位到资料审核 Tab
- Project 类型新增 pendingAuditCount 字段

Co-Authored-By: Claude <noreply@anthropic.com>
已修改3个文件
29 ■■■■■ 文件已修改
src/api/mes/pd/project/index.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/pd/project/detail/index.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/pd/project/index.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/mes/pd/project/index.ts
@@ -34,6 +34,8 @@
    createTime?: number;
    /** BPM 流程实例编号 */
    processInstanceId?: string;
    /** 待审核文件数(auditStatus=0 的审核记录数) */
    pendingAuditCount?: number;
  }
  export interface PageParams extends PageParam {
src/views/mes/pd/project/detail/index.vue
@@ -86,7 +86,10 @@
  loading.value = true;
  try {
    project.value = await getPdProject(projectId.value);
    if (isPendingUpload.value) {
    if (route.query.tab === 'audit') {
      // 从列表页「审核文件」按钮进入,直接定位到资料审核 Tab
      activeTab.value = 'audit';
    } else if (isPendingUpload.value) {
      activeTab.value = 'material';
    } else if (isPendingAudit.value) {
      activeTab.value = 'audit';
src/views/mes/pd/project/index.vue
@@ -100,6 +100,15 @@
  }
}
/** 审核文件 - 跳转详情页资料审核 Tab */
function handleAuditFile(row: MesPdProjectApi.Project) {
  router.push({
    name: 'MesPdProjectDetail',
    params: { id: row.id },
    query: { tab: 'audit' },
  });
}
/** 查看审批详情 */
function handleProcessDetail(row: MesPdProjectApi.Project) {
  if (!row.processInstanceId) {
@@ -223,10 +232,21 @@
              onClick: () => handleDetail(row),
            },
            {
              label: '审核文件',
              type: 'link',
              auth: ['mes:pd-project:update'],
              ifShow:
                row.status === MesPdProjectStatusEnum.PENDING_AUDIT &&
                (row.pendingAuditCount ?? 0) > 0,
              onClick: handleAuditFile.bind(null, row),
            },
            {
              label: '提交审批',
              type: 'link',
              auth: ['mes:pd-project:update'],
              ifShow: row.status === MesPdProjectStatusEnum.PENDING_AUDIT,
              ifShow:
                row.status === MesPdProjectStatusEnum.PENDING_AUDIT &&
                (row.pendingAuditCount ?? 0) === 0,
              onClick: handleSubmit.bind(null, row),
            },
            {