|
|
import{$t as e,C as t,E as n,Et as r,G as i,W as a,Y as o,_t as s,b as c,ct as ee,d as te,g as l,in as u,k as ne,m as re,q as d,w as f,x as p}from"./vue.runtime.esm-bundler-6_koQ1g6.js";import{a as ie,f as ae,i as oe,l as se,p as ce}from"./api-d2P9R_jw.js";import{o as le,s as m,t as ue}from"./index-BxBQYSHG.js";/* empty css */import{i as h,r as g,t as de}from"./competitionBranding-BQASm1w0.js";import{n as _,t as fe}from"./participantContact-BWF5Nwl_.js";/* empty css */var pe={class:`login-page-wls__wrap`},me={class:`login-page-wls__inner`},he={class:`login-page-wls__brand`,"aria-label":`系统说明`},ge={class:`login-page-wls__logo`,"aria-hidden":`true`},_e=[`src`],ve={key:1,viewBox:`0 0 100 100`,width:`72`,height:`72`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},ye={key:0,class:`login-page-wls__mark`},be=[`innerHTML`],xe={key:1,class:`login-page-wls__title`},Se=[`innerHTML`],Ce={class:`login-page-wls__panel`},we={class:`login-page-wls__card`},Te={key:0,class:`login-page-wls__card-title`},Ee={class:`login-page-wls__code-row`},De=[`value`],Oe=[`disabled`],ke=[`disabled`],v={class:`login-page-wls__contact`,"aria-label":`咨询电话`},y={class:`login-page-wls__contact-entry`},b={key:0,class:`login-page-wls__contact-sep`},x=[`href`],S=[`href`],C={key:0,class:`login-page-wls__footer`},w={class:`login-page-wls__copyright`},T=ne({__name:`LoginView`,setup(ne){let T=le(),E=m(),D=s(``),O=s(``),k=s(!1),A=s(!1),j=s(!1),M=s(`获取验证码`),N=s(!1),P=s(``),F=s(`neutral`),I=c(()=>String(T.params.slug??``).trim()),L=s(``),R=s(g()),Ae=c(()=>F.value===`error`?`login-page-wls__hint login-page-wls__hint--error`:F.value===`success`?`login-page-wls__hint login-page-wls__hint--success`:`login-page-wls__hint`),je=c(()=>{let e=R.value.login.markLine;return h(e)?z(e):``}),Me=c(()=>{let e=R.value.login.headline;return h(e)?z(e):``});function z(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`)}let B=c(()=>L.value?L.value:h(R.value.login.slogan)?R.value.login.slogan:``),Ne=c(()=>!!L.value),Pe=c(()=>h(R.value.login.cardWelcome)?R.value.login.cardWelcome:``),V=c(()=>Pe.value.replace(/登陆/g,`登录`)),H=c(()=>h(R.value.login.footerCopyright)?R.value.login.footerCopyright:``),U=c(()=>h(R.value.login.logoUrl)?R.value.login.logoUrl:``),W=0;function G(){W&&=(window.clearInterval(W),0)}function Fe(){G();let e=ce();j.value=!0,M.value=`重新获取(${e}s)`,W=window.setInterval(()=>{if(--e,e<=0){G(),M.value=`获取验证码`,j.value=!1;return}M.value=`重新获取(${e}s)`},1e3)}function K(){return ae()}function q(e,t=`neutral`){P.value=e,F.value=t}function J(){P.value=``,F.value=`neutral`}function Y(e){return e.replace(/\D/g,``).slice(0,6)}function Ie(e){let t=e.target,n=Y(t?.value??``);O.value=n,t&&t.value!==n&&(t.value=n),A.value=!1}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 Le(){L.value=``,R.value=g();let e=I.value,t=typeof document<`u`?document.title:``;if(!e){L.value=`缺少赛事访问地址,请从正确入口进入`;return}try{let n=await fetch(`${K()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!n.ok){L.value=n.status===404?`赛事不存在或未发布,请核对访问地址`:`无法加载赛事信息`;return}let r=await n.json();R.value=de(r.branding_json??r.branding??null);let i=R.value.documentTitle;typeof document<`u`&&(h(i)?document.title=i:document.title=t);let a=R.value.login.themePrimary;if(h(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=R.value.login.faviconUrl;if(h(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{L.value=`网络错误,无法校验赛事链接`}}async function Re(){if(j.value)return;let e=D.value.trim();if(!/^1[3-9]\d{9}$/.test(e)){k.value=!0,A.value=!1,q(`请先填写正确手机号`,`error`);return}k.value=!1,A.value=!1,J(),j.value=!0,M.value=`发送中...`;let t=`${K()}${ie}`;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){q(X(r),`error`),M.value=`获取验证码`,j.value=!1,G();return}J(),Fe()}catch{q(`网络错误,请确认后端已启动(Vite 将 /api 代理至 php artisan serve 端口,见 vite.config)`,`error`),M.value=`获取验证码`,j.value=!1,G()}}async function ze(){let e=/^1[3-9]\d{9}$/.test(D.value.trim()),t=Y(O.value);O.value=t;let n=t.length===6;if(k.value=!e,A.value=e&&!n,!e){q(`请先填写正确手机号`,`error`);return}if(!n){q(`请输入 6 位验证码`,`error`);return}if(J(),N.value=!0,q(`登录中...`,`neutral`),!I.value){q(`缺少赛事访问地址,请从正确入口进入`,`error`),N.value=!1;return}let r=`${K()}${oe}`;try{let e=ue(),n=await fetch(r,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`,"X-Requested-With":`XMLHttpRequest`},body:JSON.stringify({mobile:D.value.trim(),code:t,competition_slug:I.value,...e?{public_source_code:e}:{}})}),i=await n.json().catch(()=>({}));if(!n.ok){q(X(i),`error`);return}J(),localStorage.setItem(se,i.token),localStorage.setItem(`cxxfds_user`,JSON.stringify(i.user));let a=typeof T.query.redirect==`string`?T.query.redirect:``;if(a&&a.startsWith(`/`)){await E.replace(a);return}let o=I.value;o?await E.replace({name:`participant-apply`,params:{slug:o}}):await E.replace(`/c`)}catch{q(`网络错误,请确认后端已启动`,`error`)}finally{N.value=!1}}return a(()=>{typeof document<`u`&&(document.documentElement.classList.add(`cxxfds-login-page`),$=!0),document.body.classList.add(`login-page-wls`),Le()}),i(()=>{if(typeof document<`u`&&$&&(document.documentElement.classList.remove(`cxxfds-login-page`),$=!1),document.body.classList.remove(`login-page-wls`),G(),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)=>(d(),f(`div`,pe,[p(`div`,me,[p(`aside`,he,[p(`div`,ge,[U.value?(d(),f(`img`,{key:0,src:U.value,alt:``,class:`login-page-wls__logo-img`,width:`72`,height:`72`},null,8,_e)):(d(),f(`svg`,ve,[...a[2]||=[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(h)(R.value.login.markLine)?(d(),f(`div`,ye,[p(`div`,{class:`login-page-wls__mark-cn`,innerHTML:je.value},null,8,be)])):t(``,!0),r(h)(R.value.login.headline)?(d(),f(`h1`,xe,[p(`span`,{class:`login-page-wls__title-main`,innerHTML:Me.value},null,8,Se)])):t(``,!0),B.value?(d(),f(`p`,{key:2,class:e([`login-page-wls__slogan`,{"login-page-wls__slogan--error":Ne.value}])},u(B.value),3)):t(``,!0)]),p(`section`,Ce,[p(`div`,we,[V.value?(d(),f(`h2`,Te,u(V.value),1)):t(``,!0),p(`form`,{class:`login-page-wls__form`,onSubmit:re(ze,[`prevent`]),novalidate:``},[ee(p(`input`,{"onUpdate:modelValue":a[0]||=e=>D.value=e,type:`tel`,class:e([`login-page-wls__input`,{"login-page-wls__input--error":k.value}]),name:`mobile`,autocomplete:`tel`,inputmode:`numeric`,maxlength:`11`,placeholder:`手机号`,onInput:a[1]||=e=>k.value=!1},null,34),[[te,D.value,void 0,{trim:!0}]]),p(`div`,Ee,[p(`input`,{value:O.value,type:`text`,class:e([`login-page-wls__input login-page-wls__input-code`,{"login-page-wls__input--error":A.value}]),name:`captcha`,autocomplete:`one-time-code`,inputmode:`numeric`,pattern:`[0-9]*`,maxlength:`6`,placeholder:`验证码`,onInput:Ie},null,42,De),p(`button`,{type:`button`,class:`login-page-wls__code-btn`,disabled:j.value,onClick:Re},u(M.value),9,Oe)]),p(`button`,{type:`submit`,class:`login-page-wls__submit`,disabled:N.value},u(N.value?`登录中…`:`登录`),9,ke),p(`div`,v,[p(`div`,y,[a[3]||=p(`span`,{class:`login-page-wls__contact-label`},`参赛咨询:`,-1),(d(!0),f(l,null,o(r(fe),(e,n)=>(d(),f(l,{key:e.tel},[n>0?(d(),f(`span`,b,`、`)):t(``,!0),p(`a`,{href:`tel:${e.tel}`},u(e.display),9,x)],64))),128))]),p(`a`,{href:`tel:${r(_).tel}`},`技术咨询:`+u(r(_).display),9,S)]),P.value?(d(),f(`p`,{key:0,class:e(Ae.value),style:{"margin-top":`0.75rem`}},u(P.value),3)):t(``,!0)],32)])])]),H.value?(d(),f(`footer`,C,[p(`p`,w,u(H.value),1)])):t(``,!0)]))}});export{T as default}; |