完成订单重构
This commit is contained in:
parent
b6cc5c5cc6
commit
51b3dec40c
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
namespace app\admin\controller\orders;
|
namespace app\admin\controller\orders;
|
||||||
|
|
||||||
|
use app\admin\model\OrderDispatch;
|
||||||
|
use app\admin\model\OrderLog;
|
||||||
use app\common\controller\Backend;
|
use app\common\controller\Backend;
|
||||||
use think\exception\DbException;
|
use think\exception\DbException;
|
||||||
use think\response\Json;
|
use think\response\Json;
|
||||||
|
|
@ -53,14 +55,22 @@ class Dispatchlog extends Backend
|
||||||
|
|
||||||
if (false === $this->request->isAjax()) {
|
if (false === $this->request->isAjax()) {
|
||||||
//page2变更日志
|
//page2变更日志
|
||||||
|
$dispatch = OrderDispatch::where('id',$dispatch_id)->find();
|
||||||
|
$orderLogs = OrderLog::where('order_id',$dispatch->order_id)->order('id','desc')->select();
|
||||||
$logs = $this->model
|
$logs = $this->model
|
||||||
->where('dispatch_id',$dispatch_id)
|
->where('dispatch_id',$dispatch_id)
|
||||||
->order('id','desc')
|
->order('id','desc')
|
||||||
->select();
|
->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();
|
return $this->view->fetch();
|
||||||
}
|
}
|
||||||
//如果发送的来源是 Selectpage,则转发到 Selectpage
|
//如果发送的来源是 Selectpage,则转发到 Selectpage
|
||||||
|
|
|
||||||
|
|
@ -24,11 +24,6 @@ class OrderLog extends Model
|
||||||
protected $updateTime = false;
|
protected $updateTime = false;
|
||||||
protected $deleteTime = false;
|
protected $deleteTime = false;
|
||||||
|
|
||||||
// 追加属性
|
|
||||||
protected $append = [
|
|
||||||
'order_status_text'
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function getOrderStatusList()
|
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;
|
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>
|
</style>
|
||||||
|
|
||||||
<div class="panel panel-default panel-intro">
|
<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 class="panel-body">
|
||||||
<div id="myTabContent" class="tab-content">
|
<div id="myTabContent" class="tab-content">
|
||||||
<div class="tab-pane fade active in" id="first">
|
<div class="timeline" id="log-timeline"></div>
|
||||||
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
const logs = {$logs}; // 后端传入的数据,格式保持和你的一致
|
||||||
|
|
||||||
|
function getRoleLabel(role) {
|
||||||
const logs = {$logs}; // 你可以用后端模板变量渲染进去
|
if (role === 1) return '管理员:';
|
||||||
|
if (role === 2) return '师傅:';
|
||||||
renderTimeline(logs);
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
function renderTimeline(logs) {
|
function renderTimeline(logs) {
|
||||||
const container = document.getElementById('log-timeline');
|
const container = document.getElementById('log-timeline');
|
||||||
container.innerHTML = '';
|
container.innerHTML = '';
|
||||||
|
|
||||||
// 按时间倒序排序(最新在上)
|
// 外层倒序时间
|
||||||
logs.sort((a, b) => new Date(b.create_time) - new Date(a.create_time));
|
logs.sort((a, b) => new Date(b.create_time) - new Date(a.create_time));
|
||||||
|
|
||||||
logs.forEach(log => {
|
logs.forEach(log => {
|
||||||
const item = document.createElement('div');
|
const item = document.createElement('div');
|
||||||
item.className = 'timeline-item';
|
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 = `
|
item.innerHTML = `
|
||||||
<div class="timeline-marker"></div>
|
<div class="timeline-marker"></div>
|
||||||
<div class="timeline-content">
|
<div class="timeline-content">
|
||||||
<h4 class="timeline-title">${log.status_text || '无状态'}</h4>
|
<h4 class="timeline-title">${log.order_status_text || '无状态'}</h4>
|
||||||
<h4 class="timeline-title">${log.admin_user || '系统'}</h4>
|
<p><strong>${outerUserDisplay}</strong></p>
|
||||||
<p>${log.remark || '无备注'}</p>
|
<p><strong>变更说明:</strong>${log.remark || '无'}</p>
|
||||||
<p class="timeline-time">${log.create_time || ''}</p>
|
<p class="timeline-time">${log.create_time}</p>
|
||||||
</div>
|
${progressHTML ? `<div class="timeline-progress">${progressHTML}</div>` : ''}
|
||||||
`;
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
container.appendChild(item);
|
container.appendChild(item);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
renderTimeline(logs);
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user