From 5b441626e96197546fecad12a863a380eb609cf1 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Wed, 12 Aug 2026 17:34:06 +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/modules/customs/pages/CustomsCasesView.test.ts | 5 +++++ src/modules/customs/pages/CustomsCasesView.vue | 2 +- src/modules/finance/pages/FinanceCustomerArapView.test.ts | 3 +++ .../outbound-dispatch/pages/OutboundDispatchesView.test.ts | 7 +++++++ .../outbound-dispatch/pages/OutboundDispatchesView.vue | 4 +++- src/modules/port-schedules/pages/PortSchedulesView.test.ts | 6 ++++++ src/modules/trucking/pages/TruckAppointmentsView.test.ts | 7 +++++++ src/modules/trucking/pages/TruckAppointmentsView.vue | 4 ++-- 8 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/modules/customs/pages/CustomsCasesView.test.ts b/src/modules/customs/pages/CustomsCasesView.test.ts index d9cf1524..09ee2bd0 100644 --- a/src/modules/customs/pages/CustomsCasesView.test.ts +++ b/src/modules/customs/pages/CustomsCasesView.test.ts @@ -28,4 +28,9 @@ describe('CustomsCasesView', () => { expect(source).not.toContain("label: '订单标识'") expect(source).not.toContain("label: '入库单标识'") }) + it('keeps the detail dialog responsive with internal scrolling', () => { + expect(source).toContain('width:min(900px,calc(100vw - 28px))!important') + expect(source).toContain('max-height:90vh') + expect(source).toContain('overflow-y:auto') + }) }) diff --git a/src/modules/customs/pages/CustomsCasesView.vue b/src/modules/customs/pages/CustomsCasesView.vue index 0874a13c..c000f2a6 100644 --- a/src/modules/customs/pages/CustomsCasesView.vue +++ b/src/modules/customs/pages/CustomsCasesView.vue @@ -29,4 +29,4 @@ watch([page, pageSize], () => void load()); onMounted(load) - + diff --git a/src/modules/finance/pages/FinanceCustomerArapView.test.ts b/src/modules/finance/pages/FinanceCustomerArapView.test.ts index d90579a1..2b930260 100644 --- a/src/modules/finance/pages/FinanceCustomerArapView.test.ts +++ b/src/modules/finance/pages/FinanceCustomerArapView.test.ts @@ -101,6 +101,9 @@ describe('FinanceCustomerArapView G2 operations', () => { { poolItemId: 'PAYABLE:43', feeSourceId: null, customerId: '10002', direction: 'PAYABLE', sourceType: 'MANUAL_COST', sourceId: '43', sourceVersion: 1, orderId: '11', inboundId: null, containerId: null, feeItemName: '拖车费', amount: 200, currency: 'CNY', status: 'POSTED', createdAt: '2026-08-10' }, ]) const wrapper = await mountView(['platform:finance:bill:view']) + const vm = wrapper.vm as unknown as { load(model: Record): Promise } + await vm.load({ customerId: '', direction: '', status: '', keyword: '' }) + await flushPromises() expect(wrapper.text()).toContain('客户A') expect(wrapper.text()).toContain('客户B') }) diff --git a/src/modules/outbound-dispatch/pages/OutboundDispatchesView.test.ts b/src/modules/outbound-dispatch/pages/OutboundDispatchesView.test.ts index 795279ba..1b441269 100644 --- a/src/modules/outbound-dispatch/pages/OutboundDispatchesView.test.ts +++ b/src/modules/outbound-dispatch/pages/OutboundDispatchesView.test.ts @@ -145,4 +145,11 @@ describe('OutboundDispatchesView', () => { expect(source).toContain("error.value?.code === 'A0409'") expect(getOutboundDispatchDetail).not.toHaveBeenCalled() }) + + it('keeps the gate detail dialog responsive with internal scrolling', () => { + const source = readFileSync(resolve(process.cwd(), 'src/modules/outbound-dispatch/pages/OutboundDispatchesView.vue'), 'utf8') + expect(source).toContain('width="min(900px, calc(100vw - 28px))"') + expect(source).toContain('max-height: 90vh') + expect(source).toContain('overflow-y: auto') + }) }) diff --git a/src/modules/outbound-dispatch/pages/OutboundDispatchesView.vue b/src/modules/outbound-dispatch/pages/OutboundDispatchesView.vue index 869bd3af..9bb361fa 100644 --- a/src/modules/outbound-dispatch/pages/OutboundDispatchesView.vue +++ b/src/modules/outbound-dispatch/pages/OutboundDispatchesView.vue @@ -194,7 +194,7 @@ onBeforeUnmount(() => { disposed = true; listRequestId += 1; optionRequestId += - +
@@ -206,4 +206,6 @@ onBeforeUnmount(() => { disposed = true; listRequestId += 1; optionRequestId += h3 { margin: 20px 0 12px; } small { display: block; color: var(--cc-muted); } .detail-loading { padding: 12px 0; } +:global(.outbound-detail-dialog.el-dialog) { max-height: 90vh; overflow: hidden; } +:global(.outbound-detail-dialog .el-dialog__body) { max-height: calc(90vh - 120px); overflow-y: auto; } diff --git a/src/modules/port-schedules/pages/PortSchedulesView.test.ts b/src/modules/port-schedules/pages/PortSchedulesView.test.ts index d3f26988..fb6b4ae8 100644 --- a/src/modules/port-schedules/pages/PortSchedulesView.test.ts +++ b/src/modules/port-schedules/pages/PortSchedulesView.test.ts @@ -67,4 +67,10 @@ describe('PortSchedulesView', () => { expect(source).toContain("prop: 'schedule.etaAt'") expect(source).toContain("prop: 'schedule.updatedAt'") }) + it('formats observed and update times and keeps the editor within the viewport', () => { + expect(source).toContain('formatDateTime(row.schedule.observedAt)') + expect(source).toContain('formatDateTime(row.schedule.updatedAt)') + expect(source).toContain('width:min(820px,calc(100vw - 28px))!important') + expect(source).toContain('max-height:90vh') + }) }) diff --git a/src/modules/trucking/pages/TruckAppointmentsView.test.ts b/src/modules/trucking/pages/TruckAppointmentsView.test.ts index e1f3511c..7774b30e 100644 --- a/src/modules/trucking/pages/TruckAppointmentsView.test.ts +++ b/src/modules/trucking/pages/TruckAppointmentsView.test.ts @@ -112,4 +112,11 @@ describe('TruckAppointmentsView', () => { await flushPromises() expect(wrapper.find('button[aria-label="查看 TA-9001"]').exists()).toBe(false) }) + + it('prioritizes outbound business fields and keeps finance amounts out of the list', () => { + expect(source).toContain("key: 'customerName'") + expect(source).toContain("key: 'updatedAt'") + expect(source).not.toContain("key: 'payableAmount'") + expect(source).not.toContain("key: 'receivableAmount'") + }) }) diff --git a/src/modules/trucking/pages/TruckAppointmentsView.vue b/src/modules/trucking/pages/TruckAppointmentsView.vue index 70617183..dd968a42 100644 --- a/src/modules/trucking/pages/TruckAppointmentsView.vue +++ b/src/modules/trucking/pages/TruckAppointmentsView.vue @@ -28,15 +28,15 @@ const columns: DataTableColumn[] = [ { key: 'actions', label: '操作', width: 150, fixed: 'left', slotName: 'actions' }, { key: 'appointmentNo', prop: 'appointmentNo', label: '派车单号', minWidth: 170 }, { key: 'containerNo', prop: 'containerNo', label: '集装箱号', minWidth: 145, formatter: (row: TruckAppointmentResource) => row.containerNo || (row.containerBookingId ? '已关联柜次' : '—') }, + { key: 'customerName', prop: 'customerName', label: '客户', minWidth: 150, formatter: (row: TruckAppointmentResource) => row.customerName || '客户信息缺失' }, { key: 'company', label: '运输公司', minWidth: 160, slotName: 'company' }, { key: 'driver', label: '司机', minWidth: 130, slotName: 'driver' }, { key: 'vehicleNo', prop: 'vehicleNo', label: '车头号', minWidth: 120, formatter: (row: TruckAppointmentResource) => row.vehicleNo || '—' }, { key: 'store', label: '门店', minWidth: 140, slotName: 'store' }, - { key: 'payableAmount', label: '应付拖车费', minWidth: 130, formatter: (row: TruckAppointmentResource) => row.payableAmount ? `¥${row.payableAmount}` : '—' }, - { key: 'receivableAmount', label: '应收拖车费', minWidth: 130, formatter: (row: TruckAppointmentResource) => row.receivableAmount ? `¥${row.receivableAmount}` : '—' }, { key: 'plannedLoadingAt', label: '预计装箱日期', minWidth: 170, formatter: (row: TruckAppointmentResource) => formatDateTime(row.plannedLoadingAt) }, { key: 'status', label: '状态', width: 130, slotName: 'status' }, { key: 'attachments', label: '附件', width: 90, formatter: (row: TruckAppointmentResource) => String(row.attachments?.length || 0) }, + { key: 'updatedAt', label: '更新时间', minWidth: 160, formatter: (row: TruckAppointmentResource) => formatDateTime(row.updatedAt) }, ] function formatDateTime(value?: string | null) { return value ? value.replace('T', ' ').slice(0, 16) : '—' } function appointmentActionLabel(action: '查看' | '编辑', row: TruckAppointmentResource) {