2 lines
4.6 KiB
JavaScript
2 lines
4.6 KiB
JavaScript
import{p as b,_ as M,a as m,o as N,h as w,w as o,e as y,f as i,g as s,b as C,d as c,k as f,F as E,v as R,t as T,x as I,E as l}from"./index-XYID9gNS.js";async function D(){const{data:d}=await b.get("/screenshots");return d}async function F(d){const{data:u}=await b.delete(`/screenshots/${encodeURIComponent(d)}`);return u}async function H(){const{data:d}=await b.post("/screenshots/clear",{});return d}const L={class:"panel-head"},O={class:"panel-actions"},W={key:1,class:"grid"},j=["src","alt","onClick"],q={class:"shot-body"},G=["title"],J={class:"shot-meta app-muted"},K={class:"shot-actions"},Q={class:"preview"},X=["src","alt"],Y={__name:"ScreenshotsPage",setup(d){const u=m(!1),r=m([]),p=m(!1),g=m(""),h=m("");function _(t){return`/screenshots/${encodeURIComponent(t)}`}async function x(){u.value=!0;try{const t=await D();r.value=Array.isArray(t)?t:[]}catch(t){t?.response?.status===401&&(window.location.href="/login"),r.value=[]}finally{u.value=!1}}function S(t){h.value=t.display_name||t.filename||"截图预览",g.value=_(t.filename),p.value=!0}async function U(){try{await I.confirm("确定要清空全部截图吗?","清空截图",{confirmButtonText:"清空",cancelButtonText:"取消",type:"warning"})}catch{return}try{const t=await H();if(t?.success){l.success(`已清空(删除 ${t?.deleted||0} 张)`),r.value=[],p.value=!1;return}l.error(t?.error||"操作失败")}catch(t){const e=t?.response?.data;l.error(e?.error||"操作失败")}}async function V(t){try{await I.confirm(`确定要删除截图「${t.display_name||t.filename}」吗?`,"删除截图",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await F(t.filename);if(e?.success){r.value=r.value.filter(a=>a.filename!==t.filename),g.value.includes(encodeURIComponent(t.filename))&&(p.value=!1),l.success("已删除");return}l.error(e?.error||"删除失败")}catch(e){const a=e?.response?.data;l.error(a?.error||"删除失败")}}async function z(t){const e=_(t.filename);if(!navigator.clipboard||typeof navigator.clipboard.write!="function"||typeof window.ClipboardItem>"u"){l.warning("当前环境不支持复制图片(建议使用 Chrome/Edge 并通过 HTTPS 访问);可用“下载”。");return}try{const a=await fetch(e,{credentials:"include"});if(!a.ok)throw new Error("fetch_failed");const v=await a.blob();if(!(v.type||"").startsWith("image/"))throw new Error("not_image");await navigator.clipboard.write([new ClipboardItem({[v.type]:v})]),l.success("图片已复制")}catch{l.warning("复制图片失败:请确认允许剪贴板权限;可用“下载”。")}}function A(t){const e=document.createElement("a");e.href=_(t.filename),e.download=t.display_name||t.filename,document.body.appendChild(e),e.click(),e.remove()}return N(x),(t,e)=>{const a=y("el-button"),v=y("el-skeleton"),B=y("el-empty"),$=y("el-card"),P=y("el-dialog");return i(),w($,{shadow:"never",class:"panel","body-style":{padding:"14px"}},{default:o(()=>[s("div",L,[e[4]||(e[4]=s("div",{class:"panel-title"},"截图管理",-1)),s("div",O,[c(a,{loading:u.value,onClick:x},{default:o(()=>[...e[2]||(e[2]=[f("刷新",-1)])]),_:1},8,["loading"]),c(a,{type:"danger",plain:"",disabled:r.value.length===0,onClick:U},{default:o(()=>[...e[3]||(e[3]=[f("清空全部",-1)])]),_:1},8,["disabled"])])]),u.value?(i(),w(v,{key:0,rows:6,animated:""})):(i(),C(E,{key:1},[r.value.length===0?(i(),w(B,{key:0,description:"暂无截图"})):(i(),C("div",W,[(i(!0),C(E,null,R(r.value,n=>(i(),w($,{key:n.filename,shadow:"never",class:"shot-card","body-style":{padding:"0"}},{default:o(()=>[s("img",{class:"shot-img",src:_(n.filename),alt:n.display_name||n.filename,loading:"lazy",onClick:k=>S(n)},null,8,j),s("div",q,[s("div",{class:"shot-name",title:n.display_name||n.filename},T(n.display_name||n.filename),9,G),s("div",J,T(n.created||""),1),s("div",K,[c(a,{size:"small",text:"",type:"primary",onClick:k=>z(n)},{default:o(()=>[...e[5]||(e[5]=[f("复制图片",-1)])]),_:1},8,["onClick"]),c(a,{size:"small",text:"",onClick:k=>A(n)},{default:o(()=>[...e[6]||(e[6]=[f("下载",-1)])]),_:1},8,["onClick"]),c(a,{size:"small",text:"",type:"danger",onClick:k=>V(n)},{default:o(()=>[...e[7]||(e[7]=[f("删除",-1)])]),_:1},8,["onClick"])])])]),_:2},1024))),128))]))],64)),c(P,{modelValue:p.value,"onUpdate:modelValue":e[1]||(e[1]=n=>p.value=n),title:h.value,width:"min(920px, 94vw)"},{footer:o(()=>[c(a,{onClick:e[0]||(e[0]=n=>p.value=!1)},{default:o(()=>[...e[8]||(e[8]=[f("关闭",-1)])]),_:1})]),default:o(()=>[s("div",Q,[s("img",{src:g.value,alt:h.value,class:"preview-img"},null,8,X)])]),_:1},8,["modelValue","title"])]),_:1})}}},ee=M(Y,[["__scopeId","data-v-239daac5"]]);export{ee as default};
|