Browse Source

活动商品--添加图表,分市场

master
liangyuyan 5 years ago
parent
commit
df61f52d96
  1. 7
      app/Admin/Controllers/v3/GoodsActivityReportController.php
  2. 12
      app/Admin/Repositories/v3/GoodsActivityReport.php
  3. 14
      app/Admin/Widgets/Charts/OrderGoodsActivityColumnChart.php
  4. 129
      app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php
  5. 20
      app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php

7
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());
});
}
}

12
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 ?? [];
}
}

14
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;
// }")
// );
}

129
app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php

@ -0,0 +1,129 @@
<?php
namespace App\Admin\Widgets\Charts;
use App\Admin\Repositories\v3\GoodsActivityReport;
use Dcat\Admin\Widgets\Metrics\Donut;
use Illuminate\Http\Request;
use App\Models\v3\Market as MarketModel;
class OrderGoodsActivityMarketChart extends Donut
{
/**
* 活动商品总数
*/
protected $labels = [];
protected $data = [];
protected $total = [];
protected $id;
protected $option;
protected $GoodsActivityReport = null;
protected $color = [ '#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B', '#2b908f', '#f9a3a4', '#90ee7e', '#f48024', '#69d2e7'];
protected $colors = [];
public function __construct($data = [])
{
$this->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 .= '<div class="d-flex pl-1 pr-1 pt-1" style="'.$style.'"><div style="width: 120px">
<i class="fa fa-circle" style="color:'.$this->colors[$key].'"></i> '.$this->labels[$key].'
</div><div>'.$value.'</div></div>';
}
}
return $this->content(
<<<HTML
{$div}
HTML
);
}
}

20
app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php

@ -18,8 +18,8 @@ class OrderGoodsActivityTotalChart extends Bar
protected $total = [];
protected $id;
protected $option;
protected $GoodsActivityReport = null;
protected $valueData = [];
protected $GoodsActivityReport = null;
public function __construct($data = [])
{
@ -71,22 +71,13 @@ class OrderGoodsActivityTotalChart extends Bar
['show' => true]
);
// $this->chartOption(
// 'tooltip.y.formatter',
// JavaScript::make("function (params) {
// return params;
// }")
// );
$this->chartOption(
'tooltip.trigger',
'axis'
);
$this->chartOption(
'tooltip.formatter',
JavaScript::make("function (params) {
return 'ff';
'tooltip.y.formatter',
JavaScript::make("function (params,index) {
return params ;
}")
);
$this->chartOption(
'xaxis.type',
'category'
@ -106,7 +97,6 @@ class OrderGoodsActivityTotalChart extends Bar
*/
public function handle(Request $request)
{
// dd($request);
// 数据查询逻辑
$data = $this->data;
$categories = $this->categories;

Loading…
Cancel
Save