- 替换 antd 为 tdesign-react 作为主要 UI 组件库 - 引入 Recharts 替代 @ant-design/charts 实现图表功能 - 移除主题系统相关代码(ThemeContext、themes 目录) - 更新所有组件以适配 TDesign 组件 API - 更新测试用例以匹配新的组件实现 - 新增 TDesign 和 Recharts 集成规范文档
45 lines
1.3 KiB
TypeScript
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>
|
|
);
|
|
}
|