vue实现酷炫可视化大屏

news/2024/11/24 8:49:04/

vue实现可视化大屏

  • 技术要点
  • 效果图
  • 项目搭建
    • 代码编写

技术要点

  • vue2
  • less
  • echarts
  • v-charts
  • flexible
    主要采用v-charts+echarts进行实现图表可视化

效果图

在这里插入图片描述

项目搭建

采用vue-cli脚手架进行项目创建

vue create 项目名称

项目结构:
在这里插入图片描述

代码编写

v-charts官网:https://v-charts.js.org/#/

首先看到上方目录结构进行主要分析

  • util:封装了个获取当前时间的工具类
  • components:编写图表可视化页面
  • assets:存放静态资源

依赖安装:

npm i v-charts echarts -S
npm i -s lib-flexible

flexible的使用请自行参考网络上的文章,它是与rem做配合实现自适应的

入口文件main:

引入VCharts以及flexible自适应布局的东西

import Vue from 'vue'
import App from './App.vue'
import VCharts from 'v-charts'//引入vcharts图表(饿了么开发!)
import 'lib-flexible/flexible.js'
Vue.use(VCharts)
Vue.config.productionTip = false
new Vue({render: h => h(App),
}).$mount('#app')

getTime.js工具类

/*** 补零*/
const addZero = function (num) {if (parseInt(num) < 10) {num = "0" + num}return num
}
/**
毫秒转日期
*/
export const formatDate = (ms) => {// console.log(ms)/*** ms:毫秒数*/if (ms) {var oDate = new Date(ms),oYear = oDate.getFullYear(),oMonth = oDate.getMonth() + 1,oDay = oDate.getDate(),oHour = oDate.getHours(),oMin = oDate.getMinutes(),oSen = oDate.getSeconds(),oTime = oYear + '-' + addZero(oMonth) + '-' + addZero(oDay) + ' ' + addZero(oHour) + ':' +addZero(oMin) + ':' + addZero(oSen);return oTime;} else {return ""}
}

echart.vue

