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 相关文章推荐
用ODBC的分页显示
Oct 09 PHP
PHP时间戳使用实例代码
Jun 07 PHP
php下关于中英数字混排的字符串分割问题
Apr 06 PHP
Apache 配置详解(最好的APACHE配置教程)
Jul 04 PHP
php更新修改excel中的内容实例代码
Feb 26 PHP
PHP中echo,print_r与var_dump区别分析
Sep 29 PHP
ThinkPHP分页实例
Oct 15 PHP
PHP中if和or运行效率对比
Dec 12 PHP
Yii框架表单提交验证功能分析
Jan 07 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
php插入mysql数据返回id的方法
May 31 PHP
如何理解PHP核心特性命名空间
May 28 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
回首过去10年中最搞笑的10部动漫,哪一部让你节操尽碎?
2020/03/03 日漫
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
2014/10/30 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
PHP7变量处理机制修改
2021/03/09 PHP
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
jquery mobile事件多次绑定示例代码
2013/09/13 Javascript
JS与C#编码解码
2013/12/03 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
创建js对象和js类的方法汇总
2014/12/24 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
Bootstrap开关(switch)控件学习笔记分享
2016/05/30 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
小学毕业感言300字
2014/02/19 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
护理专业毕业生自荐信
2014/06/15 职场文书
2015年财务试用期工作总结
2014/12/24 职场文书
2015年保送生自荐信
2015/03/24 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
岗位聘任协议书
2015/09/21 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android
MySQL池化框架学习接池自定义
2022/07/23 MySQL