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)
{{ detail.customsCase.customsNo }}{{ detail.customsCase.checklistCode }} / {{ detail.customsCase.checklistVersionNo }}{{ detail.documents.length }} / {{ detail.receipts.length }}登记线下提交状态历史
{{ customsHistoryActionLabel(entry.action) }}:{{ customsStatusLabel(entry.fromStatus) }} → {{ customsStatusLabel(entry.toStatus) }}{{ entry.note || '' }}
-
+
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 +=
-
+
{{ detail.aggregate.orderNo }}{{ detail.aggregate.inboundCode }}{{ detail.aggregate.containerNo || '—' }}统一门禁
{{ scope.row.passed ? '通过' : '阻断' }}整体时间线
{{ timelineModuleLabel(entry.module) }} · {{ timelineActionLabel(entry.action) }}:{{ timelineStatusLabel(entry.module, entry.fromStatus) }} → {{ timelineStatusLabel(entry.module, entry.toStatus) }}{{ entry.operatorName || '系统' }} {{ entry.remark || '' }}
@@ -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) {