From 8771cef76bc2535557e3be82d26dbaad7a2179b2 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Sat, 8 Aug 2026 15:57:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/trucking/api/platformTrucking.ts | 23 +++++++++++++++++++ .../components/TruckAttachmentDialog.vue | 16 +++++++++---- .../pages/TruckAppointmentDetailView.vue | 14 +++++++---- src/modules/trucking/types.ts | 21 +++++++++++++++++ 4 files changed, 65 insertions(+), 9 deletions(-) diff --git a/src/modules/trucking/api/platformTrucking.ts b/src/modules/trucking/api/platformTrucking.ts index 2055f872..ca828fc1 100644 --- a/src/modules/trucking/api/platformTrucking.ts +++ b/src/modules/trucking/api/platformTrucking.ts @@ -4,6 +4,8 @@ import type { TruckAppointmentPage, TruckAppointmentQuery, TruckAppointmentResource, + TruckAppointmentStatusHistory, + TruckAttachmentReference, } from '../types' const basePath = '/platform/v1/truck-appointments' @@ -52,6 +54,27 @@ export async function getTruckAppointment(id: string | number) { return normalizeResource(unwrapApiResponse(response)) } +export async function listTruckAppointmentHistory(id: string | number) { + const response = await http.get, ApiEnvelope>(`${basePath}/${id}/history`) + const payload = unwrapApiResponse(response) + const records = Array.isArray(payload) ? payload : payload?.records || [] + return records.map((item) => ({ ...item, id: item.id == null ? item.id : String(item.id), operatorId: item.operatorId == null ? item.operatorId : String(item.operatorId) })) +} + +export async function listTruckAppointmentAttachments(id: string | number) { + const response = await http.get, ApiEnvelope>(`${basePath}/${id}/attachments`) + return unwrapApiResponse(response).map((item) => ({ ...item, id: item.id == null ? item.id : String(item.id), fileId: String(item.fileId), uploadedBy: item.uploadedBy == null ? item.uploadedBy : String(item.uploadedBy) })) +} + +export async function referenceTruckAppointmentAttachment(id: string | number, payload: { fileId: string; attachmentType?: string | null; fileName?: string | null; fileHash?: string | null }) { + const response = await http.post, ApiEnvelope>(`${basePath}/${id}/attachments`, { ...payload, fileId: Number(payload.fileId) }) + return unwrapApiResponse(response) +} + +export async function deleteTruckAppointmentAttachment(id: string | number, attachmentId: string | number) { + await http.delete, ApiEnvelope>(`${basePath}/${id}/attachments/${attachmentId}`) +} + export async function createTruckAppointment(payload: SaveTruckAppointmentRequest) { const response = await http.post, ApiEnvelope>(basePath, dtoPayload(payload)) return normalizeResource(unwrapApiResponse(response)) diff --git a/src/modules/trucking/components/TruckAttachmentDialog.vue b/src/modules/trucking/components/TruckAttachmentDialog.vue index 8669d06b..fd4ae395 100644 --- a/src/modules/trucking/components/TruckAttachmentDialog.vue +++ b/src/modules/trucking/components/TruckAttachmentDialog.vue @@ -1,15 +1,23 @@