diff --git a/src/modules/container-loading/pages/ContainerDetailView.emptyReturn.behavior.test.ts b/src/modules/container-loading/pages/ContainerDetailView.emptyReturn.behavior.test.ts
index c6293ed9..87653a42 100644
--- a/src/modules/container-loading/pages/ContainerDetailView.emptyReturn.behavior.test.ts
+++ b/src/modules/container-loading/pages/ContainerDetailView.emptyReturn.behavior.test.ts
@@ -14,7 +14,7 @@ const routeState = vi.hoisted(() => ({ params: { containerId: '9001' }, query: {
const routerPush = vi.hoisted(() => vi.fn())
vi.mock('@/core/access/accessPreview', () => ({ useAccessPreviewStore: () => ({ can: canAccess }) }))
vi.mock('vue-router', () => ({ useRoute: () => routeState, useRouter: () => ({ push: routerPush }) }))
-vi.mock('@/modules/loading-lists', () => ({ ContainerFeesPanel: { template: '
' }, LoadingListDetailDrawer: { name: 'LoadingListDetailDrawer', props: ['detail', 'error', 'loading'], template: '{{ detail?.planNo }}
' }, PalletLabelPrintDialog: { template: '' }, getConfirmedLoadingList: vi.fn(), getPreloadPlan: vi.fn() }))
+vi.mock('@/modules/loading-lists', () => ({ ContainerFeesPanel: { template: '' }, LoadingListDetailDrawer: { name: 'LoadingListDetailDrawer', props: ['detail', 'error', 'loading', 'mode', 'embedded'], template: '{{ detail?.planNo }}
' }, PalletLabelPrintDialog: { template: '' }, getConfirmedLoadingList: vi.fn(), getPreloadPlan: vi.fn() }))
vi.mock('@/modules/ocean-bookings', () => ({ listOceanBookingLinkCandidates: vi.fn() }))
vi.mock('@/modules/outbound-dispatch', () => ({ confirmContainerOutboundDispatch: vi.fn(), getContainerOutboundDispatch: vi.fn() }))
vi.mock('@/modules/port-schedules', () => ({ CarrierScheduleQueryPanel: { template: '' } }))
@@ -140,6 +140,11 @@ describe('domestic container loading list and booking link', () => {
expect(tabs.find((tab) => tab.attributes('aria-selected') === 'true')?.text()).toBe(permitted ? '装柜清单' : '送柜报关')
expect(getPreloadPlan).toHaveBeenCalledTimes(permitted && planStatus !== 'COMPLETED' ? 1 : 0)
expect(getConfirmedLoadingList).toHaveBeenCalledTimes(permitted && planStatus === 'COMPLETED' ? 1 : 0)
+ if (permitted) {
+ const drawer = wrapper.findComponent({ name: 'LoadingListDetailDrawer' })
+ expect(drawer.props('mode')).toBe(planStatus === 'COMPLETED' ? 'confirmed' : 'preload')
+ expect(drawer.props('embedded')).not.toBeUndefined()
+ }
wrapper.unmount()
}
}
diff --git a/src/modules/container-loading/pages/ContainerDetailView.test.ts b/src/modules/container-loading/pages/ContainerDetailView.test.ts
index 66b00fb3..c871f0cd 100644
--- a/src/modules/container-loading/pages/ContainerDetailView.test.ts
+++ b/src/modules/container-loading/pages/ContainerDetailView.test.ts
@@ -34,6 +34,8 @@ describe('ContainerDetailView customs integration', () => {
expect(source).toContain('getPreloadPlan')
expect(source).toContain('label="装柜清单"')
expect(source).toContain('打印装柜清单')
+ expect(source).toContain("const loadingListMode = computed(() => detail.value?.planStatus === 'COMPLETED' ? 'confirmed' : 'preload')")
+ expect(source).toContain(' {
} as Record)[status || ''] || '海外履约中'
})
const primaryStatusText = computed(() => isDomestic.value ? statusText(detail.value?.planStatus) : overseasStageText.value)
+const loadingListMode = computed(() => detail.value?.planStatus === 'COMPLETED' ? 'confirmed' : 'preload')
+const loadingListHeading = computed(() => loadingListMode.value === 'confirmed' ? '装柜清单' : '预装清单')
+const loadingListDescription = computed(() => loadingListMode.value === 'confirmed'
+ ? '装柜明细、PDA 证据与报关关联均以当前柜次为边界。'
+ : '核对预装明细与 PDA 作业准备情况,装柜完成后再处理整柜报关。')
const overseasDestinationText = computed(() => [detail.value?.destinationWarehouseCode, detail.value?.destinationWarehouseName].filter(Boolean).join(' / ') || '—')
const emptyReturnWarningText = computed(() => {
const warning = workbenchDetail.value?.terminalDrayage?.emptyReturnWarning
@@ -543,10 +548,10 @@ onMounted(async () => { await load(); if (isOverseas.value && route.query.action
diff --git a/src/modules/loading-lists/components/LoadingListDetailDrawer.vue b/src/modules/loading-lists/components/LoadingListDetailDrawer.vue
index 4e354a13..6d874e16 100644
--- a/src/modules/loading-lists/components/LoadingListDetailDrawer.vue
+++ b/src/modules/loading-lists/components/LoadingListDetailDrawer.vue
@@ -17,6 +17,7 @@ const props = defineProps<{
detail: LoadingDetail | null
error: ApiErrorDetails | null
canEdit: boolean
+ embedded?: boolean
canEditTransport?: boolean
transportNote?: string
confirmSaving?: boolean
@@ -145,9 +146,9 @@ function formatNumber(value?: number | null, digits = 3) {