mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-31 08:25:35 +00:00
fix(frontend): 用户侧套餐有效期单位不再把「月/周」显示成「天」
管理端表单保存的有效期单位是复数(days/weeks/months),数据库默认值 与历史数据是单数(day)。用户侧套餐卡片与订单确认面板此前只匹配单数 'month'(以及计费根本不支持的 'year'),管理端存的 'months' 永远落进 默认分支:「1 个月」的套餐被显示成「1天」(#4607),'weeks' 则会把 周数错标成天数。 后端计费 psComputeValidityDays 对 week/weeks、month/months 单复数均 按 ×7/×30 天换算,实扣是对的——这是纯显示缺陷,但直接造成「显示 1 天、 实付 1 个月」的定价误解。 修复:抽出与计费语义一一对应的 planValiditySuffix 辅助函数(单复数 归一化;month→「月/N个月」、week→「N周」、其余含未知单位一律按天, 与后端兜底一致),SubscriptionPlanCard 与 PaymentView 两处共用; 补充 zh/en 的 weeks 文案与单元/组件测试。
This commit is contained in:
@@ -284,6 +284,7 @@ import SubscriptionPlanCard from '@/components/payment/SubscriptionPlanCard.vue'
|
||||
import PaymentStatusPanel from '@/components/payment/PaymentStatusPanel.vue'
|
||||
import Icon from '@/components/icons/Icon.vue'
|
||||
import { DEFAULT_PAYMENT_CURRENCY, formatPaymentAmount, normalizePaymentCurrency } from '@/components/payment/currency'
|
||||
import { planValiditySuffix as validitySuffixOf } from '@/components/payment/validity'
|
||||
import type { PaymentMethodOption } from '@/components/payment/PaymentMethodSelector.vue'
|
||||
import { buildPaymentErrorToastMessage, describePaymentScenarioError } from './paymentUx'
|
||||
import { hasWechatResumeQuery, parseWechatResumeRoute, stripWechatResumeQuery } from './paymentWechatResume'
|
||||
@@ -718,10 +719,7 @@ const renewalPlans = computed(() => {
|
||||
|
||||
const planValiditySuffix = computed(() => {
|
||||
if (!selectedPlan.value) return ''
|
||||
const u = selectedPlan.value.validity_unit || 'day'
|
||||
if (u === 'month') return t('payment.perMonth')
|
||||
if (u === 'year') return t('payment.perYear')
|
||||
return `${selectedPlan.value.validity_days}${t('payment.days')}`
|
||||
return validitySuffixOf(selectedPlan.value, t)
|
||||
})
|
||||
|
||||
function planHasPeakRate(plan: SubscriptionPlan): boolean {
|
||||
|
||||
Reference in New Issue
Block a user