1
0
Files
nex/frontend/src/pages/Stats/index.tsx
lanyuanxiaoyao 2b1c5e96c3 refactor: 迁移 UI 组件库从 Ant Design 至 TDesign
- 替换 antd 为 tdesign-react 作为主要 UI 组件库
- 引入 Recharts 替代 @ant-design/charts 实现图表功能
- 移除主题系统相关代码(ThemeContext、themes 目录)
- 更新所有组件以适配 TDesign 组件 API
- 更新测试用例以匹配新的组件实现
- 新增 TDesign 和 Recharts 集成规范文档
2026-04-17 18:22:13 +08:00

45 lines
1.3 KiB
TypeScript

import { useState, useMemo } from 'react';
import { useProviders } from '@/hooks/useProviders';
import { useStats } from '@/hooks/useStats';
import { StatCards } from './StatCards';
import { UsageChart } from './UsageChart';
import { StatsTable } from './StatsTable';
export function StatsPage() {
const { data: providers = [] } = useProviders();
const [providerId, setProviderId] = useState<string | undefined>();
const [modelName, setModelName] = useState<string | undefined>();
const [dateRange, setDateRange] = useState<[Date | null, Date | null] | null>(null);
const params = useMemo(
() => ({
providerId,
modelName,
startDate: dateRange?.[0]?.toISOString().split('T')[0],
endDate: dateRange?.[1]?.toISOString().split('T')[0],
}),
[providerId, modelName, dateRange],
);
const { data: stats = [], isLoading } = useStats(params);
return (
<div>
<StatCards stats={stats} />
<UsageChart stats={stats} />
<StatsTable
providers={providers}
stats={stats}
loading={isLoading}
providerId={providerId}
modelName={modelName}
dateRange={dateRange}
onProviderIdChange={setProviderId}
onModelNameChange={setModelName}
onDateRangeChange={setDateRange}
/>
</div>
);
}