|
|
@@ -1,58 +0,0 @@
|
|
|
-# 2026-10-15 工作日志
|
|
|
-
|
|
|
-## 修复 BPM 审批详情附件查看功能
|
|
|
-
|
|
|
-美羊羊反馈:录用审批、办理入职、转正申请、合同签署、岗位调动、离职申请、离职交接的审批详情里附件都看不了。
|
|
|
-
|
|
|
-### 诊断结果
|
|
|
-
|
|
|
-| 审批类型 | 问题 | 修复 |
|
|
|
-|---------|------|------|
|
|
|
-| 录用审批 | 附件只用 `<em>` 纯文本显示文件名,没 fileMain 组件;API 只提取了 attachmentNames 丢弃了 fileId | API 补 attachmentFileIds,详情用 fileMain 替换纯文本 |
|
|
|
-| 办理入职 | 代码 OK,但缺 `:view-disabled`,空数据时按钮可点击打开空弹窗 | 加 `:view-disabled="!resumeFileIds.length"` |
|
|
|
-| 转正申请 | 代码 OK,无需修改 | — |
|
|
|
-| 合同签署 | 代码 OK,无需修改 | — |
|
|
|
-| 岗位调动 | 代码 OK,无需修改 | — |
|
|
|
-| 离职申请 | 模板完全没有附件展示区域,form 有 approvalDocumentFileId 字段但未使用 | 加附件 section + fileMain |
|
|
|
-| 离职交接 | 整个文件没有任何附件相关代码 | 加附件区域 + data/approvalFileIds + bootstrap 取值 |
|
|
|
-
|
|
|
-### 改动文件
|
|
|
-
|
|
|
-1. `src/api/bpm/components/offerApproval/index.js` — adaptHiringApproval 增加 attachmentFileIds
|
|
|
-2. `src/views/bpm/handleTask/components/offerApproval/offerApprovalDetail.vue` — 用 fileMain 替换纯文本附件展示
|
|
|
-3. `src/views/bpm/handleTask/components/resignationApplication/resignationApplicationDetail.vue` — 新增附件展示区域
|
|
|
-4. `src/views/bpm/handleTask/components/resignationHandoverOrder/resignationHandoverOrderDetail.vue` — 新增附件展示区域
|
|
|
-5. `src/views/bpm/handleTask/components/hiringApproval/hiringApprovalDetail.vue` — 加 :view-disabled
|
|
|
-
|
|
|
-### 关键点
|
|
|
-
|
|
|
-- fileMain 是全局注册组件(main.js `Vue.component('fileMain', fileMain)`),所有 .vue 可直接用
|
|
|
-- fileMain type="view" 模式:单文件直接 window.open 预览,多文件打开列表弹窗(含浏览/下载)
|
|
|
-- 附件 fileId 来源:录用审批用 attachments[].fileId/id,其余审批单用 approvalDocumentFileId 字段
|
|
|
-- 离职交接接口无适配层,用 pick 兼容 approvalDocumentFileId / attachmentFileId 两种字段名
|
|
|
-
|
|
|
----
|
|
|
-
|
|
|
-## 二次修复(统一附件解析)— 同上问题复查
|
|
|
-
|
|
|
-用户反馈:合同签署明明有附件(接口返回 `attachmentIds: "2109912865529982977"`)却显示"暂无附件"。
|
|
|
-经复查,之前"合同/调动/转正/入职代码OK"的判断**错误**:这些详情取附件的源字段(`files` 数组 / `approvalDocumentFileId` 单值)与后端实际返回不一致——后端统一返回 `attachmentIds` 字符串,但前端全代码从未处理过该字段。
|
|
|
-
|
|
|
-### 根因
|
|
|
-7 个审批详情组件取附件的源字段各不相同,而后端实际返回 `attachmentIds`(字符串或逗号分隔),前端从未解析它,导致合同等取不到附件。
|
|
|
-
|
|
|
-### 统一修复方案
|
|
|
-新建 `src/utils/attachment.js`,导出 `parseAttachmentIds(raw)`,兼容所有来源:
|
|
|
-`attachmentIds` / `attachmentFileIds` / `approvalDocumentFileId` / `attachmentFileId` / `resumeAttachmentFileIds` / `files`(数组) / `attachments`(数组),去重后返回字符串 ID 数组。
|
|
|
-
|
|
|
-### 改动
|
|
|
-- `src/utils/attachment.js`(新增)— 通用解析函数
|
|
|
-- `src/api/bpm/components/offerApproval/index.js` — adaptHiringApproval 的 attachmentFileIds 改用 parseAttachmentIds(raw)
|
|
|
-- `src/views/bpm/handleTask/components/hrContractManagement/hrContractDetail.vue` — adaptContract 用 parseAttachmentIds(item),删除原 collectAttachmentFileIds
|
|
|
-- `src/views/bpm/handleTask/components/hiringApproval/hiringApprovalDetail.vue` — resumeFileIds = parseAttachmentIds(detail)
|
|
|
-- `src/views/bpm/handleTask/components/regularizationHandling/regularizationHandlingDetail.vue` — approvalFileIds = parseAttachmentIds(regularization)
|
|
|
-- `src/views/bpm/handleTask/components/positionTransfer/positionTransferDetail.vue` — approvalFileIds = parseAttachmentIds(record)
|
|
|
-- `src/views/bpm/handleTask/components/resignationApplication/resignationApplicationDetail.vue` — approvalFileIds = parseAttachmentIds(resignation)
|
|
|
-- `src/views/bpm/handleTask/components/resignationHandoverOrder/resignationHandoverOrderDetail.vue` — approvalFileIds = parseAttachmentIds(detail)
|
|
|
-
|
|
|
-说明:传入 parseAttachmentIds 的变量均为接口原始返回(含后端全部字段),其中办理入职的 getHiringApprovalById(@/api/hr/hiringApproval.js)的 adaptHiringApproval 有 `...raw` 展开,故 detail 含原始附件字段。
|