完成订单重构
This commit is contained in:
parent
b6cc5c5cc6
commit
51b3dec40c
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
namespace app\admin\controller\orders;
|
||||
|
||||
use app\admin\model\OrderDispatch;
|
||||
use app\admin\model\OrderLog;
|
||||
use app\common\controller\Backend;
|
||||
use think\exception\DbException;
|
||||
use think\response\Json;
|
||||
|
|
@ -53,14 +55,22 @@ class Dispatchlog extends Backend
|
|||
|
||||
if (false === $this->request->isAjax()) {
|
||||
//page2变更日志
|
||||
|
||||
$dispatch = OrderDispatch::where('id',$dispatch_id)->find();
|
||||
$orderLogs = OrderLog::where('order_id',$dispatch->order_id)->order('id','desc')->select();
|
||||
$logs = $this->model
|
||||
->where('dispatch_id',$dispatch_id)
|
||||
->order('id','desc')
|
||||
->select();
|
||||
|
||||
$this->view->assign('logs',json_encode($logs));
|
||||
$firstLog = end($logs);
|
||||
|
||||
foreach ($orderLogs as $item) {
|
||||
if($item->order_status == 20 && $item->create_time <= $firstLog->create_time){
|
||||
$item->progress_logs = $logs;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->view->assign('logs',json_encode($orderLogs));
|
||||
return $this->view->fetch();
|
||||
}
|
||||
//如果发送的来源是 Selectpage,则转发到 Selectpage
|
||||
|
|
|
|||
|
|
@ -24,11 +24,6 @@ class OrderLog extends Model
|
|||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
// 追加属性
|
||||
protected $append = [
|
||||
'order_status_text'
|
||||
];
|
||||
|
||||
|
||||
|
||||
public function getOrderStatusList()
|
||||
|
|
@ -37,13 +32,6 @@ class OrderLog extends Model
|
|||
}
|
||||
|
||||
|
||||
public function getOrderStatusTextAttr($value, $data)
|
||||
{
|
||||
$value = $value ?: ($data['order_status'] ?? '');
|
||||
$list = $this->getOrderStatusList();
|
||||
return $list[$value] ?? '';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -62,66 +62,96 @@
|
|||
margin-top: 8px;
|
||||
}
|
||||
|
||||
/* 内层进度日志样式 */
|
||||
.timeline-progress {
|
||||
margin-top: 10px;
|
||||
border-left: 2px solid #d0d4db;
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
.timeline-progress-item {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.progress-time {
|
||||
font-size: 11px;
|
||||
color: #888;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.progress-user {
|
||||
font-weight: 600;
|
||||
color: #409EFF;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
.progress-remark {
|
||||
color: #555;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="panel panel-default panel-intro">
|
||||
|
||||
<div class="panel-heading">
|
||||
<!--<div class="panel-lead"><em>多表格(Multitable)</em>用于展示在一个页面展示多个表格数据,并且每次切换时刷新</div>-->
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#first" data-toggle="tab">跟进记录</a></li>
|
||||
<li><a href="#second" data-toggle="tab">任务变更日志</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="panel-body">
|
||||
<div id="myTabContent" class="tab-content">
|
||||
<div class="tab-pane fade active in" id="first">
|
||||
<table id="table1" class="table table-striped table-bordered table-hover" width="100%">
|
||||
</table>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="second">
|
||||
<!-- <table id="table2" class="table table-striped table-bordered table-hover" width="100%">-->
|
||||
<!-- </table>-->
|
||||
|
||||
<div class="timeline" id="log-timeline"></div>
|
||||
</div>
|
||||
<div class="timeline" id="log-timeline"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
const logs = {$logs}; // 后端传入的数据,格式保持和你的一致
|
||||
|
||||
|
||||
const logs = {$logs}; // 你可以用后端模板变量渲染进去
|
||||
|
||||
renderTimeline(logs);
|
||||
function getRoleLabel(role) {
|
||||
if (role === 1) return '管理员:';
|
||||
if (role === 2) return '师傅:';
|
||||
return '';
|
||||
}
|
||||
|
||||
function renderTimeline(logs) {
|
||||
const container = document.getElementById('log-timeline');
|
||||
container.innerHTML = '';
|
||||
|
||||
// 按时间倒序排序(最新在上)
|
||||
// 外层倒序时间
|
||||
logs.sort((a, b) => new Date(b.create_time) - new Date(a.create_time));
|
||||
|
||||
logs.forEach(log => {
|
||||
const item = document.createElement('div');
|
||||
item.className = 'timeline-item';
|
||||
|
||||
// 外层用户显示,带角色标签
|
||||
const outerRoleLabel = getRoleLabel(log.role);
|
||||
const outerUserDisplay = `${outerRoleLabel}${log.admin_user || '系统'}`;
|
||||
|
||||
// 内层进度日志HTML(时间顺序)
|
||||
const progressHTML = (log.progress_logs || [])
|
||||
.sort((a, b) => new Date(a.create_time) - new Date(b.create_time))
|
||||
.map(progress => {
|
||||
const innerRoleLabel = getRoleLabel(progress.role);
|
||||
const innerUserDisplay = `${innerRoleLabel}${progress.admin_user || '系统'}`;
|
||||
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">${innerUserDisplay}</span>
|
||||
<span class="progress-remark">${progress.remark || '无内容'}</span>
|
||||
</div>
|
||||
`;
|
||||
}).join('');
|
||||
|
||||
item.innerHTML = `
|
||||
<div class="timeline-marker"></div>
|
||||
<div class="timeline-content">
|
||||
<h4 class="timeline-title">${log.status_text || '无状态'}</h4>
|
||||
<h4 class="timeline-title">${log.admin_user || '系统'}</h4>
|
||||
<p>${log.remark || '无备注'}</p>
|
||||
<p class="timeline-time">${log.create_time || ''}</p>
|
||||
</div>
|
||||
`;
|
||||
<div class="timeline-marker"></div>
|
||||
<div class="timeline-content">
|
||||
<h4 class="timeline-title">${log.order_status_text || '无状态'}</h4>
|
||||
<p><strong>${outerUserDisplay}</strong></p>
|
||||
<p><strong>变更说明:</strong>${log.remark || '无'}</p>
|
||||
<p class="timeline-time">${log.create_time}</p>
|
||||
${progressHTML ? `<div class="timeline-progress">${progressHTML}</div>` : ''}
|
||||
</div>
|
||||
`;
|
||||
|
||||
container.appendChild(item);
|
||||
});
|
||||
}
|
||||
|
||||
renderTimeline(logs);
|
||||
</script>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user