前言
数据可视化已成为企业决策、业务监控不可或缺的一环。一个直观、动态、可定制的数据大屏项目,能够极大地提升信息传递效率,帮助团队快速把握业务动态。
本文将推荐一个基于Vue、DataV、Echarts框架构建的数据大屏项目,该项目不仅支持数据动态刷新渲染,还提供图表自由替换、全局样式调整等强大功能,为开发提供一个高效、灵活的数据展示解决方案。
项目介绍
项目是一个集数据展示、图表渲染、动态更新于一体的数据大屏项目。
它利用Vue3的响应式特性,结合DataV丰富的可视化组件库和Echarts强大的图表绘制能力,实现了数据的实时渲染与动态展示。
项目支持全屏展示,通过精心设计的布局和交互,确保用户能够在大屏上获得最佳的数据浏览体验。同时,项目提供详细的文档和示例,便于开发快速上手和定制开发。
项目功能
1、数据动态刷新
通过Vue的组件化开发,实现了数据的实时获取与动态渲染,确保大屏数据始终与业务数据保持同步。
2、图表自由替换
项目内部图表可自由替换,支持Echarts官方社区中的各类图表案例,满足不同场景下的数据展示需求。
3、全局样式调整
通过全局CSS文件,开发者可以轻松调整整个项目的样式,包括字体、颜色、布局等,实现快速定制。
4、组件复用
通过封装可复用的图表组件,减少了重复代码,提高了开发效率。例如,任务通过率与任务达标率模块即使用了同一图表组件,仅通过传入不同参数实现差异化展示。
5、响应式设计
项目采用scale缩放方案,支持不同分辨率屏幕的适配,确保在不同设备上都能获得良好的展示效果。
项目说明
主要文件
文件/目录 | 作用/功能 |
---|---|
main.js | 主目录文件,引入 ECharts/DataV 等依赖 |
utils | 工具函数与 mixins 函数(如自适应适配逻辑) |
views/index.vue | 项目主结构文件 |
views/其余文件 | 界面各区域组件(按位置命名,如 center.vue ) |
assets | 静态资源目录(Logo、背景图片等) |
assets/style.scss | 全局通用 CSS 文件 |
assets/index.scss | Index 界面的专属 CSS 文件 |
components/echart | 所有 ECharts 图表组件(按位置命名) |
common/... | 全局封装的 ECharts 和屏幕适配插件(如 flexible 替代方案) |
项目使用
1、启动项目
依赖要求:Node.js + pnpm
步骤:
下载项目后,在主目录运行 pnpm install
拉取依赖。
启动命令:npm run serve
(或通过 vue-cli
启动)。
手动全屏:按 F11
。
问题处理:若编译提示缺少 DataV 依赖,手动安装:
bash
npm install @jiaminghi/data-view # 或 yarn add @jiaminghi/data-view
2、封装组件渲染图表
基础组件:所有图表基于 common/echart/index.vue
封装,支持:
动态数据监听(使用防抖函数优化性能)。
屏幕尺寸变动自适应。
默认样式:配置文件路径 common/echart/theme.json
。
组件参数:
参数名 | 类型 | 作用 |
---|---|---|
id |
String | 图表唯一标识(非必填,默认使用 $el ) |
className |
String | 自定义样式类名(非必填) |
options |
Object | ECharts 配置项(必填) |
height |
String | 图表高度(建议填写) |
width |
String | 图表宽度(建议填写) |
3、动态渲染图表
案例路径:components/echart/[图表名]/chart.vue
核心逻辑
html
<template>
<div>
<Echart :options="options" id="id" :height="height" :width="width" />
</div>
</template>
<script>
import Echart from '@/common/echart';
export default {
data() { return { options: {} } },
components: { Echart },
props: {
cdata: { type: Object, default: () => ({}) }
},
watch: {
cdata: {
handler(newData) {
this.options = { /* ECharts 配置 */ };
},
immediate: true,
deep: true
}
}
};
</script>
4、复用图表组件
案例:中间部分的"任务通过率"与"任务达标率"模块
实现方式:
父组件传递参数(如 views/center.vue
):
html
<centerChart :id="rate[0].id" :tips="rate[0].tips" :colorObj="rate[0].colorData" />
<centerChart :id="rate[1].id" :tips="rate[1].tips" :colorObj="rate[1].colorData" />
<script>
export default {
data() {
return {
rate: [
{ id: "centerRate1", tips: 60, /* 其他配置 */ },
{ id: "centerRate2", tips: 40, colorData: { /* 颜色配置 */ } }
]
};
}
};
</script>
子组件接收参数(如 components/echart/center/centerChartRate.vue
):
js
<script>
export default {
props: ['id', 'tips', 'colorObj'],
// 根据参数动态渲染图表
};
</script>
5、更换边框
方法:使用 DataV 自带边框组件,替换 views/[区域].vue
中的对应标签:
html
<dv-border-box-1></dv-border-box-1> <!-- 边框类型1 -->
<dv-border-box-2></dv-border-box-2> <!-- 边框类型2 -->
更多边框:参考 DataV 官网文档。
6、更换图表
路径:直接修改 components/echart/[图表名]
下的文件。
参考资源:ECharts 官方示例库。
7、Mixins 解决自适应适配
文件:utils/resizeMixins.js
应用:注入到 common/echart/index.vue
,实现对 this.chart
的功能扩展(如窗口变化时重绘图表)。
8、屏幕适配方案
版本:1.5 版本弃用 flexible
+ rem
,改用 CSS3 scale
缩放。
逻辑:
基准尺寸:1920px * 1080px
。
同比例屏幕:100% 填充。
非同比例屏幕:自动计算比例居中填充,不足部分留白。
代码路径:src/utils/userDraw.js
。
9、请求数据(建议)
工具:Axios
全局配置示例(main.js
):
javascript
import axios from 'axios';
Vue.prototype.$http = axios.create({
timeout: 20000,
baseURL: 'http://172.0.0.1:8080'
// 后端接口地址
});
项目效果



项目源码
源码托管在代码仓库中,可以通过拉取master分支的代码获取最新版本。项目结构清晰,包含主目录文件、工具函数、界面组件、静态资源等多个目录和文件。
大家可以根据项目文档和示例代码,快速上手并定制开发。在开发过程中,建议按照功能区域重命名文件,以便于管理和维护。
Gitee:gitee.com/MTrun/big-s...
总结
一个基于Vue、DataV、Echarts框架构建的数据大屏项目,具有数据动态刷新、图表自由替换、全局样式调整等强大功能。
通过模块化设计和高度可定制的特性,项目满足了不同场景下的数据展示需求。同时,项目还提供了丰富的文档和示例代码,便于大家快速上手和定制开发。
关键词
数据大屏、Vue、DataV、Echarts、动态刷新、图表替换、响应式设计、项目源码
最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。
也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!
优秀是一种习惯,欢迎大家留言学习!