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.

2 lines
5.3 KiB

import{d as a,e,f as l,o as t,N as s,O as u,P as n,j as i,k as r,m as c,n as o,p as d,D as v,E as f,I as _,G as p,t as m,v as g,x as y,y as k,F as b,z as h,C as j,J as w,H as C,B as P,K as N}from"./index-3ajXjQcH.js";import{g as x,b as A}from"./content.Cex6TkAb.js";import{a as F}from"./venueThemeColors.DRxjaxXI.js";import{f as V,a as $,i as z,c as I}from"./activity.BNBJ_f9a.js";import{P as q}from"./poster.DLiVsUXX.js";import{s as B}from"./search.BJnl3YRK.js";import{d as D}from"./down.BCKq9i8s.js";import{_ as E}from"./_plugin-vue_export-helper.BCo6x5W8.js";const G=E(a({__name:"index",setup(a){const E=e([]),G=e(null),H=e(1),J=e(0),K=e(!1),O=e(!1),T=e(""),U=e(""),L=[{value:"",label:"全部状态"},{value:"ongoing",label:"进行中"},{value:"not_started",label:"未开始"},{value:"ended",label:"已结束"}],M=e(0),Q=l(()=>J.value>0&&H.value<J.value);async function R(a,e){if(!K.value||e){if(e){if(O.value||!Q.value)return;O.value=!0}else K.value=!0;try{const l=await A({page:a,page_size:10,keyword:T.value.trim()||void 0,schedule_status:U.value||void 0,include_ticket_grab:!0}),{list:t,lastPage:s}=function(a){if(!a||"object"!=typeof a)return{list:[],lastPage:1};const e=a;if(Array.isArray(e))return{list:e,lastPage:1};const l=e.data;if(Array.isArray(l))return{list:l,lastPage:Number(e.last_page??1)||1};if(l&&"object"==typeof l){const a=l;if(Array.isArray(a.data)){const l=Number(a.last_page??e.last_page??1)||1;return{list:a.data,lastPage:l}}}return{list:[],lastPage:1}}(l);J.value=s,E.value=e?[...E.value,...t]:t,H.value=a}catch{e||(E.value=[])}finally{K.value=!1,O.value=!1}}}async function S(){H.value=1,await R(1,!1)}function W(){S()}function X(a){var e;const l=Number((null==(e=null==a?void 0:a.detail)?void 0:e.value)??0);M.value=Number.isFinite(l)?l:0;const t=L[M.value];U.value=(null==t?void 0:t.value)??"",S()}function Y(a){const e=Number(null==a?void 0:a.id);e&&("ticket_grab"!==a.list_kind?N({url:`/pages/activity/detail?id=${e}`}):N({url:`/pages/ticket-grab/detail?id=${e}`}))}function Z(a){const e=null==a?void 0:a.schedule_status;return"not_started"===e||"ongoing"===e||"ended"===e?e:I(null==a?void 0:a.start_at,null==a?void 0:a.end_at)}function aa(a){return $(Z(a))}return t(()=>{!async function(){try{G.value=await x()}catch{G.value=null}H.value=1,await R(1,!1)}()}),s(()=>{K.value||O.value||!Q.value||R(H.value+1,!0)}),u(async()=>{try{await S()}finally{n()}}),(a,e)=>{const l=v,t=_,s=c,u=m,n=p;return o(),i(s,{class:"page"},{default:r(()=>[d(s,{class:"toolbar"},{default:r(()=>[d(s,{class:"toolbar-row"},{default:r(()=>[d(s,{class:"search-wrap"},{default:r(()=>[d(l,{class:"search-icon-img",src:f(B),mode:"aspectFit"},null,8,["src"]),d(t,{modelValue:T.value,"onUpdate:modelValue":e[0]||(e[0]=a=>T.value=a),class:"search-input",placeholder:"搜索活动标题","placeholder-class":"ph","confirm-type":"search",onConfirm:W},null,8,["modelValue"])]),_:1}),d(n,{mode:"selector",range:L,"range-key":"label",value:M.value,class:"status-picker",onChange:X},{default:r(()=>[d(s,{class:"status-pick"},{default:r(()=>[d(u,{class:"status-pick-text"},{default:r(()=>{var a;return[g(y((null==(a=L[M.value])?void 0:a.label)||"全部"),1)]}),_:1}),d(l,{class:"status-pick-arrow",src:f(D),mode:"aspectFit"},null,8,["src"])]),_:1})]),_:1},8,["value"])]),_:1})]),_:1}),d(s,{class:"list-inner"},{default:r(()=>[(o(!0),k(b,null,h(E.value,a=>(o(),i(s,{key:(a.list_kind||"activity")+"-"+a.id,class:"item",onClick:e=>Y(a)},{default:r(()=>[d(s,{class:"poster-wrap"},{default:r(()=>{return[d(l,{class:"poster",src:a.image||f(q),mode:"aspectFill"},null,8,["src"]),d(s,{class:j(["status",(e=a,`st-${Z(e)}`)])},{default:r(()=>[g(y(aa(a)),1)]),_:2},1032,["class"]),"ticket_grab"===a.list_kind&&a.can_grab_today?(o(),i(s,{key:0,class:"grab-badge"},{default:r(()=>[g("抢票")]),_:1})):w("",!0)];var e}),_:2},1024),d(s,{class:"body"},{default:r(()=>{var e;return[d(s,{class:"title"},{default:r(()=>[g(y(a.title),1)]),_:2},1024),(null==(e=a.tags)?void 0:e.length)?(o(),i(s,{key:0,class:"act-tags"},{default:r(()=>[(o(!0),k(b,null,h((a.tags||[]).slice(0,4),(e,l)=>{var t;return o(),i(u,{key:"t-"+a.id+"-"+l,class:"act-tag-chip",style:C(f(F)(l,null==(t=G.value)?void 0:t.venue_type))},{default:r(()=>[g(y(e),1)]),_:2},1032,["style"])}),128))]),_:2},1024)):w("",!0),d(s,{class:"meta"},{default:r(()=>[g(y(f(V)(a.start_at,a.end_at)),1)]),_:2},1024),d(s,{class:"venue-action-row"},{default:r(()=>{return["ticket_grab"===a.list_kind?(o(),i(u,{key:0,class:"venue-inline"},{default:r(()=>[g(y(Number(a.venue_count)||0)+"家场馆可预约",1)]),_:2},1024)):(o(),i(u,{key:1,class:"venue-inline"},{default:r(()=>[g(y(a.venue_name||"场馆待定"),1)]),_:2},1024)),(e=a,z(null==e?void 0:e.end_at)||!0!==(null==e?void 0:e.is_bookable)?w("",!0):(o(),i(s,{key:2,class:"btn",onClick:P(e=>Y(a),["stop"])},{default:r(()=>[g("立即预约")]),_:2},1032,["onClick"])))];var e}),_:2},1024)]}),_:2},1024)]),_:2},1032,["onClick"]))),128)),K.value&&!E.value.length?(o(),i(s,{key:0,class:"hint"},{default:r(()=>[g("加载中…")]),_:1})):w("",!0),O.value?(o(),i(s,{key:1,class:"hint"},{default:r(()=>[g("加载更多…")]),_:1})):w("",!0),J.value>0&&!Q.value&&E.value.length&&!K.value?(o(),i(s,{key:2,class:"hint muted"},{default:r(()=>[g("没有更多了")]),_:1})):w("",!0),K.value||E.value.length?w("",!0):(o(),i(s,{key:3,class:"hint muted"},{default:r(()=>[g("暂无活动")]),_:1}))]),_:1})]),_:1})}}}),[["__scopeId","data-v-1fd3a459"]]);export{G as default};