51948469c2
- Stop ignoring web/app/index.html and web/app/assets/ - Bundle index-DBKIQT7H.js from current vite build (~101MB assets) Co-authored-by: Cursor <cursoragent@cursor.com>
1 line
20 KiB
JavaScript
1 line
20 KiB
JavaScript
import{$n as e,F as t,Fr as n,Gn as r,Jn as i,Kn as a,L as o,Lt as s,M as c,N as l,Nr as ee,Nt as u,O as te,P as d,Pn as ne,Qn as f,Qt as p,Sn as m,Tr as h,Xn as g,Y as _,Yn as v,Zn as y,_r as b,br as x,dn as S,dr as re,en as C,er as w,fr as T,h as E,j as ie,mr as ae,o as D,or as O,q as oe,rr as k,s as se,sn as A,t as ce,tn as j,tr as M,ur as le,v as N,w as ue}from"./index-Bq06YXFr.js";import{a as de,i as fe,n as P,r as F,t as I}from"./VSelectionControl-DFpyvWC6.js";import{n as L,t as pe}from"./VRow-DrmOEyqH.js";import{t as R}from"./VSpacer-ZAnDTf8W.js";import{t as me}from"./useSnackbar-D7YOfKok.js";import{t as z}from"./VChip-CKaNxfks.js";import{t as he}from"./VDialog-DGu123IY.js";import{t as B}from"./VSelect-Bo-xI-Ia.js";import{t as ge}from"./VCheckbox-aA6tmq7r.js";import{t as _e}from"./VDataTableServer-Buz6ls7v.js";import{t as ve}from"./VAlert-yVdWYjZ3.js";import{t as ye}from"./wsUrl-CqmqkTTE.js";var be=S({...P({falseIcon:`$radioOff`,trueIcon:`$radioOn`})},`VRadio`),xe=A()({name:`VRadio`,props:be(),setup(e,{slots:t}){return j(()=>M(I,O(I.filterProps(e),{class:[`v-radio`,e.class],style:e.style,type:`radio`}),t)),{}}}),Se=S({height:{type:[Number,String],default:`auto`},...ne(se(),[`direction`]),...ne(fe(),[`multiple`]),trueIcon:{type:C,default:`$radioOn`},falseIcon:{type:C,default:`$radioOff`},type:{type:String,default:`radio`}},`VRadioGroup`),Ce=A()({name:`VRadioGroup`,inheritAttrs:!1,props:Se(),emits:{"update:modelValue":e=>!0},setup(e,{attrs:t,slots:n}){let r=b(),o=i(()=>e.id||`radio-group-${r}`),s=p(e,`modelValue`),c=h();return j(()=>{let[r,i]=m(t),l=D.filterProps(e),ee=I.filterProps(e),u=n.label?n.label({label:e.label,props:{for:o.value}}):e.label;return M(D,O({ref:c,class:[`v-radio-group`,e.class],style:e.style},r,l,{modelValue:s.value,"onUpdate:modelValue":e=>s.value=e,id:o.value}),{...n,default:({id:t,messagesId:r,isDisabled:o,isReadonly:c})=>v(a,null,[u&&M(E,{id:t.value},{default:()=>[u]}),M(F,O(ee,{id:t.value,"aria-describedby":r.value,defaultsTarget:`VRadio`,trueIcon:e.trueIcon,falseIcon:e.falseIcon,type:e.type,disabled:o.value,readonly:c.value,"aria-labelledby":u?t.value:void 0,multiple:!1},i,{modelValue:s.value,"onUpdate:modelValue":e=>s.value=e}),n)])})}),N({},c)}}),we={key:0},Te={key:1,class:`d-flex align-center`},Ee={key:0,class:`text-center text-medium-emphasis py-6`},De={class:`d-flex align-center px-2 mb-2`},Oe={class:`text-caption text-medium-emphasis ml-1`},ke={class:`d-flex align-center ga-2`},Ae={class:`text-body-2 font-weight-medium text-truncate`},je={class:`text-caption text-medium-emphasis text-truncate`},Me={key:0,class:`text-caption mt-1`},Ne={class:`text-caption text-medium-emphasis mt-1`},Pe={key:1,class:`text-caption text-medium-emphasis mb-2`},Fe={key:1},Ie={class:`mb-2`},Le={key:0,class:`text-medium-emphasis`},Re={key:0,class:`text-body-2`},ze={key:0,class:`text-warning`},Be={class:`text-caption`},Ve={class:`text-caption text-medium-emphasis`},He=[`title`],Ue={key:1,class:`text-caption text-medium-emphasis`},We=k({__name:`PushPage`,setup(ne){let p=me(),m=u(),b=h([]);async function S(){try{b.value=(await s.get(`/servers/`,{per_page:200})).items||[]}catch{b.value=[]}}let C=h(``),E=h(``),D=h(``),O=h(new Set),k=h(!1),se=[],A=[],j=h({}),N=h(`incremental`),fe=i(()=>{switch(N.value){case`incremental`:return`仅传输新增或修改的文件`;case`full`:return`使目标目录与源目录完全一致,会删除不存在于源的文件`;case`checksum`:return`通过文件内容校验和判断是否需要传输`;default:return``}}),P=h(!1),F=h(null),I=h(!1),be=h(null);function Se(){be.value?.click()}async function We(e){P.value=!1;let t=e.dataTransfer?.files[0];t&&t.name.endsWith(`.zip`)&&await Ke(t)}function Ge(e){let t=e.target.files?.[0];t&&Ke(t)}async function Ke(e){I.value=!0;try{let t=new FormData;t.append(`file`,e);let n=await s.upload(`/sync/upload-zip`,t);F.value={name:e.name,sourcePath:n.source_path,fileCount:n.file_count,size:n.size},p(`ZIP 上传成功`)}catch(e){p(e.message||`上传失败`,`error`)}finally{I.value=!1}}function qe(){F.value=null}function Je(e){return e<1024?e+` B`:e<1048576?(e/1024).toFixed(1)+` KB`:(e/1048576).toFixed(1)+` MB`}let V=h([]),H=h(``),U=h(null),Ye=[`success`,`failed`,`cancelled`],Xe=i(()=>V.value.filter(e=>Ye.includes(e.status)).length),Ze=i(()=>{let e=V.value.length;return e?Math.round(Xe.value/e*100):0});function Qe(e){if(e.type!==`sync_progress`||e.batch_id!==H.value||e.server_id==null)return;let t=V.value.findIndex(t=>t.id===e.server_id);if(t===-1)return;let n=V.value[t],r=e.status;if(r===`running`)n.status=`running`,n.detail=`同步中...`;else if(r===`success`){n.status=`success`;let t=e.duration_seconds;n.detail=t==null?`完成`:`完成(${t}s)`,j.value[e.server_id]=`成功`}else r===`failed`?(n.status=`failed`,n.detail=e.error_message||`失败`,j.value[e.server_id]=`失败`):r===`cancelled`&&(n.status=`cancelled`,n.detail=e.error_message||`已取消`,j.value[e.server_id]=`已取消`);$e()}function $e(){let e=V.value.length;if(!e||!k.value||V.value.filter(e=>Ye.includes(e.status)).length<e)return;k.value=!1,W(),$();let t=V.value.filter(e=>e.status===`failed`).length,n=V.value.filter(e=>e.status===`cancelled`).length,r=V.value.filter(e=>e.status===`success`).length;p(`推送完成:${r} 成功,${t} 失败${n?`,${n} 取消`:``}`)}function et(){if(!m.token)return;W();let e=ye(`/ws/alerts`,{token:m.token}),t=new WebSocket(e);t.onmessage=e=>{if(e.data!==`pong`)try{let n=JSON.parse(e.data);if(n.type===`ping`){t.send(`pong`);return}Qe(n)}catch{}},t.onclose=e=>{U.value=null,e.code!==1e3&&k.value&&(V.value.forEach(e=>{(e.status===`pending`||e.status===`running`)&&(e.status=`failed`,e.detail=`连接中断`,j.value[e.id]=`失败`)}),k.value=!1,p(`推送进度连接中断,部分服务器状态未知`,`warning`),$())},U.value=t}function W(){U.value&&=(U.value.close(1e3),null)}function tt(){se.forEach(e=>clearInterval(e)),A.forEach(e=>clearTimeout(e)),se.length=0,A.length=0}let nt=h(!1);async function rt(){if(H.value){nt.value=!0;try{await s.post(`/sync/cancel`,{batch_id:H.value}),V.value.forEach(e=>{(e.status===`pending`||e.status===`running`)&&(e.status=`cancelled`,e.detail=`已取消`,j.value[e.id]=`已取消`)}),k.value=!1,W(),$(),p(`推送已取消`)}catch(e){p(e instanceof Error?e.message:`取消失败`,`error`)}finally{nt.value=!1}}}let G=h(!1),K=h({}),it=h([]),at=h(0),ot=h(!1),q=h(1),J=h(null),Y=h(null),X=h(null),st=h(!1),ct=[{label:`成功`,value:`success`},{label:`失败`,value:`failed`},{label:`进行中`,value:`running`},{label:`已取消`,value:`cancelled`}],lt=[{label:`增量`,value:`incremental`},{label:`全量`,value:`full`},{label:`校验和`,value:`checksum`}],ut=i(()=>b.value.map(e=>({title:e.name,value:e.id})));function dt(){q.value=1,$()}let ft=[{title:`时间`,key:`started_at`,width:170},{title:`服务器`,key:`server_name`,width:120},{title:`状态`,key:`status`,width:88},{title:`模式`,key:`sync_mode`,width:88},{title:`源路径`,key:`source_path`},{title:`目标路径`,key:`target_path`},{title:`错误`,key:`error_message`,width:260}];function pt(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(`zh-CN`,{hour12:!1})}function mt(e){switch(e){case`success`:return`成功`;case`failed`:return`失败`;case`running`:return`进行中`;case`cancelled`:return`已取消`;default:return e}}function ht(e){switch(e){case`success`:return`success`;case`failed`:return`error`;case`cancelled`:return`grey`;case`running`:return`info`;default:return`warning`}}function gt(e){switch(e){case`incremental`:return`增量`;case`full`:return`全量`;case`checksum`:return`校验和`;case`overwrite`:return`覆盖`;default:return e||`—`}}let _t=i(()=>{let e=Z.value;return e.length>0&&e.every(e=>O.value.has(e.id))}),Z=i(()=>{if(!D.value)return b.value;let e=D.value.toLowerCase();return b.value.filter(t=>t.name.toLowerCase().includes(e)||(t.domain||``).toLowerCase().includes(e))}),vt=i(()=>{let e={};for(let t of Z.value){let n=t.category||`未分类`;e[n]||(e[n]=[]),e[n].push(t)}return Object.entries(e).map(([e,t])=>({category:e,servers:t}))});function yt(e){let t=vt.value.find(t=>t.category===e);return!t||t.servers.length===0?!1:t.servers.every(e=>O.value.has(e.id))}function bt(e){let t=vt.value.find(t=>t.category===e);if(!t)return;let n=new Set(O.value),r=t.servers.every(e=>n.has(e.id));for(let e of t.servers)r?n.delete(e.id):n.add(e.id);O.value=n}function Q(){return F.value?.sourcePath||C.value}function xt(e){let t=new Set(O.value);t.has(e)?t.delete(e):t.add(e),O.value=t}function St(){let e=Z.value,t=e.length>0&&e.every(e=>O.value.has(e.id)),n=new Set(O.value);for(let r of e)t?n.delete(r.id):n.add(r.id);O.value=n}function Ct(){return Q()?E.value.trim()?O.value.size===0?(p(`请选择至少一台服务器`,`warning`),!1):!0:(p(`请填写目标路径`,`warning`),!1):(p(`请选择源路径或上传 ZIP 文件`,`warning`),!1)}async function wt(){if(Ct())try{K.value=await s.post(`/sync/preview`,{source_path:Q(),target_path:E.value,server_id:O.value.values().next().value,sync_mode:N.value}),G.value=!0}catch(e){K.value={error:e.message},G.value=!0}}async function Tt(){if(k.value||!Ct())return;tt(),W(),H.value=``,j.value={};let e=[...O.value];V.value=e.map(e=>({id:e,name:b.value.find(t=>t.id===e)?.name||`#${e}`,status:`pending`})),k.value=!0;try{if(H.value=(await s.post(`/sync/files`,{source_path:Q(),target_path:E.value,server_ids:e,sync_mode:N.value})).batch_id||``,!H.value)throw Error(`未返回 batch_id,无法追踪进度`);et()}catch(e){let t=e instanceof Error?e.message:`推送请求失败`;V.value.forEach(e=>{e.status=`failed`,e.detail=t}),k.value=!1,p(t,`error`);return}let t=setTimeout(()=>{k.value&&(V.value.forEach(e=>{(e.status===`pending`||e.status===`running`)&&(e.status=`failed`,e.detail=`等待超时`,j.value[e.id]=`失败`)}),k.value=!1,W(),$(),p(`推送超时,${Xe.value}/${V.value.length} 台已有结果`,`warning`))},3e5);A.push(t)}async function $(){ot.value=!0;try{let e={page:q.value,per_page:15};J.value&&(e.status=J.value),Y.value&&(e.sync_mode=Y.value),X.value!=null&&(e.server_id=X.value);let t=await s.get(`/servers/logs`,e);it.value=t.items||[],at.value=t.total||0}catch{it.value=[],at.value=0}finally{ot.value=!1}}async function Et(){st.value=!0;try{let e=(await s.post(`/sync/reconcile-stale-logs`,{max_age_minutes:120})).reconciled??0;p(e>0?`已订正 ${e} 条卡住的推送记录`:`没有需要订正的记录`),await $()}catch(e){p(e instanceof Error?e.message:`订正失败`,`error`)}finally{st.value=!1}}function Dt(e){return e===`成功`?`success`:e===`失败`?`error`:e===`已取消`?`grey`:`warning`}return le(()=>{S(),$()}),re(()=>{W(),tt()}),(i,s)=>(T(),g(de,{fluid:``,class:`pa-6`},{default:x(()=>[M(c,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:x(()=>[M(d,{class:`text-subtitle-1`},{default:x(()=>[...s[13]||=[w(`源文件`,-1)]]),_:1}),M(l,null,{default:x(()=>[F.value?(T(),f(`div`,Te,[M(_,{class:`mr-2`},{default:x(()=>[...s[17]||=[w(`mdi-folder-zip`,-1)]]),_:1}),v(`span`,null,n(F.value.name)+` (`+n(F.value.fileCount)+` 个文件, `+n(Je(F.value.size))+`)`,1),M(R),M(o,{size:`small`,variant:`text`,color:`error`,onClick:qe},{default:x(()=>[...s[18]||=[w(`清除`,-1)]]),_:1})])):(T(),f(`div`,we,[v(`div`,{class:ee([`border-dashed border rounded pa-6 text-center cursor-pointer`,{"border-primary bg-primary-lighten-5":P.value}]),onDragover:s[0]||=r(e=>P.value=!0,[`prevent`]),onDragleave:s[1]||=e=>P.value=!1,onDrop:r(We,[`prevent`]),onClick:Se},[M(_,{size:`48`,color:`grey`},{default:x(()=>[...s[14]||=[w(`mdi-cloud-upload-outline`,-1)]]),_:1}),s[15]||=v(`div`,{class:`text-body-2 mt-2`},`拖拽 ZIP 文件到此处,或点击选择`,-1),s[16]||=v(`div`,{class:`text-caption text-medium-emphasis`},`支持 .zip 格式`,-1)],34),v(`input`,{ref_key:`zipInput`,ref:be,type:`file`,accept:`.zip`,hidden:``,onChange:Ge},null,544)])),I.value?(T(),g(oe,{key:2,indeterminate:``,class:`mt-2`})):y(``,!0)]),_:1})]),_:1}),M(c,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4 pa-4`},{default:x(()=>[M(pe,{align:`center`,dense:``},{default:x(()=>[M(L,{cols:`12`,sm:`4`},{default:x(()=>[M(ce,{modelValue:C.value,"onUpdate:modelValue":s[2]||=e=>C.value=e,label:`推送源路径`,variant:`outlined`,density:`compact`,"prepend-inner-icon":`mdi-folder`,disabled:!!F.value,hint:F.value?`已使用 ZIP 解压目录作为源路径`:void 0,"persistent-hint":``},null,8,[`modelValue`,`disabled`,`hint`])]),_:1}),M(L,{cols:`12`,sm:`4`},{default:x(()=>[M(ce,{modelValue:E.value,"onUpdate:modelValue":s[3]||=e=>E.value=e,label:`目标路径`,variant:`outlined`,density:`compact`,"prepend-inner-icon":`mdi-folder-marker`},null,8,[`modelValue`])]),_:1}),M(L,{cols:`12`,sm:`4`,class:`d-flex ga-2 justify-end`},{default:x(()=>[M(o,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-eye`,onClick:wt},{default:x(()=>[...s[19]||=[w(`预览`,-1)]]),_:1}),M(o,{size:`small`,color:`primary`,variant:`flat`,"prepend-icon":`mdi-upload`,onClick:Tt,loading:k.value},{default:x(()=>[...s[20]||=[w(`推送`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1}),M(c,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:x(()=>[M(d,{class:`d-flex align-center`},{default:x(()=>[M(ge,{"model-value":_t.value,label:`全选`,density:`compact`,"hide-details":``,class:`mr-4`,"onUpdate:modelValue":St},null,8,[`model-value`]),M(ce,{modelValue:D.value,"onUpdate:modelValue":s[4]||=e=>D.value=e,"prepend-inner-icon":`mdi-magnify`,label:`搜索服务器...`,density:`compact`,"hide-details":``,variant:`outlined`,rounded:``,style:{"max-width":`240px`}},null,8,[`modelValue`])]),_:1}),M(ie),M(l,{class:`pa-2`},{default:x(()=>[Z.value.length===0?(T(),f(`div`,Ee,`暂无服务器`)):(T(!0),f(a,{key:1},ae(vt.value,e=>(T(),f(`div`,{key:e.category,class:`mb-4`},[v(`div`,De,[M(o,{size:`x-small`,variant:`text`,color:yt(e.category)?`primary`:`default`,onClick:t=>bt(e.category)},{default:x(()=>[M(_,{size:`16`,class:`mr-1`},{default:x(()=>[w(n(yt(e.category)?`mdi-checkbox-marked`:`mdi-checkbox-blank-outline`),1)]),_:2},1024),w(` `+n(e.category),1)]),_:2},1032,[`color`,`onClick`]),v(`span`,Oe,` (`+n(e.servers.filter(e=>O.value.has(e.id)).length)+`/`+n(e.servers.length)+`) `,1)]),M(pe,{dense:``},{default:x(()=>[(T(!0),f(a,null,ae(e.servers,e=>(T(),g(L,{cols:`6`,sm:`4`,md:`3`,lg:`2`,key:e.id},{default:x(()=>[M(c,{color:O.value.has(e.id)?`primary`:void 0,variant:O.value.has(e.id)?`tonal`:`outlined`,rounded:`lg`,class:`pa-3 cursor-pointer`,onClick:t=>xt(e.id)},{default:x(()=>[v(`div`,ke,[M(_,{color:e.status===`online`?`success`:`error`,size:`12`},{default:x(()=>[...s[21]||=[w(`mdi-circle`,-1)]]),_:1},8,[`color`]),v(`span`,Ae,n(e.name),1)]),v(`div`,je,n(e.domain),1),j.value[e.id]?(T(),f(`div`,Me,[M(z,{color:Dt(j.value[e.id]),size:`x-small`,variant:`tonal`,label:``,border:`sm`},{default:x(()=>[w(n(j.value[e.id]),1)]),_:2},1032,[`color`])])):y(``,!0)]),_:2},1032,[`color`,`variant`,`onClick`])]),_:2},1024))),128))]),_:2},1024)]))),128))]),_:1})]),_:1}),M(c,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:x(()=>[M(d,{class:`text-subtitle-1`},{default:x(()=>[...s[22]||=[w(`同步模式`,-1)]]),_:1}),M(l,null,{default:x(()=>[M(Ce,{modelValue:N.value,"onUpdate:modelValue":s[5]||=e=>N.value=e,inline:``,density:`compact`},{default:x(()=>[M(xe,{label:`增量同步`,value:`incremental`}),M(xe,{label:`全量同步`,value:`full`}),M(xe,{label:`校验和同步`,value:`checksum`})]),_:1},8,[`modelValue`]),N.value===`full`?(T(),g(ve,{key:0,type:`warning`,density:`compact`,variant:`tonal`,class:`mt-2`},{default:x(()=>[...s[23]||=[w(` 全量同步会删除目标目录中不存在于源目录的文件 `,-1)]]),_:1})):y(``,!0),v(`div`,Ne,n(fe.value),1)]),_:1})]),_:1}),V.value.length>0?(T(),g(c,{key:0,class:`mb-4`,elevation:`0`,border:``,rounded:`lg`},{default:x(()=>[M(d,{class:`d-flex align-center text-subtitle-1`},{default:x(()=>[s[25]||=w(` 推送进度 `,-1),M(R),H.value&&V.value.some(e=>e.status===`running`||e.status===`pending`)&&k.value?(T(),g(o,{key:0,size:`small`,variant:`tonal`,color:`error`,class:`mr-2`,loading:nt.value,onClick:rt},{default:x(()=>[...s[24]||=[w(` 取消推送 `,-1)]]),_:1},8,[`loading`])):y(``,!0),M(z,{size:`small`,variant:`tonal`,color:`primary`},{default:x(()=>[w(n(V.value.filter(e=>e.status===`success`).length)+`/`+n(V.value.length)+` 完成 `,1)]),_:1})]),_:1}),M(ie),M(l,null,{default:x(()=>[k.value||Ze.value>0?(T(),g(oe,{key:0,"model-value":Ze.value,color:`primary`,height:`8`,rounded:``,class:`mb-3`},null,8,[`model-value`])):y(``,!0),V.value.length?(T(),f(`div`,Pe,n(Xe.value)+` / `+n(V.value.length)+` 台已结束 `,1)):y(``,!0),M(ue,{density:`compact`},{default:x(()=>[(T(!0),f(a,null,ae(V.value,t=>(T(),g(te,{key:t.id,title:t.name},e({append:x(()=>[t.status===`pending`?(T(),g(_,{key:0,color:`grey`},{default:x(()=>[...s[26]||=[w(`mdi-clock-outline`,-1)]]),_:1})):t.status===`running`?(T(),g(_,{key:1,color:`blue`,class:`mdi-spin`},{default:x(()=>[...s[27]||=[w(`mdi-loading`,-1)]]),_:1})):t.status===`success`?(T(),g(_,{key:2,color:`green`},{default:x(()=>[...s[28]||=[w(`mdi-check-circle`,-1)]]),_:1})):t.status===`cancelled`?(T(),g(_,{key:3,color:`grey`},{default:x(()=>[...s[29]||=[w(`mdi-cancel`,-1)]]),_:1})):(T(),g(_,{key:4,color:`red`},{default:x(()=>[...s[30]||=[w(`mdi-alert-circle`,-1)]]),_:1}))]),_:2},[t.detail?{name:`subtitle`,fn:x(()=>[v(`span`,{class:ee(t.status===`failed`?`text-error`:(t.status,`text-medium-emphasis`))},n(t.detail),3)]),key:`0`}:void 0]),1032,[`title`]))),128))]),_:1})]),_:1})]),_:1})):y(``,!0),M(he,{modelValue:G.value,"onUpdate:modelValue":s[8]||=e=>G.value=e,"max-width":`600`},{default:x(()=>[M(c,{border:``},{default:x(()=>[M(d,null,{default:x(()=>[...s[31]||=[w(`推送预览`,-1)]]),_:1}),M(l,null,{default:x(()=>[K.value.error?(T(),g(ve,{key:0,type:`error`,class:`mb-2`},{default:x(()=>[w(n(K.value.error),1)]),_:1})):(T(),f(`div`,Fe,[v(`div`,Ie,[s[32]||=w(` 将推送到 `,-1),v(`strong`,null,n(O.value.size),1),s[33]||=w(` 台服务器 `,-1),K.value.server_name?(T(),f(`span`,Le,`(预览代表机:`+n(K.value.server_name)+`)`,1)):y(``,!0)]),K.value.stats?(T(),f(`div`,Re,[w(` 共 `+n(K.value.stats.files_total??0)+` 个文件, 预计传输 `+n(K.value.stats.files_transferred??0)+` 个, `+n(Je(K.value.stats.transfer_size_bytes??0))+` `,1),N.value===`full`&&(K.value.stats.files_deleted??0)>0?(T(),f(`span`,ze,` · 将删除 `+n(K.value.stats.files_deleted)+` 个远端文件 `,1)):y(``,!0)])):y(``,!0)]))]),_:1}),M(t,null,{default:x(()=>[M(R),M(o,{variant:`text`,onClick:s[6]||=e=>G.value=!1},{default:x(()=>[...s[34]||=[w(`关闭`,-1)]]),_:1}),M(o,{color:`primary`,variant:`flat`,onClick:s[7]||=e=>{G.value=!1,Tt()}},{default:x(()=>[...s[35]||=[w(`确认推送`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),M(c,{elevation:`0`,border:``,rounded:`lg`},{default:x(()=>[M(d,{class:`d-flex flex-wrap align-center ga-2`},{default:x(()=>[s[37]||=v(`span`,null,`推送历史`,-1),M(R),M(B,{modelValue:J.value,"onUpdate:modelValue":[s[9]||=e=>J.value=e,dt],items:ct,"item-title":`label`,"item-value":`value`,label:`状态`,variant:`outlined`,density:`compact`,"hide-details":``,clearable:``,style:{"max-width":`120px`}},null,8,[`modelValue`]),M(B,{modelValue:Y.value,"onUpdate:modelValue":[s[10]||=e=>Y.value=e,dt],items:lt,"item-title":`label`,"item-value":`value`,label:`模式`,variant:`outlined`,density:`compact`,"hide-details":``,clearable:``,style:{"max-width":`120px`}},null,8,[`modelValue`]),M(B,{modelValue:X.value,"onUpdate:modelValue":[s[11]||=e=>X.value=e,dt],items:ut.value,"item-title":`title`,"item-value":`value`,label:`服务器`,variant:`outlined`,density:`compact`,"hide-details":``,clearable:``,style:{"max-width":`180px`}},null,8,[`modelValue`,`items`]),M(o,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-wrench`,loading:st.value,onClick:Et},{default:x(()=>[...s[36]||=[w(` 修复卡住记录 `,-1)]]),_:1},8,[`loading`])]),_:1}),M(_e,{items:it.value,headers:ft,"items-length":at.value,loading:ot.value,page:q.value,"items-per-page":15,hover:``,density:`comfortable`,"onUpdate:page":s[12]||=e=>{q.value=e,$()}},{"item.status":x(({item:e})=>[M(z,{color:ht(e.status),size:`x-small`,variant:`tonal`,label:``,border:`sm`},{default:x(()=>[w(n(mt(e.status)),1)]),_:2},1032,[`color`])]),"item.sync_mode":x(({item:e})=>[v(`span`,Be,n(gt(e.sync_mode)),1)]),"item.started_at":x(({item:e})=>[v(`span`,Ve,n(pt(e.started_at)),1)]),"item.error_message":x(({item:e})=>[e.error_message?(T(),f(`span`,{key:0,class:`text-caption text-error text-truncate d-inline-block`,style:{"max-width":`240px`},title:e.error_message},n(e.error_message),9,He)):(T(),f(`span`,Ue,`—`))]),"no-data":x(()=>[...s[38]||=[v(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无数据`,-1)]]),_:1},8,[`items`,`items-length`,`loading`,`page`])]),_:1})]),_:1}))}});export{We as default}; |