Skip to content

仪表板功能

**本文档引用的文件** - [[ui-web/src/app/dashboard/page.tsx]](../../file/ui-web/src/app/dashboard/page.tsx) - [[ui-web/src/components/KPICard.tsx]](../../file/ui-web/src/components/kpicard.tsx) - [[ui-web/src/components/ChartComponent.tsx]](../../file/ui-web/src/components/chartcomponent.tsx) - [[ui-web/src/components/RealtimeChart.tsx]](../../file/ui-web/src/components/realtimechart.tsx) - [[ui-web/src/components/DataTable.tsx]](../../file/ui-web/src/components/datatable.tsx) - [[ui-web/src/components/DashboardGridStack.tsx]](../../file/ui-web/src/components/dashboardgridstack.tsx) - [[ui-web/src/hooks/useECharts.ts]](../../file/ui-web/src/hooks/useecharts.ts) - [[ui-web/src/utils/widgetDataTransform.ts]](../../file/ui-web/src/utils/widgetdatatransform.ts) - [[ui-web/src/utils/formatters.ts]](../../file/ui-web/src/utils/formatters.ts) - [[ui-web/src/store/useBiStore.ts]](../../file/ui-web/src/store/usebistore.ts) - [[bi-chat/bi-chat-web/src/components/chat/ChartViewer.tsx]](../../file/bi-chat/bi-chat-web/src/components/chat/chartviewer.tsx) - [[bi-chat/bi-chat-web/src/components/chat/ChartRenderer.tsx]](../../file/bi-chat/bi-chat-web/src/components/chat/chartrenderer.tsx)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件系统性梳理 BI 仪表板功能,覆盖实时数据展示机制、KPI 指标卡片设计与实现、多种图表类型集成(折线图、柱状图、饼图等)、响应式设计原则;并结合实际代码示例,说明仪表板组件的构建方式、数据绑定策略、实时更新机制;同时阐述仪表板的布局管理、拖拽排序功能与个性化配置选项,并提供性能优化技巧与最佳实践。

项目结构

仪表板功能主要位于前端工程 ui-web 的页面与组件层,采用模块化组织:

  • 页面层:仪表板入口页面负责聚合数据与布局
  • 组件层:KPI 卡片、通用图表、实时图表、数据表格、网格布局与部件渲染器
  • 工具层:数据转换、格式化、ECharts 封装 Hook
  • 状态层:BI 全局状态管理

图表来源

章节来源

核心组件

  • 仪表板页面:负责数据拉取、状态管理与布局编排
  • KPI 指标卡片:展示关键指标、趋势与变化率
  • 通用图表组件:基于 ECharts 支持折线、柱状、饼图、面积图
  • 实时图表组件:滚动窗口展示动态数据流
  • 数据表格:动态列与分页展示
  • 网格布局组件:支持拖拽排序、尺寸调整、部件增删改、模板与指标配置

章节来源

架构总览

仪表板采用“页面聚合 + 组件解耦 + 工具转换 + 状态驱动”的架构:

  • 页面层通过状态与副作用获取初始数据与模拟实时更新
  • 组件层通过 props 接收数据,内部封装图表初始化、销毁与响应式适配
  • 工具层提供统一的数据转换与格式化能力,保证不同部件的数据形态一致
  • 状态层集中管理 BI 初始化与用户上下文

图表来源

详细组件分析

实时数据展示机制

  • 页面层通过副作用模拟初始数据与定时更新,形成滚动窗口的实时数据
  • 实时图表组件基于 ECharts,按时间戳序列绘制折线图,自动平滑与填充区域
  • 图表组件监听窗口 resize,确保在容器变化时正确重绘

图表来源

章节来源

KPI 指标卡片设计与实现

  • 数据结构包含指标名称、数值、变化率与趋势方向
  • 格式化策略根据指标类型(金额、百分比、整数)进行本地化与单位换算
  • 趋势图标与颜色随趋势变化而动态切换

