import { useState, useEffect } from 'react'; import DashboardLayout from '../../components/Layout/DashboardLayout'; import { getDemoData } from '../../lib/demo-data'; import { UsersIcon, PhoneIcon, DocumentTextIcon, CurrencyDollarIcon, CheckCircleIcon, ClockIcon, ExclamationTriangleIcon, ArrowUpIcon, ArrowDownIcon, EyeIcon } from '@heroicons/react/24/outline'; interface DashboardStats { totalUsers: number; activeUsers: number; totalCalls: number; activeCalls: number; totalOrders: number; pendingOrders: number; completedOrders: number; totalRevenue: number; monthlyRevenue: number; activeInterpreters: number; } interface RecentActivity { id: string; type: 'call' | 'order' | 'user' | 'system'; title: string; description: string; time: string; status: 'success' | 'warning' | 'error' | 'info'; } export default function Dashboard() { const [stats, setStats] = useState(null); const [activities, setActivities] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { const loadDashboardData = async () => { try { setLoading(true); // 模拟加载延迟 await new Promise(resolve => setTimeout(resolve, 1000)); // 使用演示数据 const mockStats: DashboardStats = { totalUsers: 1248, activeUsers: 856, totalCalls: 3456, activeCalls: 12, totalOrders: 2789, pendingOrders: 45, completedOrders: 2654, totalRevenue: 125000, monthlyRevenue: 15600, activeInterpreters: 23 }; const mockActivities: RecentActivity[] = [ { id: '1', type: 'call', title: '新通话开始', description: '张三开始了中英互译通话', time: '2分钟前', status: 'success' }, { id: '2', type: 'order', title: '订单完成', description: '订单ORD-2024-001已完成,费用¥180', time: '5分钟前', status: 'success' }, { id: '3', type: 'user', title: '新用户注册', description: 'ABC公司注册了企业账户', time: '10分钟前', status: 'info' }, { id: '4', type: 'system', title: '系统维护', description: '系统将在今晚22:00-23:00进行维护', time: '30分钟前', status: 'warning' }, { id: '5', type: 'call', title: '通话异常', description: '通话CALL-2024-003出现连接问题', time: '1小时前', status: 'error' } ]; setStats(mockStats); setActivities(mockActivities); } catch (error) { console.error('Failed to load dashboard data:', error); } finally { setLoading(false); } }; loadDashboardData(); }, []); const getStatusColor = (status: string) => { switch (status) { case 'success': return 'text-green-600 bg-green-100'; case 'warning': return 'text-yellow-600 bg-yellow-100'; case 'error': return 'text-red-600 bg-red-100'; default: return 'text-blue-600 bg-blue-100'; } }; const getStatusIcon = (status: string) => { switch (status) { case 'success': return ; case 'warning': return ; case 'error': return ; default: return ; } }; if (loading) { return (
); } return (
{/* 欢迎区域 */}

欢迎回来!

这里是您的管理仪表板,查看最新的业务数据和活动。

{/* 统计卡片 */}
总用户数
{stats?.totalUsers || 0}
增加了 12%
活跃用户: {stats?.activeUsers || 0}
总通话数
{stats?.totalCalls || 0}
增加了 8%
进行中: {stats?.activeCalls || 0}
总订单数
{stats?.totalOrders || 0}
增加了 15%
待处理: {stats?.pendingOrders || 0}
总收入
¥{stats?.totalRevenue?.toLocaleString() || 0}
增加了 22%
本月: ¥{stats?.monthlyRevenue?.toLocaleString() || 0}
{/* 最近活动和快速操作 */}
{/* 最近活动 */}

最近活动

{activities.map((activity) => (
{getStatusIcon(activity.status)}
{activity.title}
{activity.description}
{activity.time}
{activity.status === 'success' && '成功'} {activity.status === 'warning' && '警告'} {activity.status === 'error' && '错误'} {activity.status === 'info' && '信息'}
))}
{/* 快速操作 */}

快速操作

); }