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

2 months ago
import{C as e,D as t,Et as n,G as r,J as i,O as a,W as o,Y as ee,Z as te,_t as s,at as ne,b as c,g as l,in as u,k as re,m as ie,q as d,w as f,x as p}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{O as ae,_ as oe,m}from"./api-Dpfxb1ca.js";import{l as se,u as ce}from"./index-p9LD-lsm.js";import{i as h,r as le}from"./site-j0hHE9UV.js";/* empty css */import{n as ue,t as de}from"./participantTheme-BMONOrEx.js";import{i as fe,o as pe,r as g,t as _}from"./competitionBranding-BjQScvy4.js";import{n as v,r as y,t as b}from"./AudienceTicketModal-BMM98OjI.js";import{t as x}from"./datetimeShanghai-F85iiY-2.js";var S={class:`participant-layout`},C={class:`navbar navbar-expand-lg layout-header`},w={class:`container-fluid px-3 px-lg-4 layout-header-inner`},T={class:`header-brand`},E={class:`navbar-brand mb-0 prototype-title`},D={class:`header-meta`},O={class:`header-audience-actions`},k={class:`dropdown header-user-dropdown`},A={id:`headerUserToggle`,class:`header-user dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`,"data-bs-auto-close":`true`,"aria-expanded":`false`,"aria-label":`打开用户菜单`},j={class:`header-user-name`},M={class:`dropdown-menu dropdown-menu-end header-user-menu`,"aria-labelledby":`headerUserToggle`},N={class:`container-fluid px-3 px-lg-4 py-3 layout-main`},P={class:`row layout-main-row g-3`},F={class:`col-12 participant-main-col`},I={id:`layoutFooter`,class:`layout-footer`},L={class:`layout-footer-inner`},R={class:`layout-footer-brand`},z={class:`layout-footer-meta`},B={key:1,class:`modal fade show`,style:{display:`block`},tabindex:`-1`,"aria-labelledby":`myRegistrationsModalTitle`,"aria-modal":`true`,role:`dialog`},V={class:`modal-dialog modal-dialog-centered my-registrations-modal-dialog`},me={class:`modal-content profile-modal-content`},he={class:`modal-body profile-modal-body my-registrations-modal-body`},ge={key:0,class:`my-registrations-modal-empty`},_e={key:1,class:`my-registrations-modal-empty`},ve={class:`my-registrations-modal-summary`},ye={class:`my-registrations-modal-list`},be={class:`my-registration-modal-card-head`},xe=[`disabled`,`onClick`],H=re({__name:`AudienceLayout`,setup(re){let H=ce(),Se=se(),U=c(()=>String(Se.params.slug??``).trim()),W=s(g()),G=s(``),K=s(``),q=s(!1),J=s(!1),Y=s([]),X=s(!1),Z=s(null),Ce=c(()=>pe(W.value)||`观众报名`),we=c(()=>G.value.trim()||`沪苏协同新兴产业科创大赛`),Te=c(()=>fe(W.value.login.footerCopyright)?W.value.login.footerCopyright:le),Q=c(()=>G.value.trim()||`沪苏科创大赛`);i(`audienceEventBadge`,Q);async function Ee(){let e=U.value;if(!e){W.value=g(),G.value=``,h();return}try{let t=await fetch(`${oe()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){W.value=g(),G.value=``,h();return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;G.value=String(r.name??``),W.value=_(r.branding_json??null),h(W.value.documentTitle)}catch{W.value=g(),G.value=``,h()}}ne(W,()=>de(W.value.login.themePrimary),{deep:!0,immediate:!0});async function De(){try{let e=await v();K.value=e.mobile||e.name||``}catch{K.value=``}}async function Oe(){q.value=!0,J.value=!0;try{Y.value=await y(U.value)}catch{Y.value=[]}finally{J.value=!1}}function $(){q.value=!1}function ke(e){e.ticket_code&&(Z.value=e,q.value=!1,X.value=!0)}function Ae(){X.value=!1,Z.value=null}function je(){m();let e=U.value;e?H.push({name:`audience-login`,params:{slug:e}}):H.push(`/c`)}return o(()=>{document.body.classList.add(`prototype-page`,`user-mobile-no-menu`,`audience-page`),Ee(),De();let{token:e,competitionSlug:t}=ae();(!e||t!==U.value)&&H.replace({name:`audience-login`,params:{slug:U.value}})}),r(()=>{document.body.classList.remove(`prototype-page`,`user-mobile-no-menu`,`audience-page`),ue()}),(r,i)=>{let o=te(`router-view`);return d(),f(`div`,S,[p(`header`,C,[p(`div`,w,[p(`div`,T,[p(`span`,E,u(Ce.value),1)]),p(`div`,D,[p(`div`,O,[p(`button`,{class:`header-my-registrations`,type:`button`,"aria-haspopup":`dialog`,onClick:Oe},` 我的报名 `),p(`div`,k,[p(`b