From ed15e116f9b7ab3c7ac46308d73595f461f2a1b8 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Fri, 25 Sep 2020 10:15:19 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=BB=9F=E8=AE=A1--=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=8D=A1=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Common/Common.php | 28 ++++ .../v3/OrderReportController copy.php | 97 ++++++++++++ .../Controllers/v3/OrderReportController.php | 15 +- .../Examples/Order/OrderReportCard.php | 147 ++++++++++++++++++ app/Admin/Repositories/v3/OrderReport.php | 3 + app/Admin/routes.php | 1 + 6 files changed, 287 insertions(+), 4 deletions(-) create mode 100644 app/Admin/Common/Common.php create mode 100644 app/Admin/Controllers/v3/OrderReportController copy.php create mode 100644 app/Admin/Metrics/Examples/Order/OrderReportCard.php diff --git a/app/Admin/Common/Common.php b/app/Admin/Common/Common.php new file mode 100644 index 0000000..aa098af --- /dev/null +++ b/app/Admin/Common/Common.php @@ -0,0 +1,28 @@ +header('报表') + ->description('订单统计') + ->body(function ($row) { + $row->column(3, new OrderReportCard()); + $row->column(3, new OrderReportCard()); + $row->column(3, new OrderReportCard()); + $row->column(3, new OrderReportCard()); + }) + ->body($this->grid()); + } + + /** + * Make a grid builder. + * + * @return Grid + */ + protected function grid() + { + return 123; + return Grid::make(new OrderReport(), function (Grid $grid) { + + $marketList = MarketModel::getMarketArray(); + + $grid->combine('默认统计今天的数据', ['name', 'value'])->responsive()->help('如果未选择时间,则默认只统计当天的所有市场的数据,特殊:现存用户默认统计所有的数据'); + + $grid->column('name'); + $grid->column('value'); + + $grid->filter(function (Grid\Filter $filter) use($marketList){ + // 更改为 panel 布局 + $filter->panel(); + + $filter->equal('market_id','市场')->select($marketList); + $filter->equal('start_time','开始时间')->date(); + $filter->equal('end_time','结束时间')->date(); + + // $today = date('Y-m-d'); + // $monthBefore = date("Y-m-d",strtotime("-1 months",strtotime($today))); + // $timeData = $this->periodDateArr($monthBefore,$today); + // $filter->equal('day','日期')->select($timeData)->default($today); + }); + + // 每页1条 + $grid->paginate(10); + $grid->disableCreateButton(); + $grid->disableBatchActions(); + $grid->disableBatchDelete(); + + $grid->toolsWithOutline(); + + $grid->disableDeleteButton(); + $grid->disableEditButton(); + $grid->disableQuickEditButton(); + $grid->disableViewButton(); + $grid->disableActions(); + + $grid->disableRowSelector(); + }); + } + + /** + * 获取一个时间段内的日期 + */ + public function periodDateArr($start_time,$end_time){ + $start_time = strtotime($start_time); + $end_time = strtotime($end_time); + $i=0; + $arr = []; + while ($start_time<=$end_time){ + $arr[date('Y-m-d',$start_time)]=date('Y年m月d日',$start_time); + $start_time = strtotime('+1 day',$start_time); + $i++; + } + + return array_reverse($arr); + } +} diff --git a/app/Admin/Controllers/v3/OrderReportController.php b/app/Admin/Controllers/v3/OrderReportController.php index ae8807e..7bb8336 100644 --- a/app/Admin/Controllers/v3/OrderReportController.php +++ b/app/Admin/Controllers/v3/OrderReportController.php @@ -6,12 +6,11 @@ use App\Admin\Repositories\v3\OrderReport; use Dcat\Admin\Grid; use Dcat\Admin\Controllers\AdminController; use App\Models\v3\Market as MarketModel; -use App\Admin\Metrics\Examples\Order\OrderReportCard; use Dcat\Admin\Grid\Filter; class OrderReportController extends AdminController { - + public static $searchTime = ''; /** * Make a grid builder. * @@ -19,6 +18,7 @@ class OrderReportController extends AdminController */ protected function grid() { + return Grid::make(new OrderReport(), function (Grid $grid) { $marketList = MarketModel::getMarketArray(); @@ -28,7 +28,7 @@ class OrderReportController extends AdminController $grid->column('name'); $grid->column('value'); - $grid->filter(function (Grid\Filter $filter) use($marketList){ + $grid->filter(function (Filter $filter) use($marketList){ // 更改为 panel 布局 $filter->panel(); @@ -40,8 +40,15 @@ class OrderReportController extends AdminController // $monthBefore = date("Y-m-d",strtotime("-1 months",strtotime($today))); // $timeData = $this->periodDateArr($monthBefore,$today); // $filter->equal('day','日期')->select($timeData)->default($today); + + }); + $grid->selector(function (Grid\Tools\Selector $selector) { + $selector->selectOne('time', '日期', ['today'=>'今天', 'yesterday'=>'昨天', 'last_week'=>'上周'], function($query, $value){ + + $value = current($value); + $where = []; + }); }); - // 每页1条 $grid->paginate(10); $grid->disableCreateButton(); diff --git a/app/Admin/Metrics/Examples/Order/OrderReportCard.php b/app/Admin/Metrics/Examples/Order/OrderReportCard.php new file mode 100644 index 0000000..892d4ba --- /dev/null +++ b/app/Admin/Metrics/Examples/Order/OrderReportCard.php @@ -0,0 +1,147 @@ +data = []; + + parent::__construct(); + } + + protected function init() + { + parent::init(); + + // 设置标题 + $this->title('现存用户总数(人)'); + + // 设置下拉菜单 + $today = date('Y-m-d'); + $monthBefore = date("Y-m-d",strtotime("-1 weeks",strtotime($today))); + $timeData = Common::periodDateArr($monthBefore,$today); + + $this->dropdown($timeData); + } + + /** + * 处理请求. + * + * @param Request $request + * + * @return void + */ + public function handle(Request $request) + { + // 获取外部传递的自定义参数 + $key1 = $request->get('key1'); + + switch ($request->get('option')) { + case '365': + $this->content(mt_rand(600, 1500)); + $this->down(mt_rand(1, 30)); + break; + case '30': + $this->content(mt_rand(170, 250)); + $this->up(mt_rand(12, 50)); + break; + case '28': + $this->content(mt_rand(155, 200)); + $this->up(mt_rand(5, 50)); + break; + case '7': + default: + $this->content(143); + $this->up(15); + } + } + + // 传递自定义参数到 handle 方法 + public function parameters() : array + { + return $this->data; + } + + /** + * @param int $percent + * + * @return $this + */ + public function up($percent) + { + return $this->footer( + " {$percent}% Increase" + ); + } + + /** + * @param int $percent + * + * @return $this + */ + public function down($percent) + { + return $this->footer( + " {$percent}% Decrease" + ); + } + + /** + * 设置卡片底部内容 + * + * @param string|Renderable|\Closure $footer + * + * @return $this + */ + public function footer($footer) + { + $this->footer = $footer; + + return $this; + } + + /** + * 渲染卡片内容. + * + * @return string + */ + public function renderContent() + { + $content = parent::renderContent(); + + return << +

{$content}

+ +
+ {$this->renderFooter()} +
+HTML; + } + + /** + * @return string + */ + public function renderFooter() + { + return $this->toString($this->footer); + } +} \ No newline at end of file diff --git a/app/Admin/Repositories/v3/OrderReport.php b/app/Admin/Repositories/v3/OrderReport.php index 191ad2b..ad5b836 100644 --- a/app/Admin/Repositories/v3/OrderReport.php +++ b/app/Admin/Repositories/v3/OrderReport.php @@ -36,6 +36,9 @@ class OrderReport extends EloquentRepository $endTime = request()->input('end_time'); $time = date('Y-m-d',time()); + + $today = $time; + $yesterday = date("Y-m-d",strtotime("-1 days",strtotime($today))); // 日期 // $date = request()->input('day'); // if(!empty($date)){ diff --git a/app/Admin/routes.php b/app/Admin/routes.php index a729727..b79a123 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -85,5 +85,6 @@ Route::group([ // 订单统计 $router->resource('/order_report', 'v3\OrderReportController'); + // $router->any('/order_report', 'v3\OrderReportController@index'); });