index.wxml 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <view class="page-container">
  2. <!-- 背景图片放在最底层 -->
  3. <view class="map-container" style="height: {{layoutConfig.map * 100}}vh">
  4. <map
  5. id="map"
  6. longitude="118.0"
  7. latitude="36.5"
  8. scale="7"
  9. markers="{{markers}}"
  10. bindmarkertap="onMarkerTap"
  11. longitude="{{longitude}}"
  12. latitude="{{latitude}}"
  13. scale="{{scale}}"
  14. markers="{{markers}}"
  15. style="width: 100%; height: 60vh;"
  16. ></map>
  17. <view class="map-fade"></view>
  18. </view>
  19. <!-- 自定义全屏弹窗 -->
  20. <view
  21. wx:if="{{showImageModal}}"
  22. class="custom-modal"
  23. bindtap="hideImageModal"
  24. >
  25. <!-- 弹窗内容容器(阻止事件冒泡) -->
  26. <view
  27. class="modal-content"
  28. catchtap="stopPropagation"
  29. >
  30. <!-- 可滚动区域(增加最小高度确保内容完整显示) -->
  31. <scroll-view
  32. scroll-y
  33. class="scroll-container"
  34. style="height: 70vh;"
  35. >
  36. <!-- 图片 -->
  37. <image
  38. src="{{currentMarker.imageUrl}}"
  39. mode="widthFix"
  40. class="modal-image"
  41. />
  42. <!-- 主要内容区域 -->
  43. <view class="main-content">
  44. <!-- 标题和地址 -->
  45. <view class="header">
  46. <view class="modal-title">{{currentMarker.title}}</view>
  47. <view class="modal-address">
  48. <text class="icon">📍</text>
  49. {{currentMarker.address}}
  50. </view>
  51. </view>
  52. <!-- 描述文本 -->
  53. <view class="modal-description">
  54. {{currentMarker.description}}
  55. </view>
  56. <!-- 详情列表部分 -->
  57. <view class="detail-list">
  58. <block wx:for="{{currentMarker.detail}}" wx:key="label">
  59. <view class="detail-item {{item.label.includes('门票') ? 'highlight-item' : ''}}">
  60. <text class="detail-label">{{item.label}}</text>
  61. <view class="detail-value-container">
  62. <text wx:if="{{!item.label.includes('门票')}}">{{item.value}}</text>
  63. <block wx:else>
  64. <text class="{{item.value === '免费' ? 'free-text' : 'fee-text'}}">
  65. {{item.value}}
  66. </text>
  67. <text wx:if="{{item.value === '免费'}}" class="free-badge">免费</text>
  68. </block>
  69. </view>
  70. </view>
  71. </block>
  72. </view>
  73. </view>
  74. </scroll-view>
  75. <!-- 底部操作栏 -->
  76. <view class="action-bar">
  77. <button class="nav-btn" bindtap="openLocation">
  78. 导航前往
  79. </button>
  80. <button class="close-btn" bindtap="hideImageModal">
  81. 关闭
  82. </button>
  83. </view>
  84. </view>
  85. <!-- 顶部关闭图标 -->
  86. <view class="top-close" bindtap="hideImageModal">
  87. <text class="close-icon">×</text>
  88. </view>
  89. </view>
  90. <view class="menu">
  91. <view class="service-container">
  92. <view class="item">
  93. <a href="#" class="service-link">
  94. <image
  95. bindtap="navigateTopage"
  96. data-url="/pages/ai-plan/ai-plan"
  97. src="/images/index/生成攻略.png"
  98. class="img"
  99. />
  100. <text class="title">红途定制</text>
  101. </a>
  102. </view>
  103. <view class="item">
  104. <a href="#" class="service-link">
  105. <image
  106. bindtap="navigateTopage"
  107. data-url="/pages/gongjiao/gongjiao"
  108. src="/images/index/游学路线.png"
  109. class="img"
  110. />
  111. <text class="title">游学路线</text>
  112. </a>
  113. </view>
  114. <view class="item">
  115. <a href="#" class="service-link">
  116. <image
  117. bindtap="navigateTopage"
  118. data-url="/pages/gongjiao/gongjiao"
  119. src="/images/搜索分类.png"
  120. class="img"
  121. />
  122. <text class="title">红游速搜</text>
  123. </a>
  124. </view>
  125. </view>
  126. </view>
  127. <view class="vr-container" style="height: {{layoutConfig.vr * 100}}vh">
  128. <view class="section-header">
  129. <text class="section-title">VR全景体验</text>
  130. <view class="brush-stroke"></view>
  131. </view>
  132. <!-- VR全景体验模块 -->
  133. <!-- 横向滚动VR列表 -->
  134. <scroll-view
  135. class="vr-scroll"
  136. scroll-x
  137. enhanced
  138. show-scrollbar="{{false}}"
  139. >
  140. <view class="vr-list">
  141. <block wx:for="{{vrList}}" wx:key="id">
  142. <view
  143. class="vr-card"
  144. bindtap="showWebView"
  145. data-url="{{item.url}}"
  146. data-title="{{item.title}}"
  147. >
  148. <image src="{{item.thumb}}" mode="aspectFill" class="vr-image"/>
  149. <view class="vr-info">
  150. <text class="vr-title">{{item.title}}</text>
  151. <text class="vr-desc">{{item.desc}}</text>
  152. </view>
  153. </view>
  154. </block>
  155. </view>
  156. </scroll-view>
  157. </view>
  158. <!-- WebView弹窗 -->
  159. <view wx:if="{{showWebView}}" class="vr-modal">
  160. <view class="modal-header">
  161. <text class="modal-title">{{currentVrTitle}}</text>
  162. <text class="close-btn" bindtap="hideWebView">×</text>
  163. </view>
  164. <web-view
  165. src="{{webViewUrl}}"
  166. style="height: 85vh; width: 100%;"
  167. ></web-view>
  168. </view>
  169. <!-- 悬浮按钮容器 -->
  170. <view class="float-container">
  171. <!-- 悬浮按钮 -->
  172. <image
  173. src="/images/鸽子.png"
  174. class="float-btn {{walking ? 'walking' : ''}}"
  175. bindtap="showFloatMenu"
  176. bindtouchstart="touchStart"
  177. bindtouchmove="touchMove"
  178. bindtouchend="touchEnd"
  179. style="left: {{positionX}}px; top: {{positionY}}px;"
  180. ></image>
  181. <!-- 弹出菜单 -->
  182. <view class="float-menu" wx:if="{{showMenu}}">
  183. <view class="menu-item"><navigator url="/pages/quiz/quiz">红史问答堂</navigator></view>
  184. </view>
  185. </view>
  186. <!-- 遮罩层 -->
  187. <view class="mask" wx:if="{{showMenu}}" bindtap="hideFloatMenu"></view>
  188. <view class="dynamic-features">
  189. <block wx:for="{{featureLayout}}" wx:key="feature">
  190. <view
  191. class="feature-item {{item.size}}"
  192. bindtap="navigateToFeature"
  193. data-feature="{{item.feature}}"
  194. >
  195. <image
  196. src="{{getFeatureImage(item.feature)}}"
  197. mode="aspectFit"
  198. class="feature-icon"
  199. />
  200. <text class="feature-title">{{getFeatureName(item.feature)}}</text>
  201. </view>
  202. </block>
  203. </view>
  204. </view>