From 73349d10065ea340412733d4c918a726946f1c92 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Fri, 23 Oct 2020 17:26:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81--=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/GoodsActivityReportController.php | 25 +++++++---- .../Charts/OrderGoodsActivityCountChart.php | 34 ++++++++++++-- .../Charts/OrderGoodsActivityMarketChart.php | 45 ++++++++++++++----- .../Charts/OrderGoodsActivityTotalChart.php | 32 +++++++++++-- 4 files changed, 109 insertions(+), 27 deletions(-) diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index d1ca7b7..9c019a6 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -40,7 +40,7 @@ class GoodsActivityReportController extends AdminController protected function grid() { - return Grid::make(new GoodsActivityReport($this->newParams), function (Grid $grid) { + return Grid::make($this->GoodsActivityReport, function (Grid $grid) { $marketList = $this->marketList; $storeList = $this->storeList; $grid->column('goods_id')->sortable(); @@ -106,13 +106,14 @@ class GoodsActivityReportController extends AdminController public function index(Content $content) { $this->marketId = Auth::getMarket(); + if($this->marketId){ $this->newParams = ['market_id'=>$this->marketId]; - } - if($this->marketId){ + $this->GoodsActivityReport = new GoodsActivityReport($this->newParams); $this->marketList = MarketModel::getMarketArray([['id','=',$this->marketId]]); $this->storeList = StoreModel::getStoreArray([['market_id','=',$this->marketId]]); }else{ + $this->GoodsActivityReport = new GoodsActivityReport(); $this->marketList = MarketModel::getMarketArray(); $this->storeList = StoreModel::getStoreArray(); } @@ -133,14 +134,20 @@ class GoodsActivityReportController extends AdminController // $card->style('background-color:#4e9876'); // $column->row($card); // }); - $newParams = [ - 'market_id'=>$this->marketId, - 'data' => [], + $marketData = $this->GoodsActivityReport->getMarketData($this->newParams); + $totalData = $this->GoodsActivityReport->getCountData($this->newParams); + + $totalParams = [ + 'list' => $totalData, + ]; + $marketParams = [ + 'list' => $marketData, 'markets' => $this->marketList ]; - $row->column(4,new OrderGoodsActivityTotalChart($newParams)); - $row->column(4,new OrderGoodsActivityCountChart($newParams)); - $row->column(4,new OrderGoodsActivityMarketChart($newParams)); + + $row->column(4,new OrderGoodsActivityTotalChart($totalParams)); + $row->column(4,new OrderGoodsActivityCountChart($totalParams)); + $row->column(4,new OrderGoodsActivityMarketChart($marketParams)); }) ->body(function(Row $row){ $row->column(12,$this->grid()); diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php index 943124b..c3b4a9a 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php @@ -21,11 +21,35 @@ class OrderGoodsActivityCountChart extends Line protected $GoodsActivityReport = null; protected $showNumber = 7; - public function __construct($data = []) + public function __construct($params = []) { - $this->GoodsActivityReport = new GoodsActivityReport($data); - parent::__construct(); + + $data = $params['list'] ?? []; + + if(!empty($data) && is_array($data)){ + $subsidyTotal = 0; + foreach($data as $key => $value){ + if($key < $this->showNumber){ + $this->data[] = $value['subsidy_total']; + $this->categories[] = $value['dtime']; + } + $subsidyTotal += $value['subsidy_total']; + } + $this->total['subsidy_total'] = $subsidyTotal; + } + + $data = $this->data; + $categories = $this->categories; + $chartData = [ + [ + 'name' => '金额', + 'data' => $data, + ] + ]; + $this->withContent($this->total); + $this->withChart($chartData); + $this->withCategories($categories); } protected function init() @@ -69,8 +93,10 @@ class OrderGoodsActivityCountChart extends Line * @param Request $request * @return mixed|void */ - public function handle(Request $request) + public function handleBar(Request $request) { + // $this->GoodsActivityReport = new GoodsActivityReport($data); + // 数据查询逻辑 // 分页的时候不重复查询数据 $currentPage = request()->input('page', 1); diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php index 570ab8c..8532607 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php @@ -21,11 +21,32 @@ class OrderGoodsActivityMarketChart extends Donut protected $GoodsActivityReport = null; protected $color = ['#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B', '#2b908f', '#f9a3a4', '#90ee7e', '#f48024', '#69d2e7']; - public function __construct($data = []) + public function __construct($params = []) { - $this->GoodsActivityReport = new GoodsActivityReport($data); - parent::__construct(); + + // $params = $this->parameters($params); + + $data = $params['list'] ?? []; + $market = $params['markets'] ?? []; + + if(!empty($data) && is_array($data)){ + $total = 0; + foreach($data as $key => $value){ + $this->data[] = (int)$value['total']; + $this->labels[] = $market[$value['market_id']]??'未知'; + $this->colors[] = $this->color[$key]; + $total += $value['total']; + } + $this->total['number_total'] = $total; + } + + $this->chartLabels($this->labels); + $this->chartColors($this->colors); + // 数据查询逻辑 + $data = $this->data; + $this->withContent($data); + $this->withChart($data); } protected function init() @@ -36,11 +57,6 @@ class OrderGoodsActivityMarketChart extends Donut $this->subTitle('各市场销售量的占比图'); $this->chartHeight(170); $this->chartMarginTop(20); - // 设置下拉菜单 - // $this->dropdown([]); - - $this->chartLabels($this->labels); - $this->chartColors($this->colors); } /** @@ -50,8 +66,16 @@ class OrderGoodsActivityMarketChart extends Donut * @param Request $request * @return mixed|void */ - public function handle(Request $request) + public function handleBar(Request $request) { + // $this->GoodsActivityReport = new GoodsActivityReport($params); + // 分页的时候不重复查询数据 + // $currentPage = $params['page'] ?? 1; + // if($currentPage == 1){ + // $data = $this->GoodsActivityReport->getMarketData($params); + // $market = MarketModel::getMarketArray(); + // }else{ + // } // 分页的时候不重复查询数据 $currentPage = $request->get('page'); if($currentPage == 1){ @@ -82,7 +106,7 @@ class OrderGoodsActivityMarketChart extends Donut * * @return array */ - public function parameters(): array + public function parameters($data = []): array { $this->marketId = Auth::getMarket(); return [ @@ -92,6 +116,7 @@ class OrderGoodsActivityMarketChart extends Donut 'store_id' => request()->input('store_id',0), 'start_time' => request()->input('start_time',''), 'end_time' => request()->input('end_time',''), + 'data' => $data ]; } diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php index e99bd4f..5af62b3 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php @@ -21,11 +21,34 @@ class OrderGoodsActivityTotalChart extends Bar protected $GoodsActivityReport = null; protected $showNumber = 7; - public function __construct($data = []) + public function __construct($params = []) { - $this->GoodsActivityReport = new GoodsActivityReport($data); - parent::__construct(); + + $data = $params['list'] ?? []; + + if(!empty($data) && is_array($data)){ + $total = 0; + foreach($data as $key => $value){ + if($key < $this->showNumber){ + $this->data[] = $value['total']; + $this->categories[] = $value['dtime']; + } + $total += $value['total']; + } + $this->total['number_total'] = $total; + } + + $categories = $this->categories; + $chartData = [ + [ + 'name' => '销量', + 'data' => $this->data, + ] + ]; + $this->withContent($this->total); + $this->withChart($chartData); + $this->withCategories($categories); } protected function init() @@ -67,8 +90,9 @@ class OrderGoodsActivityTotalChart extends Bar * @param Request $request * @return mixed|void */ - public function handle(Request $request) + public function handleBar(Request $request) { + // $this->GoodsActivityReport = new GoodsActivityReport($data); // 数据查询逻辑 // 分页的时候不重复查询数据 $currentPage = request()->input('page', 1);