mirror of
https://git-qiuchenly.yltfspace.com/QiuChenly/corepatch
synced 2025-11-25 10:08:20 +08:00
40 lines
15 KiB
JavaScript
40 lines
15 KiB
JavaScript
import{d as e,r as a,w as l,o as s,k as o,m as n,g as i,l as c,u as t,x as u,b as d,B as v,F as r,z as m,t as p,C as f,D as y,E as b,e as g}from"./PkdM_Em6.js"
|
|
import{u as w,c as h,e as k,b as T,_ as C,M as P,T as N,A as x,a as V}from"./iUIDG-9P.js"
|
|
import{A as U}from"./CMpA9_zT.js"
|
|
const _={class:"profile-page"},M={class:"profile-hero"},I={class:"hero-content"},q={class:"user-avatar-large"},z={class:"user-info-main"},D={class:"user-name"},S={class:"user-username"},j={class:"user-badges"},A={class:"hero-actions"},E={class:"profile-content"},R={class:"info-card"},L={class:"card-header"},B={class:"card-content"},F={class:"info-grid"},$={class:"info-item"},G={class:"info-icon"},H={class:"info-content"},J={class:"value"},K={class:"info-item"},O={class:"info-icon"},Q={class:"info-content"},W={class:"value"},X={class:"info-item"},Y={class:"info-icon"},Z={class:"info-content"},ee={class:"value"},ae={class:"info-item"},le={class:"info-icon"},se={class:"info-content"},oe={class:"value"},ne={key:0,class:"info-card"},ie={class:"card-header"},ce={class:"card-content"},te={class:"titles-list"},ue={class:"info-card"},de={class:"card-header"},ve={class:"card-content"},re={key:0,class:"devices-grid"},me={class:"device-icon"},pe={class:"device-info"},fe={class:"device-name"},ye={class:"device-details"},be={class:"device-spec"},ge={class:"device-actions"},we=["onClick"],he=["onClick"],ke={key:1,class:"empty-devices"},Te={class:"device-actions-footer"},Ce={class:"modal-dialog profile-edit-dialog"},Pe={class:"modal-header"},Ne={class:"modal-content"},xe={class:"avatar-section-wrapper"},Ve={class:"form-group"},Ue={class:"form-group"},_e={class:"form-group"},Me={class:"modal-footer"},Ie=["disabled"],qe={class:"modal-dialog"},ze={class:"modal-header"},De={class:"modal-content"},Se={class:"form-group"},je={class:"form-group"},Ae=["value"],Ee={class:"form-group"},Re=["value"],Le={class:"form-group"},Be=["value"],Fe={class:"modal-footer"},$e={class:"modal-dialog"},Ge={class:"modal-header"},He={class:"form-group"},Je={class:"form-group"},Ke={class:"form-group"},Oe={class:"modal-footer"},Qe=["disabled"],We=V(e({__name:"Profile",setup(e){const{user:V,checkAuthStatus:We}=w(),{toasts:Xe,success:Ye,error:Ze,info:ea,removeToast:aa}=h(),la=k(),sa=a(!1),oa=a({nickName:"",email:"",avatar:"",age:0}),na=a(!1),ia=a(!1),ca=a(null),ta=a({deviceName:"",deviceType:"",systemType:"",processorType:""}),ua=a([]),da=a([]),va=a([]),ra=a(!1),ma=a({oldPassword:"",newPassword:"",confirmPassword:""}),pa=a(!1),fa=e=>{if(!e)return"用户"
|
|
switch(e){case"admin":return"管理员"
|
|
case"qiuchenly":return"超级管理员"
|
|
default:return"用户"}},ya=e=>{switch(e){case"admin":return"role-admin"
|
|
case"qiuchenly":return"role-super"
|
|
default:return"role-user"}},ba=e=>{switch(e){case"admin":return"mdi:shield-account"
|
|
case"qiuchenly":return"mdi:shield-crown"
|
|
default:return"mdi:account"}},ga=()=>{var e,a
|
|
return(null==(e=V.value)?void 0:e.nickName)||(null==(a=V.value)?void 0:a.username)||"User"},wa=()=>{V.value&&(oa.value={nickName:V.value.nickName||"",email:V.value.email||"",avatar:V.value.avatar||"",age:V.value.age??0}),sa.value=!0},ha=async()=>{var e,a
|
|
if(V.value){na.value=!0
|
|
try{const e={}
|
|
void 0!==oa.value.nickName&&(e.nickName=oa.value.nickName),void 0!==oa.value.email&&(e.email=oa.value.email),void 0!==oa.value.avatar&&(e.avatar=oa.value.avatar),void 0!==oa.value.age&&(e.age=oa.value.age)
|
|
const a=await x.updateProfile(e)
|
|
a.success?(Ye("个人信息更新成功",2e3),sa.value=!1,await We()):Ze(a.message||"更新失败",3e3)}catch(l){Ze((null==(a=null==(e=l.response)?void 0:e.data)?void 0:a.message)||l.message||"更新失败",3e3)}finally{na.value=!1}}},ka=a(!1),Ta=async()=>{var e,a,l
|
|
if(!(ta.value.deviceName&&ta.value.deviceType&&ta.value.systemType&&ta.value.processorType))return void Ze("请填写完整的设备信息",2e3)
|
|
const s={deviceName:ta.value.deviceName,deviceType:ta.value.deviceType,systemType:ta.value.systemType,processorType:ta.value.processorType}
|
|
try{const a=[...(null==(e=V.value)?void 0:e.devices)||[]]
|
|
null!==ca.value?a[ca.value]=s:a.push(s)
|
|
const l=await x.updateProfile({devices:a})
|
|
l.success?(Ye(null!==ca.value?"设备更新成功":"设备添加成功",2e3),ia.value=!1,ca.value=null,ka.value=!1,await We()):Ze(l.message||"保存失败",3e3)}catch(o){Ze((null==(l=null==(a=o.response)?void 0:a.data)?void 0:l.message)||o.message||"保存失败",3e3)}},Ca=async()=>{var e,a,l
|
|
if(ma.value.oldPassword&&ma.value.newPassword)if(ma.value.newPassword===ma.value.confirmPassword)if(ma.value.newPassword.length<6)Ze("新密码长度至少为6位",2e3)
|
|
else{pa.value=!0
|
|
try{const a=await x.changePassword(ma.value.oldPassword,ma.value.newPassword)
|
|
a.success?(Ye("密码修改成功,请重新登录",2e3),ra.value=!1,ma.value={oldPassword:"",newPassword:"",confirmPassword:""},(null==(e=a.data)?void 0:e.requireReLogin)&&(localStorage.removeItem("token"),localStorage.removeItem("refreshToken"),window.dispatchEvent(new CustomEvent("auth:unauthorized")),setTimeout(()=>{window.location.href="/"},2e3))):Ze(a.message||"密码修改失败",3e3)}catch(s){Ze((null==(l=null==(a=s.response)?void 0:a.data)?void 0:l.message)||s.message||"密码修改失败",3e3)}finally{pa.value=!1}}else Ze("两次输入的新密码不一致",2e3)
|
|
else Ze("请填写完整信息",2e3)},Pa=a(null),Na=e=>{Pa.value=e.target},xa=(e,a)=>{Pa.value===a.target&&("edit"===e?sa.value=!1:"device"===e?ia.value=!1:"password"===e&&(ra.value=!1)),Pa.value=null}
|
|
return l(sa,e=>{e&&wa()}),s(async()=>{await(async()=>{try{const[e,a,l]=await Promise.all([x.getDeviceConfigs("device_type"),x.getDeviceConfigs("system_type"),x.getDeviceConfigs("processor_type")])
|
|
e.success&&e.data&&(ua.value=e.data.map(e=>({label:e,value:e}))),a.success&&a.data&&(da.value=a.data.map(e=>({label:e,value:e}))),l.success&&l.data&&(va.value=l.data.map(e=>({label:e,value:e})))}catch(e){}})()}),(e,a)=>{var l,s,w,h,k,ea,Pa,Va,Ua,_a,Ma,Ia,qa,za,Da
|
|
return g(),o("div",_,[n("div",M,[a[27]||(a[27]=n("div",{class:"hero-background"},null,-1)),n("div",I,[n("div",q,[i(T,{userId:null==(l=t(V))?void 0:l._id,"user-name":ga(),size:"large",width:120,height:120},null,8,["userId","user-name"])]),n("div",z,[n("h1",D,u((null==(s=t(V))?void 0:s.nickName)||(null==(w=t(V))?void 0:w.username)||"用户"),1),n("p",S,"@"+u(null==(h=t(V))?void 0:h.username),1),n("div",j,[n("span",{class:d(["role-badge",ya(null==(k=t(V))?void 0:k.role)])},[i(C,{icon:ba(null==(ea=t(V))?void 0:ea.role)},null,8,["icon"]),n("span",null,u(fa(null==(Pa=t(V))?void 0:Pa.role)),1)],2),n("span",{class:d(["status-badge","active"===(null==(Va=t(V))?void 0:Va.status)?"active":"inactive"])},[a[24]||(a[24]=n("span",{class:"status-dot"},null,-1)),n("span",null,u("active"===(null==(Ua=t(V))?void 0:Ua.status)?"正常":"禁用"),1)],2)])]),n("div",A,[n("button",{onClick:wa,class:"btn-action btn-primary"},[i(C,{icon:"mdi:pencil"}),a[25]||(a[25]=v(" 编辑资料 ",-1))]),n("button",{onClick:a[0]||(a[0]=e=>ra.value=!0),class:"btn-action btn-secondary"},[i(C,{icon:"mdi:lock-reset"}),a[26]||(a[26]=v(" 修改密码 ",-1))])])])]),n("div",E,[n("div",R,[n("div",L,[i(C,{icon:"mdi:information-outline",class:"card-icon"}),a[28]||(a[28]=n("h2",null,"基本信息",-1))]),n("div",B,[n("div",F,[n("div",$,[n("div",G,[i(C,{icon:"mdi:account"})]),n("div",H,[a[29]||(a[29]=n("span",{class:"label"},"用户名",-1)),n("span",J,u(null==(_a=t(V))?void 0:_a.username),1)])]),n("div",K,[n("div",O,[i(C,{icon:"mdi:email-outline"})]),n("div",Q,[a[30]||(a[30]=n("span",{class:"label"},"邮箱",-1)),n("span",W,u((null==(Ma=t(V))?void 0:Ma.email)||"未设置"),1)])]),n("div",X,[n("div",Y,[i(C,{icon:"mdi:star-outline"})]),n("div",Z,[a[31]||(a[31]=n("span",{class:"label"},"经验值",-1)),n("span",ee,u((null==(Ia=t(V))?void 0:Ia.exp)??0),1)])]),n("div",ae,[n("div",le,[i(C,{icon:"mdi:trending-up"})]),n("div",se,[a[32]||(a[32]=n("span",{class:"label"},"等级",-1)),n("span",oe,"Lv."+u((null==(qa=t(V))?void 0:qa.level)??0),1)])])])])]),(null==(za=t(V))?void 0:za.titles)&&t(V).titles.length>0?(g(),o("div",ne,[n("div",ie,[i(C,{icon:"mdi:medal-outline",class:"card-icon"}),a[33]||(a[33]=n("h2",null,"头衔",-1))]),n("div",ce,[n("div",te,[(g(!0),o(r,null,m(t(V).titles,(e,a)=>(g(),o("span",{key:a,class:"title-badge"},[i(C,{icon:"mdi:medal"}),v(" "+u(e),1)]))),128))])])])):c("",!0),n("div",ue,[n("div",de,[i(C,{icon:"mdi:devices",class:"card-icon"}),a[34]||(a[34]=n("h2",null,"我的设备",-1))]),n("div",ve,[(null==(Da=t(V))?void 0:Da.devices)&&t(V).devices.length>0?(g(),o("div",re,[(g(!0),o(r,null,m(t(V).devices,(e,a)=>(g(),o("div",{key:a,class:"device-card"},[n("div",me,[i(C,{icon:"mdi:laptop"})]),n("div",pe,[n("h3",fe,u(e.deviceName),1),n("p",ye,u(e.deviceType),1),n("p",be,u(e.systemType)+" · "+u(e.processorType),1)]),n("div",ge,[n("button",{onClick:e=>((e,a=!0)=>{var l,s
|
|
if(!a)return
|
|
const o=null==(s=null==(l=V.value)?void 0:l.devices)?void 0:s[e]
|
|
o&&(ka.value=a,ca.value=e,ta.value={...o},ia.value=!0)})(a,!0),class:"btn-icon",title:"编辑"},[i(C,{icon:"mdi:pencil"})],8,we),n("button",{onClick:e=>(async(e,a=!0)=>{var l,s,o,n
|
|
if(a&&(null==(l=V.value)?void 0:l.devices)&&await la.show({title:"确认删除",message:`确定要删除设备 "${null==(s=V.value.devices[e])?void 0:s.deviceName}" 吗?`,type:"warning",confirmText:"删除",cancelText:"取消"}))try{const a=[...V.value.devices||[]]
|
|
a.splice(e,1)
|
|
const l=await x.updateProfile({devices:a})
|
|
l.success?(Ye("设备删除成功",2e3),await We()):Ze(l.message||"删除失败",3e3)}catch(i){Ze((null==(n=null==(o=i.response)?void 0:o.data)?void 0:n.message)||i.message||"删除失败",3e3)}})(a,!0),class:"btn-icon danger",title:"删除"},[i(C,{icon:"mdi:delete"})],8,he)])]))),128))])):(g(),o("div",ke,[i(C,{icon:"mdi:devices",class:"empty-icon"}),a[35]||(a[35]=n("p",null,"暂无设备",-1))])),n("div",Te,[n("button",{onClick:a[1]||(a[1]=e=>((e=!0)=>{ka.value=e,ca.value=null,ta.value={deviceName:"",deviceType:"",systemType:"",processorType:""},ia.value=!0})(!0)),class:"btn btn-sm btn-primary"},[i(C,{icon:"mdi:plus"}),a[36]||(a[36]=v(" 添加设备 ",-1))])])])])]),i(P,{visible:t(la).visible.value,title:t(la).config.value.title||"",message:t(la).config.value.message||"",type:"danger"===t(la).config.value.type?"error":t(la).config.value.type||"warning","confirm-text":t(la).config.value.confirmText,"cancel-text":t(la).config.value.cancelText,onConfirm:t(la).handleConfirm,onCancel:t(la).handleCancel},null,8,["visible","title","message","type","confirm-text","cancel-text","onConfirm","onCancel"]),i(N,{toasts:t(Xe),onRemove:t(aa)},null,8,["toasts","onRemove"]),sa.value?(g(),o("div",{key:0,class:"modal-overlay",onMousedown:p(Na,["self"]),onMouseup:a[9]||(a[9]=p(e=>xa("edit",e),["self"]))},[n("div",Ce,[n("div",Pe,[a[37]||(a[37]=n("h3",null,"编辑个人信息",-1)),n("button",{onClick:a[2]||(a[2]=e=>sa.value=!1),class:"close-btn"},[i(C,{icon:"mdi:close"})])]),n("div",Ne,[n("div",xe,[i(U,{modelValue:oa.value.avatar,"onUpdate:modelValue":a[3]||(a[3]=e=>oa.value.avatar=e),size:100,onChange:a[4]||(a[4]=e=>{oa.value.avatar=e})},null,8,["modelValue"])]),n("div",Ve,[a[38]||(a[38]=n("label",null,"昵称:",-1)),f(n("input",{"onUpdate:modelValue":a[5]||(a[5]=e=>oa.value.nickName=e),type:"text",placeholder:"请输入昵称"},null,512),[[y,oa.value.nickName]])]),n("div",Ue,[a[39]||(a[39]=n("label",null,"邮箱:",-1)),f(n("input",{"onUpdate:modelValue":a[6]||(a[6]=e=>oa.value.email=e),type:"email",placeholder:"请输入邮箱"},null,512),[[y,oa.value.email]])]),n("div",_e,[a[40]||(a[40]=n("label",null,"年龄:",-1)),f(n("input",{"onUpdate:modelValue":a[7]||(a[7]=e=>oa.value.age=e),type:"number",min:"0",max:"150",placeholder:"请输入年龄"},null,512),[[y,oa.value.age,void 0,{number:!0}]])])]),n("div",Me,[n("button",{onClick:a[8]||(a[8]=e=>sa.value=!1),class:"btn btn-secondary"},"取消"),n("button",{onClick:ha,class:"btn btn-primary",disabled:na.value},u(na.value?"保存中...":"保存"),9,Ie)])])],32)):c("",!0),ia.value?(g(),o("div",{key:1,class:"modal-overlay",onMousedown:p(Na,["self"]),onMouseup:a[16]||(a[16]=p(e=>xa("device",e),["self"]))},[n("div",qe,[n("div",ze,[n("h3",null,u(null!==ca.value?"编辑设备":"添加设备"),1),n("button",{onClick:a[10]||(a[10]=e=>ia.value=!1),class:"close-btn"},[i(C,{icon:"mdi:close"})])]),n("div",De,[n("div",Se,[a[41]||(a[41]=n("label",null,"设备名称:",-1)),f(n("input",{"onUpdate:modelValue":a[11]||(a[11]=e=>ta.value.deviceName=e),type:"text",placeholder:"请输入设备名称"},null,512),[[y,ta.value.deviceName]])]),n("div",je,[a[43]||(a[43]=n("label",null,"设备类型:",-1)),f(n("select",{"onUpdate:modelValue":a[12]||(a[12]=e=>ta.value.deviceType=e),class:"form-select"},[a[42]||(a[42]=n("option",{value:""},"请选择设备类型",-1)),(g(!0),o(r,null,m(ua.value,e=>(g(),o("option",{key:e.value,value:e.value},u(e.label),9,Ae))),128))],512),[[b,ta.value.deviceType]])]),n("div",Ee,[a[45]||(a[45]=n("label",null,"系统类型:",-1)),f(n("select",{"onUpdate:modelValue":a[13]||(a[13]=e=>ta.value.systemType=e),class:"form-select"},[a[44]||(a[44]=n("option",{value:""},"请选择系统类型",-1)),(g(!0),o(r,null,m(da.value,e=>(g(),o("option",{key:e.value,value:e.value},u(e.label),9,Re))),128))],512),[[b,ta.value.systemType]])]),n("div",Le,[a[47]||(a[47]=n("label",null,"处理器类型:",-1)),f(n("select",{"onUpdate:modelValue":a[14]||(a[14]=e=>ta.value.processorType=e),class:"form-select"},[a[46]||(a[46]=n("option",{value:""},"请选择处理器类型",-1)),(g(!0),o(r,null,m(va.value,e=>(g(),o("option",{key:e.value,value:e.value},u(e.label),9,Be))),128))],512),[[b,ta.value.processorType]])])]),n("div",Fe,[n("button",{onClick:a[15]||(a[15]=e=>ia.value=!1),class:"btn btn-secondary"},"取消"),n("button",{onClick:Ta,class:"btn btn-primary"},"保存")])])],32)):c("",!0),ra.value?(g(),o("div",{key:2,class:"modal-overlay",onMousedown:p(Na,["self"]),onMouseup:a[23]||(a[23]=p(e=>xa("password",e),["self"]))},[n("div",$e,[n("div",Ge,[a[48]||(a[48]=n("h3",null,"修改密码",-1)),n("button",{onClick:a[17]||(a[17]=e=>ra.value=!1),class:"close-btn",type:"button"},[i(C,{icon:"mdi:close"})])]),n("form",{onSubmit:a[22]||(a[22]=p(()=>{},["prevent"])),class:"modal-content"},[n("div",He,[a[49]||(a[49]=n("label",null,"当前密码:",-1)),f(n("input",{"onUpdate:modelValue":a[18]||(a[18]=e=>ma.value.oldPassword=e),type:"password",placeholder:"请输入当前密码",autocomplete:"current-password"},null,512),[[y,ma.value.oldPassword]])]),n("div",Je,[a[50]||(a[50]=n("label",null,"新密码:",-1)),f(n("input",{"onUpdate:modelValue":a[19]||(a[19]=e=>ma.value.newPassword=e),type:"password",placeholder:"请输入新密码",autocomplete:"new-password"},null,512),[[y,ma.value.newPassword]])]),n("div",Ke,[a[51]||(a[51]=n("label",null,"确认新密码:",-1)),f(n("input",{"onUpdate:modelValue":a[20]||(a[20]=e=>ma.value.confirmPassword=e),type:"password",placeholder:"请再次输入新密码",autocomplete:"new-password"},null,512),[[y,ma.value.confirmPassword]])]),n("div",Oe,[n("button",{type:"button",onClick:a[21]||(a[21]=e=>ra.value=!1),class:"btn btn-secondary"},"取消"),n("button",{type:"button",onClick:Ca,class:"btn btn-primary",disabled:pa.value},u(pa.value?"修改中...":"确认修改"),9,Qe)])],32)])],32)):c("",!0)])}}}),[["__scopeId","data-v-47770ede"]])
|
|
export{We as default}
|