(function (global) { if (global.MonitorCardKit) { return; } function ensureStyles() { if (document.getElementById("monitor-card-kit-style")) { return; } var style = document.createElement("style"); style.id = "monitor-card-kit-style"; style.textContent = [ "watch-crn-card,watch-dual-crn-card,devp-card,watch-rgv-card{display:block;width:100%;min-width:0;min-height:0;flex:1 1 auto;}", ".mc-root{display:flex;flex-direction:column;width:100%;height:100%;min-width:0;min-height:0;color:#375067;font-size:12px;}", ".mc-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:10px;}", ".mc-title{flex:1;font-size:14px;font-weight:700;color:#22384f;}", ".mc-search{display:flex;gap:8px;flex:1;}", ".mc-input,.mc-select{width:100%;height:34px;padding:0 11px;border-radius:10px;border:1px solid rgba(219,228,236,.96);background:rgba(255,255,255,.84);box-sizing:border-box;color:#334155;outline:none;}", ".mc-input:focus,.mc-select:focus{border-color:rgba(112,148,190,.62);box-shadow:0 0 0 3px rgba(112,148,190,.1);}", ".mc-btn{height:34px;padding:0 12px;border-radius:10px;border:none;background:#6f95bd;color:#fff;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;}", ".mc-btn.mc-btn-ghost{background:rgba(255,255,255,.88);color:#46607a;border:1px solid rgba(219,228,236,.96);}", ".mc-btn.mc-btn-soft{background:rgba(233,239,245,.92);color:#46607a;border:1px solid rgba(210,220,231,.98);}", ".mc-control-toggle{margin-bottom:8px;}", ".mc-control{margin-bottom:10px;padding:12px;border:1px solid rgba(223,232,240,.94);border-radius:14px;background:rgba(248,251,253,.88);}", ".mc-control-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}", ".mc-field{display:flex;flex-direction:column;gap:5px;}", ".mc-field.mc-span-2{grid-column:1 / -1;}", ".mc-field-label{font-size:11px;font-weight:700;color:#72859a;}", ".mc-action-row{display:flex;flex-wrap:wrap;gap:8px;grid-column:1 / -1;padding-top:8px;margin-top:2px;border-top:1px dashed rgba(216,226,235,.92);}", ".mc-collapse{flex:1;min-height:0;overflow:auto;padding-right:2px;}", ".mc-item{border:1px solid rgba(223,232,240,.92);border-radius:14px;background:rgba(255,255,255,.72);margin-bottom:10px;overflow:hidden;}", ".mc-item.is-open{border-color:rgba(132,166,201,.48);box-shadow:0 10px 18px rgba(148,163,184,.08);}", ".mc-head{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border:none;background:transparent;cursor:pointer;text-align:left;color:inherit;}", ".mc-head-main{min-width:0;flex:1;}", ".mc-head-title{font-size:13px;font-weight:700;color:#27425c;line-height:1.35;}", ".mc-head-subtitle{margin-top:3px;font-size:11px;color:#7c8d9f;line-height:1.35;}", ".mc-head-right{display:flex;align-items:center;gap:8px;flex-shrink:0;}", ".mc-badge{padding:4px 8px;border-radius:999px;font-size:10px;font-weight:700;}", ".mc-badge.is-success{background:rgba(82,177,126,.12);color:#2d7650;}", ".mc-badge.is-working{background:rgba(111,149,189,.12);color:#3f6286;}", ".mc-badge.is-warning{background:rgba(214,162,94,.14);color:#9b6a24;}", ".mc-badge.is-danger{background:rgba(207,126,120,.14);color:#a14e4a;}", ".mc-badge.is-muted{background:rgba(148,163,184,.14);color:#748397;}", ".mc-chevron{font-size:14px;color:#6f8194;line-height:1;}", ".mc-body{padding:0 14px 14px;border-top:1px solid rgba(232,238,244,.92);}", ".mc-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px;}", ".mc-detail-cell{padding:10px 12px;border-radius:12px;background:rgba(247,250,252,.9);border:1px solid rgba(232,238,244,.96);}", ".mc-detail-label{font-size:11px;color:#7c8d9f;}", ".mc-detail-value{margin-top:4px;font-size:12px;color:#31485f;line-height:1.45;word-break:break-all;}", ".mc-inline-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}", ".mc-link{padding:0;border:none;background:transparent;color:#4677a4;font-size:12px;font-weight:600;cursor:pointer;}", ".mc-empty{padding:24px 10px;text-align:center;color:#8b9aad;}", ".mc-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:10px;color:#708396;font-size:11px;}", ".mc-page-btn{height:30px;padding:0 10px;border-radius:8px;border:1px solid rgba(219,228,236,.96);background:rgba(255,255,255,.86);color:#46607a;cursor:pointer;}", ".mc-page-btn[disabled]{opacity:.45;cursor:not-allowed;}", ".mc-code{font-family:monospace;}", "@media (max-width: 1100px){.mc-control-grid{grid-template-columns:1fr;}.mc-field.mc-span-2{grid-column:auto;}.mc-toolbar{flex-direction:column;align-items:stretch;}.mc-search{width:100%;}.mc-detail-grid{grid-template-columns:1fr;}}" ].join(""); document.head.appendChild(style); } function showMessage(vm, message, type) { if (!message) { return; } if (vm && typeof vm.$message === "function") { vm.$message({ message: message, type: type === "danger" ? "error" : (type || "info") }); return; } if (vm && vm.$root && typeof vm.$root.showPageMessage === "function") { vm.$root.showPageMessage(message, type === "danger" ? "error" : type); return; } if (global.ELEMENT && typeof global.ELEMENT.Message === "function") { global.ELEMENT.Message({ message: message, type: type === "danger" ? "error" : (type || "info") }); return; } if (global.layer && typeof global.layer.msg === "function") { var iconMap = { success: 1, danger: 2, warning: 0 }; global.layer.msg(message, { icon: iconMap[type] != null ? iconMap[type] : 0, time: 1800 }); return; } console[type === "danger" ? "error" : "log"](message); } function orDash(value) { return value == null || value === "" ? "-" : String(value); } function yesNo(value) { if (value === true || value === "Y" || value === "y" || value === 1 || value === "1") { return "Y"; } if (value === false || value === "N" || value === "n" || value === 0 || value === "0") { return "N"; } return value ? "Y" : "N"; } function deviceStatusLabel(status, fallbackManual) { var normalized = String(status || "").toUpperCase(); if (normalized === "AUTO") { return "自动"; } if (normalized === "WORKING") { return "作业中"; } if (normalized === "ERROR") { return "故障"; } return fallbackManual || "离线"; } function statusTone(label) { if (label === "自动") { return "success"; } if (label === "作业中") { return "working"; } if (label === "手动") { return "warning"; } if (label === "故障" || label === "报警") { return "danger"; } return "muted"; } global.MonitorCardKit = { ensureStyles: ensureStyles, showMessage: showMessage, orDash: orDash, yesNo: yesNo, deviceStatusLabel: deviceStatusLabel, statusTone: statusTone }; })(window);