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.0 KiB

import{$t as e,C as t,O as n,g as r,in as i,k as a,q as o,w as s,x as c}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{_ as l,m as u,o as d}from"./api-Dpfxb1ca.js";import{a as f}from"./index-CpTiFmNV.js";import{t as p}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{t as m}from"./AudienceTicketQr-CSESpThx.js";var h=f.create({baseURL:`${l()}/api/v1/audience`,headers:{Accept:`application/json`,"Content-Type":`application/json`}});h.interceptors.request.use(e=>{let t=localStorage.getItem(d);return t&&(e.headers.Authorization=`Bearer ${t}`),e}),h.interceptors.response.use(e=>e,e=>{if(f.isAxiosError(e)&&e.response?.status===401){u();let e=window.location.pathname.match(/^\/c\/([^/]+)\/audience(?!\/login)/);e?.[1]&&window.location.assign(`/c/${encodeURIComponent(e[1])}/audience/login`)}return Promise.reject(e)});function g(e,t){if(f.isAxiosError(e)){let t=e.response?.data;if(t?.errors&&typeof t.errors==`object`){let e=Object.values(t.errors).flat()[0];if(e)return String(e)}if(typeof t?.message==`string`&&t.message.trim())return t.message.trim()}return e instanceof Error?e.message:t}async function _(){let{data:e}=await h.get(`/me`);return e}async function v(e){let{data:t}=await h.get(`/sessions`,{params:{competition_slug:e}});return Array.isArray(t.data)?t.data:[]}async function y(e){let{data:t}=await h.get(`/registrations`,{params:{competition_slug:e}});return Array.isArray(t.data)?t.data:[]}async function b(e,t){try{let{data:n}=await h.post(`/registrations`,{competition_slug:e,...t});return n}catch(e){throw Error(g(e,`报名失败`))}}var x=[`aria-labelledby`],S={class:`modal-dialog modal-dialog-centered modal-sm`},C={class:`modal-content audience-ticket-card`},w={class:`modal-header border-0`},T=[`id`],E={class:`modal-body text-center pt-0`},D={class:`ticket-event-badge`},O={class:`mt-3 mb-1`},k={class:`text-secondary small mb-0`},A={class:`mt-3 mb-1`},j={class:`text-secondary small`},M={key:2,class:`ticket-qr ticket-qr-canvas`,"aria-label":`电子票二维码`},N={class:`ticket-code`},P={key:3,class:`small text-secondary mt-3 mb-3`},F={key:4,class:`small text-secondary mt-3 mb-0`},I=p(a({__name:`AudienceTicketModal`,props:{open:{type:Boolean},mode:{},slug:{},eventBadge:{},registration:{}},emits:[`close`],setup(a,{emit:l}){let u=l;function d(e){return`${e.name} · ${e.phone}`}return(l,f)=>a.open&&a.registration?(o(),s(r,{key:0},[c(`div`,{class:`modal-backdrop fade show audience-ticket-backdrop`,onClick:f[0]||=e=>u(`close`)}),c(`div`,{class:`modal fade show audience-ticket-dialog`,style:{display:`block`},tabindex:`-1`,"aria-labelledby":a.mode===`success`?`audienceTicketTitle`:`myTicketModalTitle`,"aria-modal":`true`,role:`dialog`},[c(`div`,S,[c(`div`,C,[c(`div`,w,[c(`h5`,{id:a.mode===`success`?`audienceTicketTitle`:`myTicketModalTitle`,class:`modal-title`},i(a.mode===`success`?`报名成功`:`电子入场票`),9,T),c(`button`,{type:`button`,class:`btn-close`,"aria-label":`关闭`,onClick:f[1]||=e=>u(`close`)})]),c(`div`,E,[a.mode===`success`?(o(),s(r,{key:0},[f[3]||=c(`div`,{class:`audience-ticket-success-mark`},`✓`,-1),f[4]||=c(`p`,{class:`audience-ticket-lead`},`电子入场票已生成`,-1),c(`span`,D,i(a.eventBadge),1),c(`h6`,O,i(a.registration.session_name||`场次`),1),c(`p`,k,i(d(a.registration)),1)],64)):(o(),s(r,{key:1},[c(`span`,{class:e([`my-ticket-status`,a.registration.checked_in_at?`is-checked`:`is-pending`])},i(a.registration.checked_in_at?`已核销入场`:`待入场`),3),c(`h6`,A,i(a.registration.session_name||`场次`),1),c(`p`,j,i(d(a.registration)),1)],64)),a.slug&&a.registration.ticket_code?(o(),s(`div`,M,[n(m,{slug:a.slug,"ticket-code":a.registration.ticket_code,size:150},null,8,[`slug`,`ticket-code`])])):t(``,!0),c(`code`,N,i(a.registration.ticket_code),1),a.mode===`success`?(o(),s(`p`,P,` 入场时请出示此码,每张票仅可核销一次 `)):(o(),s(`p`,F,`入场时请出示此码`)),a.mode===`success`?(o(),s(`button`,{key:5,class:`btn btn-primary w-100`,type:`button`,onClick:f[2]||=e=>u(`close`)},` 完成 `)):t(``,!0)])])])],8,x)],64)):t(``,!0)}}),[[`__scopeId`,`data-v-783b0aeb`]]);export{b as a,v as i,_ as n,y as r,I as t};