修复后台售后问题单固化验收图同一图片重复展示

This commit is contained in:
yml2213
2026-08-22 11:53:52 +08:00
parent 67bb5fec15
commit cee759b90e
@@ -28,6 +28,7 @@ import {
import type { UploadedFile, WorkerAfterSalesCase, WorkOrder } from '@/types/worker-platform' import type { UploadedFile, WorkerAfterSalesCase, WorkOrder } from '@/types/worker-platform'
import { ADMIN_DEFAULT_PAGE_SIZE, buildAdminTablePagination } from '@/utils/admin-pagination' import { ADMIN_DEFAULT_PAGE_SIZE, buildAdminTablePagination } from '@/utils/admin-pagination'
import { formatAdminDateTime } from '@/utils/admin-time' import { formatAdminDateTime } from '@/utils/admin-time'
import { uniqueUploadedFiles } from '@/utils/image-identity'
import { asRecord, formatMoney } from './shared' import { asRecord, formatMoney } from './shared'
type AfterSalesCreateFormValues = { type AfterSalesCreateFormValues = {
@@ -447,7 +448,10 @@ function getAfterSalesSnapshotFiles(item: WorkerAfterSalesCase): UploadedFile[]
const acceptance = asRecord(snapshot.acceptance) const acceptance = asRecord(snapshot.acceptance)
const files = Array.isArray(acceptance.files) ? acceptance.files : [] const files = Array.isArray(acceptance.files) ? acceptance.files : []
const imageUrls = Array.isArray(acceptance.imageUrls) ? acceptance.imageUrls : [] const imageUrls = Array.isArray(acceptance.imageUrls) ? acceptance.imageUrls : []
return [ // 验收资料里同一张图会同时存在于 files 与 imageUrls(历史冗余表示),
// 必须按图片身份去重,否则固化验收图会把同一张图重复渲染多次。
return uniqueUploadedFiles(
[
...files.map((value) => asRecord(value)), ...files.map((value) => asRecord(value)),
...imageUrls.map((url) => asRecord({ url: String(url || '') })), ...imageUrls.map((url) => asRecord({ url: String(url || '') })),
] ]
@@ -464,7 +468,8 @@ function getAfterSalesSnapshotFiles(item: WorkerAfterSalesCase): UploadedFile[]
size: Number(file.size || 0), size: Number(file.size || 0),
} satisfies UploadedFile } satisfies UploadedFile
}) })
.filter((file): file is UploadedFile => file !== null) .filter((file): file is UploadedFile => file !== null),
)
} }
export default AfterSalesPanel export default AfterSalesPanel