From 7eda66bc4d37d521ab31581aa11f62146e4a366d Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Sat, 26 Sep 2026 22:53:19 +0800 Subject: [PATCH] fix(client): show chargeable quantity in quote summary --- src/modules/first-leg/views/SailingPricesView.vue | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/first-leg/views/SailingPricesView.vue b/src/modules/first-leg/views/SailingPricesView.vue index a5d384e..78ba0dd 100644 --- a/src/modules/first-leg/views/SailingPricesView.vue +++ b/src/modules/first-leg/views/SailingPricesView.vue @@ -15,7 +15,11 @@ const hasInput = computed(() => Boolean(originWarehouseId.value && destinationWa const quoteCards = computed(() => quotes.value.map((quote) => ({ quote, channel: channels.value.find((item) => item.channelCode === quote.channelCode) })).filter((item): item is { quote: MerchantPriceEstimate; channel: MerchantPricingChannel } => Boolean(item.channel)).sort((a, b) => a.quote.estimatedAmount - b.quote.estimatedAmount).slice(0, 4)) const priceWinner = computed(() => quoteCards.value.reduce((winner, item) => !winner || item.quote.estimatedAmount < winner.quote.estimatedAmount ? item : winner, undefined as (typeof quoteCards.value)[number] | undefined)) const timeWinner = computed(() => quoteCards.value.reduce((winner, item) => { const days = transitDays(item.channel.referenceTransit); if (days === null) return winner; return !winner || days < transitDays(winner.channel.referenceTransit)! ? item : winner }, undefined as (typeof quoteCards.value)[number] | undefined)) -const resultSummary = computed(() => `${volume.value || 0} CBM · ${destinationCode.value || '—'} · 匹配 ${quoteCards.value.length} 个渠道`) +const resultSummary = computed(() => { + const quoteUnit = (volume.value || 0) >= (weight.value || 0) / 167 ? 'CBM' : 'KG' + const quoteQuantity = quoteUnit === 'CBM' ? volume.value : weight.value + return `${quoteQuantity || 0} ${quoteUnit} · ${destinationCode.value || '—'} · 匹配 ${quoteCards.value.length} 个渠道` +}) function transitDays(value: string | null) { const match = value?.match(/\d+/); return match ? Number(match[0]) : null } function formatMoney(item: MerchantPriceEstimate) { const currency = item.currency === 'CNY' ? '¥' : `${item.currency} `; return `${currency}${item.estimatedAmount.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` } function formatUnitPrice(item: MerchantPriceEstimate) { const currency = item.currency === 'CNY' ? '¥' : `${item.currency} `; return `${currency}${item.unitPrice.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}/${item.chargeUnit || 'CBM'}` }