新建退货预报
填写预计退回的 SKU 和数量,仓库签收后将自动更新实收结果。
From bdb42f1256c1cafd8e30f8edc9e429b10c71bcc5 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Mon, 21 Sep 2026 10:44:30 +0800 Subject: [PATCH 1/2] fix: allow manual quote without carrier rate --- src/modules/first-leg/types/inboundBilling.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/first-leg/types/inboundBilling.ts b/src/modules/first-leg/types/inboundBilling.ts index 101a2a5..51d3db9 100644 --- a/src/modules/first-leg/types/inboundBilling.ts +++ b/src/modules/first-leg/types/inboundBilling.ts @@ -68,9 +68,9 @@ export interface MerchantInboundFeeSnapshot { chargeRuleId: string ruleCode: string chargeRuleVersion: number - carrierRateId: string + carrierRateId: string | null rateCode: string - carrierRateVersion: number + carrierRateVersion: number | null customerId: string customerName: string originWarehouseId: string -- 2.54.0 From befd22af96664e76eefd4a965dfb87912fbb1569 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Mon, 21 Sep 2026 11:17:13 +0800 Subject: [PATCH 2/2] =?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/dashboard/overview.test.mjs | 12 +++++ .../overseas-warehouse/permissions.test.mjs | 4 +- src/modules/overseas-warehouse/routes.ts | 4 +- .../views/ReturnOrdersView.test.mjs | 8 ++- .../views/ReturnOrdersView.vue | 52 ++++++++++++++++--- 5 files changed, 67 insertions(+), 13 deletions(-) diff --git a/src/modules/dashboard/overview.test.mjs b/src/modules/dashboard/overview.test.mjs index c0df45d..da51657 100644 --- a/src/modules/dashboard/overview.test.mjs +++ b/src/modules/dashboard/overview.test.mjs @@ -142,3 +142,15 @@ test('matches the updated six-action icon and motion treatment', () => { assert.match(dashboardView, /prefers-reduced-motion: reduce/) assert.match(dashboardView, /\.client-dashboard a:focus-visible/) }) + +test('opens all six dashboard businesses through their dedicated create pages', () => { + for (const route of [ + '/orders/first-leg/create', + '/overseas-warehouse/return-relabel/create', + '/cross-border/domestic-trucking/create', + '/cross-border/pallet-shipping/create', + '/cross-border/procurement/create', + '/overseas-warehouse/labeling/create', + ]) assert.match(dashboardView, new RegExp(`route: '${route.replaceAll('/', '\\/')}'`)) + assert.match(dashboardView, /title: '退货换标'[\s\S]*?permission: 'merchant:overseas-warehouse:return-order:create'/) +}) diff --git a/src/modules/overseas-warehouse/permissions.test.mjs b/src/modules/overseas-warehouse/permissions.test.mjs index cd405e3..b5c9791 100644 --- a/src/modules/overseas-warehouse/permissions.test.mjs +++ b/src/modules/overseas-warehouse/permissions.test.mjs @@ -20,9 +20,11 @@ test('protects every overseas warehouse page with its independent list permissio test('opens labeling and return relabeling on dedicated protected create pages', () => { assert.match(routes, /path: 'overseas-warehouse\/labeling\/create'[\s\S]*?props: \{ service: 'labeling', createPage: true \}[\s\S]*?permission: 'merchant:overseas-warehouse:relabel:create'/) - assert.match(routes, /path: 'overseas-warehouse\/return-relabel\/create'[\s\S]*?props: \{ service: 'relabel', createPage: true \}[\s\S]*?permission: 'merchant:overseas-warehouse:return-order:create'/) + assert.match(routes, /path: 'overseas-warehouse\/return-relabel\/create'[\s\S]*?ReturnOrdersView\.vue'[\s\S]*?props: \{ createPage: true \}[\s\S]*?title: '新建退货预报'[\s\S]*?permission: 'merchant:overseas-warehouse:return-order:create'/) assert.match(services, /props\.createPage \? 'create' : 'list'/) assert.match(services, /function returnToList\(\)/) + assert.match(returns, /props\.createPage/) + assert.match(returns, /class="return-create-surface"/) }) test('opens warehouse service and return receipt details as dedicated protected workspace pages', () => { diff --git a/src/modules/overseas-warehouse/routes.ts b/src/modules/overseas-warehouse/routes.ts index 93ee9f0..f9a225c 100644 --- a/src/modules/overseas-warehouse/routes.ts +++ b/src/modules/overseas-warehouse/routes.ts @@ -24,8 +24,8 @@ export const overseasWarehouseModule = { }, { path: 'overseas-warehouse/return-relabel/create', name: 'overseas-return-relabel-create', - component: () => import('./views/WarehouseServiceView.vue'), props: { service: 'relabel', createPage: true }, release: 'active', - meta: { title: '新建退货换标单', workspaceTitle: '退货换标 · 新建', description: '填写并提交退货换标订单', permission: 'merchant:overseas-warehouse:return-order:create' }, + component: () => import('./views/ReturnOrdersView.vue'), props: { createPage: true }, release: 'active', + meta: { title: '新建退货预报', workspaceTitle: '退货预报 · 新建', description: '填写并提交海外仓退货预报', permission: 'merchant:overseas-warehouse:return-order:create', keepAlive: false }, }, { path: 'overseas-warehouse/return-relabel/:returnNo/detail', name: 'overseas-return-relabel-detail', diff --git a/src/modules/overseas-warehouse/views/ReturnOrdersView.test.mjs b/src/modules/overseas-warehouse/views/ReturnOrdersView.test.mjs index 22d2073..77975ae 100644 --- a/src/modules/overseas-warehouse/views/ReturnOrdersView.test.mjs +++ b/src/modules/overseas-warehouse/views/ReturnOrdersView.test.mjs @@ -27,9 +27,13 @@ test('新建退货预报选择海外仓后带出联系人和电话', () => { assert.match(view, /warehouseContactPhone: form\.warehouseContactPhone\.trim\(\)/) }) -test('新建退货预报使用加宽的双列表单弹窗', () => { +test('新建退货预报使用独立路由页面,编辑仍保留加宽弹框', () => { + assert.match(view, /defineProps<\{ createPage\?: boolean; detailPage\?: boolean/) + assert.match(view, /name: 'overseas-return-relabel-create'/) + assert.match(view, /v-if="props\.createPage"/) + assert.match(view, /class="return-create-surface"/) + assert.match(view, /
填写预计退回的 SKU 和数量,仓库签收后将自动更新实收结果。