route.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. <template>
  2. <view class="content">
  3. <swiper :current="tabCurrentIndex" class="swiper-box" duration="300" @change="changeTab">
  4. <swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
  5. <scroll-view class="list-scroll-content padding-t-30" scroll-y @scrolltolower="loadData">
  6. <!-- 空白页 -->
  7. <!-- #ifdef H5 -->
  8. <empty src="../../static/error/emptyList.png"
  9. v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty>
  10. <!-- #endif -->
  11. <!-- #ifndef H5 -->
  12. <empty src="../static/error/emptyList.png"
  13. v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty>
  14. <!-- #endif -->
  15. <!-- 订单列表 -->
  16. <view v-for="(item,index) in tabItem.orderList" @click="navTo('./routeDetail?id='+item.id)">
  17. <!-- <view class="timeDay">
  18. {{items.time}}
  19. </view> -->
  20. <view class="routeItemBox">
  21. <view class="cartName flex">
  22. <view class="flex">
  23. <image class="cartImg" :src="item.car.image" mode="scaleToFill">
  24. </image>
  25. <text class="carName">
  26. {{item.car.car_name}}
  27. </text>
  28. </view>
  29. <image class="iconRight" src="../../static/icon/next1.png" mode="widthFix"></image>
  30. </view>
  31. <view class="routeItem flex">
  32. <view class="leftTime">
  33. <view>
  34. {{item.add_time}}
  35. </view>
  36. </view>
  37. <view class="rightRoute flex">
  38. <view class="leftImg">
  39. <image src="../../static/image/routeContent.png" mode="widthFix"></image>
  40. </view>
  41. <view class="rightConent">
  42. <view class="statusTitle">
  43. 起点
  44. </view>
  45. <view class="routeName clamp2">
  46. {{item.start_address}}
  47. </view>
  48. <view class="contentJg">
  49. </view>
  50. <view class="statusTitle">
  51. 终点
  52. </view>
  53. <view class="routeName clamp2 end">
  54. {{item.last_address}}
  55. </view>
  56. </view>
  57. </view>
  58. </view>
  59. <!-- <view class="detailRoute flex">
  60. <view class="flex">
  61. <image src="../../static/icon/cartRoute.png" mode="widthFix"></image>
  62. <text class="margin-l-10">{{item.route}}</text>
  63. </view>
  64. <view class="flex">
  65. <image src="../../static/icon/cartTime.png" mode="widthFix"></image>
  66. <text class="margin-l-10">{{item.timeAll}}</text>
  67. </view>
  68. <view class="flex">
  69. <image src="../../static/icon/cartSpeed.png" mode="widthFix"></image>
  70. <text class="margin-l-10">{{item.speed}}</text>
  71. </view>
  72. </view> -->
  73. </view>
  74. </view>
  75. <uni-load-more :status="tabItem.loadingType"></uni-load-more>
  76. </scroll-view>
  77. </swiper-item>
  78. </swiper>
  79. </view>
  80. </template>
  81. <script>
  82. import {
  83. car_record
  84. } from '@/api/user.js';
  85. export default {
  86. data() {
  87. return {
  88. id: '', //保存车辆car_number
  89. tabCurrentIndex: 0,
  90. navList: [{
  91. state: 0,
  92. text: '全部',
  93. loadingType: 'more',
  94. orderList: [],
  95. page: 1, //当前页数
  96. limit: 10 //每次信息条数
  97. }]
  98. };
  99. },
  100. onLoad(options) {
  101. this.id = options.id || ''
  102. this.loadData();
  103. },
  104. methods: {
  105. navTo(url) {
  106. uni.navigateTo({
  107. url: url
  108. })
  109. },
  110. // 转换金额为数字
  111. // 确认收货
  112. //获取订单列表
  113. loadData(source) {
  114. //这里是将订单挂载到tab列表下
  115. let index = this.tabCurrentIndex;
  116. let navItem = this.navList[index];
  117. let state = navItem.state;
  118. console.log(navItem, '数据');
  119. if (source === 'tabChange' && navItem.loaded === true) {
  120. //tab切换只有第一次需要加载数据
  121. return;
  122. }
  123. if (navItem.loadingType === 'loading') {
  124. //防止重复加载
  125. return;
  126. }
  127. if (navItem.loadingType === 'noMore') {
  128. //防止重复加载
  129. return;
  130. }
  131. // 修改当前对象状态为加载中
  132. navItem.loadingType = 'loading';
  133. car_record({
  134. car_number: this.id,
  135. page: navItem.page,
  136. limit: navItem.limit
  137. })
  138. .then(({
  139. data
  140. }) => {
  141. let arr = data.data.map(e => {
  142. return e;
  143. });
  144. navItem.orderList = navItem.orderList.concat(arr);
  145. // console.log(navItem.orderList);
  146. navItem.page++;
  147. if (navItem.limit == arr.length) {
  148. //判断是否还有数据, 有改为 more, 没有改为noMore
  149. navItem.loadingType = 'more';
  150. return;
  151. } else {
  152. //判断是否还有数据, 有改为 more, 没有改为noMore
  153. navItem.loadingType = 'noMore';
  154. }
  155. uni.hideLoading();
  156. this.$set(navItem, 'loaded', true);
  157. })
  158. .catch(e => {
  159. console.log(e);
  160. });
  161. },
  162. }
  163. };
  164. </script>
  165. <style lang="scss">
  166. page,
  167. .content {
  168. background: $page-color-base;
  169. height: 100%;
  170. }
  171. .list-scroll-content,
  172. .swiper-box {
  173. height: 100%;
  174. }
  175. .timeDay {
  176. font-size: 32rpx;
  177. font-weight: 400;
  178. padding: 30rpx;
  179. }
  180. .routeItemBox {
  181. background-color: #FFFFFF;
  182. border-radius: 20rpx;
  183. margin: 0 30rpx;
  184. margin-bottom: 30rpx;
  185. line-height: 1.5;
  186. padding-bottom: 30rpx;
  187. padding-top: 10rpx;
  188. .cartName {
  189. font-size: 32rpx;
  190. font-weight: 400;
  191. padding: 20rpx 30rpx;
  192. border-bottom: 1px solid $page-color-light;
  193. .carName {
  194. padding-left: 20rpx;
  195. }
  196. .cartImg {
  197. width: 60rpx;
  198. height: 60rpx;
  199. }
  200. .iconRight {
  201. width: 26rpx;
  202. }
  203. }
  204. .detailRoute {
  205. color: $font-color-base;
  206. font-weight: 100;
  207. margin: 0 30rpx;
  208. background-color: #F3F6F8;
  209. padding: 10rpx 30rpx;
  210. border-radius: 20rpx;
  211. image {
  212. width: 36rpx;
  213. font-size: 24rpx;
  214. }
  215. }
  216. .routeItem {
  217. align-items: flex-start;
  218. padding-top: 20rpx;
  219. .leftTime {
  220. width: 70rpx;
  221. margin: 50rpx;
  222. flex-shrink: 0;
  223. font-size: 24rpx;
  224. font-weight: 100;
  225. }
  226. .rightRoute {
  227. flex-grow: 1;
  228. // height: 262rpx;
  229. align-items: flex-start;
  230. .leftImg {
  231. image {
  232. width: 36rpx;
  233. }
  234. }
  235. .rightConent {
  236. padding-left: 20rpx;
  237. flex-grow: 1;
  238. .statusTitle {
  239. color: $font-color-light;
  240. font-size: 22rpx;
  241. }
  242. .routeName {
  243. color: $font-color-base;
  244. font-size: 28rpx;
  245. min-height: 2.5rem;
  246. margin-bottom: 15rpx;
  247. &.end {
  248. min-height: 1.5rem;
  249. }
  250. }
  251. }
  252. }
  253. }
  254. }
  255. </style>