/* Copyright (C) 2025 QuantumNous This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . For commercial licensing, please contact support@quantumnous.com */ import React, { useRef } from 'react'; import { Avatar, Typography, Card, Button, Input, InputNumber, Banner, Skeleton, Divider, Form, Space, Row, Col, Spin, } from '@douyinfe/semi-ui'; import { SiAlipay, SiWechat, SiStripe } from 'react-icons/si'; import { CreditCard, Gift, Link as LinkIcon, Coins, Wallet, BarChart2, TrendingUp } from 'lucide-react'; import { IconGift } from '@douyinfe/semi-icons'; import { useMinimumLoadingTime } from '../../hooks/common/useMinimumLoadingTime'; const { Text } = Typography; const RechargeCard = ({ t, enableOnlineTopUp, enableStripeTopUp, presetAmounts, selectedPreset, selectPresetAmount, formatLargeNumber, priceRatio, topUpCount, minTopUp, renderQuotaWithAmount, getAmount, setTopUpCount, setSelectedPreset, renderAmount, amountLoading, payMethods, preTopUp, paymentLoading, payWay, redemptionCode, setRedemptionCode, topUp, isSubmitting, topUpLink, openTopUpLink, // 新增:用于右侧统计卡片 userState, renderQuota, statusLoading, }) => { const onlineFormApiRef = useRef(null); const redeemFormApiRef = useRef(null); const showAmountSkeleton = useMinimumLoadingTime(amountLoading); return ( {/* 卡片头部 */}
{t('账户充值')}
{t('多种充值方式,安全便捷')}
{/* 统计数据 */}
{t('账户统计')}
{/* 统计数据 */}
{/* 当前余额 */}
{renderQuota(userState?.user?.quota)}
{t('当前余额')}
{/* 历史消耗 */}
{renderQuota(userState?.user?.used_quota)}
{t('历史消耗')}
{/* 请求次数 */}
{userState?.user?.request_count || 0}
{t('请求次数')}
} > {/* 在线充值表单 */} {statusLoading ? (
) : (enableOnlineTopUp || enableStripeTopUp) ? (
(onlineFormApiRef.current = api)} initValues={{ topUpCount: topUpCount }} >
{(enableOnlineTopUp || enableStripeTopUp) && ( { if (value && value >= 1) { setTopUpCount(value); setSelectedPreset(null); await getAmount(value); } }} onBlur={(e) => { const value = parseInt(e.target.value); if (!value || value < 1) { setTopUpCount(1); getAmount(1); } }} formatter={(value) => (value ? `${value}` : '')} parser={(value) => value ? parseInt(value.replace(/[^\d]/g, '')) : 0} extraText={ } > {t('实付金额:')}{renderAmount()} } style={{ width: '100%' }} /> {payMethods.map((payMethod) => ( ))} )} {(enableOnlineTopUp || enableStripeTopUp) && ( {presetAmounts.map((preset, index) => ( ))} )}
) : ( )}
{/* 兑换码充值 */} {t('兑换码充值')} } >
(redeemFormApiRef.current = api)} initValues={{ redemptionCode: redemptionCode }} > setRedemptionCode(value)} prefix={} suffix={
} showClear style={{ width: '100%' }} extraText={topUpLink && ( {t('在找兑换码?')} {t('购买兑换码')} )} />
); }; export default RechargeCard;