import { useQuery } from '@tanstack/react-query' import api from '@/lib/api' import { PieChart, Pie, Cell, Tooltip, ResponsiveContainer } from 'recharts' import { DataTable } from '@/components/DataTable' import { Badge } from '@/components/Badge' import { MetricCard } from '@/components/MetricCard' import { Pagination } from '@/components/Pagination' import { useState, useMemo } from 'react' const REVIEW_COLORS = { '达标': '#22c55e', '改善中': '#eab308', '未改善': '#ef4444' } const PAGE_SIZE = 10 export function MonthlyReviewPage() { const [month, setMonth] = useState('2026-05') const [page, setPage] = useState(1) const { data } = useQuery({ queryKey: ['monthly-review', month], queryFn: () => api.get('/tasks/monthly-review', { params: { month } }), }) const rd = (data as any)?.data const summary = rd?.summary || { total: 0, passed: 0, improving: 0, failed: 0 } const details = rd?.details || [] const pagedDetails = useMemo(() => details.slice((page - 1) * PAGE_SIZE, page * PAGE_SIZE), [details, page]) const pieData = [ { name: '达标', value: summary.passed }, { name: '改善中', value: summary.improving }, { name: '未改善', value: summary.failed }, ].filter((d) => d.value > 0) return (

月度验收

setMonth(e.target.value)} className="rounded-md border px-3 py-1.5 text-sm" />
{/* 汇总卡片 */}
{/* 饼图 */}

验收结果分布

{pieData.length > 0 ? ( `${name}: ${value}`}> {pieData.map((d) => )} ) :
暂无验收数据
}
{/* 经验标准化 */}

经验标准化

达标门店的有效经验可标准化推广

{/* 明细表 */}

验收明细

}, ]} data={pagedDetails} />
) } function PracticeSection() { const { data } = useQuery({ queryKey: ['practices'], queryFn: () => api.get('/tasks/practices'), }) const practices = (data as any)?.data || [] return (
{practices.length === 0 ? (

暂无标准化经验

) : practices.map((p: any) => (
{p.practice_module}

标杆:{p.benchmark_store_name}

{p.key_actions}

))}
) }