diff --git a/web/src/components/table/model-pricing/modal/components/DynamicPricingBreakdown.jsx b/web/src/components/table/model-pricing/modal/components/DynamicPricingBreakdown.jsx index fd2be3f3..794627dd 100644 --- a/web/src/components/table/model-pricing/modal/components/DynamicPricingBreakdown.jsx +++ b/web/src/components/table/model-pricing/modal/components/DynamicPricingBreakdown.jsx @@ -20,7 +20,7 @@ For commercial licensing, please contact support@quantumnous.com import React from 'react'; import { Avatar, Tag, Table, Typography } from '@douyinfe/semi-ui'; import { IconPriceTag } from '@douyinfe/semi-icons'; -import { parseTiersFromExpr } from '../../../../../helpers'; +import { parseTiersFromExpr, getCurrencyConfig } from '../../../../../helpers'; import { BILLING_VARS } from '../../../../../constants'; import { splitBillingExprAndRequestRules, @@ -36,8 +36,6 @@ import { const { Text } = Typography; -const PRICE_SUFFIX = '$/1M tokens'; - const VAR_LABELS = { p: '输入', c: '输出' }; const OP_LABELS = { '<': '<', '<=': '≤', '>': '>', '>=': '≥' }; const TIME_FUNC_LABELS = { hour: '小时', minute: '分钟', weekday: '星期', month: '月份', day: '日期' }; @@ -89,6 +87,7 @@ function describeGroup(group, t) { } export default function DynamicPricingBreakdown({ billingExpr, t }) { + const { symbol, rate } = getCurrencyConfig(); const { billingExpr: baseExpr, requestRuleExpr: ruleExpr } = splitBillingExprAndRequestRules(billingExpr || ''); @@ -132,9 +131,9 @@ export default function DynamicPricingBreakdown({ billingExpr, t }) { ...priceFields .filter(([field]) => hasTiers && tiers.some((tier) => tier[field] > 0)) .map(([field, label]) => ({ - title: `${t(label)} (${PRICE_SUFFIX})`, + title: `${t(label)} (${symbol}/1M tokens)`, dataIndex: field, - render: (v) => v > 0 ? ${v.toFixed(4)} : '-', + render: (v) => v > 0 ? {`${symbol}${(v * rate).toFixed(4)}`} : '-', })), ]; diff --git a/web/src/helpers/utils.jsx b/web/src/helpers/utils.jsx index f73df714..a4af4f24 100644 --- a/web/src/helpers/utils.jsx +++ b/web/src/helpers/utils.jsx @@ -900,6 +900,20 @@ export const getModelPriceItems = ( export const formatDynamicPriceSummary = (billingExpr, t, groupRatio = 1) => { if (!billingExpr) return {t('动态计费')}; + const quotaDisplayType = localStorage.getItem('quota_display_type') || 'USD'; + let symbol = '$'; + let rate = 1; + try { + const s = JSON.parse(localStorage.getItem('status') || '{}'); + if (quotaDisplayType === 'CNY') { + symbol = '¥'; + rate = s?.usd_exchange_rate || 7; + } else if (quotaDisplayType === 'CUSTOM') { + symbol = s?.custom_currency_symbol || '¤'; + rate = s?.custom_currency_exchange_rate || 1; + } + } catch (e) {} + const gr = groupRatio || 1; const exprBody = billingExpr.replace(/^v\d+:/, ''); const tierMatches = exprBody.match(/tier\(/g) || []; @@ -933,7 +947,7 @@ export const formatDynamicPriceSummary = (billingExpr, t, groupRatio = 1) => { {varLabels.map(([key, label]) => key in varCoeffs ? ( - {t(label)} ${(varCoeffs[key] * gr).toFixed(4)}{unitSuffix} + {`${t(label)} ${symbol}${(varCoeffs[key] * gr * rate).toFixed(4)}${unitSuffix}`} ) : null, )}