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