From 016ccd5dd3b7270b74089ab722ece99a63ac6bd9 Mon Sep 17 00:00:00 2001 From: liuyihe <2513762445@qq.com> Date: Wed, 14 Oct 2026 11:43:44 +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/api/fulfillment.js | 11 ++-- src/api/return-packing.js | 3 +- src/components/LocalPackingAcceptance.vue | 6 +++ src/components/ReturnBoxMergeWork.vue | 40 ++++++++------- src/pages/outbound/outbound.vue | 57 +++++++++++++++++---- src/pages/return-packing/return-packing.vue | 8 +-- src/pages/return-receipt/return-receipt.vue | 4 +- tests/outbound-lifecycle.test.mjs | 28 ++++++++-- tests/return-box-merge-work.test.mjs | 28 ++++++++-- tests/return-packing-completion.test.mjs | 11 ++++ 10 files changed, 150 insertions(+), 46 deletions(-) create mode 100644 src/components/LocalPackingAcceptance.vue diff --git a/src/api/fulfillment.js b/src/api/fulfillment.js index a8b4f03..82cb71a 100644 --- a/src/api/fulfillment.js +++ b/src/api/fulfillment.js @@ -1,4 +1,4 @@ -import { overseasRequest } from './overseas.js' +import { overseasRequest, overseasUpload, overseasDownload } from './overseas.js' const DISPATCH_BASE = '/pda/v1/last-leg/dispatches' const OUTBOUND_BASE = '/pda/v1/last-leg/outbound-tasks' @@ -175,6 +175,11 @@ export async function resolveCargoDiscardPallet(palletNo) { return normalizeCargoDiscardTask(await overseasRequest('POST', `${CARGO_DISCARD_BASE}/resolve`, { palletNo })) } -export async function confirmCargoDiscard(discardNo, palletNo, lines) { - return normalizeCargoDiscardTask(await overseasRequest('POST', `${CARGO_DISCARD_BASE}/${encoded(discardNo)}/pallets/${encoded(palletNo)}/confirm`, { lines })) +export async function confirmCargoDiscard(discardNo, palletNo, lines, photoFileIds) { + return normalizeCargoDiscardTask(await overseasRequest('POST', `${CARGO_DISCARD_BASE}/${encoded(discardNo)}/pallets/${encoded(palletNo)}/confirm`, { lines, photoFileIds })) } + +const discardPhotoPath = (discardNo, palletNo) => `${CARGO_DISCARD_BASE}/${encoded(discardNo)}/pallets/${encoded(palletNo)}/photos/files` +export const listCargoDiscardPhotos = (discardNo, palletNo) => overseasRequest('GET', discardPhotoPath(discardNo, palletNo)) +export const uploadCargoDiscardPhoto = (discardNo, palletNo, filePath) => overseasUpload(discardPhotoPath(discardNo, palletNo), filePath) +export const downloadCargoDiscardPhoto = (discardNo, palletNo, fileId) => overseasDownload(`${discardPhotoPath(discardNo, palletNo)}/${encoded(fileId)}/download`, { expectedContentTypePrefix: 'image/' }) diff --git a/src/api/return-packing.js b/src/api/return-packing.js index 8b3340d..40197a4 100644 --- a/src/api/return-packing.js +++ b/src/api/return-packing.js @@ -75,7 +75,8 @@ export async function completePackingPlan(planNo, request) { } export function normalizePackingPlan(value = {}) { - return { planNo: String(value.planNo || ''), customerId: String(value.customerId || ''), returnNos: Array.isArray(value.returnNos) ? value.returnNos.map(String) : [], sourceCartonMarks: Array.isArray(value.sourceCartonMarks) ? value.sourceCartonMarks.map(String) : [], sources: Array.isArray(value.sources) ? value.sources : [], mode: String(value.mode || ''), status: String(value.status || ''), boxes: Array.isArray(value.boxes) ? value.boxes : [], remark: String(value.remark || '') } + value = { ...value, completionCartons: Array.isArray(value.completionCartons) ? value.completionCartons.map(normalizeReturnLabel) : [], transfers: Array.isArray(value.transfers) ? value.transfers : [], completedAt: value.completedAt || null } + return { completionCartons: value.completionCartons, transfers: value.transfers, completedAt: value.completedAt, planNo: String(value.planNo || ''), customerId: String(value.customerId || ''), returnNos: Array.isArray(value.returnNos) ? value.returnNos.map(String) : [], sourceCartonMarks: Array.isArray(value.sourceCartonMarks) ? value.sourceCartonMarks.map(String) : [], sources: Array.isArray(value.sources) ? value.sources : [], mode: String(value.mode || ''), status: String(value.status || ''), boxes: Array.isArray(value.boxes) ? value.boxes : [], remark: String(value.remark || '') } } export async function getPackingPlan(planNo) { diff --git a/src/components/LocalPackingAcceptance.vue b/src/components/LocalPackingAcceptance.vue new file mode 100644 index 0000000..cbead0c --- /dev/null +++ b/src/components/LocalPackingAcceptance.vue @@ -0,0 +1,6 @@ +