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上传图片、删除图片实现代码
May 12 PHP
编写php应用程序实现摘要式身份验证的方法详解
Jun 08 PHP
深入PHP内存相关的功能特性详解
Jun 08 PHP
php中怎么搜索相关联数组键值及获取之
Oct 17 PHP
CI框架自动加载session出现报错的解决办法
Jun 17 PHP
学习php设计模式 php实现抽象工厂模式
Dec 07 PHP
php微信开发之批量生成带参数的二维码
Jun 26 PHP
PHP实现防盗链的方法分析
Jul 25 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
Apr 23 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 echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
2014/06/30 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
PHP会话处理的10个函数
2015/08/11 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
Bootstrap select多选下拉框实现代码
2016/12/23 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
2017/04/13 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
安装vue-cli的简易过程
2018/05/22 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
学习python处理python编码问题
2011/03/13 Python
java直接调用python脚本的例子
2014/02/16 Python
Python贪吃蛇游戏编写代码
2020/10/26 Python
Python操作MongoDB详解及实例
2017/05/18 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
python正则表达式之对号入座篇
2018/07/24 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
军人违纪检讨书
2014/02/04 职场文书
解决Maven项目中 Invalid bound statement 无效的绑定问题
2021/06/15 Java/Android
详解MongoDB的条件查询和排序
2021/06/23 MongoDB
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL
什么是css原子化,有什么用?
2022/04/24 HTML / CSS