|
|
|
|
@ -432,7 +432,8 @@
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="row">
|
|
|
|
|
<div class="col-lg-4 col-md-5 col-sm-12">
|
|
|
|
|
<!-- 暂时隐藏基础信息与当前装车轮胎,避免车辆详情对话框出现左右分栏导致主视图宽度不足。 -->
|
|
|
|
|
<!--<div class="col-lg-4 col-md-5 col-sm-12">
|
|
|
|
|
<div class="info-card">
|
|
|
|
|
<div class="section-title"><i class="fa fa-bookmark"></i>基本信息</div>
|
|
|
|
|
<table class="info-table" id="vehicleInfo"></table>
|
|
|
|
|
@ -444,9 +445,9 @@
|
|
|
|
|
<div class="text-center text-muted-dash" style="padding: 40px 0;">正在加载...</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>-->
|
|
|
|
|
|
|
|
|
|
<div class="col-lg-8 col-md-7 col-sm-12">
|
|
|
|
|
<div class="col-lg-12 col-md-12 col-sm-12">
|
|
|
|
|
<div class="info-card">
|
|
|
|
|
<div class="section-title"><i class="fa fa-wrench"></i>轮位视图</div>
|
|
|
|
|
<div id="latestMaintenance">
|
|
|
|
|
@ -457,7 +458,7 @@
|
|
|
|
|
<div class="timeline-card">
|
|
|
|
|
<div class="timeline-header">
|
|
|
|
|
<span class="title">生命周期</span>
|
|
|
|
|
<span class="mini-tip">按时间倒序展示维保工单,点击记录打开维保工单列表页签</span>
|
|
|
|
|
<span class="mini-tip">按时间倒序展示维保工单,点击记录打开维保工单详情页签</span>
|
|
|
|
|
</div>
|
|
|
|
|
<ul class="life-list" id="timelineList"></ul>
|
|
|
|
|
<div class="text-center text-muted-dash" id="emptyTimeline" style="display: none; padding: 80px 0;">
|
|
|
|
|
@ -491,8 +492,9 @@
|
|
|
|
|
}
|
|
|
|
|
var data = result.data || {};
|
|
|
|
|
renderSummary(data);
|
|
|
|
|
renderVehicleInfo(data.car || {});
|
|
|
|
|
renderMountedTyres(data.mountedTyres || []);
|
|
|
|
|
// 基本信息与当前装车轮胎已从页面隐藏,保留汇总和生命周期即可让主内容与对话框等宽。
|
|
|
|
|
// renderVehicleInfo(data.car || {});
|
|
|
|
|
// renderMountedTyres(data.mountedTyres || []);
|
|
|
|
|
// 维保历史已合并到生命周期聚合接口,页面不再额外调用独立列表接口,避免同一车牌重复查数。
|
|
|
|
|
renderTimeline(data.maintenanceList || []);
|
|
|
|
|
});
|
|
|
|
|
@ -565,7 +567,12 @@
|
|
|
|
|
$("#emptyTimeline").hide();
|
|
|
|
|
var html = [];
|
|
|
|
|
$.each(maintenanceRows, function (index, item) {
|
|
|
|
|
html.push('<li class="life-item clickable-title" onclick="goMaintenanceList()" title="打开维保工单列表页签">');
|
|
|
|
|
var orderId = item.orderId == null ? item.id : item.orderId;
|
|
|
|
|
// 生命周期页嵌在车辆抽屉 iframe 中,只把业务主键交给父页,由父页接管主框架页签与抽屉关闭。
|
|
|
|
|
html.push('<li class="life-item clickable-title" data-order-id="'
|
|
|
|
|
+ encodeURIComponent(displayValue(orderId)) + '" data-order-no="'
|
|
|
|
|
+ encodeURIComponent(displayValue(item.orderNo))
|
|
|
|
|
+ '" onclick="openMaintenanceOrderDetail(this)" title="打开维保工单详情页签">');
|
|
|
|
|
html.push('<span class="life-dot maintenance">维</span>');
|
|
|
|
|
html.push('<div class="life-time">' + safeText(item.maintainDate) + '</div>');
|
|
|
|
|
html.push('<div class="life-title">' + safeText(eventTitle(item)) + '</div>');
|
|
|
|
|
@ -816,15 +823,26 @@
|
|
|
|
|
return displayValue(value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function goMaintenanceList() {
|
|
|
|
|
// 生命周期页嵌在车辆列表抽屉 iframe 中,交给父页打开后台页签并关闭抽屉,避免子 iframe 找错页签容器。
|
|
|
|
|
if (window.parent && typeof window.parent.openMaintenanceOrderTabFromLifecycle === "function") {
|
|
|
|
|
window.parent.openMaintenanceOrderTabFromLifecycle();
|
|
|
|
|
function openMaintenanceOrderDetail(target) {
|
|
|
|
|
var orderId = decodeURIComponent($(target).attr("data-order-id") || "");
|
|
|
|
|
var orderNo = decodeURIComponent($(target).attr("data-order-no") || "");
|
|
|
|
|
if (!/^\d+$/.test(orderId)) {
|
|
|
|
|
// 没有有效工单主键时禁止拼接详情 URL,避免无意义请求或路径污染。
|
|
|
|
|
$.modal.alertWarning("该维保记录缺少有效工单ID,无法打开详情");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 兜底:若未来生命周期页被独立打开,仍按 RuoYi 页签方式进入维保工单列表。
|
|
|
|
|
var modalApi = window.parent && window.parent.$ && window.parent.$.modal ? window.parent.$.modal : $.modal;
|
|
|
|
|
modalApi.openTab("维保工单列表", ctx + "tyre/order");
|
|
|
|
|
// 生命周期页嵌在车辆列表抽屉 iframe 中,必须交给父页打开主框架页签并关闭抽屉。
|
|
|
|
|
if (window.parent && typeof window.parent.openMaintenanceOrderDetailTabFromLifecycle === "function") {
|
|
|
|
|
window.parent.openMaintenanceOrderDetailTabFromLifecycle(orderId, orderNo);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 兜底:若未来生命周期页被独立打开,仍按 RuoYi 页签方式进入对应工单详情。
|
|
|
|
|
$.modal.openTab(buildMaintenanceOrderDetailTitle(orderNo), ctx + "tyre/order/edit/" + encodeURIComponent(orderId));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function buildMaintenanceOrderDetailTitle(orderNo) {
|
|
|
|
|
var text = displayValue(orderNo);
|
|
|
|
|
return text == "-" ? "维保工单详情" : "维保工单详情 - " + text;
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
</body>
|
|
|
|
|
|