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

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-CpTiFmNV.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-CYHLODs5.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(`button`,A,[p(`span`,j,u(K.value||`观众`),1)]),p(`ul`,M,[p(`li`,null,[p(`a`,{class:`dropdown-item dropdown-item-danger`,href:`javascript:void(0)`,onClick:ie(je,[`prevent`])},[...i[0]||=[p(`span`,null,`退出登录`,-1)]])])])])])])])]),p(`div`,N,[p(`div`,P,[p(`main`,F,[a(o)])])]),p(`footer`,I,[p(`div`,L,[p(`div`,R,u(we.value),1),p(`div`,z,[p(`span`,null,u(Te.value),1)])])]),q.value?(d(),f(`div`,{key:0,class:`modal-backdrop fade show`,onClick:$})):e(``,!0),q.value?(d(),f(`div`,B,[p(`div`,V,[p(`div`,me,[p(`div`,{class:`modal-header profile-modal-header`},[i[1]||=p(`div`,null,[p(`h5`,{id:`myRegistrationsModalTitle`,class:`modal-title profile-modal-title`},`我的报名`),p(`p`,{class:`my-registrations-modal-subtitle`},`查看已提交的活动报名信息`)],-1),p(`button`,{type:`button`,class:`btn-close`,"aria-label":`关闭`,onClick:$})]),p(`div`,he,[J.value?(d(),f(`div`,ge,[...i[2]||=[p(`strong`,null,`加载中…`,-1)]])):Y.value.length?(d(),f(l,{key:2},[p(`div`,ve,[i[5]||=p(`span`,null,`已报名场次`,-1),p(`strong`,null,[t(u(Y.value.length),1),i[4]||=p(`small`,null,`场`,-1)])]),p(`div`,ye,[(d(!0),f(l,null,ee(Y.value,e=>(d(),f(`article`,{key:e.id,class:`my-registration-modal-card`},[p(`div`,be,[p(`h6`,null,u(e.session_name||`场次`),1),i[6]||=p(`span`,null,[p(`i`,{"aria-hidden":`true`}),t(`报名成功`)],-1)]),p(`dl`,null,[p(`div`,null,[i[7]||=p(`dt`,null,`活动时间`,-1),p(`dd`,null,u(e.event_date_text||`—`),1)]),p(`div`,null,[i[8]||=p(`dt`,null,`活动地点`,-1),p(`dd`,null,u(e.address||`—`),1)]),p(`div`,null,[i[9]||=p(`dt`,null,`报名时间`,-1),p(`dd`,null,u(n(x)(e.registered_at)),1)])]),p(`button`,{class:`btn btn-outline-primary btn-sm my-ticket-button`,type:`button`,disabled:!e.ticket_code,onClick:t=>ke(e)},` 出示电子票 `,8,xe)]))),128))])],64)):(d(),f(`div`,_e,[...i[3]||=[p(`span`,{class:`my-registrations-modal-empty-icon`,"aria-hidden":`true`},`暂无`,-1),p(`strong`,null,`暂无报名记录`,-1),p(`p`,null,`选择可报名赛事并提交后,报名信息将在这里展示。`,-1)]]))])])])])):e(``,!0),a(b,{open:X.value,mode:`show`,slug:U.value,"event-badge":Q.value,registration:Z.value,onClose:Ae},null,8,[`open`,`slug`,`event-badge`,`registration`])])}}});export{H as default};