PanelStatus-66a71c0a.js 4.4 KB

1
  1. import{_ as M,r as _,c as v,o as j,a as A,b as i,d,e as f,f as n,g as l,i as s,k as u,t as o,m as E,F as O,p as q,h as G,n as k}from"./index-29b7bbe1.js";const H={class:"panel-status"},J={class:"overview-bar"},K={class:"overview-item"},Q={class:"overview-item"},R={class:"overview-item"},W={class:"overview-item"},X={class:"overview-item"},Y={class:"overview-value"},Z={class:"overview-item"},$={key:1,class:"panel-grid"},ss={class:"panel-header"},ts={class:"panel-id"},es={class:"panel-info"},as={class:"info-row"},os={class:"info-value"},ns={class:"info-row"},ls={class:"info-value"},is={class:"info-row"},rs={class:"info-value uid-text"},cs={class:"panel-stats"},us={class:"stat-item"},ds={class:"stat-value"},_s={class:"stat-item"},vs={class:"stat-value success"},fs={class:"stat-item"},ps={class:"panel-progress"},ms={class:"progress-text"},gs={__name:"PanelStatus",setup(ws){const p=_(!1),b=_(""),r=_([]),m=_(null),S=v(()=>r.value.filter(t=>t.status==="online").length),x=v(()=>r.value.filter(t=>t.status==="offline").length),P=v(()=>r.value.filter(t=>t.alarm_count>0).length),B=v(()=>[...r.value].sort((t,e)=>{const c=Number(t.panel_id)||0,w=Number(e.panel_id)||0;return c-w}));function N(t){return t.status==="offline"?"panel-offline":t.alarm_count>0?"panel-alarm":"panel-online"}function U(t){return t==="online"?"green":"default"}function y(t){return t.port_count?Math.round(t.connected_count/t.port_count*100):0}function z(t){return t.alarm_count>0?"#ff4d4f":t.status==="offline"?"#d9d9d9":"#52c41a"}function D(t){return t&&String(t).toUpperCase().replace(/[:\s-]/g,"")||"--"}async function I(){try{const t=await G.panel.getStatus();t.data.success&&(r.value=Object.values(t.data.panels||{}))}catch(t){console.error("load panel status error:",t)}}async function g(){p.value=!0;try{await I(),b.value=new Date().toLocaleTimeString()}finally{p.value=!1}}return j(async()=>{await g(),m.value=setInterval(g,5e3)}),A(()=>{m.value&&clearInterval(m.value)}),(t,e)=>{const c=i("a-tag"),w=i("a-button"),h=i("a-card"),C=i("a-col"),T=i("a-empty"),V=i("a-divider"),F=i("a-progress"),L=i("a-row");return d(),f("div",H,[n(L,{gutter:[24,24]},{default:l(()=>[n(C,{span:24},{default:l(()=>[n(h,null,{default:l(()=>[s("div",J,[s("div",K,[e[0]||(e[0]=s("span",{class:"overview-label"},"面板总数",-1)),n(c,{color:"blue"},{default:l(()=>[u(o(r.value.length)+" 个",1)]),_:1})]),s("div",Q,[e[1]||(e[1]=s("span",{class:"overview-label"},"在线面板",-1)),n(c,{color:"green"},{default:l(()=>[u(o(S.value)+" 个",1)]),_:1})]),s("div",R,[e[2]||(e[2]=s("span",{class:"overview-label"},"离线面板",-1)),n(c,{color:"default"},{default:l(()=>[u(o(x.value)+" 个",1)]),_:1})]),s("div",W,[e[3]||(e[3]=s("span",{class:"overview-label"},"告警面板",-1)),n(c,{color:"red"},{default:l(()=>[u(o(P.value)+" 个",1)]),_:1})]),s("div",X,[e[4]||(e[4]=s("span",{class:"overview-label"},"最近更新",-1)),s("span",Y,o(b.value),1)]),s("div",Z,[n(w,{type:"primary",size:"small",onClick:g,loading:p.value},{default:l(()=>[...e[5]||(e[5]=[u(" 刷新 ",-1)])]),_:1},8,["loading"])])])]),_:1})]),_:1}),n(C,{span:24},{default:l(()=>[n(h,{title:"面板状态"},{default:l(()=>[r.value.length===0?(d(),E(T,{key:0,description:"暂无面板数据"})):(d(),f("div",$,[(d(!0),f(O,null,q(B.value,a=>(d(),f("div",{key:a.panel_id,class:k(["panel-card",N(a)])},[s("div",ss,[s("span",ts,"面板 "+o(a.panel_id),1),n(c,{color:U(a.status),size:"small"},{default:l(()=>[u(o(a.status==="online"?"在线":"离线"),1)]),_:2},1032,["color"])]),s("div",es,[s("div",as,[e[6]||(e[6]=s("span",{class:"info-label"},"地址:",-1)),s("span",os,o(a.address??"--"),1)]),s("div",ns,[e[7]||(e[7]=s("span",{class:"info-label"},"位置:",-1)),s("span",ls,o(a.position??"--"),1)]),s("div",is,[e[8]||(e[8]=s("span",{class:"info-label"},"UID:",-1)),s("span",rs,o(D(a.panel_uid)),1)])]),n(V,{style:{margin:"12px 0"}}),s("div",cs,[s("div",us,[e[9]||(e[9]=s("span",{class:"stat-label"},"端口数",-1)),s("span",ds,o(a.port_count),1)]),s("div",_s,[e[10]||(e[10]=s("span",{class:"stat-label"},"已连接",-1)),s("span",vs,o(a.connected_count),1)]),s("div",fs,[e[11]||(e[11]=s("span",{class:"stat-label"},"告警数",-1)),s("span",{class:k(["stat-value",{error:a.alarm_count>0}])},o(a.alarm_count),3)])]),s("div",ps,[n(F,{percent:y(a),"show-info":!1,"stroke-color":z(a),"trail-color":"#f0f0f0",size:"small"},null,8,["percent","stroke-color"]),s("span",ms,o(y(a))+"%",1)])],2))),128))]))]),_:1})]),_:1})]),_:1})])}}},ys=M(gs,[["__scopeId","data-v-f0b88171"]]);export{ys as default};