|
|
<?php
namespace App\AdminAgent\Metrics\Examples;
use App\Common\OrderStatus;use App\Models\Order;use Dcat\Admin\Admin;use Dcat\Admin\Widgets\Metrics\Bar;use Illuminate\Http\Request;use Illuminate\Support\Arr;use Illuminate\Support\Facades\DB;
class FinanceStatistics extends Bar{ /** * 初始化卡片内容 */ protected function init() { parent::init();
$color = Admin::color(); // 卡片内容宽度
$this->contentWidth(0, 12); // 标题
//$this->title('财务统计');
$this->chartHeight = 500; // 设置下拉选项
$this->dropdown([ '1' => '日', '30' => '月', '365' => '年', ]); // 设置图表颜色
$this->chartColors([ $color->green(), ]); }
/** * 处理请求 * * @param Request $request * * @return mixed|void */ public function handle(Request $request) { $query = Order::query() ->where('agent_id',Admin::user()->id) ->where('status',OrderStatus::SUCCESS) ->select('*'); switch ($request->get('option')) { case '1': $query->addSelect(DB::raw("sum(price) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time")); break; case '30': $query->addSelect(DB::raw("sum(price) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at)) AS statistics_time")); break; case '365': $query->addSelect(DB::raw("sum(price) as sum_price,CONCAT(YEAR(created_at)) AS statistics_time")); break; default: $query->addSelect(DB::raw("sum(price) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time")); } $order = $query->groupBy('statistics_time') ->orderBy('created_at') ->get() ->toArray(); $this->withChart( Arr::pluck($order,'sum_price') ); $this->chartLabels( Arr::pluck($order,'statistics_time') ); }
/** * 设置图表数据. * * @param array $data * * @return $this */ public function withChart(array $data) { return $this->chart([ 'series' => [[ 'name' => '金额', 'data' => $data ]], 'chart' => [ //'width' => '180%',
'type' => 'bar', 'events' => [ ], 'toolbar' => ['show' => false], ], 'colors' => $this->colors, 'plotOptions' => [ 'bar' => [ //'columnWidth' => '45%',
'distributed' => true, ] ], 'dataLabels' => [ 'enabled' => false ], 'legend' => [ 'show' => false ], 'xaxis' => [ //'categories' =>
// [75, 125, 225, 175, 125, 75, 25]
//,
'labels' => [ 'show' => true, 'style' => [ 'colors' => $this->colors, 'fontSize' => '12px' ] ], ], 'yaxis' => [ 'show' => true ], 'tooltip' => [ 'x' => ['show' => true], ],
]); }}
|