import{f as n,A as D,_ as de,r as j,s as me,o as fe,a as pe,b as v,d as P,e as A,i,g as l,j as O,t as w,m as T,I as ve,R as _e,k as z,n as H,v as N,y as he,z as ge}from"./index-29b7bbe1.js";var be={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3zm36.3 281a123.07 123.07 0 01-87.6 36.3H263.9c-33.1 0-64.2-12.9-87.6-36.3A123.3 123.3 0 01140 612c0-28 9.1-54.3 26.2-76.3a125.7 125.7 0 0166.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0152.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10c54.3 14.5 92.1 63.8 92.1 120 0 33.1-12.9 64.3-36.3 87.7z"}}]},name:"cloud",theme:"outlined"};const ye=be;function Q(a){for(var e=1;ec?new Date(c).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):"--",ae=c=>c===null?"":c>d.temp_high?"text-danger":cc===null?"":c>d.humidity_high?"text-danger":cc===null?"":c>d.dtu_temp_high?"text-danger":"text-success",G=async()=>{var c,r,p,g,C,S,m,_,y;try{const f=await(await fetch("/api/sensor/env")).json();f.success&&(u.value={temperature:(c=f.data)==null?void 0:c.temperature,humidity:(r=f.data)==null?void 0:r.humidity,dtu_temperature:(p=f.data)==null?void 0:p.dtu_temperature,update_time:(g=f.data)==null?void 0:g.update_time,sensor_update_time:(C=f.data)==null?void 0:C.sensor_update_time,cpu_usage:(S=f.data)==null?void 0:S.cpu_usage,memory_usage:(m=f.data)==null?void 0:m.memory_usage,connected:((_=f.data)==null?void 0:_.connected)??((y=f.data)==null?void 0:y.temperature)!==null})}catch(L){console.error("获取传感器数据失败:",L)}},se=async()=>{try{const r=await(await fetch("/api/sensor/threshold")).json();r.success&&r.data&&Object.assign(d,r.data)}catch(c){console.error("获取阈值失败:",c)}},le=async()=>{t.value=!0;try{const r=await(await fetch("/api/sensor/threshold",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)})).json();r.success?N.success("阈值保存成功"):N.error(r.error||"保存失败")}catch(c){N.error("保存失败: "+c.message)}finally{t.value=!1}},J=async()=>{try{const r=await(await fetch(`/api/sensor/history?range=${s.value}`)).json();r.success&&(x.value=r.data||[],await he(),oe())}catch(c){console.error("获取历史数据失败:",c)}},oe=async()=>{if(!M.value||x.value.length===0)return;const c=await ge(()=>import("./index-12f90946.js"),[]);b||(b=c.init(M.value));const r=x.value.map(m=>m.update_time||m.timestamp),p=x.value.map(m=>m.temperature),g=x.value.map(m=>m.humidity),C=x.value.map(m=>m.dtu_temperature||m.dtu_temp),S={tooltip:{trigger:"axis",formatter:m=>{let _=m[0].axisValueLabel+"
";return m.forEach(y=>{_+=`${y.marker} ${y.seriesName}: ${y.value??"--"}${y.seriesName.includes("温度")?"°C":"%"}
`}),_}},legend:{data:["环境温度","环境湿度","DTU温度"],top:0,left:"center"},grid:{left:"3%",right:"4%",top:40,bottom:"3%",containLabel:!0},xAxis:{type:"category",boundaryGap:!1,data:r},yAxis:[{type:"value",name:"温度 (°C)",position:"left",axisLine:{show:!0},axisLabel:{formatter:"{value}°C"}},{type:"value",name:"湿度 (%)",min:0,max:100,position:"right",axisLine:{show:!0},axisLabel:{formatter:"{value}%"}}],series:[{name:"环境温度",type:"line",data:p,smooth:!0,lineStyle:{color:"#ff6b6b"},itemStyle:{color:"#ff6b6b"}},{name:"DTU温度",type:"line",data:C,smooth:!0,lineStyle:{color:"#ffa502"},itemStyle:{color:"#ffa502"}},{name:"环境湿度",type:"line",yAxisIndex:1,data:g,smooth:!0,lineStyle:{color:"#74b9ff"},itemStyle:{color:"#74b9ff"}}]};b.setOption(S)},q=async()=>{e.value=!0;try{await Promise.all([G(),se(),J()])}finally{e.value=!1}};return fe(async()=>{await q(),E=setInterval(G,5e3),window.addEventListener("resize",()=>{b==null||b.resize()})}),pe(()=>{E&&clearInterval(E),b&&(b.dispose(),b=null)}),(c,r)=>{const p=v("a-card"),g=v("a-col"),C=v("a-row"),S=v("a-progress"),m=v("a-button"),_=v("a-descriptions-item"),y=v("a-tag"),L=v("a-descriptions"),f=v("a-input-number"),$=v("a-form-item"),ie=v("a-form"),ue=v("a-segmented"),ce=v("a-empty");return P(),A("div",Je,[r[16]||(r[16]=i("div",{class:"page-header"},[i("h2",{class:"page-title"},"环境传感器")],-1)),n(C,{gutter:[24,24]},{default:l(()=>[n(g,{xs:24,sm:8},{default:l(()=>[n(p,{bordered:!1,class:"sensor-card temp-card"},{default:l(()=>[i("div",qe,[i("div",Qe,[n(O(Ve))]),i("div",Xe,[r[6]||(r[6]=i("div",{class:"sensor-label"},"温度",-1)),i("div",Ye,w(u.value.temperature!==null?`${u.value.temperature}°C`:"--"),1)])])]),_:1})]),_:1}),n(g,{xs:24,sm:8},{default:l(()=>[n(p,{bordered:!1,class:"sensor-card humidity-card"},{default:l(()=>[i("div",Ze,[i("div",Ke,[n(O(we))]),i("div",et,[r[7]||(r[7]=i("div",{class:"sensor-label"},"湿度",-1)),i("div",tt,w(u.value.humidity!==null?`${u.value.humidity}%`:"--"),1)])])]),_:1})]),_:1}),n(g,{xs:24,sm:8},{default:l(()=>[n(p,{bordered:!1,class:"sensor-card dtu-temp-card"},{default:l(()=>[i("div",at,[i("div",nt,[n(O(Ee))]),i("div",rt,[r[8]||(r[8]=i("div",{class:"sensor-label"},"DTU 主板温度",-1)),i("div",st,w(u.value.dtu_temperature!==null?`${u.value.dtu_temperature}°C`:"--"),1)])])]),_:1})]),_:1})]),_:1}),n(C,{gutter:[24,24],style:{"margin-top":"24px"}},{default:l(()=>[n(g,{xs:24,sm:12},{default:l(()=>[n(p,{bordered:!1,class:"sensor-card"},{default:l(()=>[i("div",lt,[i("div",ot,[n(O(Pe))]),i("div",it,[r[9]||(r[9]=i("div",{class:"sensor-label"},"CPU 使用率",-1)),u.value.cpu_usage!==null&&u.value.cpu_usage!==void 0?(P(),T(S,{key:0,percent:Math.round(u.value.cpu_usage),status:u.value.cpu_usage>80?"exception":"normal"},null,8,["percent","status"])):(P(),A("div",ut,"--"))])])]),_:1})]),_:1}),n(g,{xs:24,sm:12},{default:l(()=>[n(p,{bordered:!1,class:"sensor-card"},{default:l(()=>[i("div",ct,[i("div",dt,[n(O(ze))]),i("div",mt,[r[10]||(r[10]=i("div",{class:"sensor-label"},"内存使用率",-1)),u.value.memory_usage!==null&&u.value.memory_usage!==void 0?(P(),T(S,{key:0,percent:Math.round(u.value.memory_usage),status:u.value.memory_usage>80?"exception":"normal"},null,8,["percent","status"])):(P(),A("div",ft,"--"))])])]),_:1})]),_:1})]),_:1}),n(p,{bordered:!1,class:"detail-card"},{title:l(()=>[i("div",pt,[n(O(ve)),r[11]||(r[11]=i("span",null,"传感器详情",-1))])]),extra:l(()=>[n(m,{type:"primary",onClick:q,loading:e.value},{icon:l(()=>[n(O(_e))]),default:l(()=>[r[12]||(r[12]=z(" 刷新 ",-1))]),_:1},8,["loading"])]),default:l(()=>[n(L,{column:2,bordered:"",size:"small"},{default:l(()=>[n(_,{label:"环境温度"},{default:l(()=>[i("span",{class:H(ae(u.value.temperature))},w(u.value.temperature!==null?`${u.value.temperature}°C`:"未连接"),3)]),_:1}),n(_,{label:"环境湿度"},{default:l(()=>[i("span",{class:H(ne(u.value.humidity))},w(u.value.humidity!==null?`${u.value.humidity}%`:"未连接"),3)]),_:1}),n(_,{label:"DTU 主板温度"},{default:l(()=>[i("span",{class:H(re(u.value.dtu_temperature))},w(u.value.dtu_temperature!==null?`${u.value.dtu_temperature}°C`:"未连接"),3)]),_:1}),n(_,{label:"更新时间"},{default:l(()=>[z(w(u.value.update_time?W(u.value.update_time):"--"),1)]),_:1}),n(_,{label:"传感器数据时间戳"},{default:l(()=>[z(w(u.value.sensor_update_time?W(u.value.sensor_update_time):"--"),1)]),_:1}),n(_,{label:"连接状态"},{default:l(()=>[n(y,{color:u.value.connected?"green":"red"},{default:l(()=>[z(w(u.value.connected?"已连接":"未连接"),1)]),_:1},8,["color"])]),_:1})]),_:1})]),_:1}),n(p,{bordered:!1,class:"threshold-card"},{title:l(()=>[i("div",vt,[n(O(Ge)),r[13]||(r[13]=i("span",null,"告警阈值设置",-1))])]),default:l(()=>[n(ie,{model:d,"label-col":{span:6},"wrapper-col":{span:12},onFinish:le},{default:l(()=>[n($,{label:"温度过高阈值",name:"temp_high"},{default:l(()=>[n(f,{value:d.temp_high,"onUpdate:value":r[0]||(r[0]=h=>d.temp_high=h),min:-40,max:100,"addon-after":"°C",style:{width:"100%"}},null,8,["value"])]),_:1}),n($,{label:"温度过低阈值",name:"temp_low"},{default:l(()=>[n(f,{value:d.temp_low,"onUpdate:value":r[1]||(r[1]=h=>d.temp_low=h),min:-40,max:100,"addon-after":"°C",style:{width:"100%"}},null,8,["value"])]),_:1}),n($,{label:"湿度过高阈值",name:"humidity_high"},{default:l(()=>[n(f,{value:d.humidity_high,"onUpdate:value":r[2]||(r[2]=h=>d.humidity_high=h),min:0,max:100,"addon-after":"%",style:{width:"100%"}},null,8,["value"])]),_:1}),n($,{label:"湿度过低阈值",name:"humidity_low"},{default:l(()=>[n(f,{value:d.humidity_low,"onUpdate:value":r[3]||(r[3]=h=>d.humidity_low=h),min:0,max:100,"addon-after":"%",style:{width:"100%"}},null,8,["value"])]),_:1}),n($,{label:"DTU温度过高阈值",name:"dtu_temp_high"},{default:l(()=>[n(f,{value:d.dtu_temp_high,"onUpdate:value":r[4]||(r[4]=h=>d.dtu_temp_high=h),min:0,max:120,"addon-after":"°C",style:{width:"100%"}},null,8,["value"])]),_:1}),n($,{"wrapper-col":{offset:6,span:12}},{default:l(()=>[n(m,{type:"primary","html-type":"submit",loading:t.value},{default:l(()=>[...r[14]||(r[14]=[z(" 保存阈值 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1}),n(p,{bordered:!1,class:"chart-card"},{title:l(()=>[i("div",_t,[n(O(Ie)),r[15]||(r[15]=i("span",null,"历史数据",-1))])]),extra:l(()=>[n(ue,{value:s.value,"onUpdate:value":r[5]||(r[5]=h=>s.value=h),options:o,onChange:J},null,8,["value"])]),default:l(()=>[x.value.length>0?(P(),A("div",ht,[i("div",{ref_key:"chartRef",ref:M,style:{width:"100%",height:"300px"}},null,512)])):(P(),T(ce,{key:1,description:"暂无历史数据"}))]),_:1})])}}},yt=de(gt,[["__scopeId","data-v-336df9ac"]]);export{yt as default};