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,
)}