You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
5.2 KiB

import{$t as e,G as t,O as n,S as r,T as i,W as a,_t as o,ct as s,f as c,h as l,in as u,k as ee,q as d,w as f,x as p}from"./vue.runtime.esm-bundler-CACvpnko.js";import{_ as m}from"./api-Dpfxb1ca.js";import{a as h,f as g,p as _}from"./index-D5exsJys.js";import{i as v}from"./auth-Dp3MNaAu.js";import{a as y,t as b}from"./site-BxiJvB6v.js";import{n as x,t as S}from"./participantTheme-HEHn5JJn.js";import{c as C,r as te,s as w,u as ne}from"./competitionBranding-CAjogVRl.js";import{t as T}from"./login-page-overrides-BwirTgW8.js";var E={class:`login-page-wls__wrap`},D={class:`login-page-wls__inner`},O={class:`login-page-wls__panel`},k={class:`login-page-wls__card`},A={class:`login-page-wls__card-title`},j=[`disabled`],re={key:0,class:`login-page-wls__footer`},ie={class:`login-page-wls__copyright`},M=ee({__name:`ManageLoginView`,setup(ee){let M=g(),N=_(),P=h(),F=o(``),I=o(``),L=o(!1),R=o(!1),z=o(!1),B=o(``),V=o(`neutral`),H=p(()=>String(M.params.slug??``).trim()),U=p(()=>M.meta.portalKind===`audience`),W=o(``),G=o(w()),K=o(``),q=p(()=>V.value===`error`?`login-page-wls__hint login-page-wls__hint--error`:V.value===`success`?`login-page-wls__hint login-page-wls__hint--success`:`login-page-wls__hint`),J=p(()=>ne(G.value,K.value)),ae=p(()=>W.value?W.value:``),oe=p(()=>U.value?`观众信息管理`:C(G.value.login.cardWelcome)?G.value.login.cardWelcome.replace(/登陆/g,`登录`):`赛事管理登录`),Y=p(()=>C(G.value.login.footerCopyright)?G.value.login.footerCopyright:``),X=null,Z=!1;function Q(e,t=`neutral`){B.value=e,V.value=t}function $(){B.value=``,V.value=`neutral`}function se(e){return e.replace(/[\u200B-\u200D\uFEFF]/gu,``).trim()}async function ce(){W.value=``,G.value=w(),K.value=``;let e=H.value;if(y(`${b} · 管理登录`),!e){W.value=`缺少赛事访问地址,请从正确入口进入`;return}try{let t=await fetch(`${m()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){W.value=t.status===404?`赛事不存在或未发布,请核对访问地址`:`无法加载赛事信息`;return}let n=await t.json(),r=typeof n==`object`&&n&&`data`in n?n.data:n;K.value=String(r?.name??``),G.value=te(r?.branding_json??r?.branding??null);let i=G.value.documentTitle;y(C(i)?`${se(i)} · 管理登录`:`${b} · 管理登录`),S(G.value.login.themePrimary);let a=G.value.login.faviconUrl;if(C(a)&&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=a}}catch{W.value=`网络错误,无法校验赛事链接`}}async function le(){let e=F.value.trim(),t=I.value;if(L.value=!e,R.value=!t,!e){Q(`请填写账号`,`error`);return}if(!t){Q(`请填写密码`,`error`);return}if(!H.value){Q(`缺少赛事访问地址`,`error`);return}$(),z.value=!0,Q(`登录中…`,`neutral`);try{let n=await v({username:e,password:t,competition_slug:H.value});P.setSession(n.token,n.user&&typeof n.user.id==`number`?{id:n.user.id,username:n.user.username,name:n.user.name,kind:n.kind===`competition`?`competition`:`platform`,competitionId:n.competition?.id,competitionSlug:n.competition?.slug??H.value}:null),$();let r=typeof M.query.redirect==`string`?M.query.redirect:``;r.startsWith(`/`)&&!r.includes(`/login`)&&(r.includes(`/manage`)||r.includes(`/audience-manage`)||r.includes(`/checkin`))?await N.replace(r):U.value?await N.replace({name:`audience-manage-registrations`,params:{slug:H.value}}):await N.replace({name:`manage-dashboard`,params:{slug:H.value}})}catch(e){Q(e instanceof Error?e.message:`登录失败`,`error`)}finally{z.value=!1}}return a(()=>{typeof document<`u`&&(document.documentElement.classList.add(`cxxfds-login-page`),Z=!0),document.body.classList.add(`login-page-wls`),ce()}),t(()=>{if(typeof document<`u`&&Z&&(document.documentElement.classList.remove(`cxxfds-login-page`),Z=!1),document.body.classList.remove(`login-page-wls`),typeof document<`u`&&(x(),X!==null)){let e=document.querySelector(`link[rel~="icon"]`);e&&(X===``?e.removeAttribute(`href`):e.href=X),X=null}}),(t,a)=>(d(),i(`div`,E,[r(`div`,D,[n(T,{"logo-url":G.value.login.logoUrl,title:J.value,"aria-label":`赛事说明`,"error-slogan":ae.value},null,8,[`logo-url`,`title`,`error-slogan`]),r(`section`,O,[r(`div`,k,[r(`h2`,A,u(oe.value),1),r(`form`,{class:`login-page-wls__form`,onSubmit:l(le,[`prevent`]),novalidate:``},[s(r(`input`,{"onUpdate:modelValue":a[0]||=e=>F.value=e,type:`text`,class:e([`login-page-wls__input`,{"login-page-wls__input--error":L.value}]),name:`username`,autocomplete:`username`,maxlength:`64`,placeholder:`账号`,onInput:a[1]||=e=>L.value=!1},null,34),[[c,F.value,void 0,{trim:!0}]]),s(r(`input`,{"onUpdate:modelValue":a[2]||=e=>I.value=e,type:`password`,class:e([`login-page-wls__input`,{"login-page-wls__input--error":R.value}]),name:`password`,autocomplete:`current-password`,placeholder:`密码`,maxlength:`255`,onInput:a[3]||=e=>R.value=!1},null,34),[[c,I.value]]),r(`button`,{type:`submit`,class:`login-page-wls__submit`,disabled:z.value},u(z.value?`登录中…`:`登录`),9,j),B.value?(d(),i(`p`,{key:0,class:e(q.value),style:{"margin-top":`0.75rem`}},u(B.value),3)):f(``,!0)],32)])])]),Y.value?(d(),i(`footer`,re,[r(`p`,ie,u(Y.value),1)])):f(``,!0)]))}});export{M as default};