Files
zsglpt/static/admin/assets/SettingsPage-CjBdzgUX.js
2026-05-27 22:32:42 +08:00

2 lines
8.0 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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};