mescroll-swiper-item.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <template>
  2. <mescroll-uni :ref="'mescrollRef'+i" @init="mescrollInit" :height="height" :down="downOption" @down="downCallback"
  3. :up="upOption" @up="upCallback" @emptyclick="emptyClick">
  4. <view :id="'good'+good.id" class="good-list paddingr20" v-for="good in goods" :key="good.id" @click="toDetail(good.id)">
  5. <view class="flex flex-space-between row">
  6. <view class="left flex">
  7. <view>辽</view>
  8. <view>营口 鲅鱼圈</view>
  9. <view>--------></view>
  10. <view class="">
  11. </view>
  12. <view>背景 通州</view>
  13. </view>
  14. <view class="right">
  15. 21:51
  16. </view>
  17. </view>
  18. <view class="flex flex-space-between row">
  19. <view class="left flex">
  20. <view>货距~10km</view>
  21. <view>运距~35km</view>
  22. </view>
  23. <view class="right">
  24. 300元/吨
  25. </view>
  26. </view>
  27. <view class="flex">
  28. <view>玉米|</view>
  29. <view>3.8-5米|</view>
  30. <view>厢式/平板/高栏|</view>
  31. <view>10吨</view>
  32. </view>
  33. <view class="flex">
  34. <view>运输过程中其他费用,发货方承担。</view>
  35. </view>
  36. <view class="flex flex-space-between">
  37. <view class="left flex">
  38. <u--image :showLoading="true" :src="good.goodImg" width="40px" height="40px"></u--image>
  39. <view>张颖</view>
  40. <view>发运106次</view>
  41. <view>好评率99%</view>
  42. </view>
  43. <view class="right">
  44. <view @click.stop="grabOrders(good.id)">抢单</view>
  45. </view>
  46. </view>
  47. </view>
  48. </mescroll-uni>
  49. </template>
  50. <script>
  51. import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
  52. import MescrollMoreItemMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more-item.js";
  53. import {
  54. apiGoods
  55. } from "@/api/mock.js"
  56. export default {
  57. mixins: [MescrollMixin, MescrollMoreItemMixin], // 注意此处还需使用MescrollMoreItemMixin (必须写在MescrollMixin后面)
  58. data() {
  59. return {
  60. downOption: {
  61. auto: false // 不自动加载 (mixin已处理第一个tab触发downCallback)
  62. },
  63. upOption: {
  64. auto: false, // 不自动加载
  65. // page: {
  66. // num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
  67. // size: 10 // 每页数据的数量
  68. // },
  69. noMoreSize: 4, //如果列表已无数据,可设置列表的总数量要大于半页才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看; 默认5
  70. empty: {
  71. tip: '~ 空空如也 ~', // 提示
  72. btnText: '去看看'
  73. }
  74. },
  75. goods: [] //列表数据
  76. }
  77. },
  78. props: {
  79. i: Number, // 每个tab页的专属下标 (除了支付宝小程序必须在这里定义, 其他平台都可不用写, 因为已在MescrollMoreItemMixin定义)
  80. index: { // 当前tab的下标 (除了支付宝小程序必须在这里定义, 其他平台都可不用写, 因为已在MescrollMoreItemMixin定义)
  81. type: Number,
  82. default () {
  83. return 0
  84. }
  85. },
  86. tabs: { // 为了请求数据,演示用,可根据自己的项目判断是否要传
  87. type: Array,
  88. default () {
  89. return []
  90. }
  91. },
  92. height: [Number, String] // mescroll的高度
  93. },
  94. methods: {
  95. /*下拉刷新的回调 */
  96. downCallback() {
  97. // 这里加载你想下拉刷新的数据, 比如刷新轮播数据
  98. // loadSwiper();
  99. // 下拉刷新的回调,默认重置上拉加载列表为第一页 (自动执行 page.num=1, 再触发upCallback方法 )
  100. this.mescroll.resetUpScroll()
  101. },
  102. /*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
  103. upCallback(page) {
  104. //联网加载数据
  105. let keyword = this.tabs[this.i].name
  106. apiGoods(page.num, page.size, keyword).then(res => {
  107. //联网成功的回调,隐藏下拉刷新和上拉加载的状态;
  108. this.mescroll.endSuccess(res.list.length);
  109. //设置列表数据
  110. if (page.num == 1) this.goods = []; //如果是第一页需手动制空列表
  111. this.goods = this.goods.concat(res.list); //追加新数据
  112. }).catch(() => {
  113. //联网失败, 结束加载
  114. this.mescroll.endErr();
  115. })
  116. },
  117. //点击空布局按钮的回调
  118. emptyClick() {
  119. uni.showToast({
  120. title: '点击了按钮,具体逻辑自行实现'
  121. })
  122. },
  123. // 跳转详情
  124. toDetail(id){
  125. console.log('点击详情id:',id)
  126. uni.$u.route('/pages/goodSource/shippingDetails', {
  127. id:id,
  128. });
  129. },
  130. //抢单
  131. grabOrders(id){
  132. console.log('抢单id:',id)
  133. }
  134. }
  135. }
  136. </script>