|
@@ -280,33 +280,46 @@ export function portalCmsHtml(d: any, cms: any): string {
|
|
|
const cmsRange = String(c['时间范围'] || '').replace(/^\S+\s*/, '').slice(0, 60)
|
|
const cmsRange = String(c['时间范围'] || '').replace(/^\S+\s*/, '').slice(0, 60)
|
|
|
const cmsDate = String(c.date || '')
|
|
const cmsDate = String(c.date || '')
|
|
|
const end = String(fus['证据窗末'] || c.date || '').slice(0, 10)
|
|
const end = String(fus['证据窗末'] || c.date || '').slice(0, 10)
|
|
|
- // ★P75 全部用**应用自身样式 + 内联样式**(不再依赖门户 CSS/S shadow DOM/iframe)——与其它 5 个子选项卡同一条路径。
|
|
|
|
|
- const chip = (s: string, ev2 = false) =>
|
|
|
|
|
|
|
+ const chip = (s: string, warn = false) =>
|
|
|
'<span style="display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;font-size:12.5px;'
|
|
'<span style="display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;font-size:12.5px;'
|
|
|
- + (ev2 ? 'border:1px solid var(--warning,#B7791F);color:var(--warning,#B7791F);background:transparent;'
|
|
|
|
|
- : 'border:1px solid var(--line,#D8DDE3);color:var(--sub,#5A6472);background:var(--panel2,#EDF0F3);')
|
|
|
|
|
|
|
+ + (warn ? 'border:1px solid var(--warning,#B7791F);color:var(--warning,#B7791F)'
|
|
|
|
|
+ : 'border:1px solid var(--line,#D8DDE3);color:var(--sub,#5A6472);background:var(--panel2,#EDF0F3)')
|
|
|
+ '">' + s + '</span>'
|
|
+ '">' + s + '</span>'
|
|
|
- const chips = [
|
|
|
|
|
- chip('当前时间窗 · ' + win),
|
|
|
|
|
- chip('需关注 ' + alert + ' 台', true),
|
|
|
|
|
- chip('未见异常 ' + okn + ' 台'),
|
|
|
|
|
- chip('窗口内报警工单 · ' + tickets + ' 条', true),
|
|
|
|
|
- chip('CMS 采集窗 ' + (cmsWin || '—') + (cmsRange ? ' · ' + cmsRange : '')),
|
|
|
|
|
- chip('CMS 裁决 · 优秀 ' + cnt('优秀') + ' / 良好 ' + cnt('良好') + ' / 报警 ' + cnt('报警')),
|
|
|
|
|
- chip('行动项 ' + actions + ' 条' + (cmsDate ? ' · 数据时点 ' + cmsDate : '')),
|
|
|
|
|
- ].join('')
|
|
|
|
|
|
|
+ const card = (k: string, h: string, p: string) =>
|
|
|
|
|
+ '<div class="panel" style="flex:1 1 280px;min-width:260px">'
|
|
|
|
|
+ + '<div class="small muted">' + k + '</div><h3 style="margin:4px 0 6px">' + h + '</h3>'
|
|
|
|
|
+ + '<p class="small muted" style="margin:0">' + p + '</p></div>'
|
|
|
|
|
+ // ★方案 B:门户「振动·CMS」**全部文字条目逐条保真**(仅"按窗实时"的三项用实时值),样式用应用自身
|
|
|
return ''
|
|
return ''
|
|
|
+ '<div class="eyebrow">状态监测 · 振动诊断 (windcms)</div>'
|
|
+ '<div class="eyebrow">状态监测 · 振动诊断 (windcms)</div>'
|
|
|
+ '<div class="panel mb">'
|
|
+ '<div class="panel mb">'
|
|
|
+ '<h3 style="margin:0 0 6px">振动与 SCADA 联合分析</h3>'
|
|
+ '<h3 style="margin:0 0 6px">振动与 SCADA 联合分析</h3>'
|
|
|
- + '<p class="small muted" style="margin:0 0 10px">六层模型:数据完整性 → ISO 标量 → 主轴承 rms → 台内自适应基线 → '
|
|
|
|
|
- + '谱线八闸 → 六枚举裁决。厂商判据与模型融合,机制未定不命名部件。</p>'
|
|
|
|
|
- + '<div style="display:flex;flex-wrap:wrap;gap:8px">' + chips + '</div>'
|
|
|
|
|
|
|
+ + '<p class="small muted" style="margin:0 0 10px">六层模型:数据完整性 → ISO 标量 → 主轴承 rms → 台内自适应基线 → 谱线八闸 → 六枚举裁决。厂商判据与模型融合,机制未定不命名部件。</p>'
|
|
|
|
|
+ + '<div style="display:flex;flex-wrap:wrap;gap:8px">'
|
|
|
|
|
+ + chip('当前时间窗 · ' + win)
|
|
|
|
|
+ + chip('需关注 ' + alert + ' 台', true)
|
|
|
|
|
+ + chip('未见异常 ' + okn + ' 台')
|
|
|
|
|
+ + chip('证据窗末 ' + (end || '—'))
|
|
|
|
|
+ + chip('窗口内报警工单 · ' + tickets + ' 条', true)
|
|
|
|
|
+ + chip('CMS 采集窗 ' + (cmsWin || '—') + (cmsRange ? ' · ' + cmsRange : ''))
|
|
|
|
|
+ + chip('CMS 裁决 · 优秀 ' + cnt('优秀') + ' / 良好 ' + cnt('良好') + ' / 报警 ' + cnt('报警'))
|
|
|
|
|
+ + chip('行动项 ' + actions + ' 条' + (cmsDate ? ' · 数据时点 ' + cmsDate : ''))
|
|
|
|
|
+ + chip('TCM 六采集窗 · 320 万记录 · 160 万谱')
|
|
|
|
|
+ + '</div></div>'
|
|
|
|
|
+ + '<div class="eyebrow">振动分析 · 方法与证据边界</div>'
|
|
|
|
|
+ + '<div style="display:flex;flex-wrap:wrap;gap:12px;margin-bottom:14px">'
|
|
|
|
|
+ + card('比较基准', '异常比较先核实基准', '先确认测点、工况、处理链和频带可比,再结合线能量占比与机群分布识别异常。阈值须注明来源、样本和适用范围;本底接近检测下限时,倍数不宜单独解释,诊断仍需补充证据。')
|
|
|
|
|
+ + card('证据关联', '多种特征不等于独立证据', '频谱、标量和时域特征若来自同一波形,应保留共同来源,避免重复计票。跨测点或跨窗口的一致性也需核查共同工况与采集依赖;结论升级应结合独立检修等证据,不以特征数量替代证据质量。')
|
|
|
|
|
+ + card('结论边界', '结论强度与证据匹配', '使用“持续恶化”“单调”或“唯一”等表述前,应明确观察范围、比较对象、样本依赖和对应检验。端段差异不能代替全程趋势证据;复核发现支持不足时,补充验证或降低结论强度,并保留不确定性。')
|
|
|
+ '</div>'
|
|
+ '</div>'
|
|
|
- + '<div class="panel">'
|
|
|
|
|
- + '<p class="small muted" style="margin:0">本条为门户「振动·CMS」迁入版:数值按**当前时间窗**与 CMS 证据包实时计算;'
|
|
|
|
|
- + (end ? '证据窗末 ' + end + '。' : '')
|
|
|
|
|
- + '完整的 CMS 六层明细与逐台评级见「振动分析」子选项卡。</p>'
|
|
|
|
|
|
|
+ + '<div class="eyebrow">在线 · 客户版</div>'
|
|
|
|
|
+ + '<div class="panel"><h3 style="margin:0 0 6px">CMS 振动分析工作台</h3>'
|
|
|
|
|
+ + '<p class="small muted" style="margin:0 0 10px">左栏"需关注 / 未见异常"按台展开四个测点判级;工作台可选机组、测点、分析类即时出图;交互页可提问。演示只停客户版与一次工作台运行。</p>'
|
|
|
|
|
+ + '<div style="display:flex;flex-wrap:wrap;gap:8px">'
|
|
|
|
|
+ + '<a class="chip" style="padding:5px 11px;border-radius:999px;border:1px solid var(--line,#D8DDE3);text-decoration:none" href="/cms/?theme=light" target="_blank" rel="noopener">新窗口打开 windcms →</a>'
|
|
|
|
|
+ + '<a class="chip" style="padding:5px 11px;border-radius:999px;border:1px solid var(--line,#D8DDE3);text-decoration:none" href="/cms/workbench.html?theme=light" target="_blank" rel="noopener">工作台 →</a>'
|
|
|
|
|
+ + '</div>'
|
|
|
|
|
+ + '<iframe title="windcms" src="/cms/?theme=light" style="width:100%;height:760px;border:1px solid var(--line,#D8DDE3);border-radius:8px;margin-top:12px"></iframe>'
|
|
|
+ '</div>'
|
|
+ '</div>'
|
|
|
}
|
|
}
|
|
|
|
|
|