home.wxml 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <view class="home">
  2. <!-- 顶部滚动图片 -->
  3. <view class="banner-container">
  4. <swiper class="banner-swiper" autoplay interval="5000" circular indicator-dots>
  5. <block wx:for="{{banners}}" wx:key="id">
  6. <swiper-item>
  7. <view class="banner-item" bindtap="onBannerTap" data-index="{{index}}">
  8. <image src="{{item.img}}" class="banner-img" mode="aspectFill"/>
  9. <view wx:if="{{item.title}}" class="banner-overlay">
  10. <view class="banner-title">{{item.title}}</view>
  11. <view wx:if="{{item.subtitle}}" class="banner-subtitle">{{item.subtitle}}</view>
  12. </view>
  13. </view>
  14. </swiper-item>
  15. </block>
  16. </swiper>
  17. <!-- 加载状态 -->
  18. <view wx:if="{{loadingBanners}}" class="banner-loading">
  19. <view class="loading-icon">⏳</view>
  20. <view class="loading-text">加载海报中...</view>
  21. </view>
  22. </view>
  23. <!-- 出行方式选择 -->
  24. <view class="service-tabs">
  25. <view wx:for="{{types}}" wx:key="type"
  26. class="tab-item {{selectedType === item.type ? 'active' : ''}}"
  27. bindtap="onTypeChange"
  28. data-type="{{item.type}}">
  29. {{item.name}}
  30. </view>
  31. </view>
  32. <!-- 出行选择区域 -->
  33. <view class="booking-section">
  34. <view class="route-selector">
  35. <picker mode="multiSelector"
  36. range="{{fromCityRange}}"
  37. value="{{fromCityIndex}}"
  38. bindcolumnchange="onFromCityColumnChange"
  39. bindchange="onFromCityChange"
  40. class="route-picker">
  41. <view class="route-item">
  42. <view class="route-text">{{fromCityText || '出发地'}}</view>
  43. </view>
  44. </picker>
  45. <button class="swap-btn" bindtap="swapCity">
  46. <view class="swap-icon">⇄</view>
  47. </button>
  48. <picker mode="multiSelector"
  49. range="{{toCityRange}}"
  50. value="{{toCityIndex}}"
  51. bindcolumnchange="onToCityColumnChange"
  52. bindchange="onToCityChange"
  53. class="route-picker">
  54. <view class="route-item">
  55. <view class="route-text">{{toCityText || '目的地'}}</view>
  56. </view>
  57. </picker>
  58. </view>
  59. <!-- 日期选择 -->
  60. <picker mode="date" value="{{date}}" bindchange="onDateChange">
  61. <view class="date-picker">
  62. <text class="date-label">出发日期</text>
  63. <text class="date-value">{{date}}</text>
  64. </view>
  65. </picker>
  66. <!-- 查询按钮 -->
  67. <button class="search-btn" bindtap="searchSchedules">查询</button>
  68. </view>
  69. <!-- 热门路线 -->
  70. <view class="hot-routes">
  71. <view class="section-title">热门路线</view>
  72. <!-- 加载状态 -->
  73. <view wx:if="{{loadingHotRoutes}}" class="routes-loading">
  74. <view class="loading-icon">⏳</view>
  75. <view class="loading-text">加载热门路线中...</view>
  76. </view>
  77. <!-- 路线列表 -->
  78. <view wx:else class="routes-grid">
  79. <view wx:for="{{hotRoutes}}" wx:key="id"
  80. class="route-card route-card-{{index + 1}}"
  81. bindtap="selectRoute"
  82. data-index="{{index}}">
  83. <image class="route-img" src="{{item.img}}" mode="aspectFill"/>
  84. <view class="route-content">
  85. <text class="route-name">{{item.name}}</text>
  86. <view wx:if="{{item.price}}" class="route-price">¥{{item.price}}</view>
  87. <view wx:if="{{item.duration}}" class="route-duration">{{item.duration}}</view>
  88. <view wx:if="{{item.tags}}" class="route-tags">
  89. <text wx:for="{{item.tags}}" wx:key="*this" wx:for-item="tag" class="route-tag">{{tag}}</text>
  90. </view>
  91. </view>
  92. </view>
  93. </view>
  94. </view>
  95. </view>