diff --git a/src/modules/first-leg/utils/firstLegOrder.test.mjs b/src/modules/first-leg/utils/firstLegOrder.test.mjs index 5b772a9..5c40d8a 100644 --- a/src/modules/first-leg/utils/firstLegOrder.test.mjs +++ b/src/modules/first-leg/utils/firstLegOrder.test.mjs @@ -8,6 +8,7 @@ import { FIRST_LEG_PROGRESS_STAGES, getFirstLegProgressIndex, getFirstLegStatusLabel, + getFirstLegPickingStatusLabel, getFirstLegStatusTone, getFirstLegTransportModeLabel, summarizeFirstLegCargo, @@ -59,6 +60,15 @@ function validDraft() { } } +test('keeps picking states distinct from order completion and hides unknown internal codes', () => { + assert.equal(getFirstLegPickingStatusLabel('PENDING'), '待拣货') + assert.equal(getFirstLegPickingStatusLabel('IN_PROGRESS'), '拣货中') + assert.equal(getFirstLegPickingStatusLabel('COMPLETED'), '拣货完成') + assert.equal(getFirstLegPickingStatusLabel('NEW_INTERNAL_STATE'), '未知状态') + assert.equal(getFirstLegPickingStatusLabel(null), '待更新') + assert.equal(getFirstLegPickingStatusLabel(''), '待更新') +}) + test('uses the confirmed status and transport labels', () => { assert.equal(getFirstLegStatusLabel('CANCELLED'), '已取消') assert.equal(getFirstLegStatusLabel('NOT_A_STATUS'), '未知状态') diff --git a/src/modules/first-leg/utils/firstLegOrder.ts b/src/modules/first-leg/utils/firstLegOrder.ts index e238c43..52c95e7 100644 --- a/src/modules/first-leg/utils/firstLegOrder.ts +++ b/src/modules/first-leg/utils/firstLegOrder.ts @@ -19,6 +19,16 @@ export function getFirstLegStatusLabel(status: string) { return statusLabels.get(canonicalStatus as FirstLegOrderStatus) ?? '未知状态' } +export function getFirstLegPickingStatusLabel(status: string | null | undefined) { + if (!status) return '待更新' + const labels: Readonly> = { + PENDING: '待拣货', + IN_PROGRESS: '拣货中', + COMPLETED: '拣货完成', + } + return labels[status] ?? '未知状态' +} + export function getFirstLegTransportModeLabel(mode: FirstLegTransportMode | null) { if (!mode) return '运输方式待更新' return transportModeLabels.get(mode) ?? mode diff --git a/src/modules/first-leg/views/FirstLegOrdersView.test.mjs b/src/modules/first-leg/views/FirstLegOrdersView.test.mjs index 70ccf57..2e9173a 100644 --- a/src/modules/first-leg/views/FirstLegOrdersView.test.mjs +++ b/src/modules/first-leg/views/FirstLegOrdersView.test.mjs @@ -231,6 +231,9 @@ test('shows one unified progress line and C02 business summaries without detail assert.doesNotMatch(source, /

报关回执<\/h3>/) assert.match(source, /船期摘要/) assert.match(source, /柜次明细/) + assert.match(source, /pickingStatusLabel: getFirstLegPickingStatusLabel\(summary\.loadingStatus\)/) + assert.match(source, /prop="pickingStatusLabel" label="拣货状态"/) + assert.doesNotMatch(source, /label="当前节点"/) assert.match(source, /尚未分配柜次,后续柜次节点将在这里同步。/) assert.doesNotMatch(source, /暂无柜次分配信息/) assert.doesNotMatch(source, /summary\.sealNo \|\|/) diff --git a/src/modules/first-leg/views/FirstLegOrdersView.vue b/src/modules/first-leg/views/FirstLegOrdersView.vue index e8c11b6..3e659ab 100644 --- a/src/modules/first-leg/views/FirstLegOrdersView.vue +++ b/src/modules/first-leg/views/FirstLegOrdersView.vue @@ -52,6 +52,7 @@ import { canClientEditFirstLegOrder, createEmptyCargoItem, getFirstLegStatusLabel, + getFirstLegPickingStatusLabel, getFirstLegStatusTone, getFirstLegTransportModeLabel, summarizeFirstLegCargo, @@ -621,7 +622,7 @@ const progressSummaryItems = computed(() => { const cabinetProgressItems = computed(() => { const summary = detailOrder.value?.businessSummary if (!summary || (!summary.cabinetNo && !summary.containerNo)) return [] - return [{ cabinetId: summary.cabinetNo || summary.containerNo, cabinetNo: summary.cabinetNo || summary.containerNo, status: summary.loadingStatus || '待更新', vesselName: summary.vesselName, voyageNo: summary.voyageNo, estimatedSailingAt: summary.estimatedSailingAt }] + return [{ cabinetId: summary.cabinetNo || summary.containerNo, cabinetNo: summary.cabinetNo || summary.containerNo, pickingStatusLabel: getFirstLegPickingStatusLabel(summary.loadingStatus), vesselName: summary.vesselName, voyageNo: summary.voyageNo, estimatedSailingAt: summary.estimatedSailingAt }] }) const selectedWarehouse = computed(() => availableWarehouses.value.find((item) => item.id === form.receivingWarehouseId)) const selectedDestinationWarehouse = computed(() => store.warehouses.find((item) => item.id === form.destinationWarehouseId && item.warehouseType === form.destinationType)) @@ -2475,7 +2476,7 @@ async function searchOrders(model: QueryModel) { - +

尚未分配柜次,后续柜次节点将在这里同步。