b220a5a762
Co-authored-by: Cursor <cursoragent@cursor.com>
1 line
4.8 KiB
JavaScript
1 line
4.8 KiB
JavaScript
import{$r as e,Cn as t,Dr as n,Er as r,F as i,Ir as a,Jt as o,Pr as s,Q as c,Qr as l,R as u,Sn as d,Tr as f,Ur as p,Yt as m,Z as h,Zr as g,Zt as _,_r as v,c as y,dr as b,en as x,fr as S,gr as C,hr as w,l as T,lr as E,mn as D,or as O,pr as k,qt as A,t as j,tn as M,ur as N,y as P,yn as F}from"./index-DC1GUjcg.js";import{t as I}from"./_plugin-vue_export-helper-BDNMzG2s.js";var L=t({...d(),...T()},`VForm`),R=F()({name:`VForm`,props:L(),emits:{"update:modelValue":e=>!0,submit:e=>!0},setup(e,{slots:t,emit:n}){let r=y(e),i=p();function a(e){e.preventDefault(),r.reset()}function o(e){let t=e,a=r.validate();t.then=a.then.bind(a),t.catch=a.catch.bind(a),t.finally=a.finally.bind(a),n(`submit`,t),t.defaultPrevented||a.then(({valid:e})=>{e&&i.value?.submit()}),t.preventDefault()}return D(()=>N(`form`,{ref:i,class:g([`v-form`,e.class]),style:l(e.style),novalidate:!0,onReset:a,onSubmit:o},[t.default?.({get errors(){return r.errors.value},get isDisabled(){return r.isDisabled.value},get isReadonly(){return r.isReadonly.value},get isValidating(){return r.isValidating.value},get isValid(){return r.isValid.value},get items(){return r.items.value},validate:r.validate,reset:r.reset,resetValidation:r.resetValidation})])),P(r,i)}}),z={class:`login-page`},B={class:`login-center`},V={key:2,class:`text-center mt-4`},H=I(v({__name:`LoginPage`,setup(t){let d=x(),g=M(),v=A(),y=p(``),T=p(``),D=p(``),P=p(!1),F=p(!1),I=p(``),L=p(!1),H=p(0),U=p(null),W=p([]),G=p(0),K=null,q=E(()=>W.value.length===0?``:W.value[G.value]);async function J(){try{let e=await _.get(`/settings/bing-wallpapers`);e?.urls?.length&&(W.value=e.urls,G.value=Math.floor(Math.random()*e.urls.length))}catch{}}function Y(){K&&clearInterval(K),!(W.value.length<=1)&&(K=setInterval(()=>{G.value=(G.value+1)%W.value.length},36e5))}f(async()=>{await J(),Y()}),r(()=>{K&&clearInterval(K),Z&&clearInterval(Z)});let X=p(Date.now()),Z=null,Q=E(()=>{if(!U.value)return 0;let e=new Date(U.value).getTime()-X.value;return Math.max(0,Math.ceil(e/6e4))});s(U,e=>{Z&&=(clearInterval(Z),null),e&&(Z=setInterval(()=>{X.value=Date.now()},3e4))});async function $(){if(!y.value||!T.value){I.value=`请输入用户名和密码`;return}F.value=!0,I.value=``;try{await v.login(y.value,T.value,L.value?D.value:void 0);let e=d.query.redirect||`/`,t=e.startsWith(`/`)&&!e.startsWith(`//`)?e:`/`;g.push(t)}catch(e){e instanceof m?(L.value=!0,I.value=e.message):e instanceof o?e.status===429?(U.value=new Date(Date.now()+900*1e3).toISOString(),I.value=`登录尝试过多,账户已锁定 15 分钟`):(H.value++,I.value=e.message):I.value=`网络错误,请重试`}finally{F.value=!1}}return(t,r)=>(n(),k(`div`,z,[N(`div`,{class:`wallpaper-bg`,style:l({backgroundImage:`url(${q.value})`})},null,4),r[6]||=N(`div`,{class:`wallpaper-overlay`},null,-1),N(`div`,B,[C(u,{elevation:`0`,rounded:`xl`,class:`login-card pa-10`,border:``},{default:a(()=>[I.value?(n(),b(h,{key:0,type:`error`,density:`compact`,class:`mb-4`,closable:``,"onClick:close":r[0]||=e=>I.value=``,rounded:`lg`,variant:`tonal`},{default:a(()=>[w(e(I.value),1)]),_:1})):S(``,!0),U.value?(n(),b(h,{key:1,type:`warning`,density:`compact`,class:`mb-4`,rounded:`lg`,variant:`tonal`},{default:a(()=>[w(` 账户已锁定,请 `+e(Q.value)+` 分钟后重试 `,1)]),_:1})):S(``,!0),C(R,{onSubmit:O($,[`prevent`])},{default:a(()=>[C(j,{modelValue:y.value,"onUpdate:modelValue":r[1]||=e=>y.value=e,label:`用户名`,variant:`outlined`,density:`comfortable`,"prepend-inner-icon":`mdi-account-outline`,disabled:F.value,class:`mb-4`,autocomplete:`username`,rounded:`lg`,"hide-details":`auto`},null,8,[`modelValue`,`disabled`]),C(j,{modelValue:T.value,"onUpdate:modelValue":r[2]||=e=>T.value=e,label:`密码`,variant:`outlined`,density:`comfortable`,"prepend-inner-icon":`mdi-lock-outline`,"append-inner-icon":P.value?`mdi-eye`:`mdi-eye-off`,type:P.value?`text`:`password`,"onClick:appendInner":r[3]||=e=>P.value=!P.value,disabled:F.value,class:`mb-4`,autocomplete:`current-password`,rounded:`lg`,"hide-details":`auto`},null,8,[`modelValue`,`append-inner-icon`,`type`,`disabled`]),L.value?(n(),b(j,{key:0,modelValue:D.value,"onUpdate:modelValue":r[4]||=e=>D.value=e,label:`TOTP 验证码`,variant:`outlined`,density:`comfortable`,"prepend-inner-icon":`mdi-shield-key-outline`,disabled:F.value,class:`mb-4`,autocomplete:`one-time-code`,rounded:`lg`,"hide-details":`auto`},null,8,[`modelValue`,`disabled`])):S(``,!0),C(c,{type:`submit`,color:`primary`,variant:`flat`,block:``,size:`large`,loading:F.value,disabled:!!U.value,rounded:`lg`,class:`mt-2`,height:`48`},{default:a(()=>[...r[5]||=[w(` 登录 `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1}),H.value>0&&!U.value?(n(),k(`div`,V,[C(i,{size:`small`,variant:`tonal`,color:`warning`,label:``},{default:a(()=>[w(` 已失败 `+e(H.value)+` 次 `,1)]),_:1})])):S(``,!0)]),_:1})])]))}}),[[`__scopeId`,`data-v-c0c6156f`]]);export{H as default}; |