基于VUE的v-charts的曲线显示功能


Posted in Javascript onOctober 01, 2019

1. 应用背景

在做一个某路灯管理处的物联网项目时,需要统计8个电表的电能曲线(时间-电能),需求就是能生成日报(24个点,间隔1小时,实时),月报(30个点,间隔1天,取每天的凌晨1点数据),年报(每个月,1号凌晨1点数据开始间隔9天,每个月取3个点,总共36个点)。

2. 分析数据生产者生成

首先采集服务每隔一段时间会去采集电表的电能数据,模拟历史表会利用存储过程将实时数据写入his_aic表里。

3. 取出数据消费者

30天 aic数据4万条记录左右 日报,月报可以直接在历史数据表中取
日表,定时任务,每隔1小时存入整点数据(如果没有整点,排序之后取接近点数据),一天24个数据,一年8760条记录。
月表,定时

任务,每天凌晨1点取数据,按时间存入,一个月30条记录
年表,定时任务,1号,10号,19号,28号(每个月取4个数据,按时间记录,一年48条记录)
定时任务利用Coravel定时器完成,具体可参见Coravel定时器相关博客

4. 前端显示

前端曲线基于v-chart。

在使用 echarts 生成图表时,经常需要做繁琐的数据类型转化、修改复杂的配置项,v-charts 的出现正是为了解决这个痛点。基于 Vue2.0 和 echarts 封装的 v-charts 图表组件,只需要统一提供一种对前后端都友好的数据格式设置简单的配置项,便可轻松生成常见的图表。

4.1 安装V-charts插件

npm i v-charts echarts -S

如果已经安装了echarts,则直接安装v-charts即可

npm i v-charts -S

4.2 引入veline曲线插件

import VeLine from 'v-charts/lib/line'

4.3 曲线标签 ve-line

4.3.1 方法一:直接使用html标签

<template>
 <div>
  <ve-line :data="chartData" :settings="chartSettings"></ve-line>
 </div>
</template>

4.3.2 方法二:pug编译

4.3.2.1 pug的安装

先安装node环境

安装支持pug依赖:npm install pug pug-loader pug-filters -D
安装支持jade依赖:npm install jade jade-loader -D

4.3.2.2 pug的使用

<template lang="pug">
     div
      ve-line(:data='chartData', :settings='chartSettings')
</template>

注意:使用pug空格数量要与上下文对应

4.4 前端写入调试模拟数据

export default {
 data(){  
  return {
   chartData: {
    columns: ['日期','电能1','电能2','电能3','电能4','电能5','电能6','电能7','电能8'],
    rows: [
     { '日期': '10月1日', '电能1': 0, '电能2': 1, '电能3': 0.5, '电能4': 0.63,'电能5': 0.8, '电能6': 2, '电能7': 2.1, '电能8': 1.7 },
     { '日期': '10月2日', '电能1': 1, '电能2': 2, '电能3': 4, '电能4': 0.9,'电能5': 1.1, '电能6': 2.1, '电能7': 4.3, '电能8': 2.6 },
     { '日期': '10月3日', '电能1': 1.6, '电能2': 2.6, '电能3': 4.5, '电能4': 1.9,'电能5': 2.3, '电能6': 3.5, '电能7': 5.3, '电能8': 3.2 },
     { '日期': '10月4日', '电能1': 2.3, '电能2': 5.2, '电能3': 5.4, '电能4': 2.7,'电能5': 3.2, '电能6': 4.3, '电能7': 6.8, '电能8': 3.5 },
     { '日期': '10月5日', '电能1': 3.8, '电能2': 6.2, '电能3': 6.4, '电能4': 4.5,'电能5': 4.5, '电能6': 6.5, '电能7': 7.1, '电能8': 5.5 },
     { '日期': '10月6日', '电能1': 5.3, '电能2': 6.8, '电能3': 8.4, '电能4': 5.6,'电能5': 6.3, '电能6': 7.8, '电能7': 7.5, '电能8': 7.3 }
    ]
   },
   chartSettings: {
     yAxisName: ['kWh']
   },
  }
 }
 components: { VeLine }
}

使用 data 属性表示图表的数据,使用 settings 用作图表的显示状态配置,settings 中所包含的是具体的图表配置,这里通过yAxisName设置电能单位为kWh

4.5 注册组件

4.4中已经加入了注册组件的代码。

components: { VeLine  }

5 总体效果

基于VUE的v-charts的曲线显示功能

这里只展示了月报里的7天,可以设置按钮同样道理依次展示日报年报数据。

Javascript 相关文章推荐
javascript parseInt 函数分析(转)
Mar 21 Javascript
jquery 分页控件实现代码
Nov 30 Javascript
JQuery AJAX 中文乱码问题解决
Jun 05 Javascript
JQuery 使用attr方法实现下拉列表选中
Oct 13 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
Jun 20 Javascript
jQuery弹出层插件popShow(改进版)用法示例
Jan 23 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 jQuery
angular2 ng2-file-upload上传示例代码
Aug 23 Javascript
用POSTMAN发送JSON格式的POST请求示例
Sep 04 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
Aug 26 Javascript
详谈Object.defineProperty 及实现数据双向绑定
Jul 18 Javascript
JS实现九宫格拼图游戏
Jun 28 Javascript
Echarts地图添加引导线效果(labelLine)
Sep 30 #Javascript
javascript实现摄像头拍照预览
Sep 30 #Javascript
java和js实现的洗牌小程序
Sep 30 #Javascript
JS使用H5实现图片预览功能
Sep 30 #Javascript
在vue中使用jsx语法的使用方法
Sep 30 #Javascript
微信小程序自定义tabBar在uni-app的适配详解
Sep 30 #Javascript
详解小程序云开发攻略(解决最棘手的问题)
Sep 30 #Javascript
You might like
php图片验证码代码
2008/03/27 PHP
php ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
php垃圾代码优化操作代码
2010/08/05 PHP
使用PHPExcel操作Excel用法实例分析
2015/03/26 PHP
ThinkPHP路由详解
2015/07/27 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
2017/02/07 PHP
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
2016/02/26 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
vue实现分页栏效果
2019/06/28 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
JS数组reduce()方法原理及使用技巧解析
2020/07/14 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
js基于canvas实现时钟组件
2021/02/07 Javascript
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
[01:33:14]LGD vs VP Supermajor 败者组决赛 BO3 第二场 6.10
2018/07/04 DOTA
[25:59]Newbee vs TNC 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
Python实现读写INI配置文件的方法示例
2018/06/09 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
C语言基础笔试题
2013/04/27 面试题
党的群众路线调研报告
2014/11/03 职场文书
安全生产学习心得体会
2016/01/18 职场文书
2016年大学生社区服务活动总结
2016/04/06 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书