From 315c370ec98459827f34c3d9ad2dd4c78f2f4c97 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Sat, 8 Aug 2026 14:41:17 +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 --- .../customers/overseasStorageFee.test.ts | 6 +++++ src/modules/customers/overseasStorageFee.ts | 2 +- .../pages/OverseasStorageFeesView.vue | 22 ++++++++++++++----- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/modules/customers/overseasStorageFee.test.ts b/src/modules/customers/overseasStorageFee.test.ts index 75428a1c..f2e35ae6 100644 --- a/src/modules/customers/overseasStorageFee.test.ts +++ b/src/modules/customers/overseasStorageFee.test.ts @@ -28,4 +28,10 @@ describe('customer overseas storage fee api', () => { expect(http.put).toHaveBeenCalledWith(`/platform/v1/iam/tenants/${config.customerId}/overseas-storage-fees`, request) expect(result.version).toBe(1) }) + + it('normalizes an omitted end day as an open-ended tier', async () => { + vi.mocked(http.get).mockResolvedValue({ data: { ...config, tiers: [{ id: 1, startDay: 91, unitPrice: 2, sortNo: 5, feeType: 'STORAGE', billingUnit: 'CBM' }] } }) + const result = await getCustomerOverseasStorageFees(config.customerId) + expect(result.tiers[0]?.endDay).toBeNull() + }) }) diff --git a/src/modules/customers/overseasStorageFee.ts b/src/modules/customers/overseasStorageFee.ts index 5dac43d7..f1816c2d 100644 --- a/src/modules/customers/overseasStorageFee.ts +++ b/src/modules/customers/overseasStorageFee.ts @@ -45,7 +45,7 @@ function normalize(data: RawConfig): OverseasStorageFeeConfig { return { ...data, id: String(data.id), customerId: String(data.customerId), version: Number(data.version), - tiers: data.tiers.map((tier) => ({ ...tier, id: String(tier.id), unitPrice: Number(tier.unitPrice), feeType: tier.feeType as OverseasFeeType, billingUnit: tier.billingUnit as OverseasBillingUnit })), + tiers: data.tiers.map((tier) => ({ ...tier, id: String(tier.id), endDay: tier.endDay == null ? null : Number(tier.endDay), unitPrice: Number(tier.unitPrice), feeType: tier.feeType as OverseasFeeType, billingUnit: tier.billingUnit as OverseasBillingUnit })), } } diff --git a/src/modules/customers/pages/OverseasStorageFeesView.vue b/src/modules/customers/pages/OverseasStorageFeesView.vue index 8bf7a8de..f6a8332f 100644 --- a/src/modules/customers/pages/OverseasStorageFeesView.vue +++ b/src/modules/customers/pages/OverseasStorageFeesView.vue @@ -32,13 +32,13 @@ const columns = [ { key: 'customerName', prop: 'customerName', label: '客户', minWidth: 180 }, { key: 'customerId', prop: 'customerId', label: '客户ID', minWidth: 180 }, { key: 'currency', prop: 'currency', label: '币种', width: 90 }, - { key: 'storage', slotName: 'storage', label: '仓租', minWidth: 260 }, - { key: 'returnStorage', slotName: 'returnStorage', label: '退货仓储费', minWidth: 260 }, + { key: 'storage', slotName: 'storage', label: '仓租(CBM/天)', minWidth: 300 }, + { key: 'returnStorage', slotName: 'returnStorage', label: '退货仓储费(托/天)', minWidth: 300 }, ] function clone(tiers: OverseasStorageFeeTier[]) { return tiers.map((tier) => ({ ...tier })) } function label(tier: OverseasStorageFeeTier) { return tier.endDay === null ? `${tier.startDay}天以上` : `${tier.startDay}-${tier.endDay}天` } -function summary(row: OverseasStorageFeeConfig, feeType: OverseasStorageFeeTier['feeType']) { return row.tiers.filter((tier) => tier.feeType === feeType).map((tier) => `${label(tier)} ${tier.unitPrice}`).join(' / ') } +function tiersFor(row: OverseasStorageFeeConfig, feeType: OverseasStorageFeeTier['feeType']) { return row.tiers.filter((tier) => tier.feeType === feeType).sort((a, b) => a.sortNo - b.sortNo) } async function load() { loading.value = true; error.value = null try { const result = await listOverseasStorageFees(page.value, size.value, keyword.value.trim() || undefined); rows.value = result.records; total.value = Number(result.total) } @@ -62,7 +62,12 @@ onMounted(() => { void load() })
- + + + + + +

{{ index === 0 ? '仓租(CBM/天)' : '退货仓储费(托/天)' }}

@@ -71,5 +76,12 @@ onMounted(() => { void load() })