| 1 |
- import{B as e,C as t,D as n,G as r,H as i,K as a,Q as o,T as s,U as c,V as l,W as u,X as d,f,it as p,k as m,ot as h,q as g,st as _,tt as v,ut as y,w as b,z as x}from"./vue-router-DiegbtGD.js";import{i as S,t as C}from"./AppLayout-r9BI5ihT.js";import{n as w,t as T}from"./helpers-B5dMFDUW.js";var E={class:`devices-page`},ee={key:0},D={key:1},O=g({__name:`Devices`,setup(g){let O=h(!1),k=h([]),A=h(``),j=h(void 0),M=h(!1),N=h(!1),P=h(!1),F=h(null),I=h({device_name:``,device_type:``}),L=[{title:`客户端ID`,dataIndex:`clientid`,key:`clientid`,width:180,ellipsis:!0},{title:`设备名称`,dataIndex:`device_name`,key:`device_name`,width:120,ellipsis:!0},{title:`状态`,key:`status`,width:80},{title:`固件版本`,dataIndex:`firmware_version`,key:`firmware_version`,width:100},{title:`WiFi信号`,key:`rssi`,width:100},{title:`最后事件时间`,key:`last_event_time`,width:160},{title:`操作`,key:`actions`,width:250,fixed:`right`}],R=e(()=>{let e=k.value;if(A.value){let t=A.value.toLowerCase();e=e.filter(e=>e.clientid?.toLowerCase().includes(t)||e.device_name?.toLowerCase().includes(t))}return j.value&&(e=e.filter(e=>e.status===j.value)),e}),z=async()=>{O.value=!0;try{let e=await f.getAllDevices();e.success&&(k.value=e.data||[])}catch(e){m.error(`加载设备列表失败: `+(e.message||`未知错误`))}finally{O.value=!1}},B=e=>{F.value=e,N.value=!0},V=e=>{F.value=e,I.value={device_name:e.device_name||``,device_type:e.device_type||``},M.value=!0},H=async()=>{if(F.value){P.value=!0;try{await f.updateMqttDevice(F.value.clientid,I.value),m.success(`设备信息已更新`),M.value=!1,z()}catch(e){m.error(`更新失败: `+(e.message||`未知错误`))}finally{P.value=!1}}},U=async(e,t)=>{try{await f.controlRelay(e.clientid,t),m.success(`已发送${t===`ON`?`开启`:`关闭`}指令`)}catch(e){m.error(`控制失败: `+(e.message||`未知错误`))}},W=async e=>{try{await f.deleteDevice(e),m.success(`设备已删除`),z()}catch(e){m.error(`删除失败: `+(e.message||`未知错误`))}};return d(()=>{z()}),(e,d)=>{let f=v(`a-space`),m=v(`a-input-search`),h=v(`a-select-option`),g=v(`a-select`),k=v(`a-button`),G=v(`a-tag`),K=v(`a-popconfirm`),q=v(`a-table`),J=v(`a-card`),Y=v(`a-input`),X=v(`a-form-item`),Z=v(`a-form`),Q=v(`a-modal`),$=v(`a-descriptions-item`),te=v(`a-descriptions`);return o(),i(C,null,{default:p(()=>[l(`div`,E,[a(J,null,{title:p(()=>[a(f,null,{default:p(()=>[a(_(S)),d[6]||=l(`span`,null,`设备管理`,-1)]),_:1})]),extra:p(()=>[a(f,null,{default:p(()=>[a(m,{value:A.value,"onUpdate:value":d[0]||=e=>A.value=e,placeholder:`搜索设备`,style:{width:`200px`},onSearch:z},null,8,[`value`]),a(g,{value:j.value,"onUpdate:value":d[1]||=e=>j.value=e,style:{width:`120px`},placeholder:`状态筛选`,"allow-clear":``,onChange:z},{default:p(()=>[a(h,{value:`online`},{default:p(()=>[...d[7]||=[r(`在线`,-1)]]),_:1}),a(h,{value:`offline`},{default:p(()=>[...d[8]||=[r(`离线`,-1)]]),_:1})]),_:1},8,[`value`]),a(k,{onClick:z},{icon:p(()=>[a(_(t))]),default:p(()=>[d[9]||=r(`刷新`,-1)]),_:1})]),_:1})]),default:p(()=>[a(q,{dataSource:R.value,columns:L,loading:O.value,pagination:{pageSize:20,showSizeChanger:!0,showTotal:e=>`共 ${e} 台设备`},"row-key":`clientid`,scroll:{x:1200}},{bodyCell:p(({column:e,record:t})=>[e.key===`status`?(o(),i(G,{key:0,color:t.status===`online`?`green`:t.status===`offline`?`red`:`default`},{default:p(()=>[r(y(t.status===`online`?`在线`:t.status===`offline`?`离线`:`未知`),1)]),_:2},1032,[`color`])):c(``,!0),e.key===`rssi`?(o(),u(x,{key:1},[t.rssi?(o(),u(`span`,ee,y(t.rssi)+` dBm`,1)):(o(),u(`span`,D,`-`))],64)):c(``,!0),e.key===`last_event_time`?(o(),u(x,{key:2},[r(y(_(T)(t.last_event_time)),1)],64)):c(``,!0),e.key===`actions`?(o(),i(f,{key:3},{default:p(()=>[a(k,{type:`link`,size:`small`,onClick:e=>B(t)},{icon:p(()=>[a(_(n))]),default:p(()=>[d[10]||=r(`详情 `,-1)]),_:1},8,[`onClick`]),a(k,{type:`link`,size:`small`,onClick:e=>V(t)},{icon:p(()=>[a(_(b))]),default:p(()=>[d[11]||=r(`编辑 `,-1)]),_:1},8,[`onClick`]),a(k,{type:`link`,size:`small`,onClick:e=>U(t,`ON`),disabled:t.status!==`online`,style:{color:`#52c41a`}},{default:p(()=>[...d[12]||=[r(` 开 `,-1)]]),_:1},8,[`onClick`,`disabled`]),a(k,{type:`link`,size:`small`,onClick:e=>U(t,`OFF`),disabled:t.status!==`online`,style:{color:`#ff4d4f`}},{default:p(()=>[...d[13]||=[r(` 关 `,-1)]]),_:1},8,[`onClick`,`disabled`]),a(K,{title:`确定删除此设备?`,onConfirm:e=>W(t.clientid)},{default:p(()=>[a(k,{type:`link`,size:`small`,danger:``},{icon:p(()=>[a(_(s))]),_:1})]),_:1},8,[`onConfirm`])]),_:2},1024)):c(``,!0)]),_:1},8,[`dataSource`,`loading`,`pagination`])]),_:1}),a(Q,{open:M.value,"onUpdate:open":d[4]||=e=>M.value=e,title:`编辑设备`,onOk:H,"confirm-loading":P.value},{default:p(()=>[a(Z,{model:I.value,layout:`vertical`},{default:p(()=>[a(X,{label:`设备名称`},{default:p(()=>[a(Y,{value:I.value.device_name,"onUpdate:value":d[2]||=e=>I.value.device_name=e},null,8,[`value`])]),_:1}),a(X,{label:`设备类型`},{default:p(()=>[a(Y,{value:I.value.device_type,"onUpdate:value":d[3]||=e=>I.value.device_type=e},null,8,[`value`])]),_:1})]),_:1},8,[`model`])]),_:1},8,[`open`,`confirm-loading`]),a(Q,{open:N.value,"onUpdate:open":d[5]||=e=>N.value=e,title:`设备详情`,footer:null,width:`600px`},{default:p(()=>[F.value?(o(),i(te,{key:0,bordered:``,column:1,size:`small`},{default:p(()=>[a($,{label:`客户端ID`},{default:p(()=>[r(y(F.value.clientid),1)]),_:1}),a($,{label:`设备名称`},{default:p(()=>[r(y(F.value.device_name||`-`),1)]),_:1}),a($,{label:`状态`},{default:p(()=>[a(G,{color:F.value.status===`online`?`green`:`red`},{default:p(()=>[r(y(F.value.status===`online`?`在线`:`离线`),1)]),_:1},8,[`color`])]),_:1}),a($,{label:`固件版本`},{default:p(()=>[r(y(F.value.firmware_version||`-`),1)]),_:1}),a($,{label:`IP地址`},{default:p(()=>[r(y(F.value.last_ip_port||`-`),1)]),_:1}),a($,{label:`WiFi信号`},{default:p(()=>[r(y(F.value.rssi?F.value.rssi+` dBm`:`-`),1)]),_:1}),a($,{label:`最后在线`},{default:p(()=>[r(y(_(T)(F.value.last_online_time)),1)]),_:1}),a($,{label:`最后离线`},{default:p(()=>[r(y(_(T)(F.value.last_offline_time)),1)]),_:1}),a($,{label:`在线时长`},{default:p(()=>[r(y(_(w)(F.value.online_duration)),1)]),_:1}),a($,{label:`连接次数`},{default:p(()=>[r(y(F.value.connect_count||0),1)]),_:1})]),_:1})):c(``,!0)]),_:1},8,[`open`])])]),_:1})}}});export{O as default};
|