mirror of
https://git-qiuchenly.yltfspace.com/QiuChenly/corepatch
synced 2025-11-25 05:40:27 +08:00
42 lines
8.1 KiB
JavaScript
42 lines
8.1 KiB
JavaScript
import{d as a,r as e,c as t,w as l,a as s,F as n,l as i,m as o,T as c,p as u,q as d,b as r,t as m,e as v,z as p,C as h,g as b,D as f,B as g,n as y,h as k}from"./CdD4XvnD.js"
|
|
import{c as D,_ as C,b as w,A as I,a as z}from"./BaSQ3xJt.js"
|
|
import{I as _}from"./j0cGtmjd.js"
|
|
const A={class:"post-edit-dialog"},B={class:"dialog-header"},M={class:"dialog-body"},U={key:0,class:"loading-state"},j={key:1,class:"post-form"},x={key:0,class:"form-group author-info-section"},F={class:"author-card"},R={class:"author-avatar"},q={class:"author-details"},P={class:"author-name"},E={key:0,class:"author-id"},L={class:"form-group"},V=["disabled"],$={class:"form-group"},G=["disabled"],K={class:"form-group"},O={key:0,class:"attachments-list"},T=["onClick","disabled"],W=["onClick"],H={class:"attachment-name"},J={class:"attachment-size"},N={key:1,class:"no-attachments"},Q={class:"form-group"},S={class:"attachment-upload"},X=["disabled"],Y=["disabled"],Z=["disabled"],aa=["disabled"],ea={key:0,class:"upload-progress"},ta={class:"dialog-actions"},la=["disabled"],sa=["disabled"],na={key:0},ia={key:1},oa=z(a({__name:"PostEditDialog",props:{visible:{type:Boolean},postData:{},loading:{type:Boolean,default:!1}},emits:["confirm","cancel"],setup(a,{emit:z}){const oa=a,ca=z,ua=D(),da=e({title:"",content:"",attachments:[]}),ra=e(!1),ma=e(!1),va=e(null),pa=e(null),ha=e(null)
|
|
e("")
|
|
const ba=t(()=>da.value.title.trim().length>0&&da.value.content.trim().length>0),fa=a=>{if(0===a)return"0 B"
|
|
const e=Math.floor(Math.log(a)/Math.log(1024))
|
|
return Math.round(a/Math.pow(1024,e)*100)/100+" "+["B","KB","MB","GB"][e]},ga=()=>{oa.postData?da.value={title:oa.postData.title||"",content:oa.postData.content||"",attachments:oa.postData.attachments||[]}:da.value={title:"",content:"",attachments:[]}}
|
|
l(()=>oa.visible,a=>{a&&oa.postData&&ga()}),l(()=>oa.postData,a=>{oa.visible&&a&&ga()},{deep:!0}),l(()=>oa.loading,a=>{})
|
|
const ya=()=>{var a
|
|
null==(a=va.value)||a.click()},ka=()=>{var a
|
|
null==(a=pa.value)||a.click()},Da=async a=>{var e,t,l
|
|
const s=a.target,n=null==(e=s.files)?void 0:e[0]
|
|
if(n){ma.value=!0
|
|
try{const a=await I.uploadImageAttachment(n)
|
|
a.success&&a.attachmentId?(da.value.attachments.push({id:a.attachmentId,name:n.name,type:"image",size:n.size}),ua.success("图片上传成功")):ua.error(a.message||"图片上传失败")}catch(i){ua.error((null==(l=null==(t=i.response)?void 0:t.data)?void 0:l.message)||i.message||"图片上传失败")}finally{ma.value=!1,s&&(s.value="")}}},Ca=async a=>{var e,t,l
|
|
const s=a.target,n=null==(e=s.files)?void 0:e[0]
|
|
if(n){ma.value=!0
|
|
try{const a=await I.uploadFileAttachment(n)
|
|
a.success&&a.attachmentId?(da.value.attachments.push({id:a.attachmentId,name:n.name,type:"file",size:n.size}),ua.success("文件上传成功")):ua.error(a.message||"文件上传失败")}catch(i){ua.error((null==(l=null==(t=i.response)?void 0:t.data)?void 0:l.message)||i.message||"文件上传失败")}finally{ma.value=!1,s&&(s.value="")}}},wa=async a=>{var e,t
|
|
if(ra.value||ma.value)return
|
|
const l=a.clipboardData
|
|
if(!l)return
|
|
const s=Array.from(l.items).find(a=>a.type.startsWith("image/"))
|
|
if(!s)return
|
|
a.preventDefault()
|
|
const n=s.getAsFile()
|
|
if(!n)return
|
|
const i=Date.now(),o=n.type.split("/")[1]||"png",c=new File([n],`paste-${i}.${o}`,{type:n.type})
|
|
ma.value=!0
|
|
try{const a=await I.uploadImageAttachment(c)
|
|
a.success&&a.attachmentId?(da.value.attachments.push({id:a.attachmentId,name:c.name,type:"image",size:c.size}),ua.success("图片已粘贴并上传")):ua.error(a.message||"图片上传失败")}catch(u){ua.error((null==(t=null==(e=u.response)?void 0:e.data)?void 0:t.message)||u.message||"图片上传失败")}finally{ma.value=!1}},Ia=()=>{if(!ba.value)return
|
|
const a=da.value.attachments.map(a=>a.id)
|
|
ca("confirm",{title:da.value.title.trim(),content:da.value.content.trim(),attachmentIds:a})},za=()=>{ca("cancel")},_a=()=>{ha.value&&(URL.revokeObjectURL(ha.value),ha.value=null)}
|
|
return(e,t)=>(k(),s(n,null,[(k(),i(c,{to:"body"},[o(u,{name:"fade"},{default:d(()=>{var e
|
|
return[a.visible?(k(),s("div",{key:0,class:"post-edit-dialog-overlay",onClick:m(za,["self"])},[v("div",A,[v("div",B,[t[2]||(t[2]=v("h3",{class:"dialog-title"},"编辑帖子",-1)),v("button",{class:"close-btn",onClick:za,type:"button"},[o(C,{icon:"mdi:close"})])]),v("div",M,[oa.loading?(k(),s("div",U,[...t[3]||(t[3]=[v("div",{class:"spinner"},null,-1),v("p",null,"加载帖子详情中...",-1)])])):(k(),s("div",j,[(null==(e=oa.postData)?void 0:e.author)?(k(),s("div",x,[t[4]||(t[4]=v("label",{class:"form-label"},"发帖人",-1)),v("div",F,[v("div",R,[o(w,{"avatar-id":oa.postData.author.avatar,"user-name":oa.postData.author.name,width:36,height:36},null,8,["avatar-id","user-name"])]),v("div",q,[v("div",P,p(oa.postData.author.name),1),oa.postData.author.id?(k(),s("div",E," ID: "+p(oa.postData.author.id),1)):r("",!0)])])])):r("",!0),v("div",L,[t[5]||(t[5]=v("label",{class:"form-label"},[b("标题 "),v("span",{class:"required"},"*")],-1)),h(v("input",{"onUpdate:modelValue":t[0]||(t[0]=a=>da.value.title=a),type:"text",placeholder:"请输入帖子标题",class:"form-input",disabled:ra.value},null,8,V),[[f,da.value.title]])]),v("div",$,[t[6]||(t[6]=v("label",{class:"form-label"},[b("内容 "),v("span",{class:"required"},"*")],-1)),h(v("textarea",{"onUpdate:modelValue":t[1]||(t[1]=a=>da.value.content=a),placeholder:"请输入帖子内容",class:"form-textarea",rows:"15",disabled:ra.value,onPaste:wa},null,40,G),[[f,da.value.content]])]),v("div",K,[t[8]||(t[8]=v("label",{class:"form-label"},"附件",-1)),da.value.attachments&&da.value.attachments.length>0?(k(),s("div",O,[(k(!0),s(n,null,g(da.value.attachments,a=>(k(),s("div",{key:a.id,class:y(["attachment-item",{clickable:!0}])},[v("button",{class:"remove-attachment-btn-left",onClick:m(e=>{return t=a.id,void(da.value.attachments=da.value.attachments.filter(a=>a.id!==t))
|
|
var t},["stop"]),disabled:ra.value,type:"button",title:"删除附件"},[o(C,{icon:"mdi:close"})],8,T),v("div",{class:"attachment-info",onClick:m(e=>(async a=>{if("image"===a.type){if(a.id){const e=await I.getAttachmentImage(a.id)
|
|
e?ha.value=e:ua.error("图片加载失败")}}else await(async a=>{try{const e=await I.getAttachmentDownloadUrl(a.id)
|
|
if(e){const a=document.createElement("a")
|
|
a.href=e.url,a.download=e.name,a.target="_blank",document.body.appendChild(a),a.click(),document.body.removeChild(a),ua.success("文件下载已开始")}else ua.error("无法获取下载链接")}catch(e){ua.error("下载文件失败: "+(e.message||"未知错误"))}})(a)})(a),["stop"])},[o(C,{icon:"image"===a.type?"mdi:image":"mdi:file",class:"attachment-icon"},null,8,["icon"]),v("span",H,p(a.name),1),v("span",J,p(fa(a.size)),1),"image"===a.type?(k(),i(C,{key:0,icon:"mdi:eye-outline",class:"attachment-action-icon",title:"预览图片"})):(k(),i(C,{key:1,icon:"mdi:download",class:"attachment-action-icon",title:"下载文件"}))],8,W)]))),128))])):(k(),s("div",N,[...t[7]||(t[7]=[v("p",null,"暂无附件",-1)])]))]),v("div",Q,[t[12]||(t[12]=v("label",{class:"form-label"},"添加附件",-1)),v("div",S,[v("input",{ref_key:"imageInputRef",ref:va,type:"file",accept:"image/*",onChange:Da,class:"file-input",style:{display:"none"},disabled:ra.value},null,40,X),v("input",{ref_key:"fileInputRef",ref:pa,type:"file",onChange:Ca,class:"file-input",style:{display:"none"},disabled:ra.value},null,40,Y),v("button",{class:"btn btn-outline",onClick:ya,disabled:ra.value||ma.value,type:"button"},[o(C,{icon:"mdi:image",class:"btn-icon"}),t[9]||(t[9]=b(" 添加图片 ",-1))],8,Z),v("button",{class:"btn btn-outline",onClick:ka,disabled:ra.value||ma.value,type:"button"},[o(C,{icon:"mdi:file",class:"btn-icon"}),t[10]||(t[10]=b(" 添加文件 ",-1))],8,aa)]),ma.value?(k(),s("div",ea,[...t[11]||(t[11]=[v("div",{class:"spinner-small"},null,-1),v("span",null,"上传中...",-1)])])):r("",!0)])]))]),v("div",ta,[v("button",{class:"btn btn-outline",onClick:za,disabled:ra.value||ma.value}," 取消 ",8,la),v("button",{class:"btn btn-primary",onClick:Ia,disabled:!ba.value||ra.value||ma.value},[ra.value?(k(),s("span",na,"保存中...")):(k(),s("span",ia,"保存"))],8,sa)])])])):r("",!0)]}),_:1})])),o(_,{visible:!!ha.value,"image-url":ha.value,onClose:_a},null,8,["visible","image-url"])],64))}}),[["__scopeId","data-v-595b5a78"]])
|
|
export{oa as P}
|