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.2 KiB

import{d as e,e as l,f as a,o as t,j as u,k as s,q as r,n,t as i,u as v,I as c,H as o,J as d,x as m,y as p,z as f,B as _,F as b,C as g,G as y,K as k}from"./index-DcvbZGSt.js";import{g as h,a as j}from"./content.Cgu-vdzk.js";import{s as x}from"./search.BJnl3YRK.js";import{d as F,F as C}from"./FilterPickerSheet.Cuibsxqz.js";import{h as w,f as N}from"./geo.BHVFNtB7.js";import{_ as V}from"./_plugin-vue_export-helper.BCo6x5W8.js";const S=V(e({__name:"index",setup(e){const V=l([]),S=l(null),$=l(""),A=l("全部区域"),I=l(""),P=l("全部分类"),U=l(""),q=l("预约类型"),z=l(""),B=l("收费类型"),G=l(""),H=l(null),J=l(!1),K=l(""),D=l([]),E=l(""),L=l(null),M=a(()=>{var e;return[{label:"全部区域",value:""},...((null==(e=S.value)?void 0:e.district)??[]).map(e=>({label:e.label,value:e.value}))]}),O=a(()=>{var e;return[{label:"全部分类",value:""},...((null==(e=S.value)?void 0:e.venue_type)??[]).map(e=>({label:e.label,value:e.value}))]}),Q=a(()=>{var e;return[{label:"预约类型",value:""},...((null==(e=S.value)?void 0:e.venue_appointment_type)??[]).map(e=>({label:e.label,value:e.value}))]}),R=a(()=>{var e;return[{label:"收费类型",value:""},...((null==(e=S.value)?void 0:e.ticket_type)??[]).map(e=>({label:e.label,value:e.value}))]});const T=a(()=>{const e=$.value.trim();return V.value.filter(l=>{if(I.value&&(l.district||"")!==I.value)return!1;if(U.value&&!function(e){const l=null==e?void 0:e.venue_types;return Array.isArray(l)&&l.length?l.map(String):(null==e?void 0:e.venue_type)?[String(e.venue_type)]:[]}(l).includes(U.value))return!1;if(z.value&&(l.appointment_type||"")!==z.value)return!1;if("free"===G.value&&"free"!==(l.ticket_type||""))return!1;if("paid"===G.value&&"paid"!==(l.ticket_type||""))return!1;if(e){if(!`${l.name||""}${l.address||""}`.includes(e))return!1}return!0})}),W=a(()=>{const e=[...T.value],l=H.value;return l?e.sort((e,a)=>{const t=Number(e.lat),u=Number(e.lng),s=Number(a.lat),r=Number(a.lng);if(!t||!u)return 1;if(!s||!r)return-1;return w(l.lat,l.lng,t,u)-w(l.lat,l.lng,s,r)}):e});function X(e){L.value=e,"district"===e?(K.value="选择区域",D.value=M.value,E.value=I.value):"type"===e?(K.value="选择场馆分类",D.value=O.value,E.value=U.value):"appointment"===e?(K.value="选择预约类型",D.value=Q.value,E.value=z.value):(K.value="选择收费类型",D.value=R.value,E.value=G.value),J.value=!0}function Y(e){const l=L.value;"district"===l?(A.value=e.label,I.value=e.value):"type"===l?(P.value=e.label,U.value=e.value):"appointment"===l?(q.value=e.label,z.value=e.value):"ticket"===l&&(B.value=e.label,G.value=e.value)}function Z(e){const l=H.value;if(!l)return"距离 --";const a=Number(e.lat),t=Number(e.lng);if(!a||!t)return"距离 --";const u=w(l.lat,l.lng,a,t);return`距您 ${N(u)}`}return t(()=>{!async function(){const[e,l]=await Promise.all([h(),j()]);S.value=e,V.value=l||[]}(),r({type:"gcj02",success:e=>{H.value={lat:e.latitude,lng:e.longitude}},fail:()=>{H.value=null}})}),(e,l)=>{const a=c,t=o,r=n,h=m;return i(),u(r,{class:"page"},{default:s(()=>[v(r,{class:"map-section"},{default:s(()=>[v(r,{class:"toolbar"},{default:s(()=>[v(r,{class:"search-wrap"},{default:s(()=>[v(a,{modelValue:$.value,"onUpdate:modelValue":l[0]||(l[0]=e=>$.value=e),class:"search-input",placeholder:"请输入你要搜索的内容","placeholder-class":"ph"},null,8,["modelValue"]),v(t,{class:"search-icon-img",src:d(x),mode:"aspectFit"},null,8,["src"])]),_:1})]),_:1}),v(r,{class:"filters"},{default:s(()=>[v(r,{class:"f-item",onClick:l[1]||(l[1]=e=>X("district"))},{default:s(()=>[v(h,{class:"f-item-text"},{default:s(()=>[p(f(A.value),1)]),_:1}),v(t,{class:"f-item-arrow",src:d(F),mode:"aspectFit"},null,8,["src"])]),_:1}),v(r,{class:"f-item",onClick:l[2]||(l[2]=e=>X("type"))},{default:s(()=>[v(h,{class:"f-item-text"},{default:s(()=>[p(f(P.value),1)]),_:1}),v(t,{class:"f-item-arrow",src:d(F),mode:"aspectFit"},null,8,["src"])]),_:1}),v(r,{class:"f-item",onClick:l[3]||(l[3]=e=>X("appointment"))},{default:s(()=>[v(h,{class:"f-item-text"},{default:s(()=>[p(f(q.value),1)]),_:1}),v(t,{class:"f-item-arrow",src:d(F),mode:"aspectFit"},null,8,["src"])]),_:1}),v(r,{class:"f-item",onClick:l[4]||(l[4]=e=>X("ticket"))},{default:s(()=>[v(h,{class:"f-item-text"},{default:s(()=>[p(f(B.value),1)]),_:1}),v(t,{class:"f-item-arrow",src:d(F),mode:"aspectFit"},null,8,["src"])]),_:1})]),_:1})]),_:1}),v(r,{class:"list"},{default:s(()=>[(i(!0),_(b,null,g(W.value,e=>(i(),u(r,{key:e.id,class:"item",onClick:l=>{return a=e.id,void k({url:`/pages/venue/detail?id=${a}`});var a}},{default:s(()=>[e.cover_image?(i(),u(t,{key:0,class:"img",src:e.cover_image,mode:"aspectFill"},null,8,["src"])):(i(),u(r,{key:1,class:"img placeholder"})),v(r,{class:"body"},{default:s(()=>[v(r,{class:"name"},{default:s(()=>[p(f(e.name),1)]),_:2},1024),v(r,{class:"addr"},{default:s(()=>[p(f(e.address||"-"),1)]),_:2},1024),v(r,{class:"dist"},{default:s(()=>[p(f(Z(e)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,["onClick"]))),128)),W.value.length?y("",!0):(i(),u(r,{key:0,class:"empty-tip"},{default:s(()=>[p("暂无符合条件的场馆")]),_:1}))]),_:1}),v(C,{modelValue:J.value,"onUpdate:modelValue":l[5]||(l[5]=e=>J.value=e),title:K.value,options:D.value,"selected-value":E.value,onSelect:Y},null,8,["modelValue","title","options","selected-value"])]),_:1})}}}),[["__scopeId","data-v-42478881"]]);export{S as default};