orderDetail.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. <template>
  2. <view class="container">
  3. <image class="banner" src="@/static/images/mine/back.png" mode="aspectFill" />
  4. <!-- 内容区域 -->
  5. <view class="content">
  6. <view v-if="statusValue === '未乘车'" class="status">
  7. <wd-icon name="clock" color="#001713" size="22" />
  8. 未乘车
  9. </view>
  10. <view v-if="statusValue === '已乘车'" class="status">
  11. <wd-icon name="check-outline" color="#001713" size="22" />
  12. 已乘车
  13. </view>
  14. <view v-if="statusValue === '待支付'" class="status">
  15. <wd-icon name="money-circle" color="#001713" size="22" />
  16. 待支付
  17. </view>
  18. <view v-if="statusValue === '已取消'" class="status">
  19. <wd-icon name="file-excel" color="#001713" size="22" />
  20. 已取消
  21. </view>
  22. <view v-if="statusValue === '预约失败'" class="status">
  23. <wd-icon name="warning" color="#001713" size="22" />
  24. 预约失败
  25. </view>
  26. <!-- 提示区域 -->
  27. <view class="tips">
  28. <image class="tips_img" src="@/static/images/orderDetail/tips.png" mode="aspectFill" />
  29. <view class="tips_text">
  30. 您已成功预约【14:50 南昌交通学院墨轩湖校区站 - 南昌西站】大巴班次~请于发车前 15 分钟到达乘车点(校门东侧公交站),凭订单二维码检票乘车
  31. </view>
  32. </view>
  33. <!-- 详情区域 -->
  34. <view class="detail">
  35. <view class="carMsg">
  36. <view class="carMsg_time">09月09日 14:50</view>
  37. <view class="carMsg_number">车牌:M06001</view>
  38. <view class="carMsg_volume">容量:60座</view>
  39. <image class="carMsg_line" src="@/static/images/chooseCar/line.png" mode="aspectFill" />
  40. <view class="carMsg_start">南昌交通学院墨轩湖校区</view>
  41. <view class="carMsg_end">南昌火车站</view>
  42. </view>
  43. <!-- 二维码区域 -->
  44. <view v-if="statusValue === '未乘车'" class="code">
  45. <!-- 跟随页面滚动是开发者工具的bug,真机没有问题 -->
  46. <uv-qrcode ref="qrcode" size="180" :value="QRCodeValue"></uv-qrcode>
  47. </view>
  48. <view class="info">
  49. <view>预约号:02</view>
  50. <view>扫码时间段:13:50 - 16:20</view>
  51. <view>下单时间:2025 - 09 - 16 14:56:05</view>
  52. <view class="info_price">
  53. <view>支付金额:</view>
  54. <view>
  55. <text class="text">¥</text>
  56. 30
  57. </view>
  58. </view>
  59. </view>
  60. </view>
  61. </view>
  62. <!-- 支付区域 -->
  63. <view class="pay">
  64. <view class="pay_left">
  65. ¥
  66. <text class="text">30</text>
  67. </view>
  68. <view class="pay_btn">立即支付</view>
  69. </view>
  70. </view>
  71. </template>
  72. <script setup>
  73. import { ref } from 'vue'
  74. const statusValue = ref('未乘车')
  75. const QRCodeValue = ref('123')
  76. </script>
  77. <style lang="scss" scoped>
  78. .container {
  79. position: relative;
  80. height: 100vh;
  81. color: #001713;
  82. background-color: #fff;
  83. overflow-y: auto;
  84. .banner {
  85. width: 100%;
  86. height: 482rpx;
  87. }
  88. .content {
  89. position: absolute;
  90. top: 100rpx;
  91. box-sizing: border-box;
  92. padding: 0 30rpx 260rpx;
  93. width: 100%;
  94. .status {
  95. font-size: 48rpx;
  96. }
  97. .tips {
  98. display: flex;
  99. align-items: center;
  100. box-sizing: border-box;
  101. padding: 30rpx;
  102. margin-top: 26rpx;
  103. margin-bottom: 20rpx;
  104. box-shadow: 0px 3px 6px #ccc;
  105. background-color: #fff;
  106. .tips_img {
  107. width: 56rpx;
  108. height: 74rpx;
  109. }
  110. .tips_text {
  111. flex: 1;
  112. margin-left: 16rpx;
  113. line-height: 40rpx;
  114. font-size: 28rpx;
  115. color: #001713;
  116. }
  117. }
  118. .detail {
  119. padding: 0 30rpx 40rpx;
  120. box-shadow: 0px 3px 6px #ccc;
  121. background-color: #fff;
  122. .carMsg {
  123. position: relative;
  124. width: 100%;
  125. height: 250rpx;
  126. font-size: 32rpx;
  127. color: #001713;
  128. .carMsg_time {
  129. position: absolute;
  130. top: 36rpx;
  131. font-size: 36rpx;
  132. color: #001713;
  133. }
  134. .carMsg_number {
  135. position: absolute;
  136. top: 44rpx;
  137. right: 0;
  138. font-size: 24rpx;
  139. color: #f86818;
  140. }
  141. .carMsg_volume {
  142. position: absolute;
  143. top: 86rpx;
  144. right: 0;
  145. font-size: 24rpx;
  146. color: #f86818;
  147. }
  148. .carMsg_line {
  149. position: absolute;
  150. top: 128rpx;
  151. left: 0;
  152. width: 14rpx;
  153. height: 88rpx;
  154. }
  155. .carMsg_start {
  156. position: absolute;
  157. top: 106rpx;
  158. left: 40rpx;
  159. width: 460rpx;
  160. }
  161. .carMsg_end {
  162. position: absolute;
  163. top: 185rpx;
  164. left: 40rpx;
  165. width: 460rpx;
  166. }
  167. }
  168. .code {
  169. display: flex;
  170. align-items: center;
  171. justify-content: center;
  172. height: 540rpx;
  173. border-top: 2rpx dotted #ff8205;
  174. }
  175. .info {
  176. padding: 40rpx 0 0;
  177. line-height: 50rpx;
  178. font-size: 28rpx;
  179. border-top: 2rpx solid #ebecf1;
  180. .info_price {
  181. display: flex;
  182. align-items: center;
  183. justify-content: space-between;
  184. font-size: 32rpx;
  185. color: #ff8205;
  186. .text {
  187. font-size: 24rpx;
  188. }
  189. }
  190. }
  191. }
  192. }
  193. .pay {
  194. position: fixed;
  195. bottom: 0;
  196. display: flex;
  197. align-items: center;
  198. justify-content: space-between;
  199. box-sizing: border-box;
  200. padding: 0 30rpx;
  201. width: 100%;
  202. height: 240rpx;
  203. color: #dc2626;
  204. box-shadow: 0px -3px 6px #ccc;
  205. background-color: #fff;
  206. .pay_left {
  207. font-size: 36rpx;
  208. .text {
  209. font-size: 48rpx;
  210. }
  211. }
  212. .pay_btn {
  213. display: flex;
  214. align-items: center;
  215. justify-content: center;
  216. width: 272rpx;
  217. height: 94rpx;
  218. font-size: 36rpx;
  219. color: #ff8205;
  220. border-radius: 64rpx;
  221. border: 2rpx solid #ff8205;
  222. }
  223. }
  224. }
  225. </style>