You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
2.9 KiB
134 lines
2.9 KiB
<?php
|
|
|
|
namespace App\AdminAgent\Metrics\Examples;
|
|
|
|
use App\Common\DataTime;
|
|
use App\Common\OrderStatus;
|
|
use App\Models\Order;
|
|
use App\Models\User;
|
|
use Dcat\Admin\Admin;
|
|
use Dcat\Admin\Widgets\Metrics\Bar;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Arr;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class ProductStatistics 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)
|
|
->select('*');
|
|
switch ($request->get('option')) {
|
|
case '1':
|
|
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time"));
|
|
break;
|
|
case '30':
|
|
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at)) AS statistics_time"));
|
|
break;
|
|
case '365':
|
|
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at)) AS statistics_time"));
|
|
break;
|
|
default:
|
|
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time"));
|
|
}
|
|
$order = $query->groupBy('statistics_time')
|
|
->orderBy('statistics_time')
|
|
->get();
|
|
|
|
$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],
|
|
],
|
|
|
|
]);
|
|
}
|
|
}
|