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()
{
$options = [
'al'=>'全部',
'online' => '外卖',
'offline' => '当面付',
'amount' => '金额',
'num' => '单数',
];
$data = [
'al'=>'0',
'online' => '1',
'offline' => '2',
'amount' => '1',
'num' => '2',
];

3
app/Admin/Common/Order.php

@ -152,4 +152,7 @@ class Order
->toArray();//获取绑定社区的所有用户
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\Widgets\Card;
use http\Message\Body;
use Illuminate\Support\Facades\DB;
class DataReport
{
/**
* 数据报表
* @param Content $content
* @return Content
*/
public function index(Content $content)
{
return $content
->header('数据统计')
->body(function (Row $row){
@ -85,7 +92,7 @@ class DataReport
$card = new Card();
$card->title('订单图表');
$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);
});
$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
{
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();
}
@ -20,14 +22,13 @@ class OrderBar extends Chart
protected function setUpOptions()
{
$color = Admin::color();
$colors = [$color->primary(), $color->primaryDarker()];
$this->options([
'colors' => $colors,
'chart' => [
'type' => 'bar',
'height' => 430
'height' => 430,
],
'plotOptions' => [
'bar' => [
@ -61,17 +62,15 @@ class OrderBar extends Chart
*/
protected function buildData()
{
$orderType = request()->input('order_type')??'amount';
// 执行你的数据查询逻辑
$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->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">
@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}}
</label>
@endforeach

Loading…
Cancel
Save