Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
xman 2025-06-30 18:05:05 +08:00
commit e6096df087
11 changed files with 34 additions and 21 deletions

View File

@ -478,8 +478,8 @@ class Order extends Backend
$code = str_pad(mt_rand(0, 999999), 6, '0', STR_PAD_LEFT); $code = str_pad(mt_rand(0, 999999), 6, '0', STR_PAD_LEFT);
// 组合生成的订单编号 // 组合生成的订单编号
$orderNumber = $prefix . $date . $code; $orderNumber = $prefix . $date . $code;
// 取 MD5 前10位
return $orderNumber; return substr(md5($orderNumber), 0, 10);
} }
use AmapTrait; use AmapTrait;

View File

@ -70,7 +70,7 @@ class Item extends Backend
} }
$build->whereBetween('audit_time', [$start, $end_at]) $build->whereBetween('create_time', [$start, $end_at])
->field([ ->field([
'item_title name', // 类型 'item_title name', // 类型
'sum(total) total', // 营业额 'sum(total) total', // 营业额
@ -97,7 +97,7 @@ class Item extends Backend
$re['name'] = str_replace(' ', '', array_pop($name)); $re['name'] = str_replace(' ', '', array_pop($name));
$re['performance_rate'] = $this->mydiv($re['performance'],$re['total']); $re['performance_rate'] = $this->mydiv($re['performance'],$re['total']);
$re['trans_rate'] = $this->mydiv($re['finish_num'],$re['count_num']); $re['trans_rate'] = $this->mydiv($re['finish_num'],$re['count_num']);
$re['cash_value'] = $this->mydiv($re['performance'],$re['count_num']); $re['cash_value'] = $this->mydiv($re['performance'],$re['count_num'],2,false);
$re['total_avg'] = $this->mydiv($re['total'],$re['count_num'],2,false); $re['total_avg'] = $this->mydiv($re['total'],$re['count_num'],2,false);
$re['performance_avg'] = $this->mydiv($re['performance'],$re['finish_num'],2,false); $re['performance_avg'] = $this->mydiv($re['performance'],$re['finish_num'],2,false);
@ -147,12 +147,13 @@ class Item extends Backend
} }
} }
$res = $build->whereBetween('audit_time', [$start, $end_at]) $res = $build
->where('status', Order::STATUS_FINISHED) ->whereBetween('create_time', [$start, $end_at])
->field([ ->field([
'item_title name', // 类型 'item_title name', // 类型
'sum(total) total', // 营业额 'sum(total) total', // 营业额
'count(id) count', // 单量 'count(id) count', // 单量
'count(if(status=60,1,null)) finish_num', // 单量
'sum(performance) performance', // 收益 'sum(performance) performance', // 收益
'sum(refund_amount) refund_amount', // 公司退款 'sum(refund_amount) refund_amount', // 公司退款
'sum(worker_refund_amount) worker_refund_amount', // 工人退款 'sum(worker_refund_amount) worker_refund_amount', // 工人退款
@ -165,6 +166,7 @@ class Item extends Backend
$re['name'] = str_replace(' ', '', array_pop($name)); $re['name'] = str_replace(' ', '', array_pop($name));
$data [] = $re; $data [] = $re;
} }
// dd($data);
$xAxis = []; $xAxis = [];
$totalPerformance = []; $totalPerformance = [];
@ -176,6 +178,7 @@ class Item extends Backend
foreach ($data as $item) { foreach ($data as $item) {
$name = $item['name']; $name = $item['name'];
$total = (float)$item['total']; $total = (float)$item['total'];
$finish_num = (int)$item['finish_num'];
$performance = (float)$item['performance']; $performance = (float)$item['performance'];
$refund = (float)($item['refund_amount'] + $item['worker_refund_amount']); $refund = (float)($item['refund_amount'] + $item['worker_refund_amount']);
$workerRefund = (float)$item['worker_refund_amount']; $workerRefund = (float)$item['worker_refund_amount'];
@ -183,10 +186,10 @@ class Item extends Backend
$xAxis[] = $name; $xAxis[] = $name;
$totalPerformance[] = $total; $totalPerformance[] = $total;
$conversionRate[] = $total > 0 ? round($performance / $total * 100, 2) : 0; $conversionRate[] = $total > 0 ? round($finish_num / $count * 100, 2) : 0;
$profitRate[] = $total > 0 ? round(($total - $workerRefund) / $total * 100, 2) : 0; $profitRate[] = $total > 0 ? round(($performance) / $total * 100, 2) : 0;
$refundRate[] = $total > 0 ? round($refund / $total * 100, 2) : 0; $refundRate[] = $total > 0 ? round($refund / $total * 100, 2) : 0;
$monetizedValue[] = $total / $count; $monetizedValue[] = round($total / $count, 2) ;
} }
if ($totalPerformance){ if ($totalPerformance){

View File

@ -87,8 +87,8 @@ return [
'Dispatch.image' => '收款凭证', 'Dispatch.image' => '收款凭证',
'Dispatch.plan_time' => '预约时间', 'Dispatch.plan_time' => '预约时间',
'Dispatch.finish_time' => '完成时间', 'Dispatch.finish_time' => '完成时间',
'Dispatch.admin_id' => '派单ID', 'Dispatch.admin_id' => '派单ID',
'Dispatch.admin_user' => '派单', 'Dispatch.admin_user' => '派单',
'Dispatch.create_time' => '派单时间', 'Dispatch.create_time' => '派单时间',
'Dispatch.update_time' => '编辑时间' 'Dispatch.update_time' => '编辑时间'
]; ];

View File

@ -31,8 +31,8 @@ return [
'Notice_num' => '通知次数', 'Notice_num' => '通知次数',
'Plan_time' => '预约时间', 'Plan_time' => '预约时间',
'Finish_time' => '完成时间', 'Finish_time' => '完成时间',
'Admin_id' => '派单ID', 'Admin_id' => '派单ID',
'Admin_user' => '派单', 'Admin_user' => '派单',
'Create_time' => '派单时间', 'Create_time' => '派单时间',
'Update_time' => '编辑时间', 'Update_time' => '编辑时间',
'Order.id' => 'ID', 'Order.id' => 'ID',

View File

@ -39,13 +39,13 @@ return [
'Notice_num' => '通知次数', 'Notice_num' => '通知次数',
'Plan_time' => '预约时间', 'Plan_time' => '预约时间',
'Finish_time' => '完成时间', 'Finish_time' => '完成时间',
'Admin_id' => '派单ID', 'Admin_id' => '派单ID',
'Admin_user' => '派单', 'Admin_user' => '派单',
'Create_time' => '派单时间', 'Create_time' => '派单时间',
'Update_time' => '更新时间', 'Update_time' => '更新时间',
'Order.id' => 'ID', 'Order.id' => 'ID',
'Order.order_no' => '订单编号', 'Order.order_no' => '订单编号',
'Order.customer' => '客户姓名', 'Order.customer' => '客户昵称',
'Order.tel' => '客户电话', 'Order.tel' => '客户电话',
'Order.status' => '订单状态', 'Order.status' => '订单状态',
'Order.status 10' => '未派单', 'Order.status 10' => '未派单',

View File

@ -24,6 +24,12 @@
<input id="c-item_title" readonly class="form-control" type="text" value="{$row.item_title|htmlentities}"> <input id="c-item_title" readonly class="form-control" type="text" value="{$row.item_title|htmlentities}">
</div> </div>
</div> </div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Dispatch.admin_user')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-order_admin" readonly class="form-control" type="text" value="{$row.dispatch.admin_user|htmlentities}">
</div>
</div>
<!-- <div class="form-group">--> <!-- <div class="form-group">-->

View File

@ -30,6 +30,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
{field: 'id', title: __('Id')}, {field: 'id', title: __('Id')},
// {field: 'order_id', title: __('Order_id')}, // {field: 'order_id', title: __('Order_id')},
{field: 'order.order_no', title: __('Order.order_no'), operate: '='}, {field: 'order.order_no', title: __('Order.order_no'), operate: '='},
{field: 'dispatch_admin_user', title: __('派单员'), operate: '='},
{field: 'order.customer', title: __('Order.customer'), operate: false}, {field: 'order.customer', title: __('Order.customer'), operate: false},
{field: 'order.tel', title: __('Order.tel'), operate: '='}, {field: 'order.tel', title: __('Order.tel'), operate: '='},
{field: 'type', title: __('售后类型'), searchList: {"1":__('退款'),"2":__('返修'),"3":__('其它')}, formatter: Table.api.formatter.normal}, {field: 'type', title: __('售后类型'), searchList: {"1":__('退款'),"2":__('返修'),"3":__('其它')}, formatter: Table.api.formatter.normal},
@ -55,7 +56,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
{field: 'images', title: __('Images'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images}, {field: 'images', title: __('Images'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images},
{field: 'remark', title: __('Remark'), operate: false, table: table, class: 'autocontent', formatter: Table.api.formatter.content}, {field: 'remark', title: __('Remark'), operate: false, table: table, class: 'autocontent', formatter: Table.api.formatter.content},
{field: 'dispatch_admin_user', title: __('派单员'), operate: '='},
//{field: 'admin_id', title: __('Admin_id')}, //{field: 'admin_id', title: __('Admin_id')},
{field: 'admin_user', title: __('Admin_user'), operate: '='}, {field: 'admin_user', title: __('Admin_user'), operate: '='},

View File

@ -50,7 +50,7 @@ ${data.receive_type == 1 ? '已收定金' : '已收全款'}
客户地址: ${data.address} 客户地址: ${data.address}
${data.receive_type == 1 ? '已收定金' : '已收全款'} ${data.receive_type == 1 ? '已收定金' : '已收全款'}
下单金额: ¥${formatNumber(data.online_amount)} 下单金额: ¥${formatNumber(data.online_amount)}
优惠活动: ${data.coupon?.description || '无'} 优惠活动: ${data.coupon?.code || '无'}
订单备注: ${data.remark ||'无'} 订单备注: ${data.remark ||'无'}
预约时间: ${data.plan_time || '无'} 预约时间: ${data.plan_time || '无'}
`; `;

View File

@ -64,7 +64,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
// {field: 'lat', title: __('Lat'), operate:'BETWEEN'}, // {field: 'lat', title: __('Lat'), operate:'BETWEEN'},
//{field: 'work_tel_id', title: __('Work_tel_id')}, //{field: 'work_tel_id', title: __('Work_tel_id')},
{field: 'source_shop', title: __('Source_shop'), operate: '='}, {field: 'source_shop', title: __('Source_shop'), operate: '='},
{field: 'source', title: __('Source'), operate: 'like'}, // {field: 'source', title: __('Source'), operate: 'like'},
// {field: 'source_uid', title: __('Source_uid'), operate: '='}, // {field: 'source_uid', title: __('Source_uid'), operate: '='},
// {field: 'item_id', title: __('Item_id')}, // {field: 'item_id', title: __('Item_id')},
{field: 'item_title', title: __('Item_title'), operate: false}, {field: 'item_title', title: __('Item_title'), operate: false},

View File

@ -83,6 +83,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','layer'], function ($,
formatter: Table.api.formatter.status, formatter: Table.api.formatter.status,
custom:{25:"red"} custom:{25:"red"}
}, },
{field: 'orderb.customer', title: __('Order.customer'), operate: 'like'},
{field: 'orderb.source_shop', title: __('Order.source_shop'), operate: 'like'},
{field: 'orderb.tel', title: __('Order.tel'), operate: 'like'},
{field: 'worker_name', title: __('Worker_name'), operate: 'LIKE'}, {field: 'worker_name', title: __('Worker_name'), operate: 'LIKE'},
{field: 'worker_tel', title: __('Worker_tel'), operate: 'LIKE'}, {field: 'worker_tel', title: __('Worker_tel'), operate: 'LIKE'},
@ -121,8 +124,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','layer'], function ($,
//{field: 'order.source_shop', title: __('Order.source_shop'), operate: '='}, //{field: 'order.source_shop', title: __('Order.source_shop'), operate: '='},
// {field: 'order.source', title: __('Order.source')}, // {field: 'order.source', title: __('Order.source')},
{field: 'orderb.customer', title: __('Order.customer'), operate: 'like'},
{field: 'orderb.tel', title: __('Order.tel'), operate: 'like'},
{field: 'orderb.address', title: __('Order.address'), operate: false, table: table, class: 'autocontent', formatter: Table.api.formatter.content}, {field: 'orderb.address', title: __('Order.address'), operate: false, table: table, class: 'autocontent', formatter: Table.api.formatter.content},
{field: 'orderb.item_title', title: __('Order.item_title'), operate: 'like'}, {field: 'orderb.item_title', title: __('Order.item_title'), operate: 'like'},

View File

@ -36,6 +36,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
// {checkbox: true}, // {checkbox: true},
{field: 'id', title: __('Id')}, {field: 'id', title: __('Id')},
{field: 'order_no', title: __('Order_no'), operate: '='}, {field: 'order_no', title: __('Order_no'), operate: '='},
{field: 'dispatch_admin_user', title: '派单员', operate: '='},
{field: 'review.create_time', title: __('回访状态'), operate:false, formatter: function (val, row) { {field: 'review.create_time', title: __('回访状态'), operate:false, formatter: function (val, row) {