sb
This commit is contained in:
parent
bcef5370b8
commit
2d871656ac
|
|
@ -30,6 +30,7 @@ class OrderDispatchLog
|
|||
'status' => $dispatch->status,
|
||||
'status_text' => $statusList[$dispatch->status],
|
||||
'remark' => $remark,
|
||||
'images' => $dispatch->record_images??'',
|
||||
'admin_user' => $dispatch->admin_user??'系统',
|
||||
];
|
||||
\app\admin\model\OrderDispatchLog::create($data);
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ class AutoDispatchLogic
|
|||
$worker = (new Worker())->where('id', $worker_id)->find();
|
||||
$insert ['worker_name'] = $worker['name'];
|
||||
$insert ['worker_tel'] = $worker['tel'];
|
||||
$insert['follow'] = 1;
|
||||
$orderDispatch = new OrderDispatch();
|
||||
$res = $orderDispatch->allowField(true)->save($insert);
|
||||
$order->status = \app\admin\model\Order::STATUS_DISPATCHED;
|
||||
|
|
|
|||
|
|
@ -85,16 +85,23 @@ class Dispatch2 extends Backend
|
|||
$row->btn_record = in_array($row->status, $this->model->btnActiveStatusList('btn_record')) && $this->auth->check('orders/dispatchrecord/add');
|
||||
|
||||
if(!in_array($row->status, $this->model->btnActiveStatusList('btn_record')) ){
|
||||
//正常情况,执行不到这里来,不用担心循环执行问题
|
||||
$row->follow = 2;
|
||||
OrderDispatch::where('id',$row->id)->update(['follow'=>2]);
|
||||
}
|
||||
if($row->btn_record){
|
||||
|
||||
if($row->follow == 0 ){
|
||||
if($row->btn_record != 2){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
|
||||
/*if($row->follow == 0 ){
|
||||
$row->btn_record = true;
|
||||
}else{
|
||||
$row->btn_record = false;
|
||||
}
|
||||
}*/
|
||||
|
||||
// if($row->type == 2)
|
||||
// {
|
||||
|
|
|
|||
|
|
@ -126,10 +126,10 @@ class Dispatchrecord extends Backend
|
|||
|
||||
$params['need_notice'] = 0;
|
||||
$params['status'] = 1;
|
||||
if(!empty($params['rate'])){ //修改任务的状态
|
||||
/* if(!empty($params['rate'])){ //修改任务的状态
|
||||
if($dispatch->status != $params['rate']){
|
||||
$dispatch->status = $params['rate'];
|
||||
$dispatch->save();
|
||||
$dispatch->save();*/
|
||||
|
||||
$groups = $this->auth->getGroups($this->auth->id);
|
||||
$groupName = '';
|
||||
|
|
@ -139,17 +139,18 @@ class Dispatchrecord extends Backend
|
|||
}
|
||||
|
||||
$dispatch->admin_user = $groupName.':'. $this->auth->nickname;
|
||||
$dispatch->record_images = $params['images'];
|
||||
$hookParams = [
|
||||
'dispatch' => $dispatch,
|
||||
'remark' => '人工跟进,备注内容:'.$params['remark'],
|
||||
'remark' => '跟进订单,跟进内容:'.$params['remark'],
|
||||
];
|
||||
Hook::listen('order_dispatch_change', $hookParams);
|
||||
|
||||
if($params['rate'] == 10){
|
||||
/* if($params['rate'] == 10){
|
||||
$dispatch->got_time = date('Y-m-d H:i:s', time());
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
/* }
|
||||
}*/
|
||||
$dispatch->follow = 1;
|
||||
}
|
||||
$dispatch->record_count ++;
|
||||
|
|
|
|||
|
|
@ -98,6 +98,18 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 图片预览弹窗 -->
|
||||
<div id="image-preview-overlay" style="display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background:rgba(0,0,0,0.6);z-index:9999;justify-content:center;align-items:center;">
|
||||
<img id="image-preview-img" src="" style="max-width:90%;max-height:90%;box-shadow:0 0 20px #000;border-radius:6px;" />
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.progress-images img:hover {
|
||||
box-shadow: 0 0 4px rgba(0, 0, 0, 0.4);
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
const logs = {$logs}; // 后端传入的数据,格式保持和你的一致
|
||||
|
||||
|
|
@ -129,9 +141,10 @@
|
|||
return `
|
||||
<div class="timeline-progress-item">
|
||||
<span class="progress-time">${progress.create_time}</span>
|
||||
<span class="progress-user">${progress.status_text}</span>
|
||||
<span class="progress-user">${progress.status_text}</span>
|
||||
<span class="progress-user">${innerUserDisplay}</span>
|
||||
<span class="progress-remark">${progress.remark || '无内容'}</span>
|
||||
${renderProgressImages(progress.images)}
|
||||
</div>
|
||||
`;
|
||||
}).join('');
|
||||
|
|
@ -152,4 +165,45 @@
|
|||
}
|
||||
|
||||
renderTimeline(logs);
|
||||
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
const overlay = document.getElementById('image-preview-overlay');
|
||||
const previewImg = document.getElementById('image-preview-img');
|
||||
|
||||
// 事件委托:图片点击弹窗
|
||||
document.body.addEventListener('click', function (e) {
|
||||
if (e.target.tagName === 'IMG' && e.target.dataset.preview === 'true') {
|
||||
previewImg.src = e.target.src;
|
||||
overlay.style.display = 'flex';
|
||||
}
|
||||
});
|
||||
|
||||
// 点击遮罩关闭
|
||||
overlay.addEventListener('click', function () {
|
||||
overlay.style.display = 'none';
|
||||
previewImg.src = '';
|
||||
});
|
||||
});
|
||||
|
||||
function renderProgressImages(imageStr) {
|
||||
if (!imageStr || typeof imageStr !== 'string') return '';
|
||||
|
||||
const imageList = imageStr.split(',')
|
||||
.map(url => url.trim())
|
||||
.filter(Boolean);
|
||||
|
||||
if (!imageList.length) return '';
|
||||
|
||||
return `
|
||||
<div class="progress-images" style="margin-top: 6px;">
|
||||
${imageList.map(img => `
|
||||
<img src="${img}" data-preview="true"
|
||||
style="width:40px;height:40px;border-radius:4px;border:1px solid #ccc;margin-right:5px;"
|
||||
onerror="this.style.display='none'" />
|
||||
`).join('')}
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
<label class="control-label col-xs-12 col-sm-2">{:__('跟进依据')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<div class="input-group">
|
||||
<input id="c-images" class="form-control" size="50" name="row[images]" type="text">
|
||||
<input data-rule="required" id="c-images" class="form-control" size="50" name="row[images]" type="text">
|
||||
<div class="input-group-addon no-border no-padding">
|
||||
<span><button type="button" id="faupload-images" class="btn btn-danger faupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
|
||||
<span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
|
||||
|
|
@ -44,6 +44,7 @@
|
|||
{if condition='$dispatch.type eq 1'}
|
||||
|
||||
|
||||
<!--
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('任务进度')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
|
@ -54,12 +55,13 @@
|
|||
<label><input type="radio" {if condition="$dispatch.status eq 30"}checked{/if} name="row[rate]" value="30"> 服务中</label>
|
||||
</div>
|
||||
|
||||
<!-- const STATUS_GOTIT = 10; //已接-->
|
||||
<!-- const STATUS_PLANIT = 20; //已预约-->
|
||||
<!-- const STATUS_OVERTIME = 25; //超时(过了预约时间)-->
|
||||
<!-- const STATUS_CLOCK = 30; //已打卡-->
|
||||
<!– const STATUS_GOTIT = 10; //已接–>
|
||||
<!– const STATUS_PLANIT = 20; //已预约–>
|
||||
<!– const STATUS_OVERTIME = 25; //超时(过了预约时间)–>
|
||||
<!– const STATUS_CLOCK = 30; //已打卡–>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
|
|
@ -70,6 +72,9 @@
|
|||
<label><input type="radio" name="row[notice_time]" value="2"> 2天后</label>
|
||||
<label><input type="radio" name="row[notice_time]" value="3"> 3天后</label>
|
||||
<label><input type="radio" name="row[notice_time]" value="4"> 4天后</label>
|
||||
<label><input type="radio" name="row[notice_time]" value="5"> 5天后</label>
|
||||
<label><input type="radio" name="row[notice_time]" value="6"> 6天后</label>
|
||||
<label><input type="radio" name="row[notice_time]" value="7"> 7天后</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ use think\Hook;
|
|||
class CheckOrderDispatchGotCommand extends Command
|
||||
{
|
||||
protected $title = '【自动派单未接单检测,五分钟未接单,重派派单】/【自动派接单五分钟未预约,重新派单】/【自动派单上门时间已到,未完成上门】,每分钟执行一次';
|
||||
|
||||
protected function configure()
|
||||
{
|
||||
$this->setName('check:dispatch-toget')
|
||||
|
|
@ -27,6 +28,8 @@ class CheckOrderDispatchGotCommand extends Command
|
|||
$this->_toget();
|
||||
$this->_toplan();
|
||||
$this->_toarrive();
|
||||
$this->_tofinished();
|
||||
|
||||
$output->info('OVER');
|
||||
}
|
||||
|
||||
|
|
@ -127,4 +130,23 @@ class CheckOrderDispatchGotCommand extends Command
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
private function _tofinished(): void
|
||||
{
|
||||
|
||||
//https://f1jo9ghdket.feishu.cn/wiki/PCK8wtWnSihQrukCRq1c3nCynyd
|
||||
//5.自动订单派单完之后不需要进入待跟进状态,当师傅确认上门之后10分钟之内没有更新进度(首次更新进度),则需要进入待跟进状态,需要人为跟进。
|
||||
|
||||
$Model = new OrderDispatch();
|
||||
$now = date('Y-m-d H:i:s', time() -600); //创建三十分名以
|
||||
$count = $Model->where('status', OrderDispatch::STATUS_CLOCK)
|
||||
->where('type', 2)
|
||||
->where('follow', 1)
|
||||
->whereNull('estimated_finish_time')
|
||||
->where('arrive_time', '<=', $now)
|
||||
->update(['follow'=>0]);
|
||||
|
||||
echo '已上门未更新:'. $count. PHP_EOL;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -123,11 +123,11 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','layer'], function ($,
|
|||
|
||||
//{field: 'order.source_shop', title: __('Order.source_shop'), operate: '='},
|
||||
// {field: 'order.source', title: __('Order.source')},
|
||||
{field: 'orderb.customer', title: __('Order.customer'), operate: false},
|
||||
{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.item_title', title: __('Order.item_title'), operate: false},
|
||||
{field: 'orderb.item_title', title: __('Order.item_title'), operate: 'like'},
|
||||
{field: 'orderb.detail', title: __('Order.detail'), operate: false, table: table, class: 'autocontent', formatter: Table.api.formatter.content},
|
||||
|
||||
{field: 'order.images', title: __('Order.images'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images},
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user