From 973574fd62a1a130a1c229f812e70cfe3763b48e Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 14 十月 2026 09:54:10 +0800
Subject: [PATCH] feat(bi): 增加CRM数据展示功能并优化图表组件

---
 src/views/bi/dashboard/modules/ChartCard.vue |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/views/bi/dashboard/modules/ChartCard.vue b/src/views/bi/dashboard/modules/ChartCard.vue
index 88e4152..93b23c0 100644
--- a/src/views/bi/dashboard/modules/ChartCard.vue
+++ b/src/views/bi/dashboard/modules/ChartCard.vue
@@ -41,12 +41,16 @@
   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': {
@@ -125,6 +129,9 @@
     <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"

--
Gitblit v1.9.3