import{$ as e,G as t,H as n,K as r,M as i,Q as a,T as o,U as s,V as c,W as l,X as u,f as d,h as f,it as p,k as m,ot as h,q as g,st as _,tt as v,ut as y,z as b}from"./vue-router-DiegbtGD.js";import{t as x}from"./AppLayout-r9BI5ihT.js";import{r as S,t as C}from"./helpers-B5dMFDUW.js";var w={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z`}}]},name:`upload`,theme:`outlined`};function T(e){for(var t=1;tC(e)},{title:`操作`,key:`actions`,width:150}],z=e=>({pending:`blue`,downloading:`cyan`,installing:`orange`,success:`green`,failed:`red`,ready:`purple`})[e]||`default`,B=e=>({pending:`等待中`,downloading:`下载中`,installing:`安装中`,success:`成功`,failed:`失败`,ready:`就绪`})[e]||e,V=async()=>{E.value=!0;try{let e=await f.getFirmwareFiles();e.success&&(g.value=e.data||[])}catch{m.error(`加载固件列表失败`)}finally{E.value=!1}},H=async()=>{O.value=!0;try{let e=await d.getAllDevices();e.success&&(w.value=e.data||[])}catch{m.error(`加载设备列表失败`)}finally{O.value=!1}},U=async()=>{k.value=!0;try{let e=await f.getOTATasks();e.success&&(T.value=e.data||[])}catch{m.error(`加载OTA任务失败`)}finally{k.value=!1}},W=async()=>{if(!(!N.value||P.value.length===0)){A.value=!0;try{await f.startOTA({firmwareId:N.value,deviceIds:P.value}),m.success(`OTA升级任务已创建`),U()}catch(e){m.error(`创建OTA任务失败: `+(e.message||`未知错误`))}finally{A.value=!1}}},G=async e=>{try{await f.cancelOTATask(e),m.success(`任务已取消`),U()}catch{m.error(`取消失败`)}},K=async e=>{try{await f.retryOTATask(e),m.success(`任务已重试`),U()}catch{m.error(`重试失败`)}},q=async e=>{try{await f.deleteOTATask(e),m.success(`任务已删除`),U()}catch{m.error(`删除失败`)}},J=async e=>{try{await f.deleteFirmware(e),m.success(`固件已删除`),V()}catch{m.error(`删除失败`)}},Y=e=>(I=e,!1),X=async()=>{if(!I||!F.value.version){m.warning(`请填写版本号并选择文件`);return}M.value=!0;try{let e=new FormData;e.append(`firmware`,I),e.append(`version`,F.value.version),e.append(`description`,F.value.description||``),await f.uploadFirmware(e),m.success(`固件上传成功`),j.value=!1,F.value={version:``,description:``},I=null,V()}catch(e){m.error(`上传失败: `+(e.message||`未知错误`))}finally{M.value=!1}};return u(()=>{V(),H(),U()}),(i,u)=>{let d=v(`a-button`),f=v(`a-popconfirm`),m=v(`a-table`),h=v(`a-card`),I=v(`a-col`),V=v(`a-select-option`),H=v(`a-select`),U=v(`a-form-item`),Z=v(`a-form`),Q=v(`a-row`),$=v(`a-tag`),ee=v(`a-progress`),te=v(`a-space`),ne=v(`a-input`),re=v(`a-textarea`),ie=v(`a-upload`),ae=v(`a-modal`);return a(),n(x,null,{default:p(()=>[c(`div`,null,[r(Q,{gutter:[16,16]},{default:p(()=>[r(I,{xs:24,lg:12},{default:p(()=>[r(h,{title:`固件管理`},{extra:p(()=>[r(d,{type:`primary`,onClick:u[0]||=e=>j.value=!0},{icon:p(()=>[r(_(D))]),default:p(()=>[u[6]||=t(`上传固件 `,-1)]),_:1})]),default:p(()=>[r(m,{dataSource:g.value,columns:L,loading:E.value,"row-key":`id`,size:`small`},{bodyCell:p(({column:e,record:i})=>[e.key===`file_size`?(a(),l(b,{key:0},[t(y(_(S)(i.file_size)),1)],64)):s(``,!0),e.key===`created_at`?(a(),l(b,{key:1},[t(y(_(C)(i.created_at)),1)],64)):s(``,!0),e.key===`actions`?(a(),n(f,{key:2,title:`确定删除此固件?`,onConfirm:e=>J(i.id)},{default:p(()=>[r(d,{type:`link`,size:`small`,danger:``},{default:p(()=>[r(_(o))]),_:1})]),_:1},8,[`onConfirm`])):s(``,!0)]),_:1},8,[`dataSource`,`loading`])]),_:1})]),_:1}),r(I,{xs:24,lg:12},{default:p(()=>[r(h,{title:`OTA升级`},{default:p(()=>[r(Z,{layout:`vertical`},{default:p(()=>[r(U,{label:`选择固件`},{default:p(()=>[r(H,{value:N.value,"onUpdate:value":u[1]||=e=>N.value=e,placeholder:`选择固件版本`,style:{width:`100%`}},{default:p(()=>[(a(!0),l(b,null,e(g.value,e=>(a(),n(V,{key:e.id,value:e.id},{default:p(()=>[t(y(e.version)+` (`+y(e.original_name)+`) `,1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`value`])]),_:1}),r(U,{label:`选择设备`},{default:p(()=>[r(H,{value:P.value,"onUpdate:value":u[2]||=e=>P.value=e,mode:`multiple`,placeholder:`选择设备`,style:{width:`100%`},loading:O.value},{default:p(()=>[(a(!0),l(b,null,e(w.value,e=>(a(),n(V,{key:e.clientid,value:e.clientid},{default:p(()=>[t(y(e.device_name||e.clientid)+` (`+y(e.status===`online`?`在线`:`离线`)+`) `,1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`value`,`loading`])]),_:1}),r(U,null,{default:p(()=>[r(d,{type:`primary`,onClick:W,loading:A.value,disabled:!N.value||P.value.length===0},{default:p(()=>[...u[7]||=[t(` 开始升级 `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),r(h,{title:`升级任务`,style:{"margin-top":`16px`}},{default:p(()=>[r(m,{dataSource:T.value,columns:R,loading:k.value,"row-key":`id`,size:`small`},{bodyCell:p(({column:e,record:i})=>[e.key===`status`?(a(),n($,{key:0,color:z(i.status)},{default:p(()=>[t(y(B(i.status)),1)]),_:2},1032,[`color`])):s(``,!0),e.key===`progress`?(a(),n(ee,{key:1,percent:i.progress,status:i.status===`failed`?`exception`:i.status===`success`?`success`:`active`,size:`small`},null,8,[`percent`,`status`])):s(``,!0),e.key===`actions`?(a(),n(te,{key:2},{default:p(()=>[i.status===`pending`||i.status===`downloading`?(a(),n(d,{key:0,type:`link`,size:`small`,onClick:e=>G(i.id)},{default:p(()=>[...u[8]||=[t(`取消`,-1)]]),_:1},8,[`onClick`])):s(``,!0),i.status===`failed`?(a(),n(d,{key:1,type:`link`,size:`small`,onClick:e=>K(i.id)},{default:p(()=>[...u[9]||=[t(`重试`,-1)]]),_:1},8,[`onClick`])):s(``,!0),r(f,{title:`确定删除?`,onConfirm:e=>q(i.id)},{default:p(()=>[r(d,{type:`link`,size:`small`,danger:``},{default:p(()=>[...u[10]||=[t(`删除`,-1)]]),_:1})]),_:1},8,[`onConfirm`])]),_:2},1024)):s(``,!0)]),_:1},8,[`dataSource`,`loading`])]),_:1}),r(ae,{open:j.value,"onUpdate:open":u[5]||=e=>j.value=e,title:`上传固件`,onOk:X,"confirm-loading":M.value},{default:p(()=>[r(Z,{layout:`vertical`},{default:p(()=>[r(U,{label:`固件版本`},{default:p(()=>[r(ne,{value:F.value.version,"onUpdate:value":u[3]||=e=>F.value.version=e,placeholder:`例如: 1.0.0`},null,8,[`value`])]),_:1}),r(U,{label:`固件描述`},{default:p(()=>[r(re,{value:F.value.description,"onUpdate:value":u[4]||=e=>F.value.description=e,rows:3},null,8,[`value`])]),_:1}),r(U,{label:`固件文件`},{default:p(()=>[r(ie,{"before-upload":Y,"max-count":1,accept:`.bin,.hex,.fw`},{default:p(()=>[r(d,null,{default:p(()=>[r(_(D)),u[11]||=t(`选择文件`,-1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`,`confirm-loading`])])]),_:1})}}});export{O as default};