import{ad as le}from"./vendor-misc-DszMq72k.js";import{f as te,u as oe,a as se,b as ne,c as re,l as ie,p as de}from"./admin-DcqTfJCB.js";import{_ as ue}from"./index-zJym-Cg7.js";import{a as d,E as Q}from"./vendor-element-CIudPaVX.js";import{r as u,c as ce,o as pe,R as ve,aj as p,ap as fe,n as f,q as i,t as r,L as o,E as s,I as y,D as m,G as I,F as me,K as we,a3 as ye,y as ge,J as q}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";const _e={class:"page-stack"},be={class:"section-head"},ke={key:1,class:"social-list"},xe={class:"social-provider"},he={class:"social-info"},Ve={key:0},Be={key:1},Se={class:"social-actions"},Pe={class:"social-qr-box"},qe={class:"social-qr-prompt"},Te={__name:"SettingsPage",setup(Ce){const b=u(""),k=u(""),x=u(""),h=u(""),c=u(!1),T=u(!1),V=u(""),C=u([]),g=u(!1),B=u(!1),S=u(""),U=u("wx");let _=null,z=0;const D={qq:"QQ",wx:"微信",alipay:"支付宝"},E=ce(()=>C.value.filter(a=>D[a.provider]));function R(a){const e=String(a||"");return e.length<8?{ok:!1,message:"密码长度至少8位"}:e.length>128?{ok:!1,message:"密码长度不能超过128个字符"}:!/[a-zA-Z]/.test(e)||!/\d/.test(e)?{ok:!1,message:"密码必须包含字母和数字"}:{ok:!0,message:""}}async function M(){try{await ie()}catch{}finally{window.location.href="/yuyx"}}async function F(){const a=b.value.trim();if(!a){d.error("请输入新用户名");return}try{await Q.confirm(`确定将管理员用户名修改为「${a}」吗?修改后需要重新登录。`,"修改用户名",{confirmButtonText:"确认修改",cancelButtonText:"取消",type:"warning"})}catch{return}c.value=!0;try{await oe(a),d.success("用户名修改成功,请重新登录"),b.value="",setTimeout(M,1200)}catch{}finally{c.value=!1}}async function j(){const a=k.value,e=x.value,l=h.value;if(!a){d.error("请输入当前密码");return}if(!e){d.error("请输入新密码");return}const n=R(e);if(!n.ok){d.error(n.message);return}if(e!==l){d.error("两次输入的新密码不一致");return}try{await Q.confirm("确定修改管理员密码吗?修改后需要重新登录。","修改密码",{confirmButtonText:"确认修改",cancelButtonText:"取消",type:"warning"})}catch{return}c.value=!0;try{await se({currentPassword:a,newPassword:e}),d.success("密码修改成功,请重新登录"),k.value="",x.value="",h.value="",setTimeout(M,1200)}catch{}finally{c.value=!1}}function G(){const a=new URL(window.location.href);return a.pathname="/yuyx/admin-social-bind-callback",a.search="",a.hash="",a.toString()}function J(a){return a==="wx"?"微":a==="qq"?"Q":"支"}function K(a){return a==="wx"?"请使用微信扫描二维码完成绑定":a==="qq"?"请使用 QQ 扫描二维码完成绑定":"请使用支付宝扫描二维码完成绑定"}function A(){_&&(window.clearTimeout(_),_=null)}function P(){A(),B.value=!1,S.value=""}function O(a,e,l){A(),z=Date.now();const n=async()=>{if(Date.now()-z>300*1e3){P(),d.warning("二维码已过期,请重新获取");return}try{const v=await de({provider:a,state:e});if(v?.status==="authorized"&&v?.url){P(),window.location.assign(v.url);return}_=window.setTimeout(n,Math.max(Number(l||2),2)*1e3)}catch(v){P();const w=v?.response?.data;d.error(w?.error||"扫码状态获取失败,请重新尝试")}};_=window.setTimeout(n,Math.max(Number(l),2)*1e3)}async function N(){T.value=!0;try{const a=await te();g.value=!!a?.enabled,C.value=Array.isArray(a?.items)?a.items:[]}catch{g.value=!1,C.value=[]}finally{T.value=!1}}async function Z(a){const e=String(a?.provider||"").trim();if(!(!e||V.value)){V.value=e;try{const l=await re({provider:e,redirect_uri:G()});if(e!=="wx"){window.location.assign(l.url);return}const n=l.scan_url||l.qrcode||l.url;if(!n||!l.scan_state){d.error("微信二维码获取失败");return}U.value=e,S.value=n,B.value=!0,O(e,l.scan_state,l.scan_poll_interval||2)}catch(l){const n=l?.response?.data;d.error(n?.error||"获取聚合登录地址失败")}finally{V.value=""}}}async function H(a){try{await Q.confirm(`确定解绑${a?.provider_label||"快捷登录"}吗?`,"解绑快捷登录",{confirmButtonText:"解绑",cancelButtonText:"取消",type:"warning"})}catch{return}try{await ne(a.provider),d.success("已解绑"),await N()}catch(e){const l=e?.response?.data;d.error(l?.error||"解绑失败")}}return pe(()=>{N()}),ve(()=>{A()}),(a,e)=>{const l=p("el-input"),n=p("el-form-item"),v=p("el-form"),w=p("el-button"),L=p("el-card"),$=p("el-tag"),W=p("el-alert"),X=p("el-empty"),Y=p("el-dialog"),ee=fe("loading");return i(),f("div",_e,[e[15]||(e[15]=r("div",{class:"app-page-title"},[r("h2",null,"设置"),r("span",{class:"app-muted"},"管理员账号设置")],-1)),o(L,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:s(()=>[e[6]||(e[6]=r("h3",{class:"section-title"},"修改管理员用户名",-1)),o(v,{"label-width":"120px"},{default:s(()=>[o(n,{label:"新用户名"},{default:s(()=>[o(l,{modelValue:b.value,"onUpdate:modelValue":e[0]||(e[0]=t=>b.value=t),placeholder:"输入新用户名",disabled:c.value},null,8,["modelValue","disabled"])]),_:1})]),_:1}),o(w,{type:"primary",loading:c.value,onClick:F},{default:s(()=>[...e[5]||(e[5]=[y("保存用户名",-1)])]),_:1},8,["loading"])]),_:1}),o(L,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:s(()=>[e[8]||(e[8]=r("h3",{class:"section-title"},"修改管理员密码",-1)),o(v,{"label-width":"120px"},{default:s(()=>[o(n,{label:"当前密码"},{default:s(()=>[o(l,{modelValue:k.value,"onUpdate:modelValue":e[1]||(e[1]=t=>k.value=t),type:"password","show-password":"",placeholder:"输入当前密码",disabled:c.value},null,8,["modelValue","disabled"])]),_:1}),o(n,{label:"新密码"},{default:s(()=>[o(l,{modelValue:x.value,"onUpdate:modelValue":e[2]||(e[2]=t=>x.value=t),type:"password","show-password":"",placeholder:"输入新密码",disabled:c.value},null,8,["modelValue","disabled"])]),_:1}),o(n,{label:"确认新密码"},{default:s(()=>[o(l,{modelValue:h.value,"onUpdate:modelValue":e[3]||(e[3]=t=>h.value=t),type:"password","show-password":"",placeholder:"再次输入新密码",disabled:c.value},null,8,["modelValue","disabled"])]),_:1})]),_:1}),o(w,{type:"primary",loading:c.value,onClick:j},{default:s(()=>[...e[7]||(e[7]=[y("保存密码",-1)])]),_:1},8,["loading"]),e[9]||(e[9]=r("div",{class:"help"},"建议使用更强密码(至少8位且包含字母与数字)。",-1))]),_:1}),o(L,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:s(()=>[r("div",be,[e[12]||(e[12]=r("h3",{class:"section-title"},"快捷登录绑定",-1)),g.value?(i(),m($,{key:0,size:"small",type:"success"},{default:s(()=>[...e[10]||(e[10]=[y("已启用",-1)])]),_:1})):(i(),m($,{key:1,size:"small",type:"info"},{default:s(()=>[...e[11]||(e[11]=[y("未启用",-1)])]),_:1}))]),g.value?I("",!0):(i(),m(W,{key:0,type:"warning",closable:!1,title:"聚合登录未启用,请先在系统配置中填写并启用 Space 聚合登录。","show-icon":"",class:"help-alert"})),me((i(),f("div",null,[E.value.length===0?(i(),m(X,{key:0,description:"暂无可绑定的快捷登录方式"})):(i(),f("div",ke,[(i(!0),f(we,null,ye(E.value,t=>(i(),f("div",{key:t.provider,class:"social-row"},[r("div",xe,[r("span",{class:ge(["social-icon",`provider-${t.provider}`])},q(J(t.provider)),3),r("div",he,[r("strong",null,q(t.provider_label),1),t.bound?(i(),f("span",Ve,q(t.nickname||"已绑定"),1)):(i(),f("span",Be,"未绑定"))])]),r("div",Se,[t.bound?(i(),m(w,{key:0,type:"danger",text:"",onClick:ae=>H(t)},{default:s(()=>[...e[13]||(e[13]=[y(" 解绑 ",-1)])]),_:1},8,["onClick"])):(i(),m(w,{key:1,type:"primary",plain:"",disabled:!g.value,loading:V.value===t.provider,onClick:ae=>Z(t)},{default:s(()=>[...e[14]||(e[14]=[y(" 绑定 ",-1)])]),_:1},8,["disabled","loading","onClick"]))])]))),128))]))])),[[ee,T.value]]),o(Y,{modelValue:B.value,"onUpdate:modelValue":e[4]||(e[4]=t=>B.value=t),title:`${D[U.value]}绑定`,width:"min(340px, 92vw)",onClose:P},{default:s(()=>[r("div",Pe,[S.value?(i(),m(le,{key:0,value:S.value,size:220,level:"M"},null,8,["value"])):I("",!0),r("div",qe,q(K(U.value)),1)])]),_:1},8,["modelValue","title"])]),_:1})])}}},Ee=ue(Te,[["__scopeId","data-v-b14d3c4a"]]);export{Ee as default};