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