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 相关文章推荐
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
May 28 PHP
yii框架中的Url生产问题小结
Jan 16 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
Jun 27 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
Nov 04 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
Nov 18 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
Aug 23 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
Mar 18 PHP
PHP 验证身份证是否合法的函数
Feb 09 PHP
Laravel实现短信注册的示例代码
May 29 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
Dec 20 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
Apr 11 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 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
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
php操作mysql数据库的基本类代码
2014/02/25 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
smarty表格换行实例
2014/12/15 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
JavaScript 模拟用户单击事件
2009/12/31 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
jquery增加和删除元素的方法
2015/01/14 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
使用Angular自定义字段校验指令的方法示例
2019/02/01 Javascript
vue element-ui中table合计指定列求和实例
2020/11/02 Javascript
探究python中open函数的使用
2016/03/01 Python
Python检测网站链接是否已存在
2016/04/07 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
python绘制直线的方法
2018/06/30 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
深入浅析Python科学计算库Scipy及安装步骤
2019/10/12 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
介绍一下sql server的安全性
2014/08/10 面试题
初中生散播谣言检讨书
2014/11/17 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
Python常用配置文件ini、json、yaml读写总结
2021/07/09 Python
Java 轮询锁使用时遇到问题
2022/05/11 Java/Android