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
4.2 KiB
2 lines
4.2 KiB
import{d as a,e as t,f as e,o as l,R as s,T as n,U as u,j as i,k as r,q as c,n as o,t as d,u as f,B as v,F as _,C as g,H as y,y as m,z as p,x as h,G as k,J as b,D as w,K as M}from"./index-BqJ4W6ZW.js";import{b as j}from"./content.B4VyUnMP.js";import{f as P,i as x}from"./activity.k1jR9V-B.js";import{_ as A}from"./_plugin-vue_export-helper.BCo6x5W8.js";const F=A(a({__name:"index",setup(a){const A=t([]),F=t(null),N=t(1),C=t(0),D=t(!1),T=t(!1),q=e(()=>C.value>0&&N.value<C.value);async function z(a,t){if(!D.value||t){if(t){if(T.value||!q.value)return;T.value=!0}else D.value=!0;try{const e=await j({page:a,page_size:10}),{list:l,lastPage:s}=function(a){if(!a||"object"!=typeof a)return{list:[],lastPage:1};const t=a;if(Array.isArray(t))return{list:t,lastPage:1};const e=t.data;if(Array.isArray(e))return{list:e,lastPage:Number(t.last_page??1)||1};if(e&&"object"==typeof e){const a=e;if(Array.isArray(a.data)){const e=Number(a.last_page??t.last_page??1)||1;return{list:a.data,lastPage:e}}}return{list:[],lastPage:1}}(e);C.value=s,A.value=t?[...A.value,...l]:l,N.value=a}catch{t||(A.value=[])}finally{D.value=!1,T.value=!1}}}function I(a){M({url:`/pages/activity/detail?id=${a}`})}function $(a){if(!(null==a?void 0:a.start_at))return"活动进行中";const t=(new Date).getTime(),e=new Date(a.start_at).getTime(),l=a.end_at?new Date(a.end_at).getTime():e;return Number.isFinite(l)&&l<t?"活动已结束":e>t?"活动即将开始":"活动进行中"}function B(a){const t=Number(a);return Number.isFinite(t)?t:0}function G(a){if(!F.value)return"距离 --";const t=B((null==a?void 0:a.lat)||(null==a?void 0:a.venue_lat)),e=B((null==a?void 0:a.lng)||(null==a?void 0:a.venue_lng));if(!t||!e)return"距离 --";const l=function(a,t,e,l){const s=a=>a*Math.PI/180,n=s(e-a),u=s(l-t),i=Math.sin(n/2)*Math.sin(n/2)+Math.cos(s(a))*Math.cos(s(e))*Math.sin(u/2)*Math.sin(u/2);return 12742*Math.atan2(Math.sqrt(i),Math.sqrt(1-i))}(F.value.lat,F.value.lng,t,e);return Number.isFinite(l)?`距离 ${l.toFixed(1)}km`:"距离 --"}return l(()=>{!async function(){N.value=1,await z(1,!1)}(),async function(){try{const a=await new Promise((a,t)=>{c({type:"gcj02",success:a,fail:t})});F.value={lat:a.latitude,lng:a.longitude}}catch{F.value=null}}()}),s(()=>{D.value||T.value||!q.value||z(N.value+1,!0)}),n(async()=>{try{await async function(){N.value=1,await z(1,!1)}()}finally{u()}}),(a,t)=>{const e=y,l=o,s=h;return d(),i(l,{class:"page"},{default:r(()=>[f(l,{class:"list-inner"},{default:r(()=>[(d(!0),v(_,null,g(A.value,a=>(d(),i(l,{key:a.id,class:"item",onClick:t=>I(a.id)},{default:r(()=>[f(l,{class:"poster-wrap"},{default:r(()=>[a.image?(d(),i(e,{key:0,class:"poster",src:a.image,mode:"aspectFill"},null,8,["src"])):(d(),i(l,{key:1,class:"poster placeholder"})),f(l,{class:"status"},{default:r(()=>[m(p($(a)),1)]),_:2},1024),f(l,{class:"joined"},{default:r(()=>[m("已报名 "+p(a.registered_count||0),1)]),_:2},1024)]),_:2},1024),f(l,{class:"body"},{default:r(()=>{var t;return[f(l,{class:"title"},{default:r(()=>[m(p(a.title),1)]),_:2},1024),(null==(t=a.tags)?void 0:t.length)?(d(),i(l,{key:0,class:"act-tags"},{default:r(()=>[(d(!0),v(_,null,g(a.tags,(t,e)=>(d(),i(s,{key:"t-"+a.id+"-"+e,class:"act-tag-chip"},{default:r(()=>[m(p(t),1)]),_:2},1024))),128))]),_:2},1024)):k("",!0),f(l,{class:"meta"},{default:r(()=>[m(p(b(P)(a.start_at,a.end_at)),1)]),_:2},1024),f(l,{class:"meta venue-line"},{default:r(()=>[m(p(a.venue_name||"场馆待定"),1)]),_:2},1024),f(l,{class:"action-row"},{default:r(()=>{return[f(s,{class:"meta distance"},{default:r(()=>[m(p(G(a)),1)]),_:2},1024),(t=a,x(null==t?void 0:t.end_at)?k("",!0):(d(),i(l,{key:0,class:"btn",onClick:w(t=>I(a.id),["stop"])},{default:r(()=>[m("立即报名")]),_:2},1032,["onClick"])))];var t}),_:2},1024)]}),_:2},1024)]),_:2},1032,["onClick"]))),128)),D.value&&!A.value.length?(d(),i(l,{key:0,class:"hint"},{default:r(()=>[m("加载中…")]),_:1})):k("",!0),T.value?(d(),i(l,{key:1,class:"hint"},{default:r(()=>[m("加载更多…")]),_:1})):k("",!0),q.value||!A.value.length||D.value?k("",!0):(d(),i(l,{key:2,class:"hint muted"},{default:r(()=>[m("没有更多了")]),_:1})),D.value||A.value.length?k("",!0):(d(),i(l,{key:3,class:"hint muted"},{default:r(()=>[m("暂无活动")]),_:1}))]),_:1})]),_:1})}}}),[["__scopeId","data-v-8813cf35"]]);export{F as default};
|