index.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <template>
  2. <view class="container">
  3. <view class="searchCon acea-row">
  4. <view class="search acea-row row-middle">
  5. <text class="iconfont icon-ic_search"></text>
  6. <input class="inputs" placeholder='请输入订单号' placeholder-style="font-size:28rpx" placeholder-class='placeholder' confirm-type='search'
  7. name="search" v-model="searchListData.orderNo" @confirm="searchSubmit"></input>
  8. </view>
  9. <view class="btn" @click="filterShow = true">
  10. <text class="iconfont icon-a-icon_filter1x"></text>
  11. </view>
  12. </view>
  13. <view class="dom-top">
  14. <view class="dom-item" v-for="(item, index) in domTopData" :key="index" @tap="statusClick(item.id)">
  15. <text :class="item.id === riderStatus ? 'active-dom-top' : ''">{{item.name}}</text>
  16. </view>
  17. </view>
  18. <view class="flex-center flex-col noCommodity" v-if="noDataTip">
  19. <view class='pictrue'>
  20. <image :src="urlDomain+'crmebimage/presets/noSearch.png'"></image>
  21. </view>
  22. <text class="text-ccc">{{noDataTip}}</text>
  23. </view>
  24. <scroll-view scroll-y @scrolltolower="onScrollBottom" style="overflow: hidden;">
  25. <view v-for="(item, index) in riderData" :key="index" style="margin: 10rpx 0;">
  26. <rider-order :orderInfo="item" @orderCilck="goOrderClick" :statusId.sync="riderStatus"></rider-order>
  27. </view>
  28. <view class='loadingicon flex-center' :hidden='!loading'>
  29. <text class='loading iconfont icon-jiazai' style="width: auto;"></text>加载更多
  30. </view>
  31. <view class="flex-center no-data-tip" v-if="loadTitle">{{loadTitle}}</view>
  32. </scroll-view>
  33. <footerPage></footerPage>
  34. </view>
  35. </template>
  36. <script>
  37. import {
  38. getRiderList
  39. } from '@/api/rider.js';
  40. import riderOrder from "@/components/riderOrder/index.vue";
  41. import footerPage from '../footerPage/index.vue'
  42. let app = getApp();
  43. export default {
  44. name: 'riderShipping',
  45. props: {
  46. // 滚动至下部
  47. riderStatus: {
  48. type: Number,
  49. default: 1
  50. }
  51. },
  52. // computed: {
  53. // computedProp() {
  54. // // 基于props做一些计算
  55. // return this.riderStatus + '';
  56. // }
  57. // },
  58. components: {
  59. riderOrder,
  60. footerPage,
  61. },
  62. data() {
  63. return {
  64. localRiderStatus: this.riderStatus,
  65. urlDomain: this.$Cache.get("imgHost"),
  66. riderData: [], // 订单数组
  67. loading: false, //是否加载中
  68. loadTitle: '', //提示语
  69. page: 1,
  70. limit: 2,
  71. isReceiveId: null,
  72. //riderStatus: 1,
  73. domTopData: [{
  74. id: 1,
  75. name: '待接单'
  76. },
  77. {
  78. id: 8,
  79. name: '待取货'
  80. },
  81. {
  82. id: 4,
  83. name: '配送中'
  84. },
  85. {
  86. id: 6,
  87. name: '已完成'
  88. }
  89. ],
  90. }
  91. },
  92. created() {
  93. this.getRiderDataList()
  94. },
  95. // onLoad(option) {
  96. // this.riderStatus = option.riderStatus?option.riderStatus:1;
  97. // },
  98. methods: {
  99. /**
  100. * 切换类型
  101. */
  102. statusClick: function(status) {
  103. if (status == this.riderStatus) return;
  104. this.page = 1;
  105. this.$emit('update:riderStatus', status)
  106. // this.riderStatus=status;
  107. this.getRiderDataList();
  108. },
  109. /**
  110. * 获取订单列表
  111. */
  112. getRiderDataList: function() {
  113. let that = this;
  114. if (that.loading) return;
  115. that.loading = true;
  116. getRiderList({
  117. status: that.riderStatus,
  118. page: that.page,
  119. limit: that.limit
  120. }).then(res => {
  121. let list = res.data.list || [];
  122. that.riderData = that.$util.SplitArray(list, that.riderData);
  123. that.$set(that, 'riderData', that.riderData);
  124. that.loading = false;
  125. if (that.riderData.length == 0) {
  126. that.loadTitle = ''
  127. that.noDataTip = ' 暂无订单~ ';
  128. } else {
  129. that.noDataTip = ''
  130. that.loadTitle = list.length < that.limit ? "我也是有底线的~" : '';
  131. }
  132. that.page = that.page + 1;
  133. }).catch(err => {
  134. that.loading = false;
  135. that.loadTitle = "加载更多";
  136. })
  137. },
  138. goOrderClick(id) {
  139. this.isReceiveId = id
  140. console.log(id)
  141. },
  142. onScrollBottom() {
  143. if (this.loading) return;
  144. if (!this.loadTitle) {
  145. this.getRiderDataList()
  146. }
  147. }
  148. },
  149. mounted() {
  150. },
  151. }
  152. </script>
  153. <style lang="scss" scoped>
  154. @import '../../style/admin_order.scss';
  155. </style>
  156. <style scoped lang="scss">
  157. .container {
  158. width: 100%;
  159. height: 100%;
  160. display: flex;
  161. flex-direction: column;
  162. overflow: hidden;
  163. }
  164. .no-data-tip {
  165. color: #CCC;
  166. }
  167. .dom-top {
  168. width: 100%;
  169. height: 96rpx;
  170. font-weight: 400;
  171. font-size: 27rpx;
  172. color: #141414;
  173. background-color: #fff;
  174. // padding: 19rpx 115rpx 38rpx 115rpx;
  175. display: flex;
  176. align-items: center;
  177. justify-content: space-between;
  178. .dom-item {
  179. flex: 1;
  180. text-align: center;
  181. height: 96rpx;
  182. display: flex;
  183. align-items: center;
  184. justify-content: center;
  185. }
  186. }
  187. .active-dom-top {
  188. color: $bg-color-primary;
  189. border-bottom: 9rpx solid $bg-color-primary;
  190. border-bottom-top-radius: 6rpx;
  191. border-bottom-bottom-radius: 6rpx;
  192. border-bottom-left-radius: 6rpx;
  193. border-bottom-right-radius: 6rpx;
  194. }
  195. </style>