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 相关文章推荐
初学者入门:细述PHP4的核心Zend
Sep 05 PHP
PHP如何得到当前页和上一页的地址?
Nov 27 PHP
破解图片防盗链的代码(asp/php)测试通过
Jul 02 PHP
php下尝试使用GraphicsMagick的缩略图功能
Jan 01 PHP
解析PHP实现下载文件的两种方法
Jul 05 PHP
CodeIgniter模板引擎使用实例
Jul 15 PHP
学习php设计模式 php实现策略模式(strategy)
Dec 07 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
详解yii2使用多个数据库的案例
Jun 16 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 PHP
PHP-FPM和Nginx的通信机制详解
Feb 01 PHP
让你的PHP,APACHE,NGINX支持大文件上传
Mar 09 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脚本运行时的超时机制详解
2016/02/17 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
toggle()隐藏问题的解决方法
2014/02/17 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
2014/08/30 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
2016/09/23 Javascript
JS实现的样式切换功能tableCSS实例
2016/12/30 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
nodejs文件夹深层复制功能
2019/09/03 NodeJs
JavaScript实现随机五位数验证码
2019/09/27 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
JavaScript实现横版菜单栏
2020/03/17 Javascript
[03:45]Newbee战队出征西雅图 决战2016国际邀请赛
2016/08/02 DOTA
Python3 Random模块代码详解
2017/12/04 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
Python阶乘求和的代码详解
2020/02/14 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
2020/06/18 Python
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
副总经理岗位职责
2014/03/16 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
办理护照工作证明
2014/10/10 职场文书
志愿者个人总结
2015/03/03 职场文书
浅谈Python数学建模之线性规划
2021/06/23 Python
聊聊Python String型列表求最值的问题
2022/01/18 Python