<template><div><video id="myvideo"><source src="../assets/潮点网_84979.mp4" /></video><!-- 头部 --><header><h1>数据可视化--碰磕</h1><div class="time">{{nowTime}}</div></header><section class="main_box"><div class="box_children"><div class="panel bar"><h2>柱状图</h2><div class="chart"><ve-histogram :data="chartData" width="100%" height="100%"></ve-histogram></div><div class="panel_footer"></div></div><div class="panel bar"><h2>饼形图</h2><div class="chart"><ve-pie :data="chartData" width="100%" height="100%"></ve-pie></div><div class="panel_footer"></div></div><div class="panel bar"><h2>条形图</h2><div class="chart"><ve-bar :data="chartData" width="100%" height="100%"></ve-bar></div><div class="panel_footer"></div></div></div><div class="box_children"><ve-map :data="chartData" width="100%" height="100%"></ve-map></div><div class="box_children"><div class="panel bar"><h2>折线图</h2><div class="chart"><ve-line :data="chartData" width="100%" height="100%"></ve-line></div><div class="panel_footer"></div></div><div class="panel bar"><h2>仪表盘</h2><div class="chart"><ve-gauge :data="chartData" width="100%" height="100%"></ve-gauge></div><div class="panel_footer"></div></div><div class="panel bar"><h2>漏斗图</h2><div class="chart"><ve-funnel :data="chartData" width="100%" height="100%"></ve-funnel></div><div class="panel_footer"></div></div></div></section></div>
</template><script>
import {formatDate} from '../util/getTime'
export default {name: 'myEchart',data(){return{nowTime:'',mytime:null,chartData:{columns: ['日期', '访问用户', '下单用户'],rows: [{ '日期': '2018-05-22', '访问用户': 32371, '下单用户': 19810 },{ '日期': '2018-05-23', '访问用户': 12328, '下单用户': 4398 },{ '日期': '2018-05-24', '访问用户': 92381, '下单用户': 52910 }]}}},created(){this.mytime=setInterval(() => {let now=new Date();let time=now.getTime()+1000;this.nowTime=formatDate(time)}, 1000);},mounted(){this.playvideo();//播放视频},beforeDestroy(){clearInterval(this.mytime);//关闭倒计时},methods:{chartEvents(val){console.log(val);},playvideo(){let video = document.getElementById("myvideo");//调用video标签的播放函数setTimeout(() => {video.play();}, 2000);}}
}
</script>
<style lang="less" scoped>
video{
position: fixed; right: 0; bottom: 0;
min-width: 100%; min-height: 100%;
width: auto; height: auto; z-index: -100;
}
header{height: 1.25rem;// background: rgb(235, 230, 135);h1{text-align: center;line-height: 1.25rem;font-size: 0.475rem;color: #fff;}.time{position: absolute;top: 0;right: 0.375rem;line-height: 0.9375rem;color: white;font-size: 0.25rem;}
}
.main_box{display: flex;min-width: 1024px;max-width: 1920px;margin: 0 auto;// background-color: #666666;padding: .125rem .125rem 0;.box_children{flex: 3;}// 第二个盒子占五份.box_children:nth-child(2){flex: 5;}.panel{height: 30vh;padding: 0 0.1875rem 0.5rem;margin-bottom: 0.1875rem;border: 1px solid rgba(25, 186, 139, 0.17);background: rgba(255, 255, 255, 0.03);&::before{position: absolute;// top: 0;left: 0.1875rem;width: 10px;height: 10px;border-left: 2px solid blue;border-top: 2px solid blue;content: '';}&::after{position: absolute;top: 0;right: 0;width: 10px;height: 10px;border-right: 2px solid blue;border-top: 2px solid blue;content: '';}.panel_footer{position: absolute;bottom: 0;left: 0;width: 100%;&::before{position: absolute;bottom: 0;left: 0;width: 10px;height: 10px;border-left: 2px solid blue;border-bottom: 2px solid blue;content: '';}&::after{position: absolute;bottom: 0;right: 0;width: 10px;height: 10px;border-right: 2px solid blue;border-bottom: 2px solid blue;content: '';}}h2{height: .6rem;color: #fff;line-height: 0.6rem;text-align: center;font-size: 0.25rem;font-weight: 400;}.chart{height: 5rem;}}}
</style>

这样就实现了,这里背景图用的是一个炫酷的视频,开发者可自行替换成自己的视频…


http://www.ppmy.cn/news/339033.html

相关文章

FineReport_大屏搭建详细过程

最终呈现结果(比文档要详细) 一、将所需图表拉直决策报表中 选择绝对布局&#xff0c;可以设置大小 二、准备好数据源&#xff0c;设置各图表数据 点击图表--编辑--数据--设置数据源&#xff0c;&#xff0c;此处可查看帮助文档中各图表的详细设置&#xff0c;设置数据来源、…

模板学堂丨Zabbix监控告警大屏

DataEase开源数据可视化分析平台模板市场&#xff08; https://dataease.io/templates/&#xff09;于2022年6月正式发布。模板市场旨在为DataEase用户提供专业、美观、拿来即用的仪表板模板&#xff0c;方便用户根据自身的业务需求和使用场景选择对应的仪表板模板&#xff0c;…

axios实战进阶练习——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台

文章目录 &#x1f4cb;前言&#x1f3af;demo 介绍&#x1f3af;后端与接口的调试&#x1f9e9;关于运行后端项目&#x1f9e9;关于接口的调试 &#x1f3af;功能分析&#x1f9e9;数据的展示与分页功能&#x1f9e9;添加功能&#x1f9e9;编辑功能&#x1f9e9;删除功能 &…

LabVIEW虚拟键盘程序 分两个键盘,一个是输入数字的,一个是输入字符串

LabVIEW虚拟键盘程序 分两个键盘&#xff0c;一个是输入数字的&#xff0c;一个是输入字符串的。 带一个示例程序&#xff0c;演示输入控件按下后弹出键盘。 可在触摸屏电脑系统里用以输入字符和数字。 这个程序不支持输入法的切换&#xff0c;不过我发布有另一个键盘程序可支持…

键盘录入一个字符串

要求1&#xff1a;长度为小于等于9要求2&#xff1a;只能是数字 将内容变成罗马数字 下面是阿拉伯数字跟罗马数字的对比关系&#xff1a; I-1、II-2、III-3、IV-4、V-5、VI-6、VII-7、VII-8、IX-9 注意点&#xff1a; 罗马数字里面是没有0的 如果键盘录入的数字包含0&…

给程序猿男朋友买了一把2千块的机械键盘,然后对他说:用它养我

程序员买得起HHKB吗&#xff1f;都买得起。但是他们大部分都不会很快就买了。一是舍不得&#xff0c;毕竟自己烧键盘多少有点不好意思。二是希望它的来历赋予某种意义。 就像一个很好看的戒指&#xff0c;你很喜欢&#xff0c;虽然你买得起&#xff0c;但你可能更希望它是一个…

键盘DIY一个指纹识别

今天就来教大家如何强势改造自己的键盘&#xff0c;给它添加上指纹模块&#xff0c;一键登录美滋滋…… 在Windows 10发布时&#xff0c;除了使用传统的登陆密码&#xff0c;操作系统还支持三种Windows Hello类型&#xff1a; PIN&#xff0c;面部识别&#xff0c;和指纹识别。…

计算机中键盘可以共享吗,两个电脑怎么共用一个键盘

两个电脑怎么共用一个键盘 有些办公人员需要用两台电脑来工作&#xff0c;但是只想要一套鼠标键盘控制&#xff0c;那么两个电脑怎么共用一个键盘呢?下面就让jy135来告诉大家吧&#xff0c;欢迎阅读。 1、首先要知道两台电脑的ip地址。ip地址可以通过电脑开始菜单中的运行框&a…