|
|
import{h as e,d as t,r as a,c as l,w as s,o as u,a as n,b as c,s as i,e as o,f as r,S as d,g as f,i as v,j as _,k as p,l as m,m as y,n as g,p as h,q as k,t as b,u as w,v as A,F as $,x,y as C,z as S,I,A as E,B as F,M as P,C as j,D as B,E as M,G as J}from"./index-BB-pivgX.js";import{s as L}from"./search.BJnl3YRK.js";import{h as R,f as U}from"./geo.BHVFNtB7.js";import{_ as T}from"./_plugin-vue_export-helper.BCo6x5W8.js";const N="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAKCAYAAABSfLWiAAAAyklEQVQokY3SPUpDQRiF4cdLXEDAIm1a3YGkDWKWIohgkS1YpFBQIdlBFmGliAiKW3ADYjRR8T98MIHLJRPuC1PMmcPL/K1tXB5tYRNv+MIUP3jBH57xi1cZGnjEEJ1cqcQ3ZvjEexp7RdpBD9c1JOtoooU2znBVpMVpEt3UEAX/2McoJkVpIc68i9saggOcL4KiUojL3MHdCskhTstBVbIQdXGfEZxUw2WSYJJED6Wsj+Nl5XjiHPE/QnSBMQa54ipJ8IRtfGQbmANeKSt76556cgAAAABJRU5ErkJggg==",Q=new Map,V="#05c9ac";function D(e){const t=function(e){if(!e||"string"!=typeof e)return V;let t=e.trim();if(t.startsWith("#")||(t=`#${t}`),/^#[0-9A-Fa-f]{6}$/.test(t))return t;if(/^#[0-9A-Fa-f]{3}$/.test(t)){const e=t[1],a=t[2],l=t[3];return`#${e}${e}${a}${a}${l}${l}`}return V}(e||"");if(Q.has(t))return Q.get(t);if("undefined"==typeof document)return Q.set(t,""),"";const a=document.createElement("canvas");a.width=48,a.height=56;const l=a.getContext("2d");if(!l)return Q.set(t,""),"";const s=24;l.clearRect(0,0,48,56),l.beginPath(),l.arc(s,18,14,0,2*Math.PI),l.fillStyle="#ffffff",l.fill(),l.beginPath(),l.arc(s,18,12,0,2*Math.PI),l.fillStyle=t,l.fill(),l.beginPath(),l.moveTo(16,28),l.lineTo(s,50),l.lineTo(32,28),l.closePath(),l.fillStyle=t,l.fill(),l.beginPath(),l.arc(21,15,3,0,2*Math.PI),l.fillStyle="rgba(255,255,255,0.35)",l.fill();const u=a.toDataURL("image/png");return Q.set(t,u),u}const G="szkp_loc_consent",K=T(t({__name:"index",setup(t){const T=a(!1),Q=a(null),V=a({latitude:31.2989,longitude:120.5853}),K=a("map"),W=a(""),Y=a("全部区域"),X=a(""),H=a("全部类型"),z=a(""),O=a("全部"),Z=a(""),q=a(null),ee=a(null),te={science_venue:"科技场馆类",education_research:"教育科研类",agriculture:"“三农”类",enterprise:"企业类",nature_resource:"自然资源类",other:"其他类"},ae={free:"免费",paid:"收费"};function le(e){return e?ae[e]||e:""}function se(e){try{"undefined"!=typeof window&&window.sessionStorage&&window.sessionStorage.setItem(G,e)}catch{}try{m(G,e)}catch{}}const ue=l(()=>{var e,t;return((null==(t=null==(e=Q.value)?void 0:e.stats)?void 0:t.reservation_total)??0).toLocaleString()}),ne=l(()=>{var e;const t=(null==(e=Q.value)?void 0:e.top_live_venues)??[],a=[];for(let l=0;l<3;l++){const e=t[l];e?a.push({id:e.id,name:e.name,people_count:e.people_count,empty:!1}):a.push({id:0,name:"",people_count:0,empty:!0})}return a}),ce=l(()=>{var e;const t=new Set;return((null==(e=Q.value)?void 0:e.map_venues)??[]).forEach(e=>{e.district&&t.add(String(e.district))}),["全部区域",...Array.from(t)]}),ie=l(()=>{var e;const t=new Set;((null==(e=Q.value)?void 0:e.map_venues)??[]).forEach(e=>{e.venue_type&&t.add(String(e.venue_type))});const a=[{label:"全部类型",value:""}];return Array.from(t).forEach(e=>{a.push({label:te[e]||e,value:e})}),a}),oe=[{label:"全部",value:""},{label:"免费",value:"free"},{label:"收费",value:"paid"}],re=l(()=>{var e;const t=W.value.trim();return((null==(e=Q.value)?void 0:e.map_venues)??[]).filter(e=>{if(X.value&&(e.district||"")!==X.value)return!1;if(z.value&&(e.venue_type||"")!==z.value)return!1;if("free"===Z.value&&"free"!==(e.ticket_type||""))return!1;if("paid"===Z.value&&"paid"!==(e.ticket_type||""))return!1;if(t){if(!`${e.name||""}${e.address||""}`.includes(t))return!1}return!0})}),de=l(()=>{const e=[...re.value],t=q.value;return t?e.sort((e,a)=>R(t.lat,t.lng,e.lat,e.lng)-R(t.lat,t.lng,a.lat,a.lng)):e}),fe=l(()=>null==ee.value?null:re.value.find(e=>e.id===ee.value)??null),ve=l(()=>{const e=fe.value,t=q.value;if(!e||!t)return"定位后可显示距离";const a=R(t.lat,t.lng,e.lat,e.lng);return`距您 ${U(a)}`});s(re,e=>{null==ee.value||e.some(e=>e.id===ee.value)||(ee.value=null)}),s(K,e=>{"list"===e&&(ee.value=null)});const _e=l(()=>re.value.map(e=>{const t=D(e.venue_type_color);return{id:e.id,latitude:e.lat,longitude:e.lng,width:32,height:38,iconPath:t||void 0,anchor:{x:.5,y:1}}}));function pe(e){const t=q.value;if(!t)return"距离 --";const a=R(t.lat,t.lng,e.lat,e.lng);return`距您 ${U(a)}`}function me(e){if("district"===e)B({itemList:ce.value,success:e=>{const t=ce.value[e.tapIndex];Y.value=t,X.value="全部区域"===t?"":t}});else if("type"===e){const e=ie.value;B({itemList:e.map(e=>e.label),success:t=>{const a=e[t.tapIndex];H.value=a.label,z.value=a.value}})}else B({itemList:oe.map(e=>e.label),success:e=>{const t=oe[e.tapIndex];O.value=t.label,Z.value=t.value}})}let ye=!1;function ge(e){var t;const a=null==(t=null==e?void 0:e.detail)?void 0:t.markerId;null!=a&&(ee.value=Number(a),ye=!0,setTimeout(()=>{ye=!1},400))}function he(){ye||(ee.value=null)}function ke(){ee.value=null}function be(e){e&&M({url:`/pages/venue/detail?id=${e}`})}function we(){M({url:"/pages/stats/index"})}function Ae(){J({url:"/pages/activity/index"})}function $e(){J({url:"/pages/discover/index"})}function xe(e,t){const a=e=>{if(!e)return null;const t=e.slice(0,10).split("-").map(Number);if(3!==t.length)return null;const[a,l,s]=t;return Number.isFinite(a)&&Number.isFinite(l)&&Number.isFinite(s)?{y:a,m:l,d:s}:null},l=a(e),s=a(t);return l||s?l&&!s?`${l.y}年${l.m}月${l.d}日`:!l&&s?`${s.y}年${s.m}月${s.d}日`:l&&s?l.y===s.y?`${l.y}年${l.m}月${l.d}日至${s.m}月${s.d}日`:`${l.y}年${l.m}月${l.d}日至${s.y}年${s.m}月${s.d}日`:"日期待定":"日期待定"}function Ce(e){return 0===(e.registered_count??0)&&!0===e.is_bookable}function Se(e){const t=e.registered_count??0;return Ce(e)?"可预约":t>0?`${t}人已预约`:"敬请期待"}function Ie(){var e;if(q.value)return void(V.value={latitude:q.value.lat,longitude:q.value.lng});const t=(null==(e=Q.value)?void 0:e.map_venues)??[];t.length?V.value={latitude:t[0].lat,longitude:t[0].lng}:V.value={latitude:31.2989,longitude:120.5853}}async function Ee(){T.value=!0;try{const t=await e.get("/h5/home",{},{withAuth:!1});Q.value=t,Ie(),await i({title:"苏州科普地图",desc:"热门活动、研学线路与场馆导览"}).catch(()=>{})}catch(t){o({title:(null==t?void 0:t.message)||"加载首页失败",icon:"none"})}finally{T.value=!1}}async function Fe(){if(v())try{const e=await _();return q.value={lat:e.lat,lng:e.lng},void Ie()}catch{}p({type:"gcj02",success:e=>{q.value={lat:e.latitude,lng:e.longitude},Ie()},fail:()=>{q.value=null,Ie(),o({title:"定位失败,请检查系统权限或公众号 JS 安全域名",icon:"none",duration:2800})}})}function Pe(){return new Promise(e=>{const t=function(){try{if("undefined"!=typeof window&&window.sessionStorage){const e=window.sessionStorage.getItem(G);if("granted"===e||"denied"===e)return e}}catch{}try{const e=f(G);if("granted"===e||"denied"===e)return e}catch{}return null}();"denied"!==t?"granted"!==t?r({title:"需要获取您的位置",content:"用于展示「距您」距离、列表排序与地图中心。拒绝后仍可浏览场馆,但无法显示距离。\n\n在微信中使用时,请确保本页域名已加入公众号「JS 接口安全域名」,否则无法调起定位。",confirmText:"允许",cancelText:"暂不",success:t=>{t.confirm?(se("granted"),Fe().finally(()=>e())):(se("denied"),e())}}):Fe().finally(()=>e()):e()})}return u(async()=>{await Ee(),await Pe()}),(e,t)=>{const a=h,l=k,s=I,u=E,i=P,o=d;return y(),n(o,{"scroll-y":"",class:"page"},{default:c(()=>[g(a,{class:"hero"},{default:c(()=>[g(a,{class:"hero-brand"}),g(a,{class:"hero-content"},{default:c(()=>[g(a,{class:"stat-card"},{default:c(()=>[g(a,{class:"stat-main"},{default:c(()=>[g(a,{class:"stat-left"},{default:c(()=>[g(l,{class:"stat-label"},{default:c(()=>[b("全市实时总人数")]),_:1}),g(l,{class:"stat-num"},{default:c(()=>[b(w(ue.value)+" 人",1)]),_:1}),g(l,{class:"stat-desc"},{default:c(()=>[b("正在参观科普场馆")]),_:1})]),_:1}),g(a,{class:"stat-right"},{default:c(()=>[g(a,{class:"live-list"},{default:c(()=>[(y(!0),A($,null,x(ne.value,(e,t)=>(y(),n(a,{key:"live-"+t,class:S(["live-venue-row",{"is-empty":e.empty}]),onClick:C(t=>{var a;(a=e).empty||be(a.id)},["stop"])},{default:c(()=>[g(a,{class:"live-row-one"},{default:c(()=>[g(l,{class:"live-top"},{default:c(()=>[b("Top "+w(t+1),1)]),_:2},1024),g(l,{class:"live-name"},{default:c(()=>[b(w(e.empty?"—":e.name),1)]),_:2},1024),g(l,{class:"live-count"},{default:c(()=>[b(w(e.empty?"—":e.people_count+" 人"),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,["class","onClick"]))),128))]),_:1}),g(a,{class:"stat-foot",onClick:C(we,["stop"])},{default:c(()=>[g(l,{class:"stat-foot-link"},{default:c(()=>[b("客流量统计 >")]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),g(a,{class:"map-section"},{default:c(()=>[g(a,{class:"toolbar"},{default:c(()=>[g(a,{class:"tabs"},{default:c(()=>[g(l,{class:S(["tab",{on:"map"===K.value}]),onClick:t[0]||(t[0]=e=>K.value="map")},{default:c(()=>[b("地图")]),_:1},8,["class"]),g(l,{class:S(["tab",{on:"list"===K.value}]),onClick:t[1]||(t[1]=e=>K.value="list")},{default:c(()=>[b("列表")]),_:1},8,["class"])]),_:1}),g(a,{class:"search-wrap"},{default:c(()=>[g(s,{modelValue:W.value,"onUpdate:modelValue":t[2]||(t[2]=e=>W.value=e),class:"search-input",placeholder:"请输入你要搜索的内容","placeholder-class":"ph"},null,8,["modelValue"]),g(u,{class:"search-icon-img",src:F(L),mode:"aspectFit"},null,8,["src"])]),_:1})]),_:1}),g(a,{class:"filters"},{default:c(()=>[g(a,{class:"f-item",onClick:t[3]||(t[3]=e=>me("district"))},{default:c(()=>[g(l,{class:"f-item-text"},{default:c(()=>[b(w(Y.value),1)]),_:1}),g(u,{class:"f-item-arrow",src:F(N),mode:"aspectFit"},null,8,["src"])]),_:1}),g(a,{class:"f-item",onClick:t[4]||(t[4]=e=>me("type"))},{default:c(()=>[g(l,{class:"f-item-text"},{default:c(()=>[b(w(H.value),1)]),_:1}),g(u,{class:"f-item-arrow",src:F(N),mode:"aspectFit"},null,8,["src"])]),_:1}),g(a,{class:"f-item",onClick:t[5]||(t[5]=e=>me("ticket"))},{default:c(()=>[g(l,{class:"f-item-text"},{default:c(()=>[b(w(O.value),1)]),_:1}),g(u,{class:"f-item-arrow",src:F(N),mode:"aspectFit"},null,8,["src"])]),_:1})]),_:1}),"map"===K.value?(y(),n(a,{key:0,class:"map-wrap"},{default:c(()=>[g(i,{class:"main-map",latitude:V.value.latitude,longitude:V.value.longitude,markers:_e.value,scale:11,"show-location":"",onMarkertap:ge,onTap:he},null,8,["latitude","longitude","markers"]),fe.value?(y(),n(a,{key:0,class:"venue-sheet",onClick:t[7]||(t[7]=C(()=>{},["stop"]))},{default:c(()=>[g(a,{class:"venue-sheet-inner"},{default:c(()=>[g(a,{class:"sheet-bar"}),g(a,{class:"sheet-row"},{default:c(()=>[fe.value.image?(y(),n(u,{key:0,class:"sheet-cover",src:fe.value.image,mode:"aspectFill"},null,8,["src"])):(y(),n(a,{key:1,class:"sheet-cover sheet-cover-ph"})),g(a,{class:"sheet-main"},{default:c(()=>[g(l,{class:"sheet-name"},{default:c(()=>[b(w(fe.value.name),1)]),_:1}),fe.value.venue_type||fe.value.ticket_type?(y(),n(a,{key:0,class:"sheet-meta"},{default:c(()=>[fe.value.venue_type?(y(),n(l,{key:0,class:"sheet-type"},{default:c(()=>[b(w(te[fe.value.venue_type]||fe.value.venue_type),1)]),_:1})):j("",!0),fe.value.venue_type&&fe.value.ticket_type?(y(),n(l,{key:1,class:"sheet-meta-sep"},{default:c(()=>[b("·")]),_:1})):j("",!0),fe.value.ticket_type?(y(),n(l,{key:2,class:S(["sheet-ticket","paid"===fe.value.ticket_type?"paid":"free"])},{default:c(()=>[b(w(le(fe.value.ticket_type)),1)]),_:1},8,["class"])):j("",!0)]),_:1})):j("",!0),g(l,{class:"sheet-addr"},{default:c(()=>[b(w(fe.value.address||"地址待定"),1)]),_:1}),g(l,{class:"sheet-dist"},{default:c(()=>[b(w(ve.value),1)]),_:1})]),_:1})]),_:1}),g(a,{class:"sheet-actions"},{default:c(()=>[g(a,{class:"sheet-btn ghost",onClick:ke},{default:c(()=>[b("关闭")]),_:1}),g(a,{class:"sheet-btn primary",onClick:t[6]||(t[6]=e=>be(fe.value.id))},{default:c(()=>[b("查看详情")]),_:1})]),_:1})]),_:1})]),_:1})):j("",!0)]),_:1})):(y(),n(o,{key:1,"scroll-y":"",class:"venue-list-scroll"},{default:c(()=>[(y(!0),A($,null,x(de.value,e=>(y(),n(a,{key:e.id,class:"venue-row",onClick:t=>be(e.id)},{default:c(()=>[e.image?(y(),n(u,{key:0,class:"venue-thumb",src:e.image,mode:"aspectFill"},null,8,["src"])):(y(),n(a,{key:1,class:"venue-thumb ph-img"})),g(a,{class:"venue-info"},{default:c(()=>[g(l,{class:"venue-name"},{default:c(()=>[b(w(e.name),1)]),_:2},1024),e.venue_type||e.ticket_type?(y(),n(a,{key:0,class:"venue-meta"},{default:c(()=>[e.venue_type?(y(),n(l,{key:0,class:"venue-type-pill"},{default:c(()=>[b(w(te[e.venue_type]||e.venue_type),1)]),_:2},1024)):j("",!0),e.ticket_type?(y(),n(l,{key:1,class:S(["venue-ticket-pill","paid"===e.ticket_type?"paid":"free"])},{default:c(()=>[b(w(le(e.ticket_type)),1)]),_:2},1032,["class"])):j("",!0)]),_:2},1024)):j("",!0),g(l,{class:"venue-addr"},{default:c(()=>[b(w(e.address||"-"),1)]),_:2},1024),g(l,{class:"venue-dist"},{default:c(()=>[b(w(pe(e)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,["onClick"]))),128)),de.value.length?j("",!0):(y(),n(a,{key:0,class:"empty-tip"},{default:c(()=>[b("暂无符合条件的场馆")]),_:1}))]),_:1}))]),_:1}),g(a,{class:"section"},{default:c(()=>[g(a,{class:"sec-head"},{default:c(()=>[g(a,{class:"sec-bar"}),g(l,{class:"sec-title"},{default:c(()=>[b("热门活动")]),_:1}),g(l,{class:"sec-more",onClick:Ae},{default:c(()=>[b("更多 >")]),_:1})]),_:1}),g(o,{"scroll-x":"",class:"act-scroll","show-scrollbar":!1,"enable-flex":!0},{default:c(()=>[g(a,{class:"act-scroll-row"},{default:c(()=>{var e;return[(y(!0),A($,null,x((null==(e=Q.value)?void 0:e.hot_activities)??[],e=>(y(),n(a,{key:e.id,class:"act-card",onClick:t=>{return a=e.id,void M({url:`/pages/activity/detail?id=${a}`});var a}},{default:c(()=>[g(a,{class:"act-img-wrap"},{default:c(()=>[e.image?(y(),n(u,{key:0,class:"act-img",src:e.image,mode:"aspectFill"},null,8,["src"])):(y(),n(a,{key:1,class:"act-img-ph"})),g(a,{class:S(["act-book-badge",{"is-bookable":Ce(e)}])},{default:c(()=>[g(l,{class:S(["act-book-text",{"is-bookable":Ce(e)}])},{default:c(()=>[b(w(Se(e)),1)]),_:2},1032,["class"])]),_:2},1032,["class"])]),_:2},1024),g(a,{class:"act-body"},{default:c(()=>[g(l,{class:"act-title"},{default:c(()=>[b(w(e.title),1)]),_:2},1024),g(a,{class:"act-tags"},{default:c(()=>[(y(!0),A($,null,x((e.tags||[]).slice(0,4),(t,a)=>(y(),n(l,{key:"tag-"+e.id+"-"+a,class:"act-tag-chip"},{default:c(()=>[b(w(t),1)]),_:2},1024))),128))]),_:2},1024),g(l,{class:"act-meta"},{default:c(()=>[b(w(xe(e.start_at,e.end_at)),1)]),_:2},1024),g(l,{class:"act-meta"},{default:c(()=>[b(w(e.venue_name||e.address||"苏州"),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,["onClick"]))),128))]}),_:1})]),_:1})]),_:1}),g(a,{class:"section"},{default:c(()=>{var e;return[g(a,{class:"sec-head"},{default:c(()=>[g(a,{class:"sec-bar"}),g(l,{class:"sec-title"},{default:c(()=>[b("苏州市科普研学线路")]),_:1}),g(l,{class:"sec-more",onClick:$e},{default:c(()=>[b("更多 >")]),_:1})]),_:1}),(y(!0),A($,null,x((null==(e=Q.value)?void 0:e.study_tours)??[],e=>(y(),n(a,{key:e.id,class:"tour-card",onClick:t=>{return a=e.id,void M({url:`/pages/study-tour/detail?id=${a}`});var a}},{default:c(()=>[g(a,{class:"tour-img-wrap"},{default:c(()=>[e.cover_image?(y(),n(u,{key:0,class:"tour-img",src:e.cover_image,mode:"aspectFill"},null,8,["src"])):(y(),n(a,{key:1,class:"tour-img tour-ph"})),g(a,{class:"tour-overlay-title-wrap"},{default:c(()=>[g(l,{class:"tour-overlay-title"},{default:c(()=>[b(w(e.name),1)]),_:2},1024)]),_:2},1024)]),_:2},1024),g(a,{class:"tour-body"},{default:c(()=>{var t;return[g(l,{class:"tour-title"},{default:c(()=>[b(w(e.name),1)]),_:2},1024),g(a,{class:"tour-stops-timeline"},{default:c(()=>[(y(!0),A($,null,x(e.venue_names,(t,s)=>(y(),n(a,{key:"v-"+e.id+"-"+s,class:"tour-stop-row"},{default:c(()=>[g(a,{class:"tour-timeline-axis"},{default:c(()=>[g(a,{class:"tour-dot-cell"},{default:c(()=>[g(a,{class:"tour-tl-dot"})]),_:1}),s<e.venue_names.length-1?(y(),n(a,{key:0,class:"tour-tl-line"})):j("",!0)]),_:2},1024),g(l,{class:"tour-stop-name"},{default:c(()=>[b(w(t),1)]),_:2},1024)]),_:2},1024))),128))]),_:2},1024),(null==(t=e.tags)?void 0:t.length)?(y(),n(a,{key:0,class:"tour-tags-row"},{default:c(()=>[(y(!0),A($,null,x(e.tags,(t,a)=>(y(),n(l,{key:"t-"+e.id+"-"+a,class:"tour-tag"},{default:c(()=>[b(w(t),1)]),_:2},1024))),128))]),_:2},1024)):j("",!0)]}),_:2},1024)]),_:2},1032,["onClick"]))),128))]}),_:1}),g(a,{class:"bottom-safe"}),T.value?(y(),n(a,{key:0,class:"loading-mask"},{default:c(()=>[b("加载中...")]),_:1})):j("",!0)]),_:1})}}}),[["__scopeId","data-v-0aefad02"]]);export{K as default};
|