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

import{d as a,r as t,c as e,o as l,N as s,O as n,P as u,b as i,e as r,p as c,v as o,t as d,u as v,A as f,F as _,B as y,E as g,y as m,z as p,x as h,H as k,G as b,C as w,K as M}from"./index-BznAv2H5.js";import{b as P}from"./content.IclVJQGc.js";import{f as j,i as A}from"./activity.k1jR9V-B.js";import{_ as N}from"./_plugin-vue_export-helper.BCo6x5W8.js";const x=N(a({__name:"index",setup(a){const N=t([]),x=t(null),F=t(1),C=t(0),D=t(!1),T=t(!1),q=e(()=>C.value>0&&F.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 P({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,N.value=t?[...N.value,...l]:l,F.value=a}catch{t||(N.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 E(a){if(!x.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))}(x.value.lat,x.value.lng,t,e);return Number.isFinite(l)?`距离 ${l.toFixed(1)}km`:"距离 --"}return l(()=>{!async function(){F.value=1,await z(1,!1)}(),async function(){try{const a=await new Promise((a,t)=>{c({type:"gcj02",success:a,fail:t})});x.value={lat:a.latitude,lng:a.longitude}}catch{x.value=null}}()}),s(()=>{D.value||T.value||!q.value||z(F.value+1,!0)}),n(async()=>{try{await async function(){F.value=1,await z(1,!1)}()}finally{u()}}),(a,t)=>{const e=g,l=o,s=h;return d(),i(l,{class:"page"},{default:r(()=>[v(l,{class:"list-inner"},{default:r(()=>[(d(!0),f(_,null,y(N.value,a=>(d(),i(l,{key:a.id,class:"item",onClick:t=>I(a.id)},{default:r(()=>[v(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"})),v(l,{class:"status"},{default:r(()=>[m(p($(a)),1)]),_:2},1024),v(l,{class:"joined"},{default:r(()=>[m("已报名 "+p(a.registered_count||0),1)]),_:2},1024)]),_:2},1024),v(l,{class:"body"},{default:r(()=>{var t;return[v(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:"chip-row"},{default:r(()=>[(d(!0),f(_,null,y(a.tags,(t,e)=>(d(),i(s,{key:"t-"+a.id+"-"+e,class:"chip"},{default:r(()=>[m(p(t),1)]),_:2},1024))),128))]),_:2},1024)):k("",!0),v(l,{class:"meta"},{default:r(()=>[m(p(b(j)(a.start_at,a.end_at)),1)]),_:2},1024),v(l,{class:"meta venue-line"},{default:r(()=>[m(p(a.venue_name||"场馆待定"),1)]),_:2},1024),v(l,{class:"action-row"},{default:r(()=>{return[v(s,{class:"meta distance"},{default:r(()=>[m(p(E(a)),1)]),_:2},1024),(t=a,A(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&&!N.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||!N.value.length||D.value?k("",!0):(d(),i(l,{key:2,class:"hint muted"},{default:r(()=>[m("没有更多了")]),_:1})),D.value||N.value.length?k("",!0):(d(),i(l,{key:3,class:"hint muted"},{default:r(()=>[m("暂无活动")]),_:1}))]),_:1})]),_:1})}}}),[["__scopeId","data-v-437981e0"]]);export{x as default};