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 相关文章推荐
建立动态的WML站点(二)
Oct 09 PHP
php SQL防注入代码集合
Apr 25 PHP
用php解析html的实现代码
Aug 08 PHP
PHP通过正则表达式下载图片到本地的实现代码
Sep 19 PHP
让PHP更快的提供文件下载的代码
Jun 13 PHP
解析PHP的session过期设置
Jun 29 PHP
php实现读取超大文件的方法
Jul 28 PHP
php+ajax实现无刷新动态加载数据技术
Apr 28 PHP
YII Framework框架教程之缓存用法详解
Mar 14 PHP
yii2实现根据时间搜索的方法
May 25 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
Mar 02 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
ASP知识讲座四
2006/10/09 PHP
php下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
十大使用PHP框架的理由
2015/09/26 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
ThinkPHP中图片按比例切割的代码实例
2019/03/08 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
动态刷新 dorado树的js代码
2009/06/12 Javascript
JavaScript 数组循环引起的思考
2010/01/01 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
Python中bisect的用法
2014/09/23 Python
python对字典进行排序实例
2014/09/25 Python
Python算术运算符实例详解
2017/05/31 Python
Python内置模块logging用法实例分析
2018/02/12 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
2020/05/25 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
晚会主持词开场白
2014/03/17 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
寻找成龙观后感
2015/06/12 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby