|
|
|
@@ -644,13 +644,14 @@ export const formatDisplayPricingItem = ({ |
|
|
|
t = (key) => key, |
|
|
|
}) => { |
|
|
|
const unit = item.unit || 'call'; |
|
|
|
const unitText = formatDisplayPricingUnit(unit, t); |
|
|
|
const effectivePrice = Number(item.effectivePrice ?? item.price ?? 0); |
|
|
|
const hasDiscount = item.discount_rate > 0 && item.discount_rate < 1; |
|
|
|
return { |
|
|
|
...item, |
|
|
|
formattedPrice: `${displayPrice(effectivePrice)} / ${t(unit)}`, |
|
|
|
formattedPrice: `${displayPrice(effectivePrice)} / ${unitText}`, |
|
|
|
originalPrice: hasDiscount |
|
|
|
? `${displayPrice(Number(item.price || 0))} / ${t(unit)}` |
|
|
|
? `${displayPrice(Number(item.price || 0))} / ${unitText}` |
|
|
|
: '', |
|
|
|
discountText: hasDiscount |
|
|
|
? `${Math.round(item.discount_rate * 100) / 10}折` |
|
|
|
@@ -658,6 +659,22 @@ export const formatDisplayPricingItem = ({ |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
const DISPLAY_PRICING_UNIT_FALLBACKS = { |
|
|
|
second: '秒', |
|
|
|
call: '次', |
|
|
|
image: '张图片', |
|
|
|
video: '个视频', |
|
|
|
}; |
|
|
|
|
|
|
|
export const formatDisplayPricingUnit = (unit, t = (key) => key) => { |
|
|
|
const normalizedUnit = unit || 'call'; |
|
|
|
const translated = t(normalizedUnit); |
|
|
|
if (translated && translated !== normalizedUnit) { |
|
|
|
return translated; |
|
|
|
} |
|
|
|
return DISPLAY_PRICING_UNIT_FALLBACKS[normalizedUnit] || normalizedUnit; |
|
|
|
}; |
|
|
|
|
|
|
|
export const summarizeDisplayPricing = ({ |
|
|
|
record, |
|
|
|
displayPrice, |
|
|
|
@@ -682,7 +699,7 @@ export const summarizeDisplayPricing = ({ |
|
|
|
min === max |
|
|
|
? displayPrice(min) |
|
|
|
: `${displayPrice(min)} - ${displayPrice(max)}`; |
|
|
|
return `${priceText} / ${t(unit)}`; |
|
|
|
return `${priceText} / ${formatDisplayPricingUnit(unit, t)}`; |
|
|
|
}); |
|
|
|
|
|
|
|
return { |
|
|
|
|