This commit is contained in:
xman 2025-04-24 16:10:12 +08:00
parent 00a3f2bb21
commit 06715272c8
3 changed files with 40 additions and 13 deletions

View File

@ -52,11 +52,14 @@ class Dispatcher extends Backend
$today = now()->format('Y-m-d');
$today_end = now()->format('Y-m-d');
//设置过滤方法
$this->request->filter(['strip_tags', 'trim']);
if (false === $this->request->isAjax()) {
$this->assign('daterange',$today.' - '.$today_end);
$this->assignconfig('default_daterange',now()->format('Y-m-d 00:00:00').' - '.now()->format('Y-m-d 23:59:59'));
return $this->view->fetch();
}
@ -99,7 +102,7 @@ class Dispatcher extends Backend
$newData = [
['派单员','总业绩(¥)','转化率(%)','利润率(%)','变现值']
['派单员','总业绩','转化率','利润率','变现值']
];
foreach ($data as $datum){
$newData[] = [
@ -127,7 +130,7 @@ class Dispatcher extends Backend
"COUNT(CASE WHEN status = 60 THEN 1 END) AS finish_num", //完成数
"COUNT(CASE WHEN status IN (".$orderValid.") THEN 1 END) AS count_num", //总订单数 (排除取消 和草稿)
"SUM(CASE WHEN status = 60 THEN total END) AS total", //成效额
"SUM(CASE WHEN status = 60 THEN total END) AS performance", //业绩
"SUM(CASE WHEN status = 60 THEN performance END) AS performance", //业绩
"SUM(CASE WHEN status = 60 THEN (cost + material_cost) END) AS cost_total", //总成本
@ -189,7 +192,7 @@ class Dispatcher extends Backend
}else{
$datum->admin_user = '系统';
}
$datum->avg_time_diff = $this->_calc($datum->avg_time_diff,3600,2);
$datum->avg_time_diff = $this->_calc($datum->avg_time_diff,3600*24,2);
$datum->id = $datum->dispatch_admin_id;
$newData[] = $datum->toArray();

View File

@ -214,6 +214,9 @@ return [
// 是否自动开启 SESSION
'auto_start' => true,
//有效期
'expire' => 3600*24,
'type' => 'redis',
'host' => Env::get('redis.redis_host'), // Redis 服务器地址
'port' => Env::get('redis.redis_port'), // Redis 端口

View File

@ -29,7 +29,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'echarts', 'echarts-t
columns: [
[
//{field: 'id', title: __('Id')},
{field: 'id', title: __('ID'),visible:false,operate: false},
{field: 'id', title: __('ID'),visible:true,operate: false},
{field: 'admin_user', title: __('派单员'),operate: "LIKE"},
{field: 'count_num', title: __('总订单数'),operate: false},
{field: 'finish_num', title: __('完单数'),operate: false},
@ -45,7 +45,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'echarts', 'echarts-t
{field: 'performance_avg', title: __('客单利润(¥)'), operate: false},
{field: 'total_avg', title: __('客单价(¥)'), operate: false},
{field: 'avg_time_diff', title: __('派单时效(小时)'), operate: false},
{field: 'avg_time_diff', title: __('派单时效()'), operate: false},
//{field: 'admin_user', title: __('派单员'),operate: "LIKE",visible:false},
//{field: 'city_name', title: __('城市'),operate: "LIKE",visible:false},
@ -57,7 +57,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'echarts', 'echarts-t
datetimeFormat: "YYYY-MM-DD",
//defaultValue:today()+' - '+today(),
data:'autocomplete="off" data-local={"format":"YYYY-MM-DD"}',
visible:false},
visible:false,
defaultValue: Config.default_daterange
},
// {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
]
@ -105,6 +107,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'echarts', 'echarts-t
// ]
// }
const headers = response[0];
const units = ['元', '%', '%', '']; // 如果你有单位可以一起拼接
var barChart = Echarts.init(document.getElementById('bar-chart'), 'walden');
var option = {
legend: {},
@ -112,14 +117,30 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'echarts', 'echarts-t
dataset: {
source: response
},
xAxis: { type: 'category' },
xAxis: {
type: 'category',
axisLabel: {
show: true // 隐藏“系统”
},
axisTick: { show: false },
axisLine: { show: false }
},
yAxis: {},
series: [
{ type: 'bar' },
{ type: 'bar' },
{ type: 'bar' },
{ type: 'bar' }
]
series: headers.slice(1).map((title, i) => ({
type: 'bar',
label: {
show: true,
position: 'top',
formatter: function (params) {
const value = params.value[i + 1]; // 因为第一列是“派单员”
const unit = units[i] || '';
return `${value} ${unit}`; // 显示数值 + 单位
}
},
itemStyle: {
borderRadius: 4
}
}))
};
barChart.setOption(option);
},