修正客户端费用换算信息空态
This commit is contained in:
@@ -19,7 +19,7 @@ test('shows the confirmed merchant inbound and fee fields without write actions'
|
||||
assert.match(source, new RegExp(label))
|
||||
}
|
||||
assert.match(source, /formatInboundMoney\(props\.data\.latestFee\.totalAmount/)
|
||||
assert.match(source, /getRoundingModeLabel\(props\.data\.latestFee\.roundingMode\)/)
|
||||
assert.match(source, /formatConversionPrecision\(/)
|
||||
assert.doesNotMatch(source, /确认费用|调整费用|发送费用|下载照片/)
|
||||
assert.doesNotMatch(source, /internalNotes|statusHistory|files/)
|
||||
assert.match(source, /latestFee\.ruleCode/)
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
import { Clock3, PackageCheck, RefreshCw, TriangleAlert } from '@lucide/vue'
|
||||
import type { MerchantInboundBilling } from '@/modules/first-leg/types/inboundBilling'
|
||||
import {
|
||||
formatConversionPrecision,
|
||||
formatInboundDateTime,
|
||||
formatInboundMeasure,
|
||||
formatInboundMoney,
|
||||
formatInboundNumber,
|
||||
getChargeModeLabel,
|
||||
getRoundingModeLabel,
|
||||
getTaxModeLabel,
|
||||
} from '@/modules/first-leg/utils/inboundBilling'
|
||||
|
||||
@@ -109,10 +109,11 @@ defineEmits<{
|
||||
<div><dt>计费方式</dt><dd>{{ getChargeModeLabel(props.data.latestFee.chargeMode) }} · {{ getTaxModeLabel(props.data.latestFee.taxMode) }}</dd></div>
|
||||
<div>
|
||||
<dt>换算与精度</dt>
|
||||
<dd>
|
||||
系数 {{ formatInboundNumber(props.data.latestFee.conversionFactor) }} ·
|
||||
保留 {{ props.data.latestFee.roundingScale }} 位 {{ getRoundingModeLabel(props.data.latestFee.roundingMode) }}
|
||||
</dd>
|
||||
<dd>{{ formatConversionPrecision(
|
||||
props.data.latestFee.conversionFactor,
|
||||
props.data.latestFee.roundingScale,
|
||||
props.data.latestFee.roundingMode,
|
||||
) }}</dd>
|
||||
</div>
|
||||
<div><dt>实际重量</dt><dd>{{ formatInboundMeasure(props.data.latestFee.actualWeightKg, 'kg') }}</dd></div>
|
||||
<div><dt>实际体积</dt><dd>{{ formatInboundMeasure(props.data.latestFee.actualVolumeCbm, 'm³') }}</dd></div>
|
||||
|
||||
@@ -79,9 +79,9 @@ export interface MerchantInboundFeeSnapshot {
|
||||
destinationCode: string
|
||||
taxMode: string
|
||||
chargeMode: 'KG' | 'CBM'
|
||||
conversionFactor: number
|
||||
roundingScale: number
|
||||
roundingMode: string
|
||||
conversionFactor: number | null
|
||||
roundingScale: number | null
|
||||
roundingMode: string | null
|
||||
actualWeightKg: number
|
||||
actualVolumeCbm: number
|
||||
convertedQuantity: number
|
||||
|
||||
@@ -16,5 +16,12 @@ test('translates backend rounding modes into customer-facing calculation labels'
|
||||
assert.match(source, /export function getRoundingModeLabel/)
|
||||
assert.match(source, /CEILING: '向上取整'/)
|
||||
assert.match(source, /HALF_UP: '四舍五入'/)
|
||||
assert.match(source, /return labels\[value\] \|\| value \|\| '-'/)
|
||||
assert.match(source, /return value \? labels\[value\] \|\| value : '-'/)
|
||||
})
|
||||
|
||||
test('renders conversion metadata as one complete label or a single empty marker', () => {
|
||||
assert.match(source, /export function formatConversionPrecision/)
|
||||
assert.match(source, /roundingScale === null \|\| roundingScale === undefined/)
|
||||
assert.match(source, /\|\| !roundingMode\) return '-'/)
|
||||
assert.match(source, /`系数 \$\{formatInboundNumber\(conversionFactor\)\} · 保留 \$\{roundingScale\} 位 \$\{getRoundingModeLabel\(roundingMode\)\}`/)
|
||||
})
|
||||
|
||||
@@ -46,7 +46,7 @@ export function getTaxModeLabel(value: string) {
|
||||
return value || '-'
|
||||
}
|
||||
|
||||
export function getRoundingModeLabel(value: string) {
|
||||
export function getRoundingModeLabel(value: string | null | undefined) {
|
||||
const labels: Record<string, string> = {
|
||||
UP: '向上舍入',
|
||||
DOWN: '向下舍入',
|
||||
@@ -56,5 +56,16 @@ export function getRoundingModeLabel(value: string) {
|
||||
HALF_DOWN: '五舍六入',
|
||||
HALF_EVEN: '银行家舍入',
|
||||
}
|
||||
return labels[value] || value || '-'
|
||||
return value ? labels[value] || value : '-'
|
||||
}
|
||||
|
||||
export function formatConversionPrecision(
|
||||
conversionFactor: number | null | undefined,
|
||||
roundingScale: number | null | undefined,
|
||||
roundingMode: string | null | undefined,
|
||||
) {
|
||||
if (conversionFactor === null || conversionFactor === undefined
|
||||
|| roundingScale === null || roundingScale === undefined
|
||||
|| !roundingMode) return '-'
|
||||
return `系数 ${formatInboundNumber(conversionFactor)} · 保留 ${roundingScale} 位 ${getRoundingModeLabel(roundingMode)}`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user