图表来源

章节来源

多种图表类型的集成

  • 通用图表组件支持折线、柱状、饼图、面积图四种类型,统一配置 ECharts 选项
  • 实时图表组件针对时间序列数据进行专门优化(平滑曲线、区域填充、动态坐标轴)
  • 图表组件通过 Hook 封装初始化、销毁与 resize 观察,减少重复逻辑

图表来源

章节来源

响应式设计原理

  • 页面使用栅格系统进行断点布局,移动端与桌面端自适应
  • 图表组件通过容器尺寸监听与 ECharts 自身的响应式容器实现自适应
  • 表格组件支持分页与列宽自适应,保障小屏可读性

图表来源

章节来源

布局管理、拖拽排序与个性化配置

  • 网格布局组件基于 GridStack,支持拖拽移动与拖拽右下角调整尺寸
  • 编辑模式下启用拖拽与缩放,非编辑模式禁用交互
  • 个性化配置包括:部件类型(卡片/表格/折线图/环形图)、模板选择、指标选择、维度选择、日期范围、排序与分页参数
  • 数据转换工具将 API 返回的预览数据转换为各部件所需的数据结构

图表来源

章节来源

数据绑定策略

  • 页面层通过状态管理数据,组件通过 props 接收数据并渲染
  • 部件渲染器通过统一的数据转换工具将 API 数据映射为卡片、表格、折线图、饼图的内部结构
  • 格式化工具根据字段元数据(单位、显示名)进行本地化与单位换算

图表来源

章节来源

个性化配置选项

  • 指标分组与选择:按一级分组筛选二级指标,支持动态生成选项
  • 环形图维度选择:从维度字典中筛选可用维度,支持缓存上次选择
  • 模板选择:从模板列表中选择,不同部件类型对应不同模板字段
  • 日期范围与排序:通过回调函数传递给部件,支持联动更新

章节来源

图表组件对比(聊天场景)

  • 聊天场景下的图表渲染器与查看器展示了更丰富的交互(切换图表类型、动画过渡、主题风格),可作为仪表板图表组件的扩展参考

章节来源

依赖关系分析

  • 组件间依赖:页面依赖 KPI、图表、实时图表、表格;网格布局依赖数据转换与格式化工具
  • 外部依赖:ECharts、GridStack、Ant Design Web React
  • 状态依赖:BI 初始化状态影响指标与维度字典

图表来源

章节来源

性能考虑

  • 图表初始化与销毁:组件在卸载时释放实例与事件监听,避免内存泄漏
  • 懒加载与按需引入:网格布局初始化时按需引入 GridStack,减少首屏体积
  • 数据转换与格式化:统一的转换与格式化工具避免重复计算,提升渲染效率
  • 响应式适配:使用 ResizeObserver 替代频繁的 window resize 监听,降低重排成本
  • 实时更新节流:页面层定时器按固定间隔更新,避免高频重渲染

章节来源

故障排查指南

  • 图表不显示或空白
    • 检查容器高度与宽度是否正确设置
    • 确认 ECharts 实例已初始化且未被提前销毁
    • 确认数据结构符合组件要求(categories/series 等)
  • 实时数据不更新
    • 检查定时器是否仍在运行
    • 确认新数据点已正确替换旧数据点
  • 拖拽排序无效
    • 确认处于编辑模式
    • 检查 GridStack 初始化是否成功
  • 数据格式异常
    • 检查格式化工具的字段单位与显示名映射
    • 确认数据转换工具的输入输出结构一致

章节来源

结论

本仪表板功能通过清晰的页面-组件-工具-状态分层,实现了 KPI 展示、多图表集成、实时数据更新与灵活的网格布局。借助统一的数据转换与格式化工具,以及对 ECharts 的封装,系统具备良好的可维护性与扩展性。建议在生产环境中进一步完善错误边界、加载状态与网络拦截策略,以提升用户体验与稳定性。

附录