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
7.3 KiB
1 line
7.3 KiB
|
1 month ago
|
import{$t as e,C as t,D as n,Et as r,O as ee,P as te,W as i,Y as a,_t as o,b as s,ct as c,d as l,g as u,in as d,k as ne,m as f,p,q as m,u as re,w as h,x as g}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{O as ie}from"./api-Dpfxb1ca.js";import{l as ae,u as oe}from"./index-CpTiFmNV.js";import{a as se,i as ce,n as le,t as ue}from"./AudienceTicketModal-CYHLODs5.js";import{t as de}from"./types-Nhm4NtmZ.js";var fe={class:`container-fluid audience-page-shell`},pe={class:`audience-session-section`,"aria-label":`赛事场次`},me={key:0,class:`text-muted small py-3`},he={key:1,class:`row g-3`},ge=[`aria-checked`,`aria-disabled`,`onClick`,`onKeydown`],_e={class:`audience-session-card-head`},ve={class:`audience-session-name-wrap`},ye={class:`audience-quota`},be={class:`audience-session-meta`},_={class:`audience-form-panel`},v={class:`audience-form-body`},y={class:`col-12 col-md-6 audience-form-fifth`},b=[`placeholder`,`disabled`],x={class:`col-12 col-md-6 audience-form-fifth`},S=[`value`,`placeholder`],C={class:`col-12 col-md-6 audience-form-fifth`},w=[`placeholder`,`disabled`],T={class:`col-12 col-md-6 audience-form-fifth`},E=[`placeholder`,`disabled`],D={class:`col-12 col-md-6 audience-form-fifth`},O=[`disabled`],k={value:``},A=[`value`],j={class:`col-12 audience-form-actions`},M=[`disabled`],N={key:0,class:`alert alert-danger audience-success`,role:`alert`},P={key:1,class:`alert alert-success audience-success`,role:`status`},F=ne({__name:`AudienceFormView`,setup(ne){let F=ae(),xe=oe(),I=s(()=>String(F.params.slug??``).trim()),L=o([]),R=o(!1),z=o(!1),B=o(null),V=o(``),H=o(null),U=o(!1),W=o(``),G=o(!1),Se=te(`audienceEventBadge`,s(()=>`沪苏科创大赛`)),K=o({name:``,phone:``,company:``,job:``,purpose:``}),q=s(()=>L.value.find(e=>e.id===B.value)??null),J=s(()=>q.value?.is_available===!0),Y=s(()=>J.value?{name:`请输入姓名`,phone:`登录手机号`,company:`请输入单位名称`,job:`请输入职务`,purpose:`请选择观赛目的`}:{name:`请先选择赛事`,phone:`登录手机号`,company:`请先选择赛事`,job:`请先选择赛事`,purpose:`请先选择赛事`});function Ce(e){return e.is_registered?`is-registered`:e.status===`open`?`is-open`:e.status===`full`?`is-full`:``}async function X(){if(I.value){R.value=!0;try{L.value=await ce(I.value),B.value!=null&&(L.value.find(e=>e.id===B.value)?.is_available||(B.value=null))}catch{L.value=[]}finally{R.value=!1}}}function Z(e){e.is_registered||!e.is_available||(B.value=e.id,V.value=``,H.value=null,U.value=!1,W.value=``,G.value=!1)}function Q(e){return G.value?e===`name`?!K.value.name.trim():e===`phone`?!/^1[3-9]\d{9}$/.test(K.value.phone.trim()):!K.value.purpose:!1}async function we(){if(G.value=!0,W.value=``,V.value=``,H.value=null,U.value=!1,!(!q.value||!J.value)&&!(Q(`name`)||Q(`phone`)||Q(`purpose`))){z.value=!0;try{let e=await se(I.value,{audience_session_id:q.value.id,name:K.value.name.trim(),phone:Ee.value,company:K.value.company.trim()||void 0,job:K.value.job.trim()||void 0,purpose:K.value.purpose});H.value=e,V.value=`报名成功!“${e.session_name||q.value.name}”的场次信息将通过手机号发送。`,U.value=!0,B.value=null,G.value=!1,await X()}catch(e){W.value=e instanceof Error?e.message:`报名失败`,await X()}finally{z.value=!1}}}function $(e){let t=e.trim();t&&(K.value.phone=t)}function Te(){try{let e=localStorage.getItem(`cxxfds_audience_user`),t=e?JSON.parse(e):null;return String(t?.mobile??``).trim()}catch{return``}}let Ee=s(()=>K.value.phone.trim());return i(()=>{let{token:e,competitionSlug:t}=ie();if(!e||t!==I.value){xe.replace({name:`audience-login`,params:{slug:I.value}});return}$(Te()),(async()=>{try{$((await le()).mobile??``)}catch{}})(),X()}),(te,i)=>(m(),h(`div`,fe,[i[16]||=g(`div`,{class:`mb-3 form-page-header`},[g(`h5`,{class:`mb-0 form-page-title`},`观众报名`)],-1),g(`section`,pe,[R.value?(m(),h(`div`,me,`场次加载中…`)):(m(),h(`div`,he,[(m(!0),h(u,null,a(L.value,t=>(m(),h(`div`,{key:t.id,class:`col-12 col-md-6 col-xl-3`},[g(`article`,{class:e([`audience-session-card`,{"is-final":t.is_final,"is-registered":t.is_registere
|