import{_ as J,u as X,r as C,c as W,w as Y,o as Z,a as ee,b as r,d as v,e as g,f as l,g as n,h as w,i as s,j as L,k as i,t as y,l as se,m as O,n as te,F as z,p as B,q as u,S as ae}from"./index-29b7bbe1.js";const le={class:"real-time-status"},oe={class:"overview-bar"},ne={class:"overview-item"},de={class:"overview-item"},ie={class:"overview-item"},ce={key:0,class:"overview-item"},re={class:"overview-value"},ue={class:"terminal-scroll"},_e={class:"uid-text"},ve={key:0,class:"disconnected-overlay"},me={key:1,class:"disconnected-overlay"},pe={key:2},fe={class:"port-grid"},ge=["title"],ye={class:"port-number"},Ne={class:"led-legend"},Ce={class:"legend-item"},be={class:"legend-item"},Se={class:"legend-item"},we={class:"legend-item"},Le={class:"legend-item"},Ee={class:"led-grid"},ke=["title"],De={class:"led-number"},Te={class:"led-legend"},he={class:"legend-item"},Oe={class:"legend-item"},Ie={class:"legend-item"},xe={class:"legend-item"},Ae={__name:"RealTimeStatus",setup(Ge){const b=X(),p=C([]),E=C(!1),k=C(""),c=C(null),I=C({}),N={CONNECTED:"#52c41a",DISCONNECTED:"#d9d9d9",ILLEGAL:"#ff4d4f",ILLEGAL_CONNECT:"#ff4d4f",ILLEGAL_DISCONNECT:"#1890ff",UNKNOWN:"#faad14"},R={CONNECTED:"已连接",DISCONNECTED:"未连接",ILLEGAL:"非法",ILLEGAL_CONNECT:"非法插入",ILLEGAL_DISCONNECT:"非法拔出",UNKNOWN:"未知"},D=C({}),S={0:"#d9d9d9",1:"#ff4d4f",2:"#52c41a",3:"#1890ff"},V={0:"关闭",1:"红灯闪烁",2:"绿灯闪烁",3:"蓝灯闪烁"};let T=null;const j=W(()=>p.value.length),x=W(()=>{if(!c.value)return{};const t=c.value.address,e=Object.values(I.value).find(a=>a.address===t);if(!e||!e.ports)return{};const d={};for(let a=1;a<=24;a++){const _=e.ports[a]||e.ports[String(a)];d[a]=(_==null?void 0:_.status)||"UNKNOWN"}return d});async function M(){E.value=!0;try{const t=await w.modbus.broadcastQuery({timeout:3});if(t.data.success&&t.data.responses){const e=await w.modbus.getStoredDevices(),d=e.data.success?e.data.devices||{}:{};p.value=t.data.responses.map(a=>({uid:a.uid,uid_readable:a.uid_readable,address:d[a.uid]||a.address||1})).filter(a=>a.address)}}catch(t){console.error("discover error:",t)}finally{E.value=!1,k.value=new Date().toLocaleTimeString()}}async function A(){try{const t=await w.modbus.getStoredDevices();t.data.success&&t.data.panels&&(p.value=t.data.panels.filter(e=>e.online).map(e=>{var d;return{uid:e.uid,uid_readable:((d=e.uid.match(/.{1,2}/g))==null?void 0:d.join(":"))||e.uid,address:e.address}}))}catch(t){console.error("load stored devices error:",t)}}function F(t){c.value=t}async function h(){var t;try{const e=(t=c.value)==null?void 0:t.address;if(e===void 0)return;const d=await w.modbus.getLedStatus(e);if(d.data.success&&d.data.leds){const a=d.data.leds,_={};for(let m=1;m<=24;m++){const f=a[m];_[m]=f==null||f===""?0:Math.max(0,Math.min(3,Number(f)||0))}D.value=_}}catch{}}async function G(){try{const t=await w.panel.getStatus();t.data.success&&t.data.panels&&(I.value={...t.data.panels})}catch{}}return Y(c,t=>{t&&h()}),Z(async()=>{b.serialConnected&&await A(),await G(),await h(),T=setInterval(async()=>{await A(),await G(),await h()},3e3),p.value.length>0&&!c.value&&(c.value=p.value[0])}),ee(()=>{T&&clearInterval(T)}),(t,e)=>{const d=r("a-tag"),a=r("a-button"),_=r("a-card"),m=r("a-col"),f=r("a-empty"),q=r("a-list-item-meta"),P=r("a-list-item"),Q=r("a-list"),U=r("a-alert"),H=r("a-divider"),$=r("a-row");return v(),g("div",le,[l($,{gutter:[24,24]},{default:n(()=>[l(m,{span:24},{default:n(()=>[l(_,null,{default:n(()=>[s("div",oe,[s("div",ne,[e[0]||(e[0]=s("span",{class:"overview-label"},"串口状态",-1)),l(d,{color:L(b).serialConnected?"green":"red"},{default:n(()=>[i(y(L(b).serialConnected?"已连接":"未连接"),1)]),_:1},8,["color"])]),s("div",de,[e[1]||(e[1]=s("span",{class:"overview-label"},"终端数量",-1)),l(d,{color:"blue"},{default:n(()=>[i(y(j.value)+" 个",1)]),_:1})]),s("div",ie,[l(a,{type:"primary",size:"small",onClick:M,loading:E.value},{default:n(()=>[...e[2]||(e[2]=[i(" 发现终端 ",-1)])]),_:1},8,["loading"])]),k.value?(v(),g("div",ce,[e[3]||(e[3]=s("span",{class:"overview-label"},"更新",-1)),s("span",re,y(k.value),1)])):se("",!0)])]),_:1})]),_:1}),l(m,{xs:24,lg:8},{default:n(()=>[l(_,{title:"已发现终端"},{default:n(()=>[s("div",ue,[L(b).serialConnected?p.value.length===0?(v(),O(f,{key:1,description:"暂无终端"})):(v(),O(Q,{key:2,size:"small","data-source":p.value},{renderItem:n(({item:o})=>{var K;return[l(P,{class:te(["terminal-item",{"terminal-item-selected":((K=c.value)==null?void 0:K.address)===o.address}]),onClick:Ue=>F(o)},{default:n(()=>[l(q,null,{title:n(()=>[s("span",null,"地址 "+y(o.address),1)]),description:n(()=>[s("code",_e,y(o.uid_readable||o.uid),1)]),_:2},1024)]),_:2},1032,["class","onClick"])]}),_:1},8,["data-source"])):(v(),O(f,{key:0,description:"串口未连接"}))])]),_:1})]),_:1}),l(m,{xs:24,lg:16},{default:n(()=>[l(_,{title:c.value?`地址 ${c.value.address} 端口状态`:"端口状态"},{default:n(()=>[L(b).serialConnected?c.value?(v(),g("div",pe,[s("div",fe,[(v(),g(z,null,B(24,o=>s("div",{key:o,class:"port-cell",title:`端口 ${o}: ${R[x.value[o]||"UNKNOWN"]}`},[s("div",{class:"port-indicator",style:u({backgroundColor:N[x.value[o]||"UNKNOWN"]})},[s("span",ye,y(o),1)],4)],8,ge)),64))]),s("div",Ne,[s("div",Ce,[s("span",{class:"dot",style:u({background:N.CONNECTED})},null,4),e[4]||(e[4]=i(" 已连接",-1))]),s("div",be,[s("span",{class:"dot",style:u({background:N.DISCONNECTED})},null,4),e[5]||(e[5]=i(" 未连接",-1))]),s("div",Se,[s("span",{class:"dot",style:u({background:N.ILLEGAL_CONNECT})},null,4),e[6]||(e[6]=i(" 非法插入",-1))]),s("div",we,[s("span",{class:"dot",style:u({background:N.ILLEGAL_DISCONNECT})},null,4),e[7]||(e[7]=i(" 非法拔出",-1))]),s("div",Le,[s("span",{class:"dot",style:u({background:N.UNKNOWN})},null,4),e[8]||(e[8]=i(" 未知",-1))])]),l(H,{style:{margin:"16px 0"}}),e[13]||(e[13]=s("h4",{class:"led-section-title"},"24 路 LED 状态",-1)),s("div",Ee,[(v(),g(z,null,B(24,o=>s("div",{key:`led-${o}`,class:"led-cell",title:`端口 ${o} LED: ${V[D.value[o]??0]}`},[s("div",{class:"led-dot",style:u({backgroundColor:S[D.value[o]??0]})},[s("span",De,y(o),1)],4)],8,ke)),64))]),s("div",Te,[s("div",he,[s("span",{class:"dot",style:u({background:S[1]})},null,4),e[9]||(e[9]=i(" 红灯闪烁",-1))]),s("div",Oe,[s("span",{class:"dot",style:u({background:S[2]})},null,4),e[10]||(e[10]=i(" 绿灯闪烁",-1))]),s("div",Ie,[s("span",{class:"dot",style:u({background:S[3]})},null,4),e[11]||(e[11]=i(" 蓝灯闪烁",-1))]),s("div",xe,[s("span",{class:"dot",style:u({background:S[0]})},null,4),e[12]||(e[12]=i(" 关闭",-1))])])])):(v(),g("div",me,[l(U,{message:"请点击左侧终端查看状态",type:"info","show-icon":""})])):(v(),g("div",ve,[l(U,{message:"串口未连接,无法获取端口状态",type:"warning","show-icon":""})]))]),_:1},8,["title"])]),_:1})]),_:1}),l($,{gutter:[24,24],style:{"margin-top":"24px"}},{default:n(()=>[l(m,{span:24},{default:n(()=>[l(ae)]),_:1})]),_:1})])}}},Ke=J(Ae,[["__scopeId","data-v-402be2dc"]]);export{Ke as default};