diff --git a/yunkes/src/composables/useChart.ts b/yunkes/src/composables/useChart.ts index 4bf6e7d..46072b5 100644 --- a/yunkes/src/composables/useChart.ts +++ b/yunkes/src/composables/useChart.ts @@ -1,5 +1,6 @@ // ECharts 按需封装(2026-09-04):注册/主题/自适应/销毁一处管——后续所有 // 图表页复用(二批 A2/A4/A5 直接 import 本 composable)。 +// 契约:容器须稳定存在(v-show 可,v-if 卸载重建不支持——chart 只 init 一次)。 import { onBeforeUnmount, type Ref } from 'vue' import * as echarts from 'echarts/core' import { LineChart, BarChart } from 'echarts/charts' @@ -14,7 +15,10 @@ export function useChart(el: Ref) { let ro: ResizeObserver | null = null const render = (option: EChartsCoreOption) => { - if (!el.value) return + if (!el.value) { + console.warn('[useChart] render called before element mounted') + return + } if (!chart) { chart = echarts.init(el.value) ro = new ResizeObserver(() => chart?.resize()) diff --git a/yunkes/src/views/analytics/DashboardView.vue b/yunkes/src/views/analytics/DashboardView.vue index 3aae942..1d50bd8 100644 --- a/yunkes/src/views/analytics/DashboardView.vue +++ b/yunkes/src/views/analytics/DashboardView.vue @@ -1,8 +1,245 @@ - + + +