diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index bb37090..1b0c2e3 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -6,6 +6,7 @@ use App\Admin\Actions\Grid\v3\DataReportOption; use App\Admin\Repositories\v3\GoodsActivityReport; use App\Admin\Widgets\Charts\OrderGoodsActivityColumnChart; +use App\Admin\Widgets\Charts\OrderGoodsActivityMarketChart; use App\Admin\Widgets\Charts\OrderGoodsActivityTotalChart; use Dcat\Admin\Grid; use Dcat\Admin\Controllers\AdminController; @@ -17,7 +18,6 @@ use Dcat\Admin\Layout\Row; class GoodsActivityReportController extends AdminController { - public $totalData = []; protected $GoodsActivityReport = null; public function __construct() { @@ -99,11 +99,12 @@ class GoodsActivityReportController extends AdminController { return $content->title('活动商品统计') ->body(function(Row $row){ - $row->column(6,new OrderGoodsActivityTotalChart($this->totalData)); + $row->column(6,new OrderGoodsActivityTotalChart()); + $row->column(3,new OrderGoodsActivityMarketChart()); // $row->column(6,new OrderGoodsActivityColumnChart()); }) ->body(function(Row $row){ - $row->column(12,$this->grid()); + // $row->column(12,$this->grid()); }); } } diff --git a/app/Admin/Repositories/v3/GoodsActivityReport.php b/app/Admin/Repositories/v3/GoodsActivityReport.php index c9491e7..b848f9b 100644 --- a/app/Admin/Repositories/v3/GoodsActivityReport.php +++ b/app/Admin/Repositories/v3/GoodsActivityReport.php @@ -102,4 +102,16 @@ class GoodsActivityReport extends EloquentRepository return $total ?? []; } + + /** + * 分市场获取 + */ + public function getMarketData() + { + $selects = "SUM(lanzu_order_goods.number) as total,SUM((original_price-price)*number) as subsidy_total,market_id"; + $orderGoodsActivity = $this->getDataModel($selects); + $total = $orderGoodsActivity->groupBy('market_id')->get()->toArray(); + + return $total ?? []; + } } diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityColumnChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityColumnChart.php index d4f02ae..0095dd5 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityColumnChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityColumnChart.php @@ -3,6 +3,7 @@ namespace App\Admin\Widgets\Charts; use Dcat\Admin\Admin; +use Dcat\Admin\Support\JavaScript; use Dcat\Admin\Widgets\ApexCharts\Chart; use Illuminate\Http\Request; @@ -75,13 +76,20 @@ class OrderGoodsActivityColumnChart extends Chart 'color' => $color->primary() ] ] - ] + ], + // 'tooltip' => [ + // 'x' => [ + // 'show' => true + // ] + // ] ]); $number = 10; // $this->chartOption( - // 'dataLabels.formatter', + // 'tooltip.y.formatter', // // 这个值最后段代码会作为JS代码执行 - // JavaScript::make("function () { return {$number}; }") + // JavaScript::make("function (params, index) { + // return params +'-'+ index; + // }") // ); } diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php new file mode 100644 index 0000000..687bcc0 --- /dev/null +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php @@ -0,0 +1,129 @@ +GoodsActivityReport = new GoodsActivityReport(); + $this->option = $this->id = 7; + + // 分页的时候不重复查询数据 + $currentPage = request()->input('page', 1); + if($currentPage == 1){ + $data = $this->GoodsActivityReport->getMarketData(); + $market = MarketModel::getMarketArray(); + 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; + } + } + + parent::__construct(); + } + + protected function init() + { + parent::init(); + // 设置标题 + $this->title(''); + $this->chartHeight(160); + // 设置下拉菜单 + // $this->dropdown([]); + + $this->chartLabels($this->labels); + + // 设置图表颜色 + $this->chartColors($this->colors); + } + + /** + * 处理请求 + * 如果你的图表类中包含此方法,则可以通过此方法处理前端通过ajax提交的获取图表数据的请求 + * + * @param Request $request + * @return mixed|void + */ + public function handle(Request $request) + { + // 数据查询逻辑 + $data = $this->data; + $this->withContent($data); + $this->withChart($data); + } + + /** + * 这里返回需要异步传递到 handler 方法的参数 + * + * @return array + */ + public function parameters(): array + { + return [ + 'id' => $this->id, + 'option' => $this->option, + ]; + } + + /** + * 设置图表数据. + * + * @param array $data + * + * @return $this + */ + public function withChart(array $data) + { + return $this->chart([ + 'series' => $data, + ]); + } + + /** + * 渲染卡片内容. + * + * @return string + */ + public function withContent($data = []) + { + $div = ''; + $style = 'margin-bottom: 8px'; + if(!empty($data) && is_array($data)){ + foreach($data as $key => $value){ + $div .= '