diff --git a/ruoyi-admin/src/main/resources/templates/tyre/car/car.html b/ruoyi-admin/src/main/resources/templates/tyre/car/car.html index 8d777c19..dd081d9d 100644 --- a/ruoyi-admin/src/main/resources/templates/tyre/car/car.html +++ b/ruoyi-admin/src/main/resources/templates/tyre/car/car.html @@ -247,12 +247,28 @@ $("#lifecycleFrame").attr("src", "about:blank"); } - function openMaintenanceOrderTabFromLifecycle() { - // 子 iframe 不直接创建页签:由车辆列表页所在主 iframe 调用 RuoYi openTab,才能正确挂到后台页签容器。 - $.modal.openTab("维保工单列表", ctx + "tyre/order"); + function openMaintenanceOrderDetailTabFromLifecycle(orderId, orderNo) { + var normalizedOrderId = $.common.nullToStr(orderId); + if (!/^\d+$/.test(normalizedOrderId)) { + // 子 iframe 传来的主键只作为导航参数使用,父页再校验一次避免拼接异常详情地址。 + $.modal.alertWarning("工单ID无效,无法打开维保工单详情"); + return; + } + var tabTitle = buildMaintenanceOrderDetailTitle(orderNo); + // 页签必须由车辆列表所在主 iframe 发起,RuoYi 才能把详情页挂到后台主框架,而不是抽屉 iframe 内部。 + $.modal.openTab(tabTitle, ctx + "tyre/order/edit/" + encodeURIComponent(normalizedOrderId)); closeLifecycleDrawer(); } + function buildMaintenanceOrderDetailTitle(orderNo) { + var text = $.common.nullToStr(orderNo); + if (!text || text === "-") { + return "维保工单详情"; + } + // 页签标题不承载 HTML,去掉尖括号可避免异常工单号影响主框架页签 DOM。 + return "维保工单详情 - " + text.replace(/[<>]/g, ""); + } + function escapeHtml(value) { return String(value) .replace(/&/g, "&") diff --git a/ruoyi-admin/src/main/resources/templates/tyre/car/lifecycle.html b/ruoyi-admin/src/main/resources/templates/tyre/car/lifecycle.html index 4c0ebd18..3e19bbce 100644 --- a/ruoyi-admin/src/main/resources/templates/tyre/car/lifecycle.html +++ b/ruoyi-admin/src/main/resources/templates/tyre/car/lifecycle.html @@ -432,7 +432,8 @@