From af30c0c16cf926935869dd31b273bb2810878a39 Mon Sep 17 00:00:00 2001
From: ouyangxq <775153912@qq.com>
Date: Tue, 11 Aug 2026 11:36:42 +0800
Subject: [PATCH] fix(admin): guard outbound dispatch lookup
---
.../pages/OutboundDispatchesView.test.ts | 2 +-
.../pages/OutboundDispatchesView.vue | 11 ++++++-----
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/modules/outbound-dispatch/pages/OutboundDispatchesView.test.ts b/src/modules/outbound-dispatch/pages/OutboundDispatchesView.test.ts
index 4004c6e4..ec7e0176 100644
--- a/src/modules/outbound-dispatch/pages/OutboundDispatchesView.test.ts
+++ b/src/modules/outbound-dispatch/pages/OutboundDispatchesView.test.ts
@@ -2,4 +2,4 @@ import { describe, expect, it } from 'vitest'
import { readFileSync } from 'node:fs'
import { resolve } from 'node:path'
const source = readFileSync(resolve(process.cwd(), 'src/modules/outbound-dispatch/pages/OutboundDispatchesView.vue'), 'utf8')
-describe('OutboundDispatchesView', () => { it('uses standard list components and left actions', () => { expect(source).toContain('QueryToolbar'); expect(source).toContain('DataTable'); expect(source).toContain("fixed: 'left'") }); it('shows gate, timeline and guarded dispatch actions', () => { expect(source).toContain('aggregate.gate?.items'); expect(source).toContain('detail.timeline'); expect(source).toContain("'confirm-dispatch'"); expect(source).toContain("'reverse-dispatch'"); expect(source).toContain("error.value?.code === 'A0409'") }) })
+describe('OutboundDispatchesView', () => { it('uses standard list components and left actions', () => { expect(source).toContain('QueryToolbar'); expect(source).toContain('DataTable'); expect(source).toContain("fixed: 'left'") }); it('waits for a business id before querying', () => { expect(source).not.toContain('onMounted(load)'); expect(source).toContain("String(filters.orderId || '').trim() || undefined"); expect(source).toContain('if (!params.orderId && !params.inboundId && !params.containerBookingId)'); expect(source).toContain('请输入订单 ID、入库单 ID 或柜次 ID 后查询'); expect(source).toContain('@reset="resetSearch"') }); it('shows gate, timeline and guarded dispatch actions', () => { expect(source).toContain('aggregate.gate?.items'); expect(source).toContain('detail.timeline'); expect(source).toContain("'confirm-dispatch'"); expect(source).toContain("'reverse-dispatch'"); expect(source).toContain("error.value?.code === 'A0409'") }) })
diff --git a/src/modules/outbound-dispatch/pages/OutboundDispatchesView.vue b/src/modules/outbound-dispatch/pages/OutboundDispatchesView.vue
index 35c4d666..7482b9d8 100644
--- a/src/modules/outbound-dispatch/pages/OutboundDispatchesView.vue
+++ b/src/modules/outbound-dispatch/pages/OutboundDispatchesView.vue
@@ -1,5 +1,5 @@
-查看确认撤销{{ row.gate?.passed ? '通过' : '未通过' }}{{ detail.aggregate.orderNo }}{{ detail.aggregate.inboundCode }}{{ detail.aggregate.containerNo || '—' }}统一门禁
{{ scope.row.passed ? '通过' : '阻断' }}整体时间线
{{ entry.module }} · {{ entry.action }}:{{ entry.fromStatus || '—' }} → {{ entry.toStatus || '—' }}{{ entry.operatorName || '系统' }} {{ entry.remark || '' }}
+查看确认撤销{{ row.gate?.passed ? '通过' : '未通过' }}{{ detail.aggregate.orderNo }}{{ detail.aggregate.inboundCode }}{{ detail.aggregate.containerNo || '—' }}统一门禁
{{ scope.row.passed ? '通过' : '阻断' }}整体时间线
{{ entry.module }} · {{ entry.action }}:{{ entry.fromStatus || '—' }} → {{ entry.toStatus || '—' }}{{ entry.operatorName || '系统' }} {{ entry.remark || '' }}