import { useState, useEffect } from 'react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/client/components/ui/card'; import { Badge } from '@/client/components/ui/badge'; import { Skeleton } from '@/client/components/ui/skeleton'; import { Alert, AlertDescription } from '@/client/components/ui/alert'; import { Clock, History, AlertCircle } from 'lucide-react'; import { format } from 'date-fns'; import { zhCN } from 'date-fns/locale'; import { useAuth } from '@/client/home-shadcn/hooks/AuthProvider'; interface PaymentRecord { id: string; amount: number; count: number; status: string; createdAt: string; expireAt?: string; paymentMethod?: string; transactionId?: string; } interface RechargeRecordsProps { userId: number; } export default function RechargeRecords({ userId }: RechargeRecordsProps) { const { token } = useAuth(); const [records, setRecords] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { fetchRechargeRecords(); }, [userId]); const fetchRechargeRecords = async () => { try { setLoading(true); setError(null); // 这里应该调用实际的API获取充值记录 // 暂时使用模拟数据 const mockRecords: PaymentRecord[] = [ { id: '1', amount: 99.9, count: 500, status: 'completed', createdAt: '2024-08-15T10:30:00Z', expireAt: '2025-08-15T23:59:59Z', paymentMethod: 'alipay', transactionId: '202408151030001234' }, { id: '2', amount: 29.9, count: 100, status: 'completed', createdAt: '2024-08-01T14:20:00Z', paymentMethod: 'wechat', transactionId: '202408011420005678' }, { id: '3', amount: 299.9, count: 2000, status: 'completed', createdAt: '2024-07-20T09:15:00Z', expireAt: '2025-07-20T23:59:59Z', paymentMethod: 'alipay', transactionId: '202407200915003210' } ]; // 模拟API延迟 setTimeout(() => { setRecords(mockRecords); setLoading(false); }, 800); } catch (err) { setError('获取充值记录失败,请稍后重试'); setLoading(false); } }; const getStatusBadge = (status: string) => { switch (status) { case 'completed': return 已完成; case 'pending': return 处理中; case 'failed': return 失败; case 'refunded': return 已退款; default: return {status}; } }; const getPaymentMethodText = (method?: string) => { switch (method) { case 'alipay': return '支付宝'; case 'wechat': return '微信支付'; case 'bank': return '银行转账'; default: return '未知方式'; } }; if (loading) { return (
{[1, 2, 3].map((i) => (
))}
); } if (error) { return ( {error} ); } if (records.length === 0) { return (

暂无充值记录

您还没有进行过充值

); } return (
{records.map((record) => (

充值 {record.count} 次

{getStatusBadge(record.status)}

{format(new Date(record.createdAt), 'yyyy年MM月dd日 HH:mm', { locale: zhCN })}

支付方式:{getPaymentMethodText(record.paymentMethod)}

{record.transactionId && (

订单号:{record.transactionId}

)}

¥{record.amount}

{record.expireAt && (
有效期至:{format(new Date(record.expireAt), 'yyyy年MM月dd日', { locale: zhCN })}
)}
))}
); }