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

import{n as e}from"./axios-CiYFffbI.js";import{I as t,N as n,V as r,Y as i,_ as a,d as o,it as s,kt as c,nt as l,u,ut as d,v as f,y as p}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as m}from"./http-LCi9aT1G.js";import{u as h}from"./index-DDo-CpLK.js";import{t as g}from"./listTableRowIndex-ekx2Z6yT.js";import{n as _,t as v}from"./xlsx-DcTBGOm2.js";import{n as y,t as b}from"./datetime-DI43fYhl.js";import{t as x}from"./bookingType-fVyiejAt.js";import{t as S}from"./reservationStatus-DX-ydeW7.js";function C(e){if(!e)return`-`;let t=(e.time_range_text||``).trim();if(t)return t;let n=(e.session_name??``).trim();if(e.session_start_at&&e.session_end_at){let t=new Date(String(e.session_start_at).replace(` `,`T`)),r=new Date(String(e.session_end_at).replace(` `,`T`));if(Number.isNaN(t.getTime())||Number.isNaN(r.getTime()))return[n,e.activity_date?y(e.activity_date):``].filter(Boolean).join(` `);let i=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,`0`),o=String(t.getDate()).padStart(2,`0`),s=e=>String(e).padStart(2,`0`),c=e=>`${s(e.getHours())}:${s(e.getMinutes())}`;if(t.toDateString()===r.toDateString()){let e=`${i}${a}${o}${c(t)}-${c(r)}`;return n?`${n} ${e}`:e}return[n,`${e.session_start_at} ~ ${e.session_end_at}`].filter(Boolean).join(` `)}return[n,e.activity_date?y(e.activity_date):``].filter(Boolean).join(` `)||`-`}var w=[`活动`,`场馆`,`报名人`,`手机号`,`预约类型`,`预约场次`,`场次时间`,`状态`,`预约时间`,`核销时间`,`二维码 token`];function T(e){let t=e.map(e=>({活动:e.activity?.title??``,场馆:e.venue?.name??``,报名人:e.visitor_name??``,手机号:e.visitor_phone??``,预约类型:x(e.booking_type,e.ticket_count),预约场次:(e.activity_day?.session_name??``).trim()||`-`,场次时间:C(e.activity_day??null),状态:S(e.status??``),预约时间:b(e.created_at),核销时间:b(e.verified_at),"二维码 token":e.qr_token??``})),n=v.json_to_sheet(t,{header:[...w]}),r=v.book_new();v.book_append_sheet(r,n,`现场核销`);let i=new Date;_(r,`现场核销-${`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,`0`)}-${String(i.getDate()).padStart(2,`0`)}`}.xlsx`)}var E={class:`verify-list-toolbar`},D=2140,O=h(p({__name:`Verify`,setup(p){let h=s(!1),_=s([]),v=s(``),C=s(!1);function w(e){if(!e)return`-`;let t=(e.time_range_text||``).trim();if(t)return t;let n=(e.session_name||``).trim();if(e.session_start_at&&e.session_end_at){let t=new Date(String(e.session_start_at).replace(` `,`T`)),r=new Date(String(e.session_end_at).replace(` `,`T`));if(Number.isNaN(t.getTime())||Number.isNaN(r.getTime()))return[n,e.activity_date?y(e.activity_date):``].filter(Boolean).join(` `);let i=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,`0`),o=String(t.getDate()).padStart(2,`0`),s=e=>String(e).padStart(2,`0`),c=e=>`${s(e.getHours())}:${s(e.getMinutes())}`;if(t.toDateString()===r.toDateString()){let e=`${i}${a}${o}${c(t)}-${c(r)}`;return n?`${n} ${e}`:e}return[n,`${e.session_start_at} ~ ${e.session_end_at}`].filter(Boolean).join(` `)}return[n,e.activity_date?y(e.activity_date):``].filter(Boolean).join(` `)||`-`}let O=s(`all`),k=s(``),A=s([]),j=l({current:1,pageSize:10}),M=s(!1);function N(){if(!M.value){M.value=!0;try{if(_.value.length===0){e.warning(`没有可导出的数据`);return}T(_.value),e.success(`导出成功`)}catch(t){let n=t;e.error(n?.response?.data?.message??`导出失败`)}finally{M.value=!1}}}async function P(){h.value=!0;try{let{data:e}=await m.get(`/reservations`,{params:{status:O.value,keyword:k.value||void 0,start_date:A.value?.[0]||void 0,end_date:A.value?.[1]||void 0,reservation_kind:`activity`}});_.value=e,j.current=1}catch(t){e.error(t?.response?.data?.message??`加载预约列表失败`)}finally{h.value=!1}}function F(){P()}async function I(){if(!v.value){e.warning(`请输入二维码 token`);return}C.value=!0;try{await m.post(`/reservations/verify`,{qr_token:v.value}),e.success(`核销成功`),window.location.reload()}catch(t){e.error(t?.response?.data?.message??`核销失败`)}finally{C.value=!1}}return n(P),(e,n)=>{let s=r(`a-input`),l=r(`a-button`),p=r(`a-space`),m=r(`a-radio`),y=r(`a-radio-group`),T=r(`a-range-picker`),L=r(`a-table-column`),R=r(`a-tag`),z=r(`a-table`),B=r(`a-card`);return t(),o(B,{title:`活动管理 / 现场核销`},{default:i(()=>[f(p,{direction:`vertical`,fill:``},{default:i(()=>[f(p,{wrap:``,size:12},{default:i(()=>[f(s,{modelValue:v.value,"onUpdate:modelValue":n[0]||=e=>v.value=e,style:{width:`min(100%, 420px)`},placeholder:`请输入二维码 token`,"allow-clear":``},null,8,[`modelValue`]),f(l,{type:`primary`,loading:C.value,onClick:I},{default:i(()=>[...n[5]||=[a(`立即核销`,-1)]]),_:1},8,[`loading`])]),_:1}),u(`div`,E,[f(p,{wrap:``,size:12},{default:i(()=>[f(y,{modelValue:O.value,"onUpdate:modelValue":n[1]||=e=>O.value=e,type:`button`,size:`small`,onChange:P},{default:i(()=>[f(m,{value:`all`},{default:i(()=>[...n[6]||=[a(`全部`,-1)]]),_:1}),f(m,{value:`pending`},{default:i(()=>[...n[7]||=[a(`待核销`,-1)]]),_:1}),f(m,{value:`verified`},{default:i(()=>[...n[8]||=[a(`已核销`,-1)]]),_:1}),f(m,{value:`cancelled`},{default:i(()=>[...n[9]||=[a(`已取消`,-1)]]),_:1}),f(m,{value:`expired`},{default:i(()=>[...n[10]||=[a(`已过期`,-1)]]),_:1})]),_:1},8,[`modelValue`]),f(s,{modelValue:k.value,"onUpdate:modelValue":n[2]||=e=>k.value=e,placeholder:`报名人/手机/token`,"allow-clear":``,style:{width:`220px`}},null,8,[`modelValue`]),f(T,{modelValue:A.value,"onUpdate:modelValue":n[3]||=e=>A.value=e,style:{width:`260px`}},null,8,[`modelValue`]),f(l,{type:`primary`,onClick:F},{default:i(()=>[...n[11]||=[a(`查询`,-1)]]),_:1}),f(l,{loading:M.value,onClick:N},{default:i(()=>[...n[12]||=[a(`导出`,-1)]]),_:1},8,[`loading`])]),_:1})]),f(z,{class:`list-data-table verify-table`,scroll:{x:D},data:_.value,loading:h.value,"row-key":`id`,pagination:{current:j.current,pageSize:j.pageSize,total:_.value.length,showTotal:!0},onPageChange:n[4]||=e=>j.current=e},{columns:i(()=>[f(L,{title:``,width:50,ellipsis:!0,tooltip:!0},{cell:i(({rowIndex:e})=>[a(c(d(g)(e,j.current,j.pageSize)),1)]),_:1}),f(L,{title:`活动`,width:240,"min-width":180,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.activity?.title??`-`),1)]),_:1}),f(L,{title:`场馆`,width:200,"min-width":160,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.venue?.name??`-`),1)]),_:1}),f(L,{title:`报名人`,"data-index":`visitor_name`,width:120,ellipsis:!0,tooltip:!0}),f(L,{title:`手机号`,"data-index":`visitor_phone`,width:130,ellipsis:!0,tooltip:!0}),f(L,{title:`预约类型`,width:100},{cell:i(({record:e})=>[a(c(d(x)(e.booking_type,e.ticket_count)),1)]),_:1}),f(L,{title:`预约场次`,width:160,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c((e.activity_day?.session_name||``).trim()||`-`),1)]),_:1}),f(L,{title:`场次时间`,width:220,"min-width":180,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(w(e.activity_day)),1)]),_:1}),f(L,{title:`状态`,width:100},{cell:i(({record:e})=>[f(R,{color:e.status===`verified`?`green`:e.status===`pending`?`arcoblue`:e.status===`expired`?`orange`:`gray`},{default:i(()=>[a(c(d(S)(e.status)),1)]),_:2},1032,[`color`])]),_:1}),f(L,{title:`预约时间`,width:175,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(d(b)(e.created_at)),1)]),_:1}),f(L,{title:`核销时间`,width:175,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(d(b)(e.verified_at)),1)]),_:1}),f(L,{title:`二维码 token`,"data-index":`qr_token`,width:360,"min-width":280,ellipsis:!0,tooltip:!0,fixed:`right`,align:`left`})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1})]),_:1})}}}),[[`__scopeId`,`data-v-7655b433`]]);export{O as default};