|
|
import{$t as e,D as t,Et as n,G as r,O as i,S as a,T as o,W as s,Y as c,_ as l,_t as u,at as ee,ct as te,f as ne,h as re,in as d,k as ie,q as f,w as p,x as m}from"./vue.runtime.esm-bundler-CACvpnko.js";import{a as ae,i as oe}from"./portalLocale-vgPGVHT0.js";import{N as se,_ as ce,a as le,c as ue,l as de,p as fe,v as h}from"./api-Dpfxb1ca.js";import{f as pe,i as me,n as he,p as ge,t as _e}from"./index-iRzk6lDR.js";import{a as g}from"./site-BxiJvB6v.js";import{n as ve,t as ye}from"./participantTheme-HEHn5JJn.js";import{c as _,h as be,p as xe,r as Se,s as v,u as Ce}from"./competitionBranding-CAjogVRl.js";import{t as we}from"./login-page-overrides-BwirTgW8.js";var Te={class:`login-page-wls__wrap`},Ee={class:`login-page-wls__inner`},De={class:`login-page-wls__panel`},Oe={class:`login-page-wls__card`},ke={key:0,class:`login-page-wls__card-title`},Ae=[`inputmode`,`placeholder`],je={class:`login-page-wls__code-row`},Me=[`value`,`placeholder`],Ne=[`disabled`],Pe=[`disabled`],Fe={key:0,class:`login-page-wls__debug-code`,role:`status`},Ie=[`aria-label`],Le={key:0,class:`login-page-wls__contact-label`},Re={key:0,class:`login-page-wls__contact-sep`},ze=[`href`],Be={key:2},Ve={key:0,class:`login-page-wls__footer`},He={class:`login-page-wls__copyright`},y=ie({__name:`LoginView`,setup(ie){let{t:y}=me(),b=pe(),x=ge(),S=m(()=>oe(b.query)),C=m(()=>S.value===`en`),w=u(``),T=u(``),E=u(!1),D=u(!1),O=u(!1),k=u(``),A=u(``),j=u(!1),M=u(``),N=u(`neutral`),P=m(()=>String(b.params.slug??``).trim()),F=m(()=>b.meta.audienceLogin===!0),I=u(``),L=u(``),R=u(v()),z=u(!1),Ue=m(()=>N.value===`error`?`login-page-wls__hint login-page-wls__hint--error`:N.value===`success`?`login-page-wls__hint login-page-wls__hint--success`:`login-page-wls__hint`),We=m(()=>Ce(R.value,L.value,S.value)),Ge=m(()=>I.value?I.value:``),Ke=m(()=>_(R.value.login.cardWelcome)?R.value.login.cardWelcome:y(`login.cardWelcome`)),B=m(()=>Ke.value.replace(/登陆/g,`登录`)),V=m(()=>_(R.value.login.footerCopyright)?R.value.login.footerCopyright:``),H=m(()=>z.value?xe(R.value):[]),U=0;function W(){U&&=(window.clearInterval(U),0)}function G(e){W();let t=Math.max(1,Math.floor(e??h()));O.value=!0,k.value=y(`login.resend`,{n:t}),U=window.setInterval(()=>{if(--t,t<=0){W(),k.value=y(`login.getCode`),O.value=!1;return}k.value=y(`login.resend`,{n:t})},1e3)}function qe(e){if(typeof e!=`object`||!e)return[];let t=e,n=[];typeof t.message==`string`&&t.message.trim()&&n.push(t.message.trim());let r=t.errors;if(typeof r==`object`&&r&&!Array.isArray(r))for(let e of Object.values(r))if(Array.isArray(e))for(let t of e)typeof t==`string`&&t.trim()&&n.push(t.trim());else typeof e==`string`&&e.trim()&&n.push(e.trim());return n}function Je(e){if(typeof e!=`object`||!e)return null;let t=e.retry_after,n=typeof t==`number`?t:typeof t==`string`&&/^\d+$/.test(t.trim())?parseInt(t.trim(),10):NaN;if(Number.isFinite(n)&&n>=1)return Math.min(600,Math.floor(n));let r=qe(e).find(e=>e.includes(`请勿频繁发送`)||/too frequent|try again later/i.test(e));if(!r)return null;let i=r.match(/(\d+)\s*秒/)||r.match(/(\d+)\s*s\b/i);if(i){let e=parseInt(i[1],10);if(Number.isFinite(e)&&e>=1)return Math.min(600,e)}return h()}function K(){return ce()}function q(e,t=`neutral`){M.value=e,N.value=t}function J(){M.value=``,N.value=`neutral`}function Y(e){return e.replace(/\D/g,``).slice(0,6)}function Ye(e){let t=e.target,n=Y(t?.value??``);T.value=n,t&&t.value!==n&&(t.value=n),D.value=!1}function X(e){if(typeof e!=`object`||!e)return y(`login.requestFailed`);let t=e,n=t.message;if(typeof n==`string`&&n.trim())return n.trim();let r=t.errors;if(typeof r==`object`&&r&&!Array.isArray(r)){let e=Object.values(r).flatMap(e=>Array.isArray(e)?e.map(e=>String(e)):[]);if(e.length)return e.join(`
|
|
|
`)}return y(`login.requestFailed`)}let Z=!1;async function Q(){I.value=``,z.value=!1,R.value=v(),L.value=``;let e=P.value;if(g(),!e){I.value=y(`login.missingSlug`),z.value=!0;return}try{let t=await fetch(`${K()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){I.value=t.status===404?y(`login.competitionMissing`):y(`login.competitionLoadFailed`);return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;if(L.value=String(r.name??``),R.value=Se(r.branding_json??r.branding??null,S.value),g(R.value.documentTitle),ye(R.value.login.themePrimary),typeof document<`u`){let e=document.querySelector(`link[rel~="icon"]`);e||(e=document.createElement(`link`),e.rel=`icon`,document.head.appendChild(e)),e.type=`image/png`,e.href=`/favicon.png?v=20260829c`}}catch{I.value=y(`login.networkError`)}finally{z.value=!0}}async function Xe(){if(O.value)return;let e=w.value.trim();if(!/^1[3-9]\d{9}$/.test(e)){E.value=!0,D.value=!1,q(y(`login.invalidMobile`),`error`);return}E.value=!1,D.value=!1,J(),O.value=!0,k.value=y(`login.sending`);let t=`${K()}${de}`;try{let n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`,"X-Requested-With":`XMLHttpRequest`},body:JSON.stringify({mobile:e,portal:F.value?`audience`:`participant`})}),r=await n.json().catch(()=>({}));if(!n.ok){A.value=``;let e=Je(r);if(e!=null){q(y(`login.tooFrequent`,{n:e}),`error`),G(e);return}q(X(r),`error`),k.value=y(`login.getCode`),O.value=!1,W();return}let i=r,a=typeof i.debug_code==`string`?i.debug_code.trim():``;A.value=/^\d{4,8}$/.test(a)?a:``,J(),G()}catch{q(y(`login.sendNetwork`),`error`),k.value=y(`login.getCode`),O.value=!1,W(),A.value=``}}async function Ze(){let e=/^1[3-9]\d{9}$/.test(w.value.trim()),t=Y(T.value);T.value=t;let n=t.length===6;if(E.value=!e,D.value=e&&!n,!e){q(y(`login.invalidMobile`),`error`);return}if(!n){q(y(`login.invalidCaptcha`),`error`);return}if(J(),j.value=!0,q(y(`login.loggingIn`),`neutral`),!P.value){q(y(`login.missingSlug`),`error`),j.value=!1;return}let r=`${K()}${F.value?le:ue}`;try{let e=_e(),n=await fetch(r,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`,"X-Requested-With":`XMLHttpRequest`},body:JSON.stringify({mobile:w.value.trim(),code:t,competition_slug:P.value,lang:S.value===`en`?`en`:void 0,...e?{public_source_code:e}:{}})}),i=await n.json().catch(()=>({}));if(!n.ok){q(X(i),`error`);return}J();let a=i,o=he(P.value,F.value?`audience`:`participant`,a.signup_locale,a.signup_locale_locked);F.value?(se(a.token,P.value),localStorage.setItem(`cxxfds_audience_user`,JSON.stringify(a.user))):(localStorage.setItem(fe,a.token),localStorage.setItem(`cxxfds_user`,JSON.stringify(a.user)));let s=o??S.value,c=ae(s),l=typeof b.query.redirect==`string`?b.query.redirect:``;if(l&&l.startsWith(`/`)){let e=new URL(l,window.location.origin);s===`en`?e.searchParams.set(`lang`,`en`):e.searchParams.delete(`lang`),await x.replace(e.pathname+e.search);return}let u=P.value;u?await x.replace(F.value?{name:`audience-form`,params:{slug:u},query:c}:{name:`participant-apply`,params:{slug:u},query:c}):await x.replace(`/c`)}catch{q(y(`login.networkLogin`),`error`)}finally{j.value=!1}}function $(){typeof document>`u`||(document.body.classList.add(`login-page-wls`),document.body.classList.toggle(`login-page-wls--en`,C.value))}return s(()=>{k.value=y(`login.getCode`),typeof document<`u`&&(document.documentElement.classList.add(`cxxfds-login-page`),Z=!0),$(),Q()}),ee(S,()=>{$(),O.value||(k.value=y(`login.getCode`)),Q()}),r(()=>{typeof document<`u`&&Z&&(document.documentElement.classList.remove(`cxxfds-login-page`),Z=!1),document.body.classList.remove(`login-page-wls`,`login-page-wls--en`),W(),typeof document<`u`&&ve()}),(r,s)=>(f(),o(`div`,Te,[a(`div`,Ee,[i(we,{"logo-url":R.value.login.logoUrl,title:We.value,"aria-label":n(y)(`login.systemAria`),"error-slogan":Ge.value},null,8,[`logo-url`,`title`,`aria-label`,`error-slogan`]),a(`section`,De,[a(`div`,Oe,[B.value?(f(),o(`h2`,ke,d(B.value),1)):p(``,!0),a(`form`,{class:`login-page-wls__form`,onSubmit:re(Ze,[`prevent`]),novalidate:``},[te(a(`input`,{"onUpdate:modelValue":s[0]||=e=>w.value=e,type:`tel`,class:e([`login-page-wls__input`,{"login-page-wls__input--error":E.value}]),name:`mobile`,autocomplete:`tel`,inputmode:C.value?`tel`:`numeric`,maxlength:`11`,placeholder:n(y)(`login.mobilePlaceholder`),onInput:s[1]||=e=>E.value=!1},null,42,Ae),[[ne,w.value,void 0,{trim:!0}]]),a(`div`,je,[a(`input`,{value:T.value,type:`text`,class:e([`login-page-wls__input login-page-wls__input-code`,{"login-page-wls__input--error":D.value}]),name:`captcha`,autocomplete:`one-time-code`,inputmode:`numeric`,pattern:`[0-9]*`,maxlength:`6`,placeholder:n(y)(`login.captchaPlaceholder`),onInput:Ye},null,42,Me),a(`button`,{type:`button`,class:`login-page-wls__code-btn`,disabled:O.value,onClick:Xe},d(k.value),9,Ne)]),a(`button`,{type:`submit`,class:`login-page-wls__submit`,disabled:j.value},d(j.value?n(y)(`login.submitting`):n(y)(`login.submit`)),9,Pe),A.value?(f(),o(`p`,Fe,[t(d(n(y)(`login.debugCode`)),1),a(`strong`,null,d(A.value),1)])):p(``,!0),H.value.length?(f(),o(`div`,{key:1,class:`login-page-wls__contact`,"aria-label":n(y)(`login.consultAria`)},[(f(!0),o(l,null,c(H.value,(e,t)=>(f(),o(`div`,{key:`${e.label}-${t}`,class:`login-page-wls__contact-entry`},[e.label?(f(),o(`span`,Le,d(e.label)+`:`,1)):p(``,!0),(f(!0),o(l,null,c(n(be)(e.text),(e,t)=>(f(),o(l,{key:`${e.display}-${t}`},[t>0?(f(),o(`span`,Re,`、`)):p(``,!0),e.tel?(f(),o(`a`,{key:1,href:`tel:${e.tel}`},d(e.display),9,ze)):(f(),o(`span`,Be,d(e.display),1))],64))),128))]))),128))],8,Ie)):p(``,!0),M.value?(f(),o(`p`,{key:2,class:e(Ue.value),style:{"margin-top":`0.75rem`}},d(M.value),3)):p(``,!0)],32)])])]),V.value?(f(),o(`footer`,Ve,[a(`p`,He,d(V.value),1)])):p(``,!0)]))}});export{y as default}; |