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.2 KiB
1 line
7.2 KiB
import{C as e,D as t,Et as n,G as r,O as i,Q as a,S as o,T as s,W as c,Y as l,Z as u,_ as d,_t as f,at as p,ct as m,ht as h,in as g,k as _,m as v,q as y,st as b,x}from"./vue.runtime.esm-bundler-CACvpnko.js";import{h as S,m as C}from"./index-BXcJqdBr.js";import{t as w}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{t as T}from"./datetimeShanghai-F85iiY-2.js";import{t as E}from"./signupOptionCodes-CvTkOKn_.js";import{a as D,i as ee,r as te}from"./schemaAdminColumns-D9uCX5IN.js";import{a as ne,c as re,n as O,o as k,s as A}from"./audience-DRc5NR7D.js";var j={class:`applications-pane`},M={class:`audience-checkin-stats`},N={class:`applications-toolbar`},P={class:`application-filters`},F={key:1,class:`text-muted`},I={class:`d-flex justify-content-end mt-3`},L=w(_({__name:`AudienceRegistrationsPane`,props:{competitionId:{}},setup(_){let w=_,L=f(!1),R=f(!1),z=f(null),B=f([]),V=f([]),H=f(null),U=f(1),W=f(15),G=f(0),K=h({keyword:``,audience_session_id:void 0,purpose:``,checkin_status:``,signup_locale:``}),q=h({}),J=f([]),Y=f([]),ie=x(()=>D(J.value,ee)),ae=x(()=>D(Y.value,te)),oe=x(()=>{let e=H.value;return e?`已报名 ${e.registered_count} · 已到场 ${e.checked_in_count} · 未到场 ${e.not_checked_in_count}`:`统计加载中…`});async function X(){try{B.value=await re(w.competitionId)}catch{B.value=[]}}async function Z(){try{H.value=await k(w.competitionId,K.audience_session_id)}catch{H.value=null}}async function Q(e=U.value){L.value=!0;try{let t=await A(w.competitionId,{page:e,per_page:W.value,keyword:K.keyword.trim()||void 0,audience_session_id:K.audience_session_id,purpose:K.purpose||void 0,checkin_status:K.checkin_status||void 0,signup_locale:K.signup_locale||void 0,...Object.fromEntries(Object.entries(q).filter(([,e])=>String(e??``).trim()!==``))});V.value=t.data,J.value=t.schema_list_fields??[],Y.value=t.schema_filter_fields??[],U.value=t.meta.current_page,W.value=t.meta.per_page,G.value=t.meta.total,await Z()}catch(e){S.error(e instanceof Error?e.message:`加载观众报名失败`)}finally{L.value=!1}}async function se(){R.value=!0;try{await ne(w.competitionId,{keyword:K.keyword.trim()||void 0,audience_session_id:K.audience_session_id,purpose:K.purpose||void 0,checkin_status:K.checkin_status||void 0,signup_locale:K.signup_locale||void 0,...Object.fromEntries(Object.entries(q).filter(([,e])=>String(e??``).trim()!==``))}),S.success(`已开始下载`)}catch(e){S.error(e instanceof Error?e.message:`导出失败`)}finally{R.value=!1}}async function ce(e){if(!e.checked_in){try{await C.confirm(`确认核销「${e.name}」参加「${e.session_name||`该场次`}」?核销后不可撤销。`,`手动核销`,{type:`warning`})}catch{return}z.value=e.id;try{let t=await O(w.competitionId,e.id);S.success(t.already_checked_in?`该观众此前已核销`:`已核销`),await Q(U.value)}catch(e){S.error(e instanceof Error?e.message:`核销失败`)}finally{z.value=null}}}p(()=>w.competitionId,()=>{U.value=1,X(),Q(1)});let $=null;return c(()=>{X(),Q(1),$=window.setInterval(()=>{Z()},5e3)}),r(()=>{$!=null&&window.clearInterval($)}),(r,c)=>{let f=u(`el-input`),p=u(`el-option`),h=u(`el-select`),_=u(`el-button`),x=u(`el-table-column`),S=u(`el-table`),C=u(`el-pagination`),w=a(`loading`);return m((y(),s(`div`,j,[o(`div`,M,g(oe.value),1),o(`div`,N,[o(`div`,P,[i(f,{modelValue:K.keyword,"onUpdate:modelValue":c[0]||=e=>K.keyword=e,placeholder:`搜索姓名、手机号、单位`,clearable:``,class:`application-filter-keyword`,onKeyup:c[1]||=v(e=>Q(1),[`enter`])},null,8,[`modelValue`]),i(h,{modelValue:K.audience_session_id,"onUpdate:modelValue":c[2]||=e=>K.audience_session_id=e,placeholder:`场次`,clearable:``,teleported:``,class:`application-filter-select`},{default:b(()=>[(y(!0),s(d,null,l(B.value,t=>(y(),e(p,{key:t.id,label:t.name,value:t.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),i(h,{modelValue:K.purpose,"onUpdate:modelValue":c[3]||=e=>K.purpose=e,placeholder:`观赛目的`,clearable:``,teleported:``,class:`application-filter-select`},{default:b(()=>[(y(!0),s(d,null,l(n(E),t=>(y(),e(p,{key:t.value,label:t.label,value:t.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),i(h,{modelValue:K.signup_locale,"onUpdate:modelValue":c[4]||=e=>K.signup_locale=e,placeholder:`填报语言`,clearable:``,teleported:``,class:`application-filter-select`},{default:b(()=>[i(p,{label:`中文填报`,value:`zh-CN`}),i(p,{label:`英文填报`,value:`en`})]),_:1},8,[`modelValue`]),(y(!0),s(d,null,l(ae.value,t=>(y(),e(h,{key:`af-${t.key}`,modelValue:q[t.key],"onUpdate:modelValue":e=>q[t.key]=e,placeholder:t.label,clearable:``,teleported:``,class:`application-filter-select`},{default:b(()=>[(y(!0),s(d,null,l(t.options??[],t=>(y(),e(p,{key:t.value,label:t.label,value:t.value},null,8,[`label`,`value`]))),128))]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`placeholder`]))),128)),i(h,{modelValue:K.checkin_status,"onUpdate:modelValue":c[5]||=e=>K.checkin_status=e,placeholder:`到场状态`,clearable:``,teleported:``,class:`application-filter-select`},{default:b(()=>[i(p,{label:`已到场`,value:`checked_in`}),i(p,{label:`未到场`,value:`not_checked_in`})]),_:1},8,[`modelValue`]),i(_,{type:`primary`,onClick:c[6]||=e=>Q(1)},{default:b(()=>[...c[9]||=[t(`查询`,-1)]]),_:1}),i(_,{loading:R.value,onClick:se},{default:b(()=>[...c[10]||=[t(`导出`,-1)]]),_:1},8,[`loading`])])]),i(S,{data:V.value,stripe:``,border:``,"empty-text":`暂无观众报名`,class:`workspace-table`},{default:b(()=>[i(x,{label:`填报语言`,width:`110`},{default:b(({row:e})=>[t(g(e.signup_locale_label||`中文填报`),1)]),_:1}),i(x,{prop:`session_name`,label:`场次`,"min-width":`140`,"show-overflow-tooltip":``}),i(x,{prop:`name`,label:`姓名`,width:`110`}),i(x,{prop:`phone`,label:`电话`,width:`130`}),i(x,{prop:`company`,label:`单位`,"min-width":`160`,"show-overflow-tooltip":``},{default:b(({row:e})=>[t(g(e.company||`—`),1)]),_:1}),i(x,{prop:`job`,label:`职务`,"min-width":`120`,"show-overflow-tooltip":``},{default:b(({row:e})=>[t(g(e.job||`—`),1)]),_:1}),i(x,{prop:`purpose`,label:`观赛目的`,width:`120`},{default:b(({row:e})=>[t(g(e.purpose_label||e.purpose),1)]),_:1}),(y(!0),s(d,null,l(ie.value,n=>(y(),e(x,{key:`acol-${n.key}`,label:n.label,"min-width":`120`,"show-overflow-tooltip":``},{default:b(({row:e})=>[t(g(e.schema_display?.[n.key]||`—`),1)]),_:2},1032,[`label`]))),128)),i(x,{label:`报名时间`,"min-width":`160`},{default:b(({row:e})=>[t(g(n(T)(e.registered_at)),1)]),_:1}),i(x,{label:`核销状态`,width:`100`},{default:b(({row:e})=>[t(g(e.checked_in?`已到场`:`未到场`),1)]),_:1}),i(x,{label:`到场时间`,"min-width":`160`},{default:b(({row:e})=>[t(g(e.checked_in_at?n(T)(e.checked_in_at):`—`),1)]),_:1}),i(x,{label:`操作`,width:`90`,fixed:`right`,align:`right`},{default:b(({row:n})=>[n.checked_in?(y(),s(`span`,F,`已核销`)):(y(),e(_,{key:0,link:``,type:`primary`,size:`small`,loading:z.value===n.id,onClick:e=>ce(n)},{default:b(()=>[...c[11]||=[t(` 核销 `,-1)]]),_:1},8,[`loading`,`onClick`]))]),_:1})]),_:1},8,[`data`]),o(`div`,I,[i(C,{"current-page":U.value,"onUpdate:currentPage":c[7]||=e=>U.value=e,"page-size":W.value,"onUpdate:pageSize":c[8]||=e=>W.value=e,layout:`total, prev, pager, next`,total:G.value,onCurrentChange:Q},null,8,[`current-page`,`page-size`,`total`])])])),[[w,L.value]])}}}),[[`__scopeId`,`data-v-aead4c39`]]);export{L as t}; |