| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | import type { CSSProperties } from 'react'import { memo, useMemo } from 'react'import ReactECharts from 'echarts-for-react'import type { EChartsOption } from 'echarts'import style from './index.module.css'import classNames from '@/utils/classnames'export type SimplePieChartProps = {  percentage?: number  fill?: string  stroke?: string  size?: number  animationDuration?: number  className?: string}const SimplePieChart = ({ percentage = 80, fill = '#fdb022', stroke = '#f79009', size = 12, animationDuration, className }: SimplePieChartProps) => {  const option: EChartsOption = useMemo(() => ({    series: [      {        type: 'pie',        radius: ['83%', '100%'],        animation: false,        data: [          { value: 100, itemStyle: { color: stroke } },        ],        emphasis: {          disabled: true,        },        labelLine: {          show: false,        },        cursor: 'default',      },      {        type: 'pie',        radius: '83%',        animationDuration: animationDuration ?? 600,        data: [          { value: percentage, itemStyle: { color: fill } },          { value: 100 - percentage, itemStyle: { color: '#fff' } },        ],        emphasis: {          disabled: true,        },        labelLine: {          show: false,        },        cursor: 'default',      },    ],  }), [stroke, fill, percentage, animationDuration])  return (    <ReactECharts      option={option}      className={classNames(style.simplePieChart, className)}      style={{        '--simple-pie-chart-color': fill,        'width': size,        'height': size,      } as CSSProperties}    />  )}export default memo(SimplePieChart)
 |