laravel + vue实现的数据统计绘图(今天、7天、30天数据)


Posted in PHP onJuly 31, 2018

前言

本文主要是按照时段统计今天、7天、30天的数据,利用laravel+vue实现的,下面话不多说了,来一起看看详细的介绍吧

效果图:

laravel + vue实现的数据统计绘图(今天、7天、30天数据)

1. 前端vue

使用vue-highcharts

<highcharts :options="options"></highcharts>
data() {
 return {
  options: {
  title: {
   text: ''
  },
  xAxis: {
   categories: []
  },
  yAxis: {
   title: {
   text: ''
   },
   plotLines: [{
   value: 0,
   width: 1,
   color: '#808080'
   }]
  },
  legend: {
   layout: 'horizontal',
   align: 'center',
   verticalAlign: 'bottom',
   borderWidth: 0
  },
  credits: {
   enabled: false // 去掉highcharts商标
  },
  series: []
  }
 }
 },

请求数据处理:

getTimingHistoryAct(time) {
  getTimingHistory(time).then(response => {
  const curHour = new Date().getHours()
  const hoursArr = []
  const dayArr = []
  const seriesData = []
  switch (time) {
   case 1:
   seriesData.length = 0
   for (let i = 0; i <= curHour; i++) {
    hoursArr.push(i < 10 ? '0' + i : '' + i)
    seriesData[i] = 0
   }
   this.options.xAxis.categories = hoursArr.map(x => x + ':00')
   response.data.forEach(record => {
    const index = hoursArr.indexOf(record.hour)
    if (index > -1) {
    seriesData[index] = record.count
    }
   })
   break
   case 7:
   seriesData.length = 0
   for (let i = 0; i < 7; i++) {
    const ymd = new Date(new Date() - 24 * 60 * 60 * 1000 * i).toLocaleString().split(' ')[0]
    const ymdarr = ymd.split('/')
    if (ymdarr[1] * 1 < 10) {
    ymdarr[1] = '0' + ymdarr[1]
    }
    if (ymdarr[2] * 1 < 10) {
    ymdarr[2] = '0' + ymdarr[1]
    }
    seriesData[i] = 0
    dayArr.unshift(ymdarr.join('-'))
   }
   this.options.xAxis.categories = dayArr.map(x => x.substr(5))
   response.data.forEach(record => {
    const index = dayArr.indexOf(record.date)
    if (index > -1) {
    seriesData[index] = record.count
    }
   })
   break
   case 30:
   // 同7天
   break
  }
  this.options.series = [{
   name: '商品点击',
   data: seriesData
  }]
  })
 },

2. 后台laravel

mysql测试数据:

1 5440935 1 时尚博主家《心之语》 2018-07-28 19:20:49
2 5440935 1 时尚博主家《心之语》 2018-07-29 15:26:21
3 5440935 1 测试方案1 2018-07-29 15:38:43
...

public function getTimingHistory($time)
{
  switch ($time) {
    case '1':
      $data = StatsPlanClick::where('created_at','<', Carbon::now())->where('created_at','>', Carbon::today())->select([DB::raw('DATE_FORMAT(created_at,\'%H\') as hour'), DB::raw('COUNT("*") as count')])->groupBy('hour')->get();
      break;
    case '7':
      $data = StatsPlanClick::where('created_at','<', Carbon::now())->where('created_at','>', Carbon::today()->subDays(7))->select([DB::raw('DATE(created_at) as date'), DB::raw('COUNT("*") as count')])->groupBy('date')->get();
      break;
    case '30':
      $data = StatsPlanClick::where('created_at','<', Carbon::now())->where('created_at','>', Carbon::today()->subDays(30))->select([DB::raw('DATE(created_at) as date'), DB::raw('COUNT("*") as count')])->groupBy('date')->get();
      break;
    default:
      # code...
      break;
  }
  return $this->successWithData($data);
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
如何跨站抓取别的站点的页面的补充
Oct 09 PHP
php 小乘法表实现代码
Jul 16 PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
php实现rc4加密算法代码
Apr 25 PHP
PHP字符串中特殊符号的过滤方法介绍
Feb 18 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
Apr 02 PHP
php 购物车完整实现代码
Jun 05 PHP
php命令行用法入门实例教程
Oct 27 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 PHP
php输出反斜杠的实例方法
Sep 19 PHP
php让json_encode不自动转义斜杠“/”的方法
Apr 27 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
Nov 22 PHP
PHP常用日期加减计算方法实例小结
Jul 31 #PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
Jul 30 #PHP
PHP笛卡尔积实现算法示例
Jul 30 #PHP
作为PHP程序员你要知道的另外一种日志
Jul 30 #PHP
详解Laravel5.6 Passport实现Api接口认证
Jul 27 #PHP
PHP实现的DES加密解密类定义与用法示例
Nov 02 #PHP
详解laravel安装使用Passport(Api认证)
Jul 27 #PHP
You might like
浅析PHP水印技术
2007/02/14 PHP
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
php文件上传的简单实例
2013/10/19 PHP
Linux中为php配置伪静态
2014/12/17 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
js静态作用域的功能。
2006/12/25 Javascript
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
jQuery EasyUI封装简化操作
2016/09/18 Javascript
深入理解vue-router之keep-alive
2017/08/31 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
Vue CLI3搭建的项目中路径相关问题的解决
2018/09/17 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
推荐下python/ironpython:从入门到精通
2007/10/02 Python
Python3.x和Python2.x的区别介绍
2013/02/12 Python
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
python:pandas合并csv文件的方法(图书数据集成)
2018/04/12 Python
基于Django统计博客文章阅读量
2019/10/29 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
2020/02/17 Python
python程序输出无内容的解决方式
2020/04/09 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
Sephora丝芙兰印尼官方网站:购买化妆品和护肤品
2018/07/02 全球购物
高中生学习总结的自我评价范文
2013/10/13 职场文书
安徽导游词
2015/02/12 职场文书
联欢会开场白
2015/06/01 职场文书
2015年暑期见闻
2015/07/14 职场文书
医院保洁员管理制度
2015/08/05 职场文书
大队委员竞选稿
2015/11/20 职场文书