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.
|
|
<?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 = ''; protected $moreOption = [];
public function __construct($option = '', $url = '', $title = '', $more = []) { $this->option = $option; $this->url = $url; $this->title = $title; $this->moreOption = $more; }
/** * 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; if(!empty($this->moreOption) && is_array($this->moreOption)){ foreach($this->moreOption as $key => $value){ $url .= '&'. $key .'='. $value; } } $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; }
}
|