Browse Source

数据统计

master
lanzu_qinsheng 5 years ago
parent
commit
2ca73a3f56
  1. 0
      app/Admin/Actions/Exporter/SalesMan.php
  2. 55
      app/Admin/Actions/Tools/DataReportOrder.php
  3. 22
      app/Admin/Controllers/v3/DataReport.php
  4. 115
      app/Admin/Extensions/Chart/Bar/OrderBar.php
  5. 7
      resources/views/admin/tools/data_report_order.blade.php
  6. 2
      resources/views/admin/tools/data_report_time.blade.php

0
app/Admin/Actions/EXporter/SalesMan.php → app/Admin/Actions/Exporter/SalesMan.php

55
app/Admin/Actions/Tools/DataReportOrder.php

@ -0,0 +1,55 @@
<?php
namespace App\Admin\Actions\Tools;
use Dcat\Admin\Admin;
use Dcat\Admin\Grid\Tools\AbstractTool;
class DataReportOrder extends AbstractTool
{
protected $url;
protected $option;
protected $route;
public function __construct($route)
{
$this->route = $route;
parent::__construct();
}
protected function script()
{
return <<<JS
$("#{$this->option}").change(function () {
var url = "{$this->url}"
Dcat.reload(url)
});
JS;
}
public function render()
{
$options = [
'al'=>'全部',
'online' => '外卖',
'offline' => '当面付',
];
$data = [
'al'=>'0',
'online' => '1',
'offline' => '2',
];
foreach ($data as $key=>$value){
$this->url = "{$this->route}?order_type={$key}&option={$value}&&name={$options[$key]}";
$this->option = $key;
Admin::script($this->script());
}
return view('admin.tools.data_report_order', compact('options'));
}
}

22
app/Admin/Controllers/v3/DataReport.php

@ -7,6 +7,7 @@ namespace App\Admin\Controllers\v3;
use App\Admin\Actions\Tools\DataReportDate;
use App\Admin\Actions\Tools\DataReportOption;
use App\Admin\Extensions\Chart\Bar\OrderBar;
use App\Models\LanzuStore;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
@ -14,6 +15,7 @@ use Dcat\Admin\Layout\Column;
use Dcat\Admin\Layout\Content;
use Dcat\Admin\Layout\Row;
use Dcat\Admin\Widgets\Card;
use http\Message\Body;
class DataReport
{
@ -77,6 +79,26 @@ class DataReport
$card->style('background-color:#4e9876');
$column->row($card);
});
})
->body(function (Row $row){
$row->column(8,function (Column $column){
$card = new Card();
$card->title('订单图表');
$card->tool(new \App\Admin\Actions\Tools\DataReportOrder('data_report'));
$card->content(OrderBar::make());
$column->row($card);
});
$row->column(4,function (Column $column){
$card1 = Card::make('1111');
$card1->style("height:162px");
$column->row($card1);
$card2 = Card::make('222');
$card2->style("height:162px");
$column->row($card2);
$card3 = Card::make('222');
$card3->style("height:162px");
$column->row($card3);
});
});
}
}

115
app/Admin/Extensions/Chart/Bar/OrderBar.php

@ -0,0 +1,115 @@
<?php
namespace App\Admin\Extensions\Chart\Bar;
use Dcat\Admin\Admin;
use Dcat\Admin\Widgets\ApexCharts\Chart;
use Dcat\Admin\Widgets\Metrics\Bar;
class OrderBar extends Chart
{
public function __construct($containerSelector = null, $options = [])
{
parent::__construct($containerSelector, $options);
$this->setUpOptions();
}
/**
* 初始化图表配置
*/
protected function setUpOptions()
{
$color = Admin::color();
$colors = [$color->primary(), $color->primaryDarker()];
$this->options([
'colors' => $colors,
'chart' => [
'type' => 'bar',
'height' => 430
],
'plotOptions' => [
'bar' => [
'horizontal' => false,
'dataLabels' => [
'position' => 'top',
],
]
],
'dataLabels' => [
'enabled' => true,
'offsetX' => -6,
'style' => [
'fontSize' => '12px',
'colors' => ['#fff']
]
],
'stroke' => [
'show' => true,
'width' => 1,
'colors' => ['#fff']
],
'xaxis' => [
'categories' => [],
],
]);
}
/**
* 处理图表数据
*/
protected function buildData()
{
// 执行你的数据查询逻辑
$data = [
[
'data' => [44, 55, 41, 64, 22, 43, 21]
],
[
'data' => [53, 32, 33, 52, 13, 44, 32]
]
];
$categories = [2001, 2002, 2003, 2004, 2005, 2006, 2007];
$this->withData($data);
$this->withCategories($categories);
}
/**
* 设置图表数据
*
* @param array $data
*
* @return $this
*/
public function withData(array $data)
{
return $this->option('series', $data);
}
/**
* 设置图表类别.
*
* @param array $data
*
* @return $this
*/
public function withCategories(array $data)
{
return $this->option('xaxis.categories', $data);
}
/**
* 渲染图表
*
* @return string
*/
public function render()
{
$this->buildData();
return parent::render();
}
}

7
resources/views/admin/tools/data_report_order.blade.php

@ -0,0 +1,7 @@
<div class="btn-group btn-group-toggle" data-toggle="buttons">
@foreach($options as $option => $label)
<label class="btn btn-outline-primary {{request()->get('order_type','al')==$option? 'active':''}}">
<input type="radio" name="options" id="{{$option}}"> {{$label}}
</label>
@endforeach
</div>

2
resources/views/admin/tools/data_report_time.blade.php

@ -1,6 +1,6 @@
<div class="btn-group btn-group-toggle" data-toggle="buttons">
@foreach($options as $option => $label)
<label class="btn btn-primary {{request()->get('type','all')==$option? 'active':''}}">
<label class="btn btn-outline-primary {{request()->get('t','all')==$option? 'active':''}}">
<input type="radio" name="options" id="{{$option}}"> {{$label}}
</label>
@endforeach

Loading…
Cancel
Save