SensorData-6po6Y199.js 4.0 KB

1
  1. import{$ as e,C as t,G as n,H as r,K as i,Q as a,U as o,V as s,W as c,X as l,Y as u,_ as d,f,it as p,k as m,lt as h,ot as g,q as _,st as v,tt as y,ut as b,z as x}from"./vue-router-DiegbtGD.js";import{t as S}from"./AppLayout-r9BI5ihT.js";import{t as C}from"./helpers-B5dMFDUW.js";import{t as w}from"./echarts-_A7zOSGa.js";var T=_({__name:`SensorData`,setup(_){let T=g(!1),E=g([]),D=g([]),O=g({deviceId:void 0,dateRange:[]}),k=g({current:1,pageSize:20,total:0}),A=g(),j=g(),M=null,N=null,P=[{title:`设备ID`,dataIndex:`device_id`,key:`device_id`,width:160,ellipsis:!0},{title:`温度`,key:`temperature`,width:100},{title:`湿度`,key:`humidity`,width:100},{title:`时间`,key:`timestamp`,width:160}],F=async()=>{try{let e=await f.getAllDevices();e.success&&(D.value=e.data||[])}catch{}},I=async(e=1)=>{T.value=!0;try{let t={page:e,limit:k.value.pageSize};O.value.deviceId&&(t.deviceId=O.value.deviceId),O.value.dateRange&&O.value.dateRange.length===2&&(t.startTime=O.value.dateRange[0].format(`YYYY-MM-DD HH:mm:ss`),t.endTime=O.value.dateRange[1].format(`YYYY-MM-DD HH:mm:ss`));let n=await d.getSensorData(t);n.success?(E.value=n.data||[],k.value.total=n.pagination?.total||0,R()):m.error(n.message||`加载传感器数据失败`)}catch(e){console.error(`加载传感器数据失败:`,e);let t=e?.message||e?.error||`加载传感器数据失败,请稍后重试`;m.error(t),E.value=[],k.value.total=0}finally{T.value=!1}},L=e=>{k.value.current=e,I(e)},R=()=>{let e=E.value.map(e=>C(e.timestamp)),t=E.value.map(e=>e.temperature),n=E.value.map(e=>e.humidity);M&&M.setOption({tooltip:{trigger:`axis`},xAxis:{type:`category`,data:e.reverse()},yAxis:{type:`value`,name:`温度(°C)`},series:[{type:`line`,data:t.reverse(),smooth:!0,itemStyle:{color:`#ff4d4f`}}],grid:{left:50,right:20,top:20,bottom:30}}),N&&N.setOption({tooltip:{trigger:`axis`},xAxis:{type:`category`,data:e.reverse()},yAxis:{type:`value`,name:`湿度(%)`},series:[{type:`line`,data:n.reverse(),smooth:!0,itemStyle:{color:`#1890ff`}}],grid:{left:50,right:20,top:20,bottom:30}})};return l(async()=>{await F(),await I(),await u(),A.value&&(M=w(A.value)),j.value&&(N=w(j.value)),R()}),(l,u)=>{let d=y(`a-select-option`),f=y(`a-select`),m=y(`a-range-picker`),g=y(`a-button`),_=y(`a-space`),w=y(`a-card`),M=y(`a-col`),N=y(`a-row`),F=y(`a-table`);return a(),r(S,null,{default:p(()=>[s(`div`,null,[i(w,{title:`传感器数据`},{extra:p(()=>[i(_,null,{default:p(()=>[i(f,{value:O.value.deviceId,"onUpdate:value":u[0]||=e=>O.value.deviceId=e,style:{width:`180px`},placeholder:`选择设备`,"allow-clear":``,onChange:I},{default:p(()=>[(a(!0),c(x,null,e(D.value,e=>(a(),r(d,{key:e.clientid,value:e.clientid},{default:p(()=>[n(b(e.device_name||e.clientid),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`value`]),i(m,{value:O.value.dateRange,"onUpdate:value":u[1]||=e=>O.value.dateRange=e,onChange:I},null,8,[`value`]),i(g,{onClick:I},{default:p(()=>[i(v(t)),u[2]||=n(`刷新`,-1)]),_:1})]),_:1})]),default:p(()=>[i(N,{gutter:[16,16],style:{"margin-bottom":`16px`}},{default:p(()=>[i(M,{xs:24,lg:12},{default:p(()=>[i(w,{title:`温度趋势`,size:`small`},{default:p(()=>[s(`div`,{ref_key:`tempChartRef`,ref:A,style:{height:`300px`}},null,512)]),_:1})]),_:1}),i(M,{xs:24,lg:12},{default:p(()=>[i(w,{title:`湿度趋势`,size:`small`},{default:p(()=>[s(`div`,{ref_key:`humiChartRef`,ref:j,style:{height:`300px`}},null,512)]),_:1})]),_:1})]),_:1}),i(F,{dataSource:E.value,columns:P,loading:T.value,pagination:{current:k.value.current,pageSize:k.value.pageSize,total:k.value.total,showSizeChanger:!0,onChange:L},"row-key":`id`,size:`small`},{bodyCell:p(({column:e,record:t})=>[e.key===`timestamp`?(a(),c(x,{key:0},[n(b(v(C)(t.timestamp)),1)],64)):o(``,!0),e.key===`temperature`?(a(),c(`span`,{key:1,style:h({color:t.temperature>30?`#ff4d4f`:t.temperature<10?`#1890ff`:`#52c41a`})},b(t.temperature)+`°C `,5)):o(``,!0),e.key===`humidity`?(a(),c(`span`,{key:2,style:h({color:t.humidity>70?`#1890ff`:`#52c41a`})},b(t.humidity)+`% `,5)):o(``,!0)]),_:1},8,[`dataSource`,`loading`,`pagination`])]),_:1})])]),_:1})}}});export{T as default};