2 lines
8.5 KiB
JavaScript
2 lines
8.5 KiB
JavaScript
import{_ as ae,r as L,a as i,c as le,o as te,b as V,d as a,w as l,e as y,u as se,f as w,g as v,h as z,i as C,j as A,k as m,F as G,t as oe,E as u}from"./index-Cdd1ErJ8.js";import{f as ne,l as re,g as q,a as ue,r as ie,b as de}from"./auth-B8oTAueh.js";import{v as ce}from"./password-7ryi82gE.js";const me={class:"auth-wrap"},pe={class:"captcha-row"},fe=["src"],ve={class:"links"},we={class:"foot"},ge={class:"captcha-row"},ye=["src"],_e={class:"captcha-row"},he=["src"],Ve={__name:"LoginPage",setup(be){const H=se(),d=L({username:"",password:"",captcha:""}),b=i(!1),R=i(""),S=i(""),P=i(!1),g=i(!1),T=i(!1),_=i(!1),k=i(!1),p=L({email:"",captcha:""}),x=i(""),I=i(""),N=i(!1),c=L({username:"",email:"",new_password:""}),K=i(!1),f=L({email:"",captcha:""}),U=i(""),M=i(""),O=i(!1),J=le(()=>!!T.value);async function E(){try{const s=await q();S.value=s?.session_id||"",R.value=s?.captcha_image||"",d.captcha=""}catch{S.value="",R.value=""}}async function B(){try{const s=await q();I.value=s?.session_id||"",x.value=s?.captcha_image||"",p.captcha=""}catch{I.value="",x.value=""}}async function F(){try{const s=await q();M.value=s?.session_id||"",U.value=s?.captcha_image||"",f.captcha=""}catch{M.value="",U.value=""}}async function $(){if(!d.username.trim()||!d.password.trim()){u.error("用户名和密码不能为空");return}if(b.value&&!d.captcha.trim()){u.error("请输入验证码");return}P.value=!0;try{await re({username:d.username.trim(),password:d.password,captcha_session:S.value,captcha:d.captcha.trim(),need_captcha:b.value}),u.success("登录成功,正在跳转..."),setTimeout(()=>{window.location.href="/app"},300)}catch(s){const e=s?.response?.status,o=s?.response?.data,n=o?.error||o?.message||"登录失败";u.error(n),o?.need_captcha?(b.value=!0,await E()):b.value&&e===400&&await E()}finally{P.value=!1}}async function Q(){_.value=!0,g.value?(p.email="",p.captcha="",await B()):(c.username="",c.email="",c.new_password="")}async function W(){if(g.value){const n=p.email.trim();if(!n){u.error("请输入邮箱");return}if(!p.captcha.trim()){u.error("请输入验证码");return}N.value=!0;try{const r=await ue({email:n,captcha_session:I.value,captcha:p.captcha.trim()});u.success(r?.message||"已发送重置邮件"),setTimeout(()=>{_.value=!1},800)}catch(r){const h=r?.response?.data;u.error(h?.error||"发送失败"),await B()}finally{N.value=!1}return}const s=c.username.trim(),e=c.new_password;if(!s||!e){u.error("用户名和新密码不能为空");return}const o=ce(e);if(!o.ok){u.error(o.message);return}K.value=!0;try{await ie({username:s,email:c.email.trim(),new_password:e}),u.success("申请已提交,请等待审核"),setTimeout(()=>{_.value=!1},800)}catch(n){const r=n?.response?.data;u.error(r?.error||"提交失败")}finally{K.value=!1}}async function X(){k.value=!0,f.email="",f.captcha="",await F()}async function Y(){const s=f.email.trim();if(!s){u.error("请输入邮箱");return}if(!f.captcha.trim()){u.error("请输入验证码");return}O.value=!0;try{const e=await de({email:s,captcha_session:M.value,captcha:f.captcha.trim()});u.success(e?.message||"验证邮件已发送,请查收"),setTimeout(()=>{k.value=!1},800)}catch(e){const o=e?.response?.data;u.error(o?.error||"发送失败"),await F()}finally{O.value=!1}}function Z(){H.push("/register")}return te(async()=>{try{const s=await ne();g.value=!!s?.email_enabled,T.value=!!s?.register_verify_enabled}catch{g.value=!1,T.value=!1}}),(s,e)=>{const o=y("el-input"),n=y("el-form-item"),r=y("el-button"),h=y("el-form"),ee=y("el-card"),j=y("el-alert"),D=y("el-dialog");return w(),V("div",me,[a(ee,{shadow:"never",class:"auth-card","body-style":{padding:"22px"}},{default:l(()=>[e[20]||(e[20]=v("div",{class:"brand"},[v("div",{class:"brand-title"},"知识管理平台"),v("div",{class:"brand-sub app-muted"},"用户登录")],-1)),a(h,{"label-position":"top"},{default:l(()=>[a(n,{label:"用户名"},{default:l(()=>[a(o,{modelValue:d.username,"onUpdate:modelValue":e[0]||(e[0]=t=>d.username=t),placeholder:"请输入用户名",autocomplete:"username"},null,8,["modelValue"])]),_:1}),a(n,{label:"密码"},{default:l(()=>[a(o,{modelValue:d.password,"onUpdate:modelValue":e[1]||(e[1]=t=>d.password=t),type:"password","show-password":"",placeholder:"请输入密码",autocomplete:"current-password",onKeyup:A($,["enter"])},null,8,["modelValue"])]),_:1}),b.value?(w(),z(n,{key:0,label:"验证码"},{default:l(()=>[v("div",pe,[a(o,{modelValue:d.captcha,"onUpdate:modelValue":e[2]||(e[2]=t=>d.captcha=t),placeholder:"请输入验证码",onKeyup:A($,["enter"])},null,8,["modelValue"]),R.value?(w(),V("img",{key:0,class:"captcha-img",src:R.value,alt:"验证码",title:"点击刷新",onClick:E},null,8,fe)):C("",!0),a(r,{onClick:E},{default:l(()=>[...e[14]||(e[14]=[m("刷新",-1)])]),_:1})])]),_:1})):C("",!0)]),_:1}),v("div",ve,[a(r,{text:"",type:"primary",onClick:Q},{default:l(()=>[...e[15]||(e[15]=[m("忘记密码?",-1)])]),_:1}),J.value?(w(),z(r,{key:0,text:"",type:"primary",onClick:X},{default:l(()=>[...e[16]||(e[16]=[m("重发验证邮件",-1)])]),_:1})):C("",!0)]),a(r,{type:"primary",class:"submit-btn",loading:P.value,onClick:$},{default:l(()=>[...e[17]||(e[17]=[m("登录",-1)])]),_:1},8,["loading"]),v("div",we,[e[19]||(e[19]=v("span",{class:"app-muted"},"还没有账号?",-1)),a(r,{link:"",type:"primary",onClick:Z},{default:l(()=>[...e[18]||(e[18]=[m("立即注册",-1)])]),_:1})])]),_:1}),a(D,{modelValue:_.value,"onUpdate:modelValue":e[9]||(e[9]=t=>_.value=t),title:"找回密码",width:"min(560px, 92vw)"},{footer:l(()=>[a(r,{onClick:e[8]||(e[8]=t=>_.value=!1)},{default:l(()=>[...e[22]||(e[22]=[m("取消",-1)])]),_:1}),a(r,{type:"primary",loading:g.value?N.value:K.value,onClick:W},{default:l(()=>[m(oe(g.value?"发送重置邮件":"提交申请"),1)]),_:1},8,["loading"])]),default:l(()=>[g.value?(w(),V(G,{key:0},[a(j,{type:"info",closable:!1,title:"输入注册邮箱,我们将发送重置链接。","show-icon":""}),a(h,{"label-position":"top",class:"dialog-form"},{default:l(()=>[a(n,{label:"邮箱"},{default:l(()=>[a(o,{modelValue:p.email,"onUpdate:modelValue":e[3]||(e[3]=t=>p.email=t),placeholder:"name@example.com"},null,8,["modelValue"])]),_:1}),a(n,{label:"验证码"},{default:l(()=>[v("div",ge,[a(o,{modelValue:p.captcha,"onUpdate:modelValue":e[4]||(e[4]=t=>p.captcha=t),placeholder:"请输入验证码"},null,8,["modelValue"]),x.value?(w(),V("img",{key:0,class:"captcha-img",src:x.value,alt:"验证码",title:"点击刷新",onClick:B},null,8,ye)):C("",!0),a(r,{onClick:B},{default:l(()=>[...e[21]||(e[21]=[m("刷新",-1)])]),_:1})])]),_:1})]),_:1})],64)):(w(),V(G,{key:1},[a(j,{type:"warning",closable:!1,title:"邮件功能未启用:提交申请后等待管理员审核。","show-icon":""}),a(h,{"label-position":"top",class:"dialog-form"},{default:l(()=>[a(n,{label:"用户名"},{default:l(()=>[a(o,{modelValue:c.username,"onUpdate:modelValue":e[5]||(e[5]=t=>c.username=t),placeholder:"请输入用户名"},null,8,["modelValue"])]),_:1}),a(n,{label:"邮箱(可选)"},{default:l(()=>[a(o,{modelValue:c.email,"onUpdate:modelValue":e[6]||(e[6]=t=>c.email=t),placeholder:"可选填写邮箱"},null,8,["modelValue"])]),_:1}),a(n,{label:"新密码(至少8位且包含字母和数字)"},{default:l(()=>[a(o,{modelValue:c.new_password,"onUpdate:modelValue":e[7]||(e[7]=t=>c.new_password=t),type:"password","show-password":"",placeholder:"请输入新密码"},null,8,["modelValue"])]),_:1})]),_:1})],64))]),_:1},8,["modelValue"]),a(D,{modelValue:k.value,"onUpdate:modelValue":e[13]||(e[13]=t=>k.value=t),title:"重发验证邮件",width:"min(520px, 92vw)"},{footer:l(()=>[a(r,{onClick:e[12]||(e[12]=t=>k.value=!1)},{default:l(()=>[...e[24]||(e[24]=[m("取消",-1)])]),_:1}),a(r,{type:"primary",loading:O.value,onClick:Y},{default:l(()=>[...e[25]||(e[25]=[m("发送",-1)])]),_:1},8,["loading"])]),default:l(()=>[a(j,{type:"info",closable:!1,title:"用于注册邮箱验证:请输入邮箱并完成验证码。","show-icon":""}),a(h,{"label-position":"top",class:"dialog-form"},{default:l(()=>[a(n,{label:"邮箱"},{default:l(()=>[a(o,{modelValue:f.email,"onUpdate:modelValue":e[10]||(e[10]=t=>f.email=t),placeholder:"name@example.com"},null,8,["modelValue"])]),_:1}),a(n,{label:"验证码"},{default:l(()=>[v("div",_e,[a(o,{modelValue:f.captcha,"onUpdate:modelValue":e[11]||(e[11]=t=>f.captcha=t),placeholder:"请输入验证码"},null,8,["modelValue"]),U.value?(w(),V("img",{key:0,class:"captcha-img",src:U.value,alt:"验证码",title:"点击刷新",onClick:F},null,8,he)):C("",!0),a(r,{onClick:F},{default:l(()=>[...e[23]||(e[23]=[m("刷新",-1)])]),_:1})])]),_:1})]),_:1})]),_:1},8,["modelValue"])])}}},xe=ae(Ve,[["__scopeId","data-v-50df591d"]]);export{xe as default};
|