Add File
This commit is contained in:
70
src/family/components/TrendChart.tsx
Normal file
70
src/family/components/TrendChart.tsx
Normal file
@@ -0,0 +1,70 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
LineChart,
|
||||
Line,
|
||||
XAxis,
|
||||
YAxis,
|
||||
CartesianGrid,
|
||||
Tooltip,
|
||||
ResponsiveContainer,
|
||||
} from 'recharts';
|
||||
|
||||
interface TrendChartProps {
|
||||
title: string;
|
||||
data: Array<{
|
||||
date: string;
|
||||
value: number;
|
||||
label?: string;
|
||||
}>;
|
||||
dataKey?: string;
|
||||
color?: string;
|
||||
height?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 趋势图表组件
|
||||
* 用于展示情绪、用药依从性等趋势
|
||||
*/
|
||||
export const TrendChart: React.FC<TrendChartProps> = ({
|
||||
title,
|
||||
data,
|
||||
dataKey = 'value',
|
||||
color = '#1890ff',
|
||||
height = 300,
|
||||
}) => {
|
||||
return (
|
||||
<div className="card p-6">
|
||||
<h3 className="text-lg font-bold text-gray-900 mb-4">{title}</h3>
|
||||
<ResponsiveContainer width="100%" height={height}>
|
||||
<LineChart data={data}>
|
||||
<CartesianGrid strokeDasharray="3 3" stroke="#f0f0f0" />
|
||||
<XAxis
|
||||
dataKey="date"
|
||||
tick={{ fill: '#666', fontSize: 12 }}
|
||||
tickLine={{ stroke: '#e0e0e0' }}
|
||||
/>
|
||||
<YAxis
|
||||
tick={{ fill: '#666', fontSize: 12 }}
|
||||
tickLine={{ stroke: '#e0e0e0' }}
|
||||
/>
|
||||
<Tooltip
|
||||
contentStyle={{
|
||||
backgroundColor: '#fff',
|
||||
border: '1px solid #e0e0e0',
|
||||
borderRadius: '8px',
|
||||
padding: '8px 12px',
|
||||
}}
|
||||
/>
|
||||
<Line
|
||||
type="monotone"
|
||||
dataKey={dataKey}
|
||||
stroke={color}
|
||||
strokeWidth={3}
|
||||
dot={{ fill: color, r: 5 }}
|
||||
activeDot={{ r: 7 }}
|
||||
/>
|
||||
</LineChart>
|
||||
</ResponsiveContainer>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user