import { Card, Col, Row, Space, Statistic, Tag, Typography, theme } from 'antd'; import { useEffect, useMemo, useState } from 'react'; import { dashboardApi } from '../api/modules'; const { Title, Text } = Typography; interface PlatformStats { accounts: number; tasks: number; success: number; failed: number; } interface DashboardStats { douyu: PlatformStats & { cookies: number; }; huya: PlatformStats & { goods: number; rechargeGoods: number; }; } const EMPTY_STATS: DashboardStats = { douyu: { accounts: 0, tasks: 0, success: 0, failed: 0, cookies: 0, }, huya: { accounts: 0, tasks: 0, success: 0, failed: 0, goods: 0, rechargeGoods: 0, }, }; function StatCard({ title, value, color, loading, }: { title: string; value: number; color?: string; loading?: boolean; }) { return ( ); } export default function DashboardPage() { const { token } = theme.useToken(); const [loading, setLoading] = useState(true); const [stats, setStats] = useState(EMPTY_STATS); useEffect(() => { let ignore = false; async function loadDashboard() { setLoading(true); try { const data = await dashboardApi.summary(); if (!ignore) setStats(data); } finally { if (!ignore) setLoading(false); } } void loadDashboard(); return () => { ignore = true; }; }, []); const totalStats = useMemo(() => ({ accounts: stats.douyu.accounts + stats.huya.accounts, tasks: stats.douyu.tasks + stats.huya.tasks, success: stats.douyu.success + stats.huya.success, failed: stats.douyu.failed + stats.huya.failed, }), [stats]); return (
概览 斗鱼 虎牙
斗鱼 账号登录、Cookie 产出和批量登录任务
虎牙 账号 Cookie、活动任务、兑换商品和充值商品
); }