mirror of
https://git-qiuchenly.yltfspace.com/QiuChenly/corepatch
synced 2025-11-25 05:40:27 +08:00
46 lines
13 KiB
JavaScript
46 lines
13 KiB
JavaScript
import{r as e,c as a,d as l,a as t,b as s,n,e as i,m as o,C as r,D as u,u as d,F as c,g as m,z as v,B as p,h as f,w as g,l as h,p as b,q as y,t as I,T as k}from"./CdD4XvnD.js"
|
||
import{c as w,A as x,b as C,_ as F,a as $}from"./BaSQ3xJt.js"
|
||
import{a as M}from"./CFhT0fBm.js"
|
||
import{R as S}from"./6K6b4Qy_.js"
|
||
function B(l){const t=w(),s=(null==l?void 0:l.maxImageCount)??3,n=(null==l?void 0:l.maxFileCount)??3,i=(null==l?void 0:l.maxImageSize)??10485760,o=(null==l?void 0:l.maxFileSize)??20971520,r=e([]),u=e([]),d=e(null),c=e(null),m=a(()=>r.value.length>0||u.value.length>0)
|
||
return{selectedImages:r,selectedFiles:u,imageInput:d,fileInput:c,handleImageSelect:e=>{const a=e.target
|
||
Array.from(a.files||[]).forEach(e=>{if(r.value.length>=s)return void t.error(`图片数量不能超过${s}张`)
|
||
if(e.size>i){const a=Math.round(i/1048576)
|
||
return r.value.push({file:e,preview:"",error:`单张图片大小不能超过${a}MB`}),void t.error(`单张图片大小不能超过${a}MB`)}const a=new FileReader
|
||
a.onload=a=>{var l
|
||
const t=r.value.findIndex(a=>a.file===e)
|
||
t>=0&&(r.value[t].preview=null==(l=a.target)?void 0:l.result)},a.readAsDataURL(e),r.value.push({file:e,preview:""})}),a.value=""},handleFileSelect:e=>{const a=e.target
|
||
Array.from(a.files||[]).forEach(e=>{if(u.value.length>=n)t.error(`文件数量不能超过${n}个`)
|
||
else{if(e.size>o){const a=Math.round(o/1048576)
|
||
return u.value.push({file:e,error:`单个文件大小不能超过${a}MB`}),void t.error(`单个文件大小不能超过${a}MB`)}u.value.push({file:e})}}),a.value=""},handlePaste:async e=>{const a=e.clipboardData
|
||
if(!a)return
|
||
const l=Array.from(a.items).find(e=>e.type.startsWith("image/"))
|
||
if(!l)return
|
||
if(e.preventDefault(),r.value.length>=s)return void t.error(`图片数量不能超过${s}张`)
|
||
const n=l.getAsFile()
|
||
if(!n)return
|
||
if(n.size>i){const e=Math.round(i/1048576)
|
||
return void t.error(`单张图片大小不能超过${e}MB`)}const o=Date.now(),u=n.type.split("/")[1]||"png",d=new File([n],`paste-${o}.${u}`,{type:n.type}),c=new FileReader
|
||
c.onload=e=>{var a
|
||
const l=r.value.findIndex(e=>e.file===d)
|
||
l>=0&&(r.value[l].preview=null==(a=e.target)?void 0:a.result)},c.readAsDataURL(d),r.value.push({file:d,preview:""}),t.success("图片已粘贴")},removeImage:e=>{r.value.splice(e,1)},removeFile:e=>{u.value.splice(e,1)},triggerImageUpload:()=>{var e
|
||
null==(e=d.value)||e.click()},triggerFileUpload:()=>{var e
|
||
null==(e=c.value)||e.click()},uploadAttachments:async()=>{var e,a,l,t
|
||
const s=[]
|
||
for(let n=0;n<r.value.length;n++){const l=r.value[n],t=await x.uploadImageAttachment(l.file)
|
||
if(!t.success||!(null==(e=t.data)?void 0:e.attachmentId))throw new Error(t.message||(null==(a=t.data)?void 0:a.message)||"图片上传失败")
|
||
s.push(t.data.attachmentId)}for(let n=0;n<u.value.length;n++){const e=u.value[n],a=await x.uploadFileAttachment(e.file)
|
||
if(!a.success||!(null==(l=a.data)?void 0:l.attachmentId))throw new Error(a.message||(null==(t=a.data)?void 0:t.message)||"文件上传失败")
|
||
s.push(a.data.attachmentId)}return s},clearAttachments:()=>{r.value=[],u.value=[]},validateAttachments:()=>{if(r.value.length>s)return t.error(`图片数量不能超过${s}张`),!1
|
||
if(u.value.length>n)return t.error(`文件数量不能超过${n}个`),!1
|
||
for(const e of r.value)if(e.file.size>i){const e=Math.round(i/1048576)
|
||
return t.error(`单张图片大小不能超过${e}MB`),!1}for(const e of u.value)if(e.file.size>o){const e=Math.round(o/1048576)
|
||
return t.error(`单个文件大小不能超过${e}MB`),!1}return!0},canSubmit:m}}const z={class:"reply-form"},_={key:0,class:"form-avatar"},A={class:"form-content"},U=["placeholder","rows","maxlength"],D={class:"form-actions"},R={class:"upload-area"},N=["disabled","title"],j=["disabled","title"],E={key:0,class:"limit-hint"},L={key:1,class:"upload-count"},T=["disabled"],P={key:1,class:"attachment-preview-list"},V=["src"],q=["onClick"],H={key:0,class:"attachment-error"},O={class:"file-name"},W={class:"file-size"},G=["onClick"],J={key:0,class:"attachment-error"},K=$(l({__name:"ReplyForm",props:{userId:{},userName:{},mode:{default:"main"},visible:{type:Boolean,default:!0},replyToUserName:{},showCancel:{type:Boolean,default:!1},showLimitHint:{type:Boolean,default:!0},maxImageCount:{},maxFileCount:{},maxImageSize:{},maxFileSize:{},isSubmitting:{type:Boolean,default:!1}},emits:["submit","cancel"],setup(l,{expose:g,emit:h}){const b=l,y=h,I=e(""),k=e(""),w=a(()=>"nested"===b.mode?3:b.maxImageCount??("post"===b.mode?5:10)),x=a(()=>"nested"===b.mode?3:b.maxFileCount??(b.mode,5)),$=a(()=>"nested"===b.mode?10485760:b.maxImageSize??("post"===b.mode?20971520:10485760)),S=a(()=>"nested"===b.mode?20971520:b.maxFileSize??20971520),K=B({maxImageCount:w.value,maxFileCount:x.value,maxImageSize:$.value,maxFileSize:S.value}),{selectedImages:Q,selectedFiles:X,imageInput:Y,fileInput:Z,handleImageSelect:ee,handleFileSelect:ae,handlePaste:le,removeImage:te,removeFile:se,triggerImageUpload:ne,triggerFileUpload:ie,canSubmit:oe}=K,re=a(()=>"post"===b.mode?k.value.trim().length>0&&(I.value.trim().length>0||oe.value):I.value.trim().length>0||oe.value),ue=()=>{re.value&&!b.isSubmitting&&("post"===b.mode?y("submit",I.value,Q.value,X.value,k.value):y("submit",I.value,Q.value,X.value))},de=()=>{I.value="",k.value="",K.clearAttachments(),y("cancel")}
|
||
return g({content:I,title:k,selectedImages:Q,selectedFiles:X,clear:()=>{I.value="",k.value="",K.clearAttachments()}}),(e,a)=>"main"===l.mode||"post"===l.mode||l.visible?(f(),t("div",{key:0,class:n(["reply-form-container",{"nested-mode":"nested"===l.mode,"post-mode":"post"===l.mode}])},[i("div",z,["post"!==l.mode?(f(),t("div",_,[o(C,{userId:l.userId,"user-name":l.userName||"我",width:"36px",height:"36px"},null,8,["userId","user-name"])])):s("",!0),i("div",A,["post"===l.mode?r((f(),t("input",{key:0,"onUpdate:modelValue":a[0]||(a[0]=e=>k.value=e),class:"post-title-input",placeholder:"请输入帖子标题...",maxlength:"100"},null,512)),[[u,k.value]]):s("",!0),r(i("textarea",{"onUpdate:modelValue":a[1]||(a[1]=e=>I.value=e),class:"reply-textarea",placeholder:"nested"===l.mode&&l.replyToUserName?`回复 ${l.replyToUserName}:`:"post"===l.mode?"写下你想说的...":"写下你的回复...",rows:"nested"===l.mode?2:"post"===l.mode?4:3,maxlength:"nested"===l.mode?500:"post"===l.mode?2e3:1e3,onPaste:a[2]||(a[2]=(...e)=>d(le)&&d(le)(...e))},null,40,U),[[u,I.value]]),i("div",D,[i("div",R,[i("input",{ref_key:"imageInput",ref:Y,type:"file",accept:"image/*",multiple:"",onChange:a[3]||(a[3]=(...e)=>d(ee)&&d(ee)(...e)),style:{display:"none"}},null,544),i("input",{ref_key:"fileInput",ref:Z,type:"file",multiple:"",onChange:a[4]||(a[4]=(...e)=>d(ae)&&d(ae)(...e)),style:{display:"none"}},null,544),i("button",{class:n(["upload-btn",{small:"nested"===l.mode}]),onClick:a[5]||(a[5]=(...e)=>d(ne)&&d(ne)(...e)),disabled:d(Q).length>=w.value,title:"main"===l.mode||"post"===l.mode?`添加图片(最多${w.value}张,单张不超过${Math.round($.value/1048576)}MB)`:void 0},[o(F,{icon:"mdi:image-outline",class:"btn-icon"}),"main"===l.mode||"post"===l.mode?(f(),t(c,{key:0},[m(" 图片 ("+v(d(Q).length)+"/"+v(w.value)+") ",1)],64)):(f(),t(c,{key:1},[m(" 图片 ")],64))],10,N),i("button",{class:n(["upload-btn",{small:"nested"===l.mode}]),onClick:a[6]||(a[6]=(...e)=>d(ie)&&d(ie)(...e)),disabled:d(X).length>=x.value,title:"main"===l.mode||"post"===l.mode?`添加文件(最多${x.value}个,单个不超过${Math.round(S.value/1048576)}MB)`:void 0},[o(F,{icon:"mdi:file-outline",class:"btn-icon"}),"main"===l.mode||"post"===l.mode?(f(),t(c,{key:0},[m(" 文件 ("+v(d(X).length)+"/"+v(x.value)+") ",1)],64)):(f(),t(c,{key:1},[m(" 文件 ")],64))],10,j),!l.showLimitHint||"main"!==l.mode&&"post"!==l.mode?s("",!0):(f(),t("div",E,[o(F,{icon:"mdi:information-outline",class:"hint-icon"}),i("span",null,"当前讨论区限制:图片最多 "+v(w.value)+" 张(单张不超过 "+v(Math.round($.value/1048576))+" MB),文件最多 "+v(x.value)+" 个(单个不超过 "+v(Math.round(S.value/1048576))+" MB)",1)])),"main"!==l.mode&&"post"!==l.mode||!(d(Q).length>0||d(X).length>0)?s("",!0):(f(),t("span",L,v(d(Q).length+d(X).length)+" 个附件 ",1))]),i("div",{class:n(["form-actions-right",{"nested-actions":"nested"===l.mode}])},[l.showCancel&&"nested"===l.mode?(f(),t("button",{key:0,class:"cancel-btn",onClick:de}," 取消 ")):s("",!0),i("button",{class:n(["submit-reply-btn",{small:"nested"===l.mode}]),onClick:ue,disabled:!re.value||l.isSubmitting},[o(F,{icon:l.isSubmitting?"mdi:loading":"mdi:send",class:n(["btn-icon",{spinning:l.isSubmitting}])},null,8,["icon","class"]),m(" "+v(l.isSubmitting?"nested"===l.mode?"发送中...":"post"===l.mode?"发布中...":"发表中...":"nested"===l.mode?"发送":"post"===l.mode?"发布帖子":"发表回复"),1)],10,T)],2)]),d(Q).length>0||d(X).length>0?(f(),t("div",P,[(f(!0),t(c,null,p(d(Q),(e,a)=>(f(),t("div",{key:`img-${a}`,class:"attachment-preview-item"},[i("img",{src:e.preview,alt:"预览图"},null,8,V),i("button",{class:"remove-attachment-btn",onClick:e=>d(te)(a)},[o(F,{icon:"mdi:close"})],8,q),e.error?(f(),t("div",H,v(e.error),1)):s("",!0)]))),128)),(f(!0),t(c,null,p(d(X),(e,a)=>(f(),t("div",{key:`file-${a}`,class:"attachment-preview-item file"},[o(F,{icon:"mdi:file",class:"file-icon"}),i("span",O,v(e.file.name),1),i("span",W,v(d(M)(e.file.size)),1),i("button",{class:"remove-attachment-btn",onClick:e=>d(se)(a)},[o(F,{icon:"mdi:close"})],8,G),e.error?(f(),t("div",J,v(e.error),1)):s("",!0)]))),128))])):s("",!0)])])],2)):s("",!0)}}),[["__scopeId","data-v-0a0773a0"]]),Q={class:"dialog-header"},X={class:"header-icon"},Y={class:"dialog-content"},Z={class:"report-info-section"},ee={class:"section-title"},ae={class:"info-grid"},le={class:"info-row"},te={class:"info-value"},se={class:"info-row"},ne={class:"info-value"},ie={class:"info-row full-width"},oe={class:"info-content"},re={class:"report-type-section"},ue={class:"section-title"},de={class:"report-types"},ce=["onClick"],me={class:"type-label"},ve={class:"report-comment-section"},pe={class:"section-title"},fe={class:"char-count"},ge={class:"dialog-footer"},he=["disabled"],be=$(l({__name:"ReportDialog",props:{visible:{type:Boolean,default:!1},reportInfo:{default:null}},emits:["close","submit"],setup(a,{emit:l}){const d=a,w=l,x=[{value:"pornography",...S.pornography},{value:"fraud",...S.fraud},{value:"malicious_drainage",...S.malicious_drainage},{value:"abuse",...S.abuse},{value:"trolling",...S.trolling},{value:"against_values",...S.against_values}],C=e([]),$=e("")
|
||
g(()=>d.visible,e=>{e&&(C.value=[],$.value="")})
|
||
const M=()=>{w("close")},B=()=>{0!==C.value.length&&d.reportInfo&&w("submit",C.value,$.value,d.reportInfo)}
|
||
return(e,l)=>(f(),h(k,{to:"body"},[o(b,{name:"dialog-fade"},{default:y(()=>{var e,d,g
|
||
return[a.visible?(f(),t("div",{key:0,class:"dialog-overlay",onClick:I(M,["self"])},[i("div",{class:"dialog-container",onClick:l[1]||(l[1]=I(()=>{},["stop"]))},[i("div",Q,[i("div",X,[o(F,{icon:"mdi:flag"})]),l[2]||(l[2]=i("h2",{class:"dialog-title"},"举报内容",-1)),i("button",{class:"dialog-close",onClick:M,"aria-label":"关闭"},[o(F,{icon:"mdi:close"})])]),i("div",Y,[i("div",Z,[i("div",ee,[o(F,{icon:"mdi:information-outline",class:"title-icon"}),l[3]||(l[3]=i("span",null,"被举报信息",-1))]),i("div",ae,[i("div",le,[l[4]||(l[4]=i("span",{class:"info-label"},"用户ID",-1)),i("span",te,v((null==(e=a.reportInfo)?void 0:e.userId)||"-"),1)]),i("div",se,[l[5]||(l[5]=i("span",{class:"info-label"},"用户昵称",-1)),i("span",ne,v((null==(d=a.reportInfo)?void 0:d.userName)||"-"),1)]),i("div",ie,[l[6]||(l[6]=i("span",{class:"info-label"},"内容",-1)),i("div",oe,v((null==(g=a.reportInfo)?void 0:g.content)||"-"),1)])])]),i("div",re,[i("div",ue,[o(F,{icon:"mdi:alert-circle-outline",class:"title-icon"}),l[7]||(l[7]=i("span",null,"选择举报类型",-1)),l[8]||(l[8]=i("span",{class:"required"},"*",-1))]),i("div",de,[(f(),t(c,null,p(x,e=>i("button",{key:e.value,type:"button",class:n(["report-type-btn",{active:C.value.includes(e.value)}]),onClick:a=>(e=>{const a=C.value.indexOf(e)
|
||
a>-1?C.value.splice(a,1):C.value.push(e)})(e.value)},[o(F,{icon:e.icon,class:"type-icon"},null,8,["icon"]),i("span",me,v(e.label),1),C.value.includes(e.value)?(f(),h(F,{key:0,icon:"mdi:check-circle",class:"check-icon"})):s("",!0)],10,ce)),64))])]),i("div",ve,[i("div",pe,[o(F,{icon:"mdi:comment-text-outline",class:"title-icon"}),l[9]||(l[9]=i("span",null,"补充说明(可选)",-1))]),r(i("textarea",{"onUpdate:modelValue":l[0]||(l[0]=e=>$.value=e),class:"comment-textarea",placeholder:"请详细描述举报原因,帮助我们更好地处理...",rows:"4",maxlength:"500"},null,512),[[u,$.value]]),i("div",fe,v($.value.length)+"/500",1)])]),i("div",ge,[i("button",{class:"btn btn-secondary",onClick:M},"取消"),i("button",{class:"btn btn-primary",onClick:B,disabled:0===C.value.length},[o(F,{icon:"mdi:send",class:"btn-icon"}),l[10]||(l[10]=m(" 提交举报 ",-1))],8,he)])])])):s("",!0)]}),_:1})]))}}),[["__scopeId","data-v-48a6bea7"]])
|
||
export{K as R,be as a,B as u}
|