完成订单重构

This commit is contained in:
xman 2025-06-02 15:12:41 +08:00
parent b6cc5c5cc6
commit 51b3dec40c
3 changed files with 76 additions and 48 deletions

View File

@ -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

View File

@ -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] ?? '';
}

View File

@ -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>