mirror of
https://git-qiuchenly.yltfspace.com/QiuChenly/corepatch
synced 2025-11-25 22:42:23 +08:00
27 lines
3.9 KiB
JavaScript
27 lines
3.9 KiB
JavaScript
|
|
import{d as e,r as a,w as l,o as t,a as u,k as s,m as i,c as n,l as v,g as r,i as o,j as d,T as c,R as m,e as p,n as f}from"./Cf-ihD4f.js"
|
||
|
|
import{b as g,_ as w,A as y,U as h,a as b}from"./C_NDl53k.js"
|
||
|
|
const k=["src"],L=["src"],R=["src"],_=["disabled"],z=["disabled"],U={key:1,class:"avatar-menu-item uploading"},E=b(e({__name:"AvatarUpload",props:{modelValue:{},size:{default:80},disabled:{type:Boolean,default:!1}},emits:["update:modelValue","change"],setup(e,{emit:b}){m(e=>({v6394d537:E.size+"px"}))
|
||
|
|
const E=e,I=b,T=a(null),V=a(null),j=a(null),A=a(null),C=a(""),M=a(""),x=a(!1),W=a(!1),B=a(!1),H=a(null),O=()=>{var e
|
||
|
|
E.disabled||null==(e=T.value)||e.click()},P=async e=>{var a
|
||
|
|
const l=null==(a=e.target.files)?void 0:a[0]
|
||
|
|
if(!l)return
|
||
|
|
if(!l.type.startsWith("image/"))return void alert("请选择图片文件")
|
||
|
|
if(l.size>10485760)return void alert("图片大小不能超过10MB")
|
||
|
|
const t=new FileReader
|
||
|
|
t.onload=e=>{var a
|
||
|
|
C.value=null==(a=e.target)?void 0:a.result},t.readAsDataURL(l),A.value=l,await F(l)},F=async e=>{var a,l,t
|
||
|
|
W.value=!0,x.value=!1
|
||
|
|
try{const l=await y.uploadFile(h.APP_ICON,e)
|
||
|
|
if(!l.success||!(null==(a=l.data)?void 0:a.fileId))throw new Error(l.message||"上传失败")
|
||
|
|
{const e=l.data.fileId
|
||
|
|
I("update:modelValue",e),I("change",e)
|
||
|
|
try{const a=await y.getIcon(e)
|
||
|
|
M.value=a}catch(u){M.value=""}}}catch(s){const e=(null==(t=null==(l=s.response)?void 0:l.data)?void 0:t.message)||s.message||"上传失败"
|
||
|
|
alert(e),A.value=null,C.value="",M.value=""}finally{W.value=!1}},$=()=>{E.disabled||(A.value=null,C.value="",M.value="",x.value=!1,I("update:modelValue",""),I("change",""),T.value&&(T.value.value=""),B.value=!1)},D=()=>{},N=()=>{x.value=!0,C.value&&C.value.startsWith("blob:")&&URL.revokeObjectURL(C.value),C.value=""},q=()=>{M.value="",x.value=!1},G=()=>{H.value&&(clearTimeout(H.value),H.value=null),B.value=!0},J=e=>{const a=e.relatedTarget
|
||
|
|
a&&j.value&&j.value.contains(a)||(H.value&&clearTimeout(H.value),H.value=window.setTimeout(()=>{B.value=!1},200))},K=()=>{if(!B.value||!V.value||!j.value)return
|
||
|
|
const e=V.value.getBoundingClientRect(),a=j.value,l=a.offsetHeight
|
||
|
|
let t=e.right+12,u=e.top
|
||
|
|
t+52>window.innerWidth-20&&(t=e.left-52-12),u+l>window.innerHeight-20&&(u=window.innerHeight-l-20),t<20&&(t=20),u<20&&(u=20),a.style.left=`${t}px`,a.style.top=`${u}px`}
|
||
|
|
return l(B,e=>{e&&f(()=>{K()})}),t(()=>{window.addEventListener("scroll",K,!0),window.addEventListener("resize",K)}),u(()=>{window.removeEventListener("scroll",K,!0),window.removeEventListener("resize",K),H.value&&clearTimeout(H.value),C.value&&C.value.startsWith("blob:")&&URL.revokeObjectURL(C.value)}),(a,l)=>(p(),s("div",{class:"avatar-upload",onMouseenter:G,onMouseleave:J},[i("div",{ref_key:"avatarPreviewRef",ref:V,class:"avatar-preview"},[x.value&&M.value?(p(),s("img",{key:0,src:M.value,alt:"云端图标",class:"preview-image"},null,8,k)):C.value?(p(),s("img",{key:1,src:C.value,alt:"图标预览",class:"preview-image"},null,8,L)):(p(),n(g,{key:2,"avatar-id":e.modelValue,width:e.size,height:e.size,onLoad:D},null,8,["avatar-id","width","height"])),M.value&&!x.value?(p(),s("img",{key:3,src:M.value,alt:"云端图标",class:"cloud-image",onLoad:N,onError:q},null,40,R)):v("",!0)],512),i("input",{ref_key:"fileInputRef",ref:T,type:"file",accept:"image/*",onChange:P,class:"file-input",style:{display:"none"}},null,544),(p(),n(c,{to:"body"},[r(o,{name:"avatar-menu-fade"},{default:d(()=>[B.value?(p(),s("div",{key:0,ref_key:"menuRef",ref:j,class:"avatar-menu",onMouseenter:G,onMouseleave:J},[i("button",{type:"button",class:"avatar-menu-item",onClick:O,disabled:W.value,title:"更换"},[r(w,{icon:"fluent:image-edit-24-regular"})],8,_),A.value||e.modelValue?(p(),s("button",{key:0,type:"button",class:"avatar-menu-item danger",onClick:$,disabled:W.value,title:"清除"},[r(w,{icon:"fluent:delete-24-regular"})],8,z)):v("",!0),W.value?(p(),s("div",U,[...l[0]||(l[0]=[i("div",{class:"spinner-small"},null,-1)])])):v("",!0)],544)):v("",!0)]),_:1})]))],32))}}),[["__scopeId","data-v-6e1ea79a"]])
|
||
|
|
export{E as A}
|