From 2e2f3ed2d2ac139cb5b777a291b057295a7e2ca0 Mon Sep 17 00:00:00 2001 From: liuyihe <2513762445@qq.com> Date: Tue, 22 Sep 2026 08:47:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../overseas-warehouse/api/lastMileOrders.ts | 1 + .../WarehouseTransferReviewDialog.test.ts | 96 +++++++++++++++++++ .../WarehouseTransferReviewDialog.vue | 11 ++- .../lastMilePresentation.test.ts | 13 +++ .../lastMilePresentation.ts | 8 +- .../pages/LastMileOrderDetailView.test.ts | 26 +++++ .../pages/LastMileOrderDetailView.vue | 12 ++- .../pages/LastMileOrdersView.vue | 7 +- src/modules/overseas-warehouse/types.ts | 1 + 9 files changed, 166 insertions(+), 9 deletions(-) create mode 100644 src/modules/overseas-warehouse/components/WarehouseTransferReviewDialog.test.ts diff --git a/src/modules/overseas-warehouse/api/lastMileOrders.ts b/src/modules/overseas-warehouse/api/lastMileOrders.ts index c13e50c0..76c1161e 100644 --- a/src/modules/overseas-warehouse/api/lastMileOrders.ts +++ b/src/modules/overseas-warehouse/api/lastMileOrders.ts @@ -87,6 +87,7 @@ export interface LastMileOrderSummaryDto { deliveryOrderNo?: string | null outboundOrderNo?: string | null relabelOrderNo?: string | null + relabelApplications?: Array<{ relabelNo: string; status: string; quantity: number; createdAt: string }> relabelStatus?: string | null palletMergeFlag?: string | null /** Optional grouping facts returned by newer last-leg services. */ diff --git a/src/modules/overseas-warehouse/components/WarehouseTransferReviewDialog.test.ts b/src/modules/overseas-warehouse/components/WarehouseTransferReviewDialog.test.ts new file mode 100644 index 00000000..4a6c6991 --- /dev/null +++ b/src/modules/overseas-warehouse/components/WarehouseTransferReviewDialog.test.ts @@ -0,0 +1,96 @@ +import { flushPromises, mount } from '@vue/test-utils' +import { defineComponent, h } from 'vue' +import { beforeEach, describe, expect, it, vi } from 'vitest' +import WarehouseTransferReviewDialog from './WarehouseTransferReviewDialog.vue' +import { getWarehouseTransfer, reviewWarehouseTransfer } from '../api/warehouseTransfers' + +vi.mock('../api/warehouseTransfers', async importOriginal => ({ + ...await importOriginal(), + getWarehouseTransfer: vi.fn(), + reviewWarehouseTransfer: vi.fn(), +})) + +const AppDialogStub = defineComponent({ + name: 'AppDialog', + props: { modelValue: Boolean }, + emits: ['confirm', 'update:modelValue'], + setup(props, { slots }) { + return () => props.modelValue ? h('section', { class: 'dialog' }, slots.default?.()) : null + }, +}) + +const DataTableStub = defineComponent({ + name: 'DataTable', + props: { data: { type: Array, default: () => [] } }, + setup(props) { + return () => h('div', { class: 'data-table' }, JSON.stringify(props.data)) + }, +}) + +function detail(transferNo: string) { + return { + id: `id-${transferNo}`, + transferNo, + packageCount: 2, + needRelabel: false, + status: 'PENDING_REVIEW', + items: [{ id: 'item-1', skuCode: 'SKU-1', productNameZh: '测试货物', packageCount: 2 }], + cartons: [], + pallets: [], + relabelBindings: [], + } +} + +function mountDialog(props: { modelValue: boolean; customerId: string; customerName: string; transferNo: string }) { + return mount(WarehouseTransferReviewDialog, { + props, + global: { + stubs: { + AppDialog: AppDialogStub, + DataTable: DataTableStub, + LoadErrorState: true, + ApiErrorMeta: true, + ElForm: { template: '
' }, + ElFormItem: { template: '' }, + ElRadioGroup: { template: '
' }, + ElRadioButton: { template: '' }, + ElInput: { template: '