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 相关文章推荐
PHP EOT定界符的使用详解
Sep 30 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 PHP
php利用cookie实现访问次数统计代码
May 19 PHP
解析php curl_setopt 函数的相关应用及介绍
Jun 17 PHP
PHP内存缓存Memcached类实例
Dec 08 PHP
PHP程序员必须清楚的问题汇总
Dec 18 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
Aug 21 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
Oct 03 PHP
php rmdir使用递归函数删除非空目录实例详解
Oct 20 PHP
微信小程序 消息推送php服务器验证实例详解
Mar 30 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
Oct 19 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
Oct 24 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
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
php中的boolean(布尔)类型详解
2013/10/28 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
2016/09/13 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
javascript prototype原型操作笔记
2009/12/07 Javascript
js中巧用cssText属性批量操作样式
2011/03/13 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
javascript基本类型详解
2014/11/28 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
Vue2 监听属性改变watch的实例代码
2018/08/27 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python测试人员需要掌握的知识
2018/02/08 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
python 检查文件mime类型的方法
2018/12/08 Python
Django中提示消息messages的设置方式
2019/11/15 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
澳大利亚首个在线预订旅游网站:Wotif
2017/07/19 全球购物
韩国江南富人区高端时尚百货商场:Galleria(格乐丽雅)
2018/03/27 全球购物
新学期红领巾广播稿
2014/01/14 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
迁户口计划生育证明
2014/10/19 职场文书
史上最牛辞职信
2015/05/13 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android
详细介绍Next.js脚手架完整搭建封装
2022/04/26 Javascript
苹果macOS 13开发者预览版Beta 8发布 正式版10月发布
2022/09/23 数码科技