import { memo } from 'react'; import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, } from 'recharts'; import { CLINICAL_COLORS, TOOLTIP_STYLE } from './chartColors'; interface CostByDiseaseChartProps { data: { diagnosis: string; mean_cost: number; n: number }[]; } function truncate(s: string, max: number): string { return s.length > max ? s.slice(0, max) + '…' : s; } /** 各病种平均费用横向柱状图。 */ export const CostByDiseaseChart = memo(function CostByDiseaseChart({ data, }: CostByDiseaseChartProps) { if (!data || data.length === 0) { return
暂无数据
; } const chartData = [...data] .sort((a, b) => a.mean_cost - b.mean_cost) .map((d) => ({ ...d, displayName: truncate(d.diagnosis, 8) })); return ( `¥${(v / 1000).toFixed(0)}k`} /> [`¥${Math.round(v).toLocaleString()}`, '人均费用']} /> ); });