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
9.3 KiB
1 line
9.3 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,f as s,i as c,it as l,kt as u,nt as d,p as f,q as p,u as m,ut as h,v as g,y as _,z as v}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as y}from"./http-LCi9aT1G.js";import{u as b}from"./index-uLgpWTLu.js";import{t as x}from"./listTableRowIndex-DDHXZmUA.js";import{n as S,t as C}from"./xlsx-BP_eUM5j.js";import{n as w,t as T}from"./datetime-L1FWbn-9.js";import{t as E}from"./bookingType-DH_-jZfh.js";import{t as D}from"./reservationStatus-Ctx9kE04.js";function O(e){if(!e)return`-`;let t=(e.session_name||``).trim();if(e.session_start_at&&e.session_end_at){let n=new Date(String(e.session_start_at).replace(` `,`T`)),r=new Date(String(e.session_end_at).replace(` `,`T`));if(Number.isNaN(n.getTime())||Number.isNaN(r.getTime()))return[t,e.activity_date?w(e.activity_date):``].filter(Boolean).join(` `);let i=n.getFullYear(),a=String(n.getMonth()+1).padStart(2,`0`),o=String(n.getDate()).padStart(2,`0`),s=e=>String(e).padStart(2,`0`),c=e=>`${s(e.getHours())}:${s(e.getMinutes())}`;if(n.toDateString()===r.toDateString()){let e=`${i}年${a}月${o}日 ${c(n)}-${c(r)}`;return t?`${t} ${e}`:e}return[t,`${e.session_start_at} ~ ${e.session_end_at}`].filter(Boolean).join(` `)}return[t,e.activity_date?w(e.activity_date):``].filter(Boolean).join(` `)||`-`}var k=[`编号`,`活动`,`场馆`,`报名人`,`手机号`,`预约类型`,`预约票数`,`场次名称`,`活动时间`,`状态`,`下单时间`,`核销时间`,`二维码 token`];function A(e){let t=e.map(e=>({编号:e.id,活动:e.activity?.title??``,场馆:e.venue?.name??``,报名人:e.visitor_name,手机号:e.visitor_phone??``,预约类型:E(e.booking_type,e.ticket_count),预约票数:e.ticket_count??1,场次名称:(e.activity_day?.session_name||``).trim()||`-`,活动时间:O(e.activity_day),状态:D(e.status),下单时间:T(e.created_at),核销时间:T(e.verified_at),"二维码 token":e.qr_token})),n=C.json_to_sheet(t,{header:[...k]}),r=C.book_new();C.book_append_sheet(r,n,`报名管理`);let i=new Date;S(r,`报名管理-${`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,`0`)}-${String(i.getDate()).padStart(2,`0`)}`}.xlsx`)}var j={class:`reg-toolbar`},M=2100,N=b(_({__name:`Registrations`,setup(_){function b(e){if(!e)return`-`;let t=(e.session_name||``).trim();if(e.session_start_at&&e.session_end_at){let n=new Date(String(e.session_start_at).replace(` `,`T`)),r=new Date(String(e.session_end_at).replace(` `,`T`));if(Number.isNaN(n.getTime())||Number.isNaN(r.getTime()))return[t,e.activity_date?w(e.activity_date):``].filter(Boolean).join(` `);let i=n.getFullYear(),a=String(n.getMonth()+1).padStart(2,`0`),o=String(n.getDate()).padStart(2,`0`),s=e=>String(e).padStart(2,`0`),c=e=>`${s(e.getHours())}:${s(e.getMinutes())}`;if(n.toDateString()===r.toDateString()){let e=`${i}年${a}月${o}日 ${c(n)}-${c(r)}`;return t?`${t} ${e}`:e}return[t,`${e.session_start_at} ~ ${e.session_end_at}`].filter(Boolean).join(` `)}return[t,e.activity_date?w(e.activity_date):``].filter(Boolean).join(` `)||`-`}let S=l(!1),C=l(`pending`),O=l(``),k=l([]),N=l(!1),P=d({current:1,pageSize:10,total:0}),F=l([]),I=l(null),L=l([]),R=l(void 0),z=l(void 0),B=l([]);function V(){return I.value?.full_admin_access===!0}async function H(){try{let{data:e}=await y.get(`/me`);I.value=e}catch{I.value=null}}async function U(){try{let e=await y.get(`/venues`);L.value=Array.isArray(e.data)?e.data:[]}catch{L.value=[]}await W()}async function W(){try{let e={page:1,page_size:500};V()&&R.value!=null&&R.value>0&&(e.venue_id=R.value);let{data:t}=await y.get(`/activities`,{params:e});B.value=(t?.data??[]).map(e=>({label:e.title,value:e.id}))}catch{B.value=[]}}function G(){let e={status:C.value,keyword:O.value||void 0,start_date:k.value?.[0]||void 0,end_date:k.value?.[1]||void 0};return V()&&R.value!=null&&R.value>0&&(e.venue_id=R.value),z.value!=null&&z.value>0&&(e.activity_id=z.value),e}function K(){return{...G(),page:P.current,page_size:P.pageSize}}async function q(){S.value=!0;try{let{data:e}=await y.get(`/activity-registrations`,{params:K()});F.value=e.data,P.total=e.total}catch(t){e.error(t?.response?.data?.message??`加载报名失败`)}finally{S.value=!1}}function J(){P.current=1,q()}function Y(e){let t=String(e?.status??``).trim();return t===`cancelled`||t===`expired`?`reg-row-inactive-cell`:void 0}function X(e){let t=String(e?.status??``).trim();return t===`cancelled`||t===`expired`?{backgroundColor:`var(--color-fill-2)`}:{}}async function Z(){if(!N.value){N.value=!0;try{let t=[],n=1,r=1/0;for(;t.length<r;){let{data:e}=await y.get(`/activity-registrations`,{params:{...G(),page:n,page_size:200}}),i=e?.data??[];if(r=Number(e?.total??0),t.push(...i),i.length===0||i.length<200||(n+=1,n>1e3))break}if(t.length===0){e.warning(`没有可导出的数据`);return}A(t),e.success(`导出成功`)}catch(t){let n=t;e.error(n?.response?.data?.message??`导出失败`)}finally{N.value=!1}}}p(R,async()=>{z.value=void 0,await W(),P.current=1,q()}),n(async()=>{await H(),await U(),await q()});function Q(e){P.current=e,q()}return(e,n)=>{let l=r(`a-radio`),d=r(`a-radio-group`),p=r(`a-option`),_=r(`a-select`),y=r(`a-input`),w=r(`a-range-picker`),A=r(`a-button`),I=r(`a-space`),H=r(`a-table-column`),U=r(`a-tag`),W=r(`a-table`),G=r(`a-card`);return t(),o(G,{title:`活动管理 / 报名管理`},{default:i(()=>[m(`div`,j,[g(I,{wrap:``,size:12},{default:i(()=>[g(d,{modelValue:C.value,"onUpdate:modelValue":n[0]||=e=>C.value=e,type:`button`,size:`small`,onChange:q},{default:i(()=>[g(l,{value:`all`},{default:i(()=>[...n[5]||=[a(`全部`,-1)]]),_:1}),g(l,{value:`pending`},{default:i(()=>[...n[6]||=[a(`待核销`,-1)]]),_:1}),g(l,{value:`verified`},{default:i(()=>[...n[7]||=[a(`已核销`,-1)]]),_:1}),g(l,{value:`cancelled`},{default:i(()=>[...n[8]||=[a(`已取消`,-1)]]),_:1}),g(l,{value:`expired`},{default:i(()=>[...n[9]||=[a(`已过期`,-1)]]),_:1})]),_:1},8,[`modelValue`]),V()?(t(),o(_,{key:0,modelValue:R.value,"onUpdate:modelValue":n[1]||=e=>R.value=e,"allow-clear":``,placeholder:`全部场馆`,style:{width:`200px`}},{default:i(()=>[(t(!0),f(c,null,v(L.value,e=>(t(),o(p,{key:e.id,value:e.id},{default:i(()=>[a(u(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])):s(``,!0),g(_,{modelValue:z.value,"onUpdate:modelValue":n[2]||=e=>z.value=e,"allow-clear":``,"allow-search":``,placeholder:`全部活动`,style:{width:`260px`},onChange:J},{default:i(()=>[(t(!0),f(c,null,v(B.value,e=>(t(),o(p,{key:e.value,value:e.value},{default:i(()=>[a(u(e.label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`]),g(y,{modelValue:O.value,"onUpdate:modelValue":n[3]||=e=>O.value=e,placeholder:`姓名/手机/token`,"allow-clear":``,style:{width:`220px`}},null,8,[`modelValue`]),g(w,{modelValue:k.value,"onUpdate:modelValue":n[4]||=e=>k.value=e,style:{width:`260px`}},null,8,[`modelValue`]),g(A,{type:`primary`,onClick:J},{default:i(()=>[...n[10]||=[a(`查询`,-1)]]),_:1}),g(A,{loading:N.value,onClick:Z},{default:i(()=>[...n[11]||=[a(`导出`,-1)]]),_:1},8,[`loading`])]),_:1})]),g(W,{class:`list-data-table registrations-table`,scroll:{x:M},data:F.value,loading:S.value,"row-key":`id`,pagination:{current:P.current,pageSize:P.pageSize,total:P.total,showTotal:!0},onPageChange:Q},{columns:i(()=>[g(H,{title:``,width:50,ellipsis:!0,tooltip:!0,"body-cell-class":Y,"body-cell-style":X},{cell:i(({rowIndex:e})=>[a(u(h(x)(e,P.current,P.pageSize)),1)]),_:1}),g(H,{title:`活动`,width:280,"min-width":220,"body-cell-class":Y,"body-cell-style":X},{cell:i(({record:e})=>[a(u(e.activity?.title||`-`),1)]),_:1}),g(H,{title:`场馆`,width:220,"min-width":180,"body-cell-class":Y,"body-cell-style":X},{cell:i(({record:e})=>[a(u(e.venue?.name||`-`),1)]),_:1}),g(H,{title:`报名人`,"data-index":`visitor_name`,width:140,"min-width":120,"body-cell-class":Y,"body-cell-style":X}),g(H,{title:`手机号`,"data-index":`visitor_phone`,width:150,"min-width":130,"body-cell-class":Y,"body-cell-style":X}),g(H,{title:`预约类型`,width:100,"body-cell-class":Y,"body-cell-style":X},{cell:i(({record:e})=>[a(u(h(E)(e.booking_type,e.ticket_count)),1)]),_:1}),g(H,{title:`预约票数`,width:110,"body-cell-class":Y,"body-cell-style":X},{cell:i(({record:e})=>[a(u(e.ticket_count??1),1)]),_:1}),g(H,{title:`场次名称`,width:160,"min-width":120,ellipsis:!0,tooltip:!0,"body-cell-class":Y,"body-cell-style":X},{cell:i(({record:e})=>[a(u((e.activity_day?.session_name||``).trim()||`-`),1)]),_:1}),g(H,{title:`活动时间`,width:220,"min-width":180,ellipsis:!0,tooltip:!0,"body-cell-class":Y,"body-cell-style":X},{cell:i(({record:e})=>[a(u(b(e.activity_day)),1)]),_:1}),g(H,{title:`状态`,width:120,"body-cell-class":Y,"body-cell-style":X},{cell:i(({record:e})=>[g(U,{color:e.status===`verified`?`green`:e.status===`pending`?`arcoblue`:e.status===`expired`?`orange`:`gray`},{default:i(()=>[a(u(h(D)(e.status)),1)]),_:2},1032,[`color`])]),_:1}),g(H,{title:`下单时间`,width:190,"min-width":175,"body-cell-class":Y,"body-cell-style":X},{cell:i(({record:e})=>[a(u(h(T)(e.created_at)),1)]),_:1}),g(H,{title:`核销时间`,width:190,"min-width":175,"body-cell-class":Y,"body-cell-style":X},{cell:i(({record:e})=>[a(u(h(T)(e.verified_at)),1)]),_:1}),g(H,{title:`二维码 token`,"data-index":`qr_token`,width:360,"min-width":280,ellipsis:!0,tooltip:!0,fixed:`right`,align:`left`,"body-cell-class":Y,"body-cell-style":X})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1})}}}),[[`__scopeId`,`data-v-e71a5ff8`]]);export{N as default}; |