UNPKG

mira-app-server

Version:

Mira Server - standalone server application using mira-app-core

2 lines (1 loc) 4.33 kB
import{am as R,bi as j,b6 as E,aT as v,a9 as h,aq as q,ae as x,aa as i,a$ as u,b5 as a,aj as e,bB as t,_ as $,p as V,q as A,ai as d,r as U,s as B,ac as F,t as g,u as G,bE as J,b3 as c,a4 as P,aO as C}from"./index-BAS7XAoe.js";import{_ as y}from"./Label.vue_vue_type_script_setup_true_lang-DJnzkt8b.js";import{_ as L,a as O,b as T}from"./index-DzCrOkDd.js";import{I as W,$ as H}from"./index-CsJj9qiO.js";const K={class:"space-y-6"},Q={class:"text-2xl font-bold"},X={class:"flex items-center gap-4"},Y={class:"absolute inset-0 flex items-center justify-center rounded-full bg-black/40 opacity-0 transition-opacity group-hover:opacity-100"},Z={key:0,class:"text-sm text-muted-foreground"},aa={class:"space-y-2"},ea={class:"space-y-2"},sa={class:"space-y-2"},da=R({__name:"index",setup(oa){const{t:l}=j(),p=E(),r=v({oldPassword:"",newPassword:"",confirmPassword:""}),w=v(!1),_=v(!1),I=h(()=>{var s;const o=(s=p.user)==null?void 0:s.id;return o?`${q()}/user/avatar/${o}?t=${Date.now()}`:""}),N=h(()=>{var o;return(((o=p.user)==null?void 0:o.username)||"?")[0].toUpperCase()});function k(){const o=document.createElement("input");o.type="file",o.accept="image/jpeg,image/png,image/webp",o.onchange=s=>{var f;const n=(f=s.target.files)==null?void 0:f[0];n&&M(n)},o.click()}async function M(o){var s,n,f;if(o.size>5*1024*1024){c.error("图片大小不能超过 5MB");return}_.value=!0;try{const m=new FileReader,z=await new Promise(D=>{m.onload=()=>D(m.result),m.readAsDataURL(o)});await P.uploadAvatar(z);const b=await P.me();p.user=((s=b.data)==null?void 0:s.data)||b.data,localStorage.setItem("user",JSON.stringify(p.user)),c.success(l("common.success"))}catch(m){c.error(((f=(n=m.response)==null?void 0:n.data)==null?void 0:f.message)||l("common.failed"))}finally{_.value=!1}}async function S(){var o,s;if(!r.value.oldPassword||!r.value.newPassword){c.error(l("profile.fillAll"));return}if(r.value.newPassword.length<=0){c.error(l("profile.passwordMin"));return}if(r.value.newPassword!==r.value.confirmPassword){c.error(l("profile.passwordMismatch"));return}w.value=!0;try{await P.changePassword({oldPassword:r.value.oldPassword,newPassword:r.value.newPassword}),c.success(l("profile.passwordChanged")),r.value={oldPassword:"",newPassword:"",confirmPassword:""}}catch(n){c.error(((s=(o=n.response)==null?void 0:o.data)==null?void 0:s.message)||l("common.failed"))}finally{w.value=!1}}return(o,s)=>(C(),x("div",K,[i("h1",Q,u(a(l)("profile.title")),1),e(a($),{class:"max-w-lg"},{default:t(()=>[e(a(V),null,{default:t(()=>[e(a(A),null,{default:t(()=>s[3]||(s[3]=[d("头像")])),_:1}),e(a(U),null,{default:t(()=>s[4]||(s[4]=[d("点击头像更换,支持 JPG/PNG/WebP,最大 5MB")])),_:1})]),_:1}),e(a(B),null,{default:t(()=>[i("div",X,[i("div",{class:"group relative cursor-pointer",onClick:k},[e(a(L),{class:"size-20"},{default:t(()=>[e(a(O),{src:I.value,alt:"avatar"},null,8,["src"]),e(a(T),{class:"text-xl"},{default:t(()=>[d(u(N.value),1)]),_:1})]),_:1}),i("div",Y,[e(a(W),{class:"size-6 text-white"})])]),_.value?(C(),x("div",Z,"上传中...")):F("",!0)])]),_:1})]),_:1}),e(a($),{class:"max-w-lg"},{default:t(()=>[e(a(V),null,{default:t(()=>[e(a(A),{class:"flex items-center gap-2"},{default:t(()=>[e(a(H),{class:"size-5"}),d(" "+u(a(l)("profile.changePassword")),1)]),_:1}),e(a(U),null,{default:t(()=>[d(u(a(l)("profile.changePasswordDesc")),1)]),_:1})]),_:1}),e(a(B),null,{default:t(()=>[i("form",{class:"space-y-4",onSubmit:J(S,["prevent"])},[i("div",aa,[e(a(y),null,{default:t(()=>[d(u(a(l)("profile.oldPassword")),1)]),_:1}),e(a(g),{modelValue:r.value.oldPassword,"onUpdate:modelValue":s[0]||(s[0]=n=>r.value.oldPassword=n),type:"password"},null,8,["modelValue"])]),i("div",ea,[e(a(y),null,{default:t(()=>[d(u(a(l)("profile.newPassword")),1)]),_:1}),e(a(g),{modelValue:r.value.newPassword,"onUpdate:modelValue":s[1]||(s[1]=n=>r.value.newPassword=n),type:"password"},null,8,["modelValue"])]),i("div",sa,[e(a(y),null,{default:t(()=>[d(u(a(l)("profile.confirmNewPassword")),1)]),_:1}),e(a(g),{modelValue:r.value.confirmPassword,"onUpdate:modelValue":s[2]||(s[2]=n=>r.value.confirmPassword=n),type:"password"},null,8,["modelValue"])]),e(a(G),{type:"submit",disabled:w.value},{default:t(()=>[d(u(w.value?a(l)("common.loading"):a(l)("common.save")),1)]),_:1},8,["disabled"])],32)]),_:1})]),_:1})]))}});export{da as default};