Browse Source

数据报表

master
lanzu_qinsheng 5 years ago
parent
commit
3238f06002
  1. 10
      app/Admin/Actions/Tools/DataReportOrder.php
  2. 3
      app/Admin/Common/Order.php
  3. 31
      app/Admin/Controllers/v3/DataReport.php
  4. 21
      app/Admin/Extensions/Chart/Bar/OrderBar.php
  5. 2
      resources/views/admin/tools/data_report_order.blade.php

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

@ -31,17 +31,15 @@ JS;
public function render() public function render()
{ {
$options = [ $options = [
'al'=>'全部',
'online' => '外卖',
'offline' => '当面付',
'amount' => '金额',
'num' => '单数',
]; ];
$data = [ $data = [
'al'=>'0',
'online' => '1',
'offline' => '2',
'amount' => '1',
'num' => '2',
]; ];

3
app/Admin/Common/Order.php

@ -152,4 +152,7 @@ class Order
->toArray();//获取绑定社区的所有用户 ->toArray();//获取绑定社区的所有用户
return $uid; return $uid;
} }
} }

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

@ -16,11 +16,18 @@ use Dcat\Admin\Layout\Content;
use Dcat\Admin\Layout\Row; use Dcat\Admin\Layout\Row;
use Dcat\Admin\Widgets\Card; use Dcat\Admin\Widgets\Card;
use http\Message\Body; use http\Message\Body;
use Illuminate\Support\Facades\DB;
class DataReport class DataReport
{ {
/**
* 数据报表
* @param Content $content
* @return Content
*/
public function index(Content $content) public function index(Content $content)
{ {
return $content return $content
->header('数据统计') ->header('数据统计')
->body(function (Row $row){ ->body(function (Row $row){
@ -85,7 +92,7 @@ class DataReport
$card = new Card(); $card = new Card();
$card->title('订单图表'); $card->title('订单图表');
$card->tool(new \App\Admin\Actions\Tools\DataReportOrder('data_report')); $card->tool(new \App\Admin\Actions\Tools\DataReportOrder('data_report'));
$card->content(OrderBar::make());
$card->content(OrderBar::make($this->orderData(['type'=>1])));
$column->row($card); $column->row($card);
}); });
$row->column(4,function (Column $column){ $row->column(4,function (Column $column){
@ -101,4 +108,26 @@ class DataReport
}); });
}); });
} }
public function orderData($params=[])
{
$where['type'] = $params['type'];
$data = DB::table('lanzu_order_main')
->select('money')
->selectRaw("FROM_UNIXTIME(created_at,'%Y-%m-%d') as add_time")
->where($where)
->get();
$time = $num = $amount = [];
if ($data){
$data = $data->groupBy('add_time')->toArray();
foreach ($data as $key=>$val){
$time[] = $key;
$num[] = intval(count($val));
$amount[] = sprintf("%.2f",array_sum(array_column($val,'money')));
}
return ['time'=>$time,'num'=>$num,'amount'=>$amount];
}
return ['time'=>'','num'=>'','amount'=>''];
}
} }

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

@ -7,10 +7,12 @@ use Dcat\Admin\Widgets\Metrics\Bar;
class OrderBar extends Chart class OrderBar extends Chart
{ {
public function __construct($containerSelector = null, $options = [])
protected $_data;
public function __construct($data=[])
{ {
parent::__construct($containerSelector, $options);
parent::__construct($containerSelector=null, $options=[]);
dump($data);
$this->_data = $data;
$this->setUpOptions(); $this->setUpOptions();
} }
@ -20,14 +22,13 @@ class OrderBar extends Chart
protected function setUpOptions() protected function setUpOptions()
{ {
$color = Admin::color(); $color = Admin::color();
$colors = [$color->primary(), $color->primaryDarker()]; $colors = [$color->primary(), $color->primaryDarker()];
$this->options([ $this->options([
'colors' => $colors, 'colors' => $colors,
'chart' => [ 'chart' => [
'type' => 'bar', 'type' => 'bar',
'height' => 430
'height' => 430,
], ],
'plotOptions' => [ 'plotOptions' => [
'bar' => [ 'bar' => [
@ -61,17 +62,15 @@ class OrderBar extends Chart
*/ */
protected function buildData() protected function buildData()
{ {
$orderType = request()->input('order_type')??'amount';
// 执行你的数据查询逻辑 // 执行你的数据查询逻辑
$data = [ $data = [
[ [
'data' => [44, 55, 41, 64, 22, 43, 21]
'name'=>'订单金额',
'data' =>$orderType=='num'? $this->_data['num']:$this->_data['amount']
], ],
[
'data' => [53, 32, 33, 52, 13, 44, 32]
]
]; ];
$categories = [2001, 2002, 2003, 2004, 2005, 2006, 2007];
$categories = $this->_data['time'];
$this->withData($data); $this->withData($data);
$this->withCategories($categories); $this->withCategories($categories);
} }

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

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

Loading…
Cancel
Save