Lucas的个人博客

Vue 3 + ECharts 构建金融数据可视化大屏

72 min read

Vue 3 + ECharts 构建金融数据可视化大屏

项目背景

为某券商打造一套面向投顾团队的数据可视化大屏系统,核心需求:

  • 实时展示 A 股市场行情数据
  • 支持多屏联动(主屏 + 2 块副屏)
  • 暗色主题,符合 Midnight Slate 设计规范
  • 自适应 1920×1080 到 4K 分辨率

技术选型

模块方案理由
框架Vue 3 + Composition API逻辑复用方便
图表ECharts 5金融图表生态最完善
实时数据WebSocket + Pinia全局状态同步
自适应CSS transform: scale等比缩放,无布局错乱
构建Vite秒级 HMR

核心实现

大屏自适应缩放

// composables/useScreenScale.ts
export function useScreenScale(
  designWidth = 1920,
  designHeight = 1080
) {
  const scale = ref(1)
  
  function updateScale() {
    const w = window.innerWidth / designWidth
    const h = window.innerHeight / designHeight
    scale.value = Math.min(w, h)
  }
  
  onMounted(() => {
    updateScale()
    window.addEventListener('resize', updateScale)
  })
  
  return { scale }
}

实时数据推送

WebSocket 接收行情推送,Pinia store 统一管理状态。图表组件通过 watch 监听数据变化后调用 ECharts 的 setOption 增量更新,避免全量重绘。

上线效果

系统上线后支撑了营业部 20+ 块大屏的同时展示,数据刷新延迟控制在 100ms 以内。

← 返回博客列表 Thanks for reading 🎉