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 @@ +