|
|
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 pe}from"./api-Dpfxb1ca.js";import{f as me,i as he,n as h,p as ge,t as _e}from"./index-D5exsJys.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}=he(),b=me(),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 qe(){W();let e=pe();O.value=!0,k.value=y(`login.resend`,{n:e}),U=window.setInterval(()=>{if(--e,e<=0){W(),k.value=y(`login.getCode`),O.value=!1;return}k.value=y(`login.resend`,{n:e})},1e3)}function G(){return ce()}function K(e,t=`neutral`){M.value=e,N.value=t}function q(){M.value=``,N.value=`neutral`}function J(e){return e.replace(/\D/g,``).slice(0,6)}function Je(e){let t=e.target,n=J(t?.value??``);T.value=n,t&&t.value!==n&&(t.value=n),D.value=!1}function Y(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 X=null,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(`${G()}/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;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);let i=R.value.login.faviconUrl;if(_(i)&&typeof document<`u`){let e=document.querySelector(`link[rel~="icon"]`);e||(e=document.createElement(`link`),e.rel=`icon`,document.head.appendChild(e)),X===null&&(X=e.getAttribute(`href`)||``),e.href=i}}catch{I.value=y(`login.networkError`)}finally{z.value=!0}}async function Ye(){if(O.value)return;let e=w.value.trim();if(!/^1[3-9]\d{9}$/.test(e)){E.value=!0,D.value=!1,K(y(`login.invalidMobile`),`error`);return}E.value=!1,D.value=!1,q(),O.value=!0,k.value=y(`login.sending`);let t=`${G()}${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){K(Y(r),`error`),k.value=y(`login.getCode`),O.value=!1,W(),A.value=``;return}let i=r,a=typeof i.debug_code==`string`?i.debug_code.trim():``;A.value=/^\d{4,8}$/.test(a)?a:``,q(),qe()}catch{K(y(`login.sendNetwork`),`error`),k.value=y(`login.getCode`),O.value=!1,W(),A.value=``}}async function Xe(){let e=/^1[3-9]\d{9}$/.test(w.value.trim()),t=J(T.value);T.value=t;let n=t.length===6;if(E.value=!e,D.value=e&&!n,!e){K(y(`login.invalidMobile`),`error`);return}if(!n){K(y(`login.invalidCaptcha`),`error`);return}if(q(),j.value=!0,K(y(`login.loggingIn`),`neutral`),!P.value){K(y(`login.missingSlug`),`error`),j.value=!1;return}let r=`${G()}${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){K(Y(i),`error`);return}q();let a=i,o=h(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{K(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(()=>{if(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(),X!==null)){let e=document.querySelector(`link[rel~="icon"]`);e&&(X===``?e.removeAttribute(`href`):e.href=X),X=null}}),(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(Xe,[`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:Je},null,42,Me),a(`button`,{type:`button`,class:`login-page-wls__code-btn`,disabled:O.value,onClick:Ye},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}; |