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.6 KiB
1 line
9.6 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-BnC3Wm6A.js";import{n as x,t as S}from"./xlsx-C0ANE5gA.js";import{t as C}from"./listTableRowIndex-PNK2HoFW.js";import{n as w,t as T}from"./datetime-4oTrw7tt.js";import{t as E}from"./bookingType-DpjZVc2F.js";import{t as D}from"./reservationStatus-C099SGm7.js";function O(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?w(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?w(e.activity_date):``].filter(Boolean).join(` `)||`-`}var k=[`活动`,`场馆`,`报名人`,`手机号`,`预约类型`,`参与人数`,`预约场次`,`场次时间`,`状态`,`预约时间`,`核销时间`,`二维码 token`];function A(e){let t=e.map(e=>({活动: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??null),状态:D(e.status??``),预约时间:T(e.created_at),核销时间:T(e.verified_at),"二维码 token":e.qr_token??``})),n=S.json_to_sheet(t,{header:[...k]}),r=S.book_new();S.book_append_sheet(r,n,`现场核销`);let i=new Date;x(r,`现场核销-${`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,`0`)}-${String(i.getDate()).padStart(2,`0`)}`}.xlsx`)}var j={class:`verify-list-toolbar`},M=2240,N=b(_({__name:`Verify`,setup(_){let b=l(!1),x=l([]),S=l(``),O=l(!1);function k(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?w(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?w(e.activity_date):``].filter(Boolean).join(` `)||`-`}let N=l(`all`),P=l(``),F=l([]),I=d({current:1,pageSize:10}),L=l(!1),R=l(null),z=l([]),B=l(void 0),V=l(void 0),H=l([]),U=l(!1),W=null;function G(){return R.value?.role===`venue_admin`}function K(){return R.value?!G():!1}async function q(){try{let{data:e}=await y.get(`/me`);R.value=e}catch{R.value=null}}async function J(){if(!K()){z.value=[];return}try{let{data:e}=await y.get(`/venues`);z.value=Array.isArray(e)?e:[]}catch{z.value=[]}}async function Y(e=``){if(!K()){H.value=[];return}U.value=!0;try{let t={limit:500},n=e.trim();n&&(t.keyword=n),B.value!=null&&B.value>0&&(t.venue_id=B.value);let{data:r}=await y.get(`/activities/options`,{params:t}),i=(r?.data??[]).map(e=>({label:e.title,value:e.id})),a=V.value;if(a!=null&&a>0&&!i.some(e=>e.value===a)){let e=H.value.find(e=>e.value===a);e&&i.unshift(e)}H.value=i}catch{H.value=[]}finally{U.value=!1}}function X(e){W&&clearTimeout(W),W=setTimeout(()=>{Y(e)},300)}function Z(){if(!L.value){L.value=!0;try{if(x.value.length===0){e.warning(`没有可导出的数据`);return}A(x.value),e.success(`导出成功`)}catch(t){let n=t;e.error(n?.response?.data?.message??`导出失败`)}finally{L.value=!1}}}async function Q(){b.value=!0;try{let e={status:N.value,keyword:P.value||void 0,start_date:F.value?.[0]||void 0,end_date:F.value?.[1]||void 0,date_field:`activity_day`,reservation_kind:`activity`};K()&&B.value!=null&&B.value>0&&(e.venue_id=B.value),K()&&V.value!=null&&V.value>0&&(e.activity_id=V.value);let{data:t}=await y.get(`/reservations`,{params:e});x.value=t,I.current=1}catch(t){e.error(t?.response?.data?.message??`加载预约列表失败`)}finally{b.value=!1}}function $(){Q()}async function ee(){if(!S.value){e.warning(`请输入二维码 token`);return}O.value=!0;try{await y.post(`/reservations/verify`,{qr_token:S.value}),e.success(`核销成功`),window.location.reload()}catch(t){e.error(t?.response?.data?.message??`核销失败`)}finally{O.value=!1}}return p(B,async()=>{V.value=void 0,await Y(),Q()}),n(async()=>{await q(),await J(),await Y(),await Q()}),(e,n)=>{let l=r(`a-input`),d=r(`a-button`),p=r(`a-space`),_=r(`a-radio`),y=r(`a-radio-group`),w=r(`a-option`),A=r(`a-select`),R=r(`a-range-picker`),W=r(`a-table-column`),G=r(`a-tag`),q=r(`a-table`),J=r(`a-card`);return t(),o(J,{title:`活动管理 / 现场核销`},{default:i(()=>[g(p,{direction:`vertical`,fill:``},{default:i(()=>[g(p,{wrap:``,size:12},{default:i(()=>[g(l,{modelValue:S.value,"onUpdate:modelValue":n[0]||=e=>S.value=e,style:{width:`min(100%, 420px)`},placeholder:`请输入二维码 token`,"allow-clear":``},null,8,[`modelValue`]),g(d,{type:`primary`,loading:O.value,onClick:ee},{default:i(()=>[...n[8]||=[a(`立即核销`,-1)]]),_:1},8,[`loading`])]),_:1}),m(`div`,j,[g(p,{wrap:``,size:12},{default:i(()=>[g(y,{modelValue:N.value,"onUpdate:modelValue":n[1]||=e=>N.value=e,type:`button`,size:`small`,onChange:Q},{default:i(()=>[g(_,{value:`all`},{default:i(()=>[...n[9]||=[a(`全部`,-1)]]),_:1}),g(_,{value:`pending`},{default:i(()=>[...n[10]||=[a(`待核销`,-1)]]),_:1}),g(_,{value:`verified`},{default:i(()=>[...n[11]||=[a(`已核销`,-1)]]),_:1}),g(_,{value:`cancelled`},{default:i(()=>[...n[12]||=[a(`已取消`,-1)]]),_:1}),g(_,{value:`expired`},{default:i(()=>[...n[13]||=[a(`已过期`,-1)]]),_:1})]),_:1},8,[`modelValue`]),K()?(t(),o(A,{key:0,modelValue:B.value,"onUpdate:modelValue":n[2]||=e=>B.value=e,"allow-clear":``,"allow-search":``,placeholder:`搜索或选择场馆`,style:{width:`220px`}},{default:i(()=>[(t(!0),f(c,null,v(z.value,e=>(t(),o(w,{key:e.id,value:e.id},{default:i(()=>[a(u(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])):s(``,!0),K()?(t(),o(A,{key:1,modelValue:V.value,"onUpdate:modelValue":n[3]||=e=>V.value=e,"allow-clear":``,"allow-search":``,"filter-option":!1,loading:U.value,placeholder:`搜索或选择活动`,style:{width:`280px`},onSearch:X,onChange:$,onClear:n[4]||=()=>Y()},{default:i(()=>[(t(!0),f(c,null,v(H.value,e=>(t(),o(w,{key:e.value,value:e.value},{default:i(()=>[a(u(e.label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`,`loading`])):s(``,!0),g(l,{modelValue:P.value,"onUpdate:modelValue":n[5]||=e=>P.value=e,placeholder:`报名人/手机/token`,"allow-clear":``,style:{width:`220px`}},null,8,[`modelValue`]),n[16]||=m(`span`,{class:`verify-filter-label`},`场次日期`,-1),g(R,{modelValue:F.value,"onUpdate:modelValue":n[6]||=e=>F.value=e,style:{width:`260px`}},null,8,[`modelValue`]),g(d,{type:`primary`,onClick:$},{default:i(()=>[...n[14]||=[a(`查询`,-1)]]),_:1}),g(d,{loading:L.value,onClick:Z},{default:i(()=>[...n[15]||=[a(`导出`,-1)]]),_:1},8,[`loading`])]),_:1})]),g(q,{class:`list-data-table verify-table`,scroll:{x:M},data:x.value,loading:b.value,"row-key":`id`,pagination:{current:I.current,pageSize:I.pageSize,total:x.value.length,showTotal:!0},onPageChange:n[7]||=e=>I.current=e},{columns:i(()=>[g(W,{title:``,width:50,ellipsis:!0,tooltip:!0},{cell:i(({rowIndex:e})=>[a(u(h(C)(e,I.current,I.pageSize)),1)]),_:1}),g(W,{title:`活动`,width:240,"min-width":180,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(u(e.activity?.title??`-`),1)]),_:1}),g(W,{title:`场馆`,width:200,"min-width":160,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(u(e.venue?.name??`-`),1)]),_:1}),g(W,{title:`报名人`,"data-index":`visitor_name`,width:120,ellipsis:!0,tooltip:!0}),g(W,{title:`手机号`,"data-index":`visitor_phone`,width:130,ellipsis:!0,tooltip:!0}),g(W,{title:`预约类型`,width:100},{cell:i(({record:e})=>[a(u(h(E)(e.booking_type,e.ticket_count)),1)]),_:1}),g(W,{title:`参与人数`,width:100},{cell:i(({record:e})=>[a(u(e.ticket_count??1),1)]),_:1}),g(W,{title:`预约场次`,width:160,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(u((e.activity_day?.session_name||``).trim()||`-`),1)]),_:1}),g(W,{title:`场次时间`,width:220,"min-width":180,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(u(k(e.activity_day)),1)]),_:1}),g(W,{title:`状态`,width:100},{cell:i(({record:e})=>[g(G,{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(W,{title:`预约时间`,width:175,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(u(h(T)(e.created_at)),1)]),_:1}),g(W,{title:`核销时间`,width:175,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(u(h(T)(e.verified_at)),1)]),_:1}),g(W,{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-5e337b35`]]);export{N as default}; |