链街Dcat后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

113 lines
3.6 KiB

<?php
namespace App\Admin\Actions\Grid\v3;
use Dcat\Admin\Actions\Response;
use Dcat\Admin\Admin;
use Dcat\Admin\Tree\AbstractTool;
use Illuminate\Http\Request;
class DataReportOption extends AbstractTool
{
protected $url;
protected $option;
protected $title = '';
public function __construct($option = '', $url = '', $title = '')
{
$this->option = $option;
$this->url = $url;
$this->title = $title;
}
/**
* Handle the action request.
*
* @param Request $request
*
* @return Response
*/
public function handle(Request $request)
{
// $date = $this->getDataByOption($this->option);
// $startTime = $date['start'] ?? '';
// $endTime = $date['end'] ?? '';
return $this->response()
->success('查询中~');
// ->redirect('/'.$this->url.'?start_time='.$startTime.'&end_time='.$endTime);
}
/**
* @return string
*/
protected function html()
{
$date = $this->getDataByOption($this->option);
$startTime = $date['start'] ?? '';
$endTime = $date['end'] ?? '';
$url = 'admin/'.$this->url.'?start_time='.$startTime.'&end_time='.$endTime;
$this->defaultHtmlAttribute('href', url($url));
return <<<HTML
<a {$this->formatHtmlAttributes()}>{$this->title()}</a>
HTML;
}
public function getDataByOption($option)
{
$date = ['start','end'];
$today = date('Y-m-d');
switch($option){
case 'today':
$date['start'] = $today;
$date['end'] = $today;
break;
case 'yesterday':
$yesterday = date("Y-m-d",strtotime("-1 days",time()));
$date['start'] = $yesterday;
$date['end'] = $yesterday;
break;
case 'this_week':
$first=1;
//获取当前周的第几天 周日是 0 周一到周六是 1 - 6
$w=date('w',strtotime($today));
//获取本周开始日期,如果$w是0,则表示周日,减去 6 天
$week_start=date('Y-m-d',strtotime("$today -".($w ? $w - $first : 6).' days'));
//本周结束日期
$week_end=date('Y-m-d',strtotime("$week_start +6 days"));
$date['start'] = $week_start;
$date['end'] = $week_end;
break;
case 'last_week':
// 上周日
$lastSunday = date('Y-m-d', strtotime('-1 sunday', time()));
// 上周一
$lastMonday = date('Y-m-d', strtotime('-1 monday', strtotime($lastSunday)));
$date['start'] = $lastMonday;
$date['end'] = $lastSunday;
break;
case 'this_month':
$thisMonthStart = date('Y-m-01', strtotime($today));
$thisMonthEnd = date('Y-m-d', strtotime($today));
$date['start'] = $thisMonthStart;
$date['end'] = $thisMonthEnd;
break;
case 'last_month':
//上月初
$lastMonthStart = date('Y-m-d', strtotime('-1 month', strtotime(date('Y-m', time()) . '-01')));
// 上月底
$lastMonthEnd = date('Y-m-d', strtotime(date('Y-m', time()) . '-01') - 86400);
$date['start'] = $lastMonthStart;
$date['end'] = $lastMonthEnd;
break;
default:
break;
}
return $date;
}
}