Files
zsglpt/static/app/assets/RegisterPage-Cb1mme2j.js
2026-05-27 20:39:46 +08:00

2 lines
6.0 KiB
JavaScript

import"./base-xgxQQEpV.js";import{E as M}from"./el-card-CfK866jr.js";import{E as Q,a as H,b as O}from"./el-alert-DTUOkrAB.js";import{E as $}from"./el-button-LKkD3jQh.js";import{E as G}from"./el-input-BaZNy9Kg.js";import{f as P,g as p,h as U,i as J,j as z,p as s,s as r,u as W,o as g,k as u,c as I,l as h,m as K,t as X,x as B}from"./vendor-vue-WbiK4TmU.js";import{g as Y,f as Z,r as ee}from"./auth-B5cl_nsV.js";import{v as ae}from"./password-7ryi82gE.js";import{_ as te}from"./style-CEbARg1o.js";import{E as d}from"./http-BoPYlvwK.js";import"./aria-DLpFpzDe.js";import"./index-CoYtSGUZ.js";import"./vendor-axios-B9ygI19o.js";const oe={class:"auth-wrap"},se={class:"hint app-muted"},le={class:"captcha-row"},ne=["src"],re={class:"actions"},ie={__name:"RegisterPage",setup(ue){const N=W(),a=P({username:"",password:"",confirm_password:"",email:"",captcha:""}),f=p(!1),y=p(""),V=p(""),E=p(!1),o=p(""),k=p(""),S=p(""),_={token:"zsglpt_social_pending_bind_token",provider:"zsglpt_social_pending_bind_provider",nickname:"zsglpt_social_pending_bind_nickname",avatar:"zsglpt_social_pending_bind_avatar_url"},T={qq:"QQ",wx:"微信",alipay:"支付宝"},t=P({token:"",provider:"",nickname:"",avatar_url:""}),L=U(()=>f.value?"邮箱 *":"邮箱(可选)"),R=U(()=>f.value?"必填,用于账号验证":"选填,用于找回密码和接收通知");async function b(){try{const l=await Y();V.value=l?.session_id||"",y.value=l?.captcha_image||"",a.captcha=""}catch{V.value="",y.value=""}}async function j(){try{const l=await Z();f.value=!!l?.register_verify_enabled}catch{f.value=!1}}function q(){o.value="",k.value="",S.value=""}function A(){try{t.token=window.sessionStorage.getItem(_.token)||"",t.provider=window.sessionStorage.getItem(_.provider)||"",t.nickname=window.sessionStorage.getItem(_.nickname)||"",t.avatar_url=window.sessionStorage.getItem(_.avatar)||"",t.nickname&&!a.username&&(a.username=t.nickname.replace(/[^\w\u4e00-\u9fa5]/g,"").slice(0,20))}catch{t.token="",t.provider="",t.nickname="",t.avatar_url=""}}function D(){try{Object.values(_).forEach(l=>window.sessionStorage.removeItem(l))}catch{}t.token="",t.provider="",t.nickname="",t.avatar_url=""}async function x(){q();const l=a.username.trim(),e=a.password,w=a.confirm_password,n=a.email.trim(),c=a.captcha.trim();if(l.length<3){o.value="用户名至少3个字符",d.error(o.value);return}const m=ae(e);if(!m.ok){o.value=m.message||"密码格式不正确",d.error(o.value);return}if(e!==w){o.value="两次输入的密码不一致",d.error(o.value);return}if(f.value&&!n){o.value="请填写邮箱地址用于账号验证",d.error(o.value);return}if(n&&!n.includes("@")){o.value="邮箱格式不正确",d.error(o.value);return}if(!c){o.value="请输入验证码",d.error(o.value);return}E.value=!0;try{const v=await ee({username:l,password:e,email:n,captcha_session:V.value,captcha:c,social_bind_token:t.token||void 0});k.value=v?.message||"注册成功",S.value=v?.need_verify?"请检查您的邮箱(包括垃圾邮件文件夹)":"",d.success("注册成功"),t.token&&D(),a.username="",a.password="",a.confirm_password="",a.email="",a.captcha="",setTimeout(()=>{window.location.href="/login"},3e3)}catch(v){const C=v?.response?.data;o.value=C?.error||"注册失败",d.error(o.value),await b()}finally{E.value=!1}}function F(){N.push("/login")}return J(async()=>{A(),await b(),await j()}),(l,e)=>{const w=Q,n=G,c=O,m=$,v=H,C=M;return g(),z("div",oe,[s(C,{shadow:"never",class:"auth-card","body-style":{padding:"22px"}},{default:r(()=>[e[11]||(e[11]=u("div",{class:"brand"},[u("div",{class:"brand-title"},"知识管理平台"),u("div",{class:"brand-sub app-muted"},"用户注册")],-1)),o.value?(g(),I(w,{key:0,type:"error",closable:!1,title:o.value,"show-icon":"",class:"alert"},null,8,["title"])):h("",!0),k.value?(g(),I(w,{key:1,type:"success",closable:!1,title:k.value,description:S.value,"show-icon":"",class:"alert"},null,8,["title","description"])):h("",!0),t.token?(g(),I(w,{key:2,type:"info",closable:!1,"show-icon":"",class:"alert",title:`注册后绑定${T[t.provider]||"快捷登录"}`},null,8,["title"])):h("",!0),s(v,{"label-position":"top"},{default:r(()=>[s(c,{label:"用户名 *"},{default:r(()=>[s(n,{modelValue:a.username,"onUpdate:modelValue":e[0]||(e[0]=i=>a.username=i),placeholder:"至少3个字符",autocomplete:"username"},null,8,["modelValue"]),e[5]||(e[5]=u("div",{class:"hint app-muted"},"至少3个字符",-1))]),_:1}),s(c,{label:"密码 *"},{default:r(()=>[s(n,{modelValue:a.password,"onUpdate:modelValue":e[1]||(e[1]=i=>a.password=i),type:"password","show-password":"",placeholder:"至少8位且包含字母和数字",autocomplete:"new-password"},null,8,["modelValue"]),e[6]||(e[6]=u("div",{class:"hint app-muted"},"至少8位且包含字母和数字",-1))]),_:1}),s(c,{label:"确认密码 *"},{default:r(()=>[s(n,{modelValue:a.confirm_password,"onUpdate:modelValue":e[2]||(e[2]=i=>a.confirm_password=i),type:"password","show-password":"",placeholder:"请再次输入密码",autocomplete:"new-password",onKeyup:K(x,["enter"])},null,8,["modelValue"])]),_:1}),s(c,{label:L.value},{default:r(()=>[s(n,{modelValue:a.email,"onUpdate:modelValue":e[3]||(e[3]=i=>a.email=i),placeholder:"name@example.com",autocomplete:"email"},null,8,["modelValue"]),u("div",se,X(R.value),1)]),_:1},8,["label"]),s(c,{label:"验证码 *"},{default:r(()=>[u("div",le,[s(n,{modelValue:a.captcha,"onUpdate:modelValue":e[4]||(e[4]=i=>a.captcha=i),placeholder:"请输入验证码",onKeyup:K(x,["enter"])},null,8,["modelValue"]),y.value?(g(),z("img",{key:0,class:"captcha-img",src:y.value,alt:"验证码",title:"点击刷新",onClick:b},null,8,ne)):h("",!0),s(m,{onClick:b},{default:r(()=>[...e[7]||(e[7]=[B("刷新",-1)])]),_:1})])]),_:1})]),_:1}),s(m,{type:"primary",class:"submit-btn",loading:E.value,onClick:x},{default:r(()=>[...e[8]||(e[8]=[B("注册",-1)])]),_:1},8,["loading"]),u("div",re,[e[10]||(e[10]=u("span",{class:"app-muted"},"已有账号?",-1)),s(m,{link:"",type:"primary",onClick:F},{default:r(()=>[...e[9]||(e[9]=[B("立即登录",-1)])]),_:1})])]),_:1})])}}},Ve=te(ie,[["__scopeId","data-v-64094e78"]]);export{Ve as default};