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
4.5 KiB

import{D as e,G as t,O as n,W as r,Z as i,_t as a,at as o,b as s,in as c,k as l,m as u,q as d,st as f,w as p,x as m}from"./vue.runtime.esm-bundler-6_koQ1g6.js";import{l as h,p as g}from"./api-DouN6RcT.js";import{C as _,w as v}from"./index-DCeo7M6L.js";import{t as y}from"./_plugin-vue_export-helper-S3RvzygF.js";/* empty css *//* empty css */import{a as b,i as x,r as S,t as C}from"./competitionBranding-BQASm1w0.js";var w={class:`participant-layout`},T={class:`navbar navbar-expand-lg layout-header`},E={class:`container-fluid px-3 px-lg-4`},D={class:`navbar-brand mb-0 prototype-title`},O={class:`dropdown`},k={class:`header-user dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`,"aria-expanded":`false`},A={class:`header-user-name`},j={class:`dropdown-menu dropdown-menu-end header-user-menu`},M={class:`container-fluid px-3 px-lg-4 py-3 layout-main`},N={class:`row layout-main-row g-3`},P={class:`col-12 col-md-2 col-lg-2 layout-sider`},F={class:`card h-100`},I={class:`card-body`},L={class:`nav flex-column gap-2`},R={class:`col-12 col-md-10 col-lg-10 participant-main-col`},z={id:`layoutFooter`,class:`border-top bg-white text-center py-2 small text-secondary prototype-subtitle`},B=`#052d62`,V=y(l({__name:`MainLayout`,setup(l){let y=v(),V=_(),H=s(()=>String(V.params.slug??``).trim()),U=a(S()),W=a(``),G=s(()=>b(U.value,W.value)),K=s(()=>{if(x(U.value.login.footerCopyright))return U.value.login.footerCopyright;let e=W.value.trim();return e?`版权所有:${e}`:`版权所有`});async function q(){let e=H.value;if(!e){U.value=S(),W.value=``;return}try{let t=await fetch(`${g()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){U.value=S(),W.value=``;return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;W.value=String(r.name??``),U.value=C(r.branding_json??null)}catch{U.value=S(),W.value=``}}o(H,()=>{q()},{immediate:!0});function J(e){let t=e.trim().replace(`#`,``);return/^[0-9a-f]{6}$/i.test(t)?`${parseInt(t.slice(0,2),16)}, ${parseInt(t.slice(2,4),16)}, ${parseInt(t.slice(4,6),16)}`:null}function Y(){if(typeof document>`u`)return;let e=U.value.login.themePrimary?.trim()??``,t=x(e)?/^(?:#|rgb|hsl)/i.test(e)?e:`#${e.replace(/^#/,``)}`:B;if(document.body.style.setProperty(`--primary`,t),document.body.style.setProperty(`--bs-primary`,t),t.startsWith(`#`)){document.body.style.setProperty(`--primary-soft`,`${t}14`);let e=J(t);e&&document.body.style.setProperty(`--bs-primary-rgb`,e)}else document.body.style.removeProperty(`--primary-soft`),document.body.style.removeProperty(`--bs-primary-rgb`)}o(U,()=>Y(),{deep:!0,immediate:!0});let X=a(``),Z=s(()=>X.value||`用户`);async function Q(){let e=localStorage.getItem(h),t=g();if(e)try{let n=await fetch(`${t}/api/me`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/json`}});if(!n.ok)return;let r=await n.json();X.value=r.name||r.mobile||``}catch{}}function $(){localStorage.removeItem(h),localStorage.removeItem(`cxxfds_user`);let e=H.value;e?y.push({name:`participant-login`,params:{slug:e}}):y.push(`/c`)}return r(()=>{document.body.classList.add(`prototype-page`,`user-mobile-no-menu`),Q()}),t(()=>{document.body.classList.remove(`prototype-page`,`user-mobile-no-menu`),document.body.style.removeProperty(`--primary`),document.body.style.removeProperty(`--primary-soft`),document.body.style.removeProperty(`--bs-primary`),document.body.style.removeProperty(`--bs-primary-rgb`)}),(t,r)=>{let a=i(`router-link`),o=i(`router-view`);return d(),p(`div`,w,[m(`header`,T,[m(`div`,E,[m(`span`,D,c(G.value),1),m(`div`,O,[m(`button`,k,[r[0]||=m(`svg`,{width:`22`,height:`22`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`},[m(`circle`,{cx:`12`,cy:`12`,r:`9.5`,stroke:`currentColor`,"stroke-width":`2`}),m(`circle`,{cx:`12`,cy:`9`,r:`3.2`,fill:`currentColor`}),m(`path`,{d:`M6.8 18.2c1.1-2.4 3-3.6 5.2-3.6s4.1 1.2 5.2 3.6`,fill:`currentColor`})],-1),m(`span`,A,c(Z.value),1)]),m(`ul`,j,[m(`li`,null,[m(`a`,{class:`dropdown-item text-danger`,href:`javascript:void(0)`,onClick:u($,[`prevent`])},[...r[1]||=[m(`span`,{class:`menu-icon`},``,-1),e(`退出登录 `,-1)]])])])])])]),m(`div`,M,[m(`div`,N,[m(`aside`,P,[m(`div`,F,[m(`div`,I,[m(`nav`,L,[n(a,{class:`nav-link text-start`,"active-class":`active`,to:{name:`participant-apply`,params:{slug:H.value}}},{default:f(()=>[...r[2]||=[e(` 赛事报名 `,-1)]]),_:1},8,[`to`])])])])]),m(`main`,R,[n(o)])])]),m(`footer`,z,c(K.value),1)])}}}),[[`__scopeId`,`data-v-87706cd0`]]);export{V as default};