2
0

orders.wxml 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <view class="orders-page">
  2. <!-- 状态选项卡 -->
  3. <view class="status-tabs">
  4. <view class="tabs-scroll">
  5. <view wx:for="{{statusTabs}}" wx:key="item"
  6. class="tab-item {{currentTab === index ? 'active' : ''}}"
  7. bindtap="onTabChange"
  8. data-index="{{index}}">
  9. {{item}}
  10. </view>
  11. </view>
  12. </view>
  13. <!-- 订单列表 -->
  14. <view class="orders-list">
  15. <block wx:for="{{orders}}" wx:key="id">
  16. <view class="order-card {{item.schedule.type === 'business-charter' ? 'charter-order' : ''}}"
  17. bindtap="viewDetail"
  18. data-id="{{item.id}}">
  19. <!-- 订单头部 -->
  20. <view class="order-header">
  21. <view class="order-info">
  22. <view class="order-no">订单号:{{item.orderNo}}</view>
  23. <view class="activity-name">{{item.activity}}</view>
  24. </view>
  25. <view class="order-status {{item.statusCode === 1 ? 'pending' : (item.statusCode === 2 ? 'ongoing' : (item.statusCode === 3 ? 'completed' : 'cancelled'))}}">
  26. {{item.status}}
  27. </view>
  28. </view>
  29. <!-- 行程信息 -->
  30. <view class="trip-info">
  31. <view class="trip-route">
  32. <view class="route-item">
  33. <view class="route-label">出发</view>
  34. <view class="route-location">{{item.schedule.fromLoc}}</view>
  35. </view>
  36. <view class="route-arrow">→</view>
  37. <view class="route-item">
  38. <view class="route-label">到达</view>
  39. <view class="route-location">{{item.schedule.toLoc}}</view>
  40. </view>
  41. </view>
  42. <view class="trip-details">
  43. <view class="detail-item">
  44. <text class="detail-label">出发时间:</text>
  45. <text class="detail-value">{{item.schedule.date}} {{item.schedule.time}}</text>
  46. </view>
  47. <view class="detail-item">
  48. <text class="detail-label">车辆型号:</text>
  49. <text class="detail-value">{{item.schedule.model}}</text>
  50. </view>
  51. <view class="detail-item">
  52. <text class="detail-label">{{item.schedule.type === 'business-charter' ? '包车人数' : '购票数量'}}:</text>
  53. <text class="detail-value">{{item.passengers.length}}{{item.schedule.type === 'business-charter' ? '人' : '张'}}</text>
  54. </view>
  55. </view>
  56. </view>
  57. <!-- 司机信息 -->
  58. <view wx:if="{{driverInfoMap[item.id]}}" class="driver-info">
  59. <view class="driver-header">
  60. <view class="driver-title">司机信息</view>
  61. <view class="driver-status">
  62. <text wx:if="{{driverInfoMap[item.id].status === 'assigned'}}" class="status-assigned">已分配</text>
  63. <text wx:elif="{{driverInfoMap[item.id].status === 'picked_up'}}" class="status-picked">已上车</text>
  64. <text wx:elif="{{driverInfoMap[item.id].status === 'in_transit'}}" class="status-transit">行程中</text>
  65. <text wx:else class="status-completed">已完成</text>
  66. </view>
  67. </view>
  68. <view class="driver-details">
  69. <view class="driver-avatar">
  70. <image src="{{driverInfoMap[item.id].driver.avatar || '/images/default-avatar.png'}}" class="avatar-img"/>
  71. </view>
  72. <view class="driver-basic">
  73. <view class="driver-name">{{driverInfoMap[item.id].driver.name}}</view>
  74. <view class="driver-phone">{{driverInfoMap[item.id].driver.phone}}</view>
  75. <view class="driver-rating">⭐ {{driverInfoMap[item.id].driver.rating}}</view>
  76. </view>
  77. <view class="vehicle-info">
  78. <view class="vehicle-model">{{driverInfoMap[item.id].vehicle.vehicleModel}}</view>
  79. <view class="vehicle-plate">{{driverInfoMap[item.id].vehicle.licensePlate}}</view>
  80. <view class="vehicle-capacity">容量:{{driverInfoMap[item.id].vehicle.capacity}}人</view>
  81. </view>
  82. <view class="driver-actions">
  83. <button class="action-btn call-btn"
  84. bindtap="callDriver"
  85. data-id="{{item.id}}">
  86. 📞 联系
  87. </button>
  88. <button wx:if="{{driverInfoMap[item.id].status === 'picked_up' || driverInfoMap[item.id].status === 'in_transit'}}"
  89. class="action-btn location-btn"
  90. bindtap="viewDriverLocation"
  91. data-id="{{item.id}}">
  92. 📍 位置
  93. </button>
  94. </view>
  95. </view>
  96. <!-- 行程中提示 -->
  97. <view wx:if="{{driverInfoMap[item.id].status === 'in_transit'}}" class="driver-tip">
  98. 司机正在驾驶中,如电话未接通请谅解。位置信息每10秒更新一次。
  99. </view>
  100. </view>
  101. <!-- 司机未分配状态 -->
  102. <view wx:elif="{{item.statusCode >= 1}}" class="driver-pending">
  103. <view class="pending-icon">⏳</view>
  104. <view class="pending-text">正在为您分配司机...</view>
  105. <view class="pending-desc">预计1-2分钟内完成分配</view>
  106. </view>
  107. <!-- 价格信息 -->
  108. <view class="price-info">
  109. <view class="price-label">订单金额</view>
  110. <view class="price-value">¥{{item.totalPrice}}</view>
  111. </view>
  112. <!-- 订单操作 -->
  113. <view class="order-actions">
  114. <view class="create-time">下单时间:{{item.createTime}}</view>
  115. <view class="action-buttons">
  116. <button class="detail-btn"
  117. bindtap="viewDetail"
  118. data-id="{{item.id}}">
  119. 查看详情
  120. </button>
  121. </view>
  122. </view>
  123. </view>
  124. </block>
  125. <!-- 空状态 -->
  126. <view wx:if="{{orders.length === 0}}" class="empty-orders">
  127. <view class="empty-icon">📋</view>
  128. <view class="empty-text">暂无订单</view>
  129. <view class="empty-desc">您还没有相关状态的订单</view>
  130. </view>
  131. </view>
  132. </view>