| | |
| | | const valueKey = keys[1] || 'value'; |
| | | const labels = chart.data.map((d: Record<string, unknown>) => String(d[labelKey] || '')); |
| | | const values = chart.data.map((d: Record<string, unknown>) => Number(d[valueKey]) || 0); |
| | | const series = keys.slice(1).map((key) => ({ |
| | | name: keys.length > 2 ? key : chart.name, |
| | | data: chart.data!.map((row) => Number(row[key]) || 0), |
| | | })); |
| | | |
| | | switch (chart.chartType) { |
| | | case 'bar': |
| | | return getBarChartOptions(labels, [{ name: chart.name, data: values }]); |
| | | return getBarChartOptions(labels, series, undefined, chart.chartOptions?.horizontal === true); |
| | | case 'line': |
| | | return getAreaLineChartOptions(labels, [{ name: chart.name, data: values }]); |
| | | return getAreaLineChartOptions(labels, series); |
| | | case 'pie': |
| | | return getDonutPieChartOptions(labels.map((l, i) => ({ name: l, value: values[i] || 0 }))); |
| | | case 'gauge': { |
| | |
| | | <div v-if="chart.error" class="flex h-[240px] items-center justify-center"> |
| | | <Empty :description="chart.error" /> |
| | | </div> |
| | | <div v-else-if="!chart.data?.length" class="flex h-[240px] items-center justify-center"> |
| | | <Empty description="暂无业务数据" /> |
| | | </div> |
| | | <EchartsUI |
| | | v-else |
| | | ref="chartRef" |