|
|
import{$t as e,C as t,E as n,Et as r,G as i,W as a,_t as o,b as s,ct as c,d as l,in as u,k as d,m as f,q as p,w as m,x as h}from"./vue.runtime.esm-bundler-6_koQ1g6.js";import{a as g,i as _,l as v,m as y,p as b}from"./api-CH6mod_b.js";import{C as x,w as S}from"./index-D8PaKRyd.js";/* empty css */import{i as C,r as w,t as ee}from"./competitionBranding-BQASm1w0.js";/* empty css */var te={class:`login-page-wls__wrap`},ne={class:`login-page-wls__inner`},re={class:`login-page-wls__brand`,"aria-label":`系统说明`},ie={class:`login-page-wls__logo`,"aria-hidden":`true`},ae=[`src`],oe={key:1,viewBox:`0 0 100 100`,width:`72`,height:`72`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},se={key:0,class:`login-page-wls__mark`},ce=[`innerHTML`],le={key:1,class:`login-page-wls__title`},T=[`innerHTML`],ue={class:`login-page-wls__panel`},de={class:`login-page-wls__card`},fe={key:0,class:`login-page-wls__card-title`},pe={class:`login-page-wls__code-row`},me=[`disabled`],he=[`disabled`],ge={key:0,class:`login-page-wls__footer`},_e={class:`login-page-wls__copyright`},E=d({__name:`LoginView`,setup(d){let E=x(),D=S(),O=o(``),k=o(``),A=o(!1),j=o(!1),M=o(!1),N=o(`获取验证码`),P=o(!1),F=o(``),I=o(`neutral`),L=s(()=>String(E.params.slug??``).trim()),R=o(``),z=o(w()),ve=s(()=>I.value===`error`?`login-page-wls__hint login-page-wls__hint--error`:I.value===`success`?`login-page-wls__hint login-page-wls__hint--success`:`login-page-wls__hint`),ye=s(()=>{let e=z.value.login.markLine;return C(e)?B(e):``}),be=s(()=>{let e=z.value.login.headline;return C(e)?B(e):``});function B(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`)}let V=s(()=>R.value?R.value:C(z.value.login.slogan)?z.value.login.slogan:``),xe=s(()=>!!R.value),Se=s(()=>C(z.value.login.cardWelcome)?z.value.login.cardWelcome:``),H=s(()=>Se.value.replace(/登陆/g,`登录`)),U=s(()=>C(z.value.login.footerCopyright)?z.value.login.footerCopyright:``),W=s(()=>C(z.value.login.logoUrl)?z.value.login.logoUrl:``),G=0;function K(){G&&=(window.clearInterval(G),0)}function Ce(){K();let e=y();M.value=!0,N.value=`重新获取(${e}s)`,G=window.setInterval(()=>{if(--e,e<=0){K(),N.value=`获取验证码`,M.value=!1;return}N.value=`重新获取(${e}s)`},1e3)}function q(){return b()}function J(e,t=`neutral`){F.value=e,I.value=t}function Y(){F.value=``,I.value=`neutral`}function X(e){if(typeof e!=`object`||!e)return`请求失败`;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`请求失败`}let Z=null,Q=null,$=!1;async function we(){R.value=``,z.value=w();let e=L.value,t=typeof document<`u`?document.title:``;if(!e){R.value=`缺少赛事访问地址,请从正确入口进入`;return}try{let n=await fetch(`${q()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!n.ok){R.value=n.status===404?`赛事不存在或未发布,请核对访问地址`:`无法加载赛事信息`;return}let r=await n.json();z.value=ee(r.branding_json??r.branding??null);let i=z.value.documentTitle;typeof document<`u`&&(C(i)?document.title=i:document.title=t);let a=z.value.login.themePrimary;if(C(a)&&typeof document<`u`){Z===null&&(Z=document.body.style.getPropertyValue(`--primary`)||``),document.body.style.setProperty(`--primary`,a);let e=`${a}14`;document.body.style.setProperty(`--primary-soft`,e)}let o=z.value.login.faviconUrl;if(C(o)&&typeof document<`u`){let e=document.querySelector(`link[rel~="icon"]`);e||(e=document.createElement(`link`),e.rel=`icon`,document.head.appendChild(e)),Q===null&&(Q=e.getAttribute(`href`)||``),e.href=o}}catch{R.value=`网络错误,无法校验赛事链接`}}async function Te(){if(M.value)return;let e=O.value.trim();if(!/^1[3-9]\d{9}$/.test(e)){A.value=!0,j.value=!1,J(`请先填写正确手机号`,`error`);return}A.value=!1,j.value=!1,Y(),M.value=!0,N.value=`发送中...`;let t=`${q()}${g}`;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})}),r=await n.json().catch(()=>({}));if(!n.ok){J(X(r),`error`),N.value=`获取验证码`,M.value=!1,K();return}let i=r;i.debug_code?J(`本次验证码:${i.debug_code}`,`success`):Y(),Ce()}catch{J(`网络错误,请确认后端已启动(Vite 将 /api 代理至 php artisan serve 端口,见 vite.config)`,`error`),N.value=`获取验证码`,M.value=!1,K()}}async function Ee(){let e=/^1[3-9]\d{9}$/.test(O.value.trim()),t=k.value.trim(),n=t.length>0;if(A.value=!e,j.value=e&&!n,!e){J(`请先填写正确手机号`,`error`);return}if(!n){J(`请输入验证码`,`error`);return}if(Y(),P.value=!0,J(`登录中...`,`neutral`),!L.value){J(`缺少赛事访问地址,请从正确入口进入`,`error`),P.value=!1;return}let r=`${q()}${_}`;try{let e=await fetch(r,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`,"X-Requested-With":`XMLHttpRequest`},body:JSON.stringify({mobile:O.value.trim(),code:t,competition_slug:L.value})}),n=await e.json().catch(()=>({}));if(!e.ok){J(X(n),`error`);return}Y(),localStorage.setItem(v,n.token),localStorage.setItem(`cxxfds_user`,JSON.stringify(n.user));let i=typeof E.query.redirect==`string`?E.query.redirect:``;if(i&&i.startsWith(`/`)){await D.replace(i);return}let a=L.value;a?await D.replace({name:`participant-apply`,params:{slug:a}}):await D.replace(`/c`)}catch{J(`网络错误,请确认后端已启动`,`error`)}finally{P.value=!1}}return a(()=>{typeof document<`u`&&(document.documentElement.classList.add(`cxxfds-login-page`),$=!0),document.body.classList.add(`login-page-wls`),we()}),i(()=>{if(typeof document<`u`&&$&&(document.documentElement.classList.remove(`cxxfds-login-page`),$=!1),document.body.classList.remove(`login-page-wls`),K(),typeof document<`u`&&(Z!==null&&(Z===``?(document.body.style.removeProperty(`--primary`),document.body.style.removeProperty(`--primary-soft`)):document.body.style.setProperty(`--primary`,Z),Z=null),Q!==null)){let e=document.querySelector(`link[rel~="icon"]`);e&&(Q===``?e.removeAttribute(`href`):e.href=Q),Q=null}}),(i,a)=>(p(),m(`div`,te,[h(`div`,ne,[h(`aside`,re,[h(`div`,ie,[W.value?(p(),m(`img`,{key:0,src:W.value,alt:``,class:`login-page-wls__logo-img`,width:`72`,height:`72`},null,8,ae)):(p(),m(`svg`,oe,[...a[4]||=[n(`<defs><linearGradient id="loginPetalGrad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#dc4a54"></stop><stop offset="45%" stop-color="#b40010"></stop><stop offset="100%" stop-color="#7d070c"></stop></linearGradient><path id="loginPetal" d="M50 50
|
|
|
C46.2 44.2 44.2 34.5 46.2 27.2
|
|
|
C47.3 23.6 48.6 21.2 50 20.2
|
|
|
C51.4 21.2 52.7 23.6 53.8 27.2
|
|
|
C55.8 34.5 53.8 44.2 50 50Z"></path></defs><g fill="url(#loginPetalGrad)" stroke="#8f000c" stroke-width="0.35" stroke-linejoin="round"><use href="#loginPetal"></use><use href="#loginPetal" transform="rotate(90 50 50)"></use><use href="#loginPetal" transform="rotate(180 50 50)"></use><use href="#loginPetal" transform="rotate(270 50 50)"></use></g><circle cx="50" cy="50" r="3.6" fill="#5c6068" stroke="#fdfcfc" stroke-width="0.65"></circle>`,3)]]))]),r(C)(z.value.login.markLine)?(p(),m(`div`,se,[h(`div`,{class:`login-page-wls__mark-cn`,innerHTML:ye.value},null,8,ce)])):t(``,!0),r(C)(z.value.login.headline)?(p(),m(`h1`,le,[h(`span`,{class:`login-page-wls__title-main`,innerHTML:be.value},null,8,T)])):t(``,!0),V.value?(p(),m(`p`,{key:2,class:e([`login-page-wls__slogan`,{"login-page-wls__slogan--error":xe.value}])},u(V.value),3)):t(``,!0)]),h(`section`,ue,[h(`div`,de,[H.value?(p(),m(`h2`,fe,u(H.value),1)):t(``,!0),h(`form`,{class:`login-page-wls__form`,onSubmit:f(Ee,[`prevent`]),novalidate:``},[c(h(`input`,{"onUpdate:modelValue":a[0]||=e=>O.value=e,type:`tel`,class:e([`login-page-wls__input`,{"login-page-wls__input--error":A.value}]),name:`mobile`,autocomplete:`tel`,inputmode:`numeric`,maxlength:`11`,placeholder:`手机号`,onInput:a[1]||=e=>A.value=!1},null,34),[[l,O.value,void 0,{trim:!0}]]),h(`div`,pe,[c(h(`input`,{"onUpdate:modelValue":a[2]||=e=>k.value=e,type:`text`,class:e([`login-page-wls__input login-page-wls__input-code`,{"login-page-wls__input--error":j.value}]),name:`captcha`,autocomplete:`one-time-code`,inputmode:`numeric`,placeholder:`验证码`,onInput:a[3]||=e=>j.value=!1},null,34),[[l,k.value,void 0,{trim:!0}]]),h(`button`,{type:`button`,class:`login-page-wls__code-btn`,disabled:M.value,onClick:Te},u(N.value),9,me)]),h(`button`,{type:`submit`,class:`login-page-wls__submit`,disabled:P.value},u(P.value?`登录中…`:`登录`),9,he),F.value?(p(),m(`p`,{key:0,class:e(ve.value),style:{"margin-top":`0.75rem`}},u(F.value),3)):t(``,!0)],32)])])]),U.value?(p(),m(`footer`,ge,[h(`p`,_e,u(U.value),1)])):t(``,!0)]))}});export{E as default}; |