bargain-list.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <template>
  2. <mescroll-uni ref="mescrollRef" top="80rpx" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
  3. <view class="bargain-list-container">
  4. <view class="bargain-list mt20" v-for="(item, index) in lists" :key="item.id">
  5. <view class="header row-between">
  6. <view class="count-down-container row">
  7. <text class="muted xs" style="margin-left: 8rpx;">{{item.shop_name}}</text>
  8. </view>
  9. <view class="primary sm">
  10. {{item.status_text}}
  11. </view>
  12. </view>
  13. <navigator class="content row" hover-class="none"
  14. :url="'/pages/bundle/bargain_process/bargain_process?bargainId='+item.id">
  15. <custom-image width="180rpx" height="180rpx" :src="item.image" radius="10rpx" />
  16. <view class="goods-info">
  17. <view class="goods-name line2 nr normal">
  18. {{item.name}}
  19. </view>
  20. <view class="mt10 row">
  21. <view class="sm primary">
  22. 已砍至<text class="sm" style="font-weight: 500;line-height: 48rpx;">¥<text
  23. class="xl">{{item.current_price}}</text></text>
  24. </view>
  25. <view class="xs muted ml20">
  26. 原价<text style="text-decoration: line-through;"> ¥{{item.price}}</text>
  27. </view>
  28. </view>
  29. <view class="xxs" style="color: #FFA200;line-height: 30rpx;margin-top: 4rpx;">
  30. {{item.bargain_tips}}
  31. </view>
  32. </view>
  33. </navigator>
  34. <view class="footer row-between">
  35. <!-- <view hover-class="none" class="purchase-btn primary row-center br60 footer-btn" v-if="item.buy_btn" @click="onPurchaseClick(item.id, item.item_id)">
  36. 直接购买
  37. </view> -->
  38. <view class="count-down-container row">
  39. <text class="muted xs" style="margin-left: 8rpx;">发起时间:{{item.create_time}}</text>
  40. </view>
  41. <navigator hover-class="none"
  42. :url="'/bundle/pages/bargain_process/bargain_process?bargainId='+item.id"
  43. class="bargain-btn footer-btn white row-center br60" v-if="item.btn_tips != ''">
  44. {{item.btn_tips}}
  45. </navigator>
  46. <!-- navigator hover-class="none" class="bargain-btn white row-center br60 footer-btn" v-if="item.pay_btn" :url="'/pages/order_details/order_details?id=' + item.order_id">
  47. 去支付
  48. </navigator> -->
  49. </view>
  50. </view>
  51. </view>
  52. </mescroll-uni>
  53. </template>
  54. <script>
  55. import {getBargainActivityList} from "@/api/activity"
  56. import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js";
  57. import MescrollMoreItemMixin from "@/components/mescroll-uni/mixins/mescroll-more-item.js";
  58. export default {
  59. mixins: [MescrollMixin, MescrollMoreItemMixin],
  60. data() {
  61. return {
  62. lists: [],
  63. downOption: {
  64. auto: false // 不自动加载 (mixin已处理第一个tab触发downCallback)
  65. },
  66. upOption: {
  67. auto: true, // 不自动加载
  68. noMoreSize: 4, //如果列表已无数据,可设置列表的总数量要大于半页才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看; 默认5
  69. empty: {
  70. icon: '/static/images/goods_null.png',
  71. tip: '暂无砍价记录~', // 提示
  72. fixed: true
  73. }
  74. },
  75. }
  76. },
  77. props: {
  78. bargainType: {
  79. type: Number,
  80. default: -1
  81. }
  82. },
  83. mounted() {
  84. this.$getBargainActivityList()
  85. },
  86. methods: {
  87. // 触底加载
  88. upCallback(page) {
  89. this.$getBargainActivityList(page.num, page.size);
  90. },
  91. $getBargainActivityList(pageNum = 1, pageSize = 10) {
  92. let {bargainType} = this;
  93. getBargainActivityList({
  94. 'type': bargainType,
  95. 'page_no': pageNum,
  96. 'page_size': pageSize
  97. }).then(res => {
  98. if (res) {
  99. let curPageData = res.data.list;
  100. let curPageLen = curPageData.length;
  101. let hasNext = !!res.data.more;
  102. if (pageNum == 1) this.lists = [];
  103. console.log(hasNext)
  104. this.lists = this.lists.concat(curPageData);
  105. this.mescroll.endSuccess(curPageLen, hasNext);
  106. }
  107. }).catch(() => {
  108. this.mescroll.endErr()
  109. })
  110. }
  111. }
  112. }
  113. </script>
  114. <style lang="scss">
  115. @import '@/styles/base.scss';
  116. .bargain-list-container {
  117. .bargain-list {
  118. background-color: $-color-white;
  119. .header {
  120. height: 80rpx;
  121. padding: 20rpx 20rpx;
  122. }
  123. .content {
  124. padding: 30rpx 24rpx 18rpx;
  125. .goods-info {
  126. margin-left: 24rpx;
  127. flex: 1;
  128. .goods-name {
  129. line-height: 40rpx;
  130. }
  131. }
  132. }
  133. .footer {
  134. padding: 19rpx 24rpx;
  135. .bargain-btn {
  136. // 继续砍价 按钮
  137. height: 62rpx;
  138. padding: 0 44rpx;
  139. background-color: $-color-primary;
  140. }
  141. .purchase-btn {
  142. // 直接购买
  143. height: 62rpx;
  144. padding: 0 44rpx;
  145. background-color: rgba(255, 44, 60, 0.1);
  146. }
  147. .footer-btn {
  148. &:not(:last-child) {
  149. margin-right: 20rpx;
  150. }
  151. }
  152. }
  153. }
  154. .data-null {
  155. margin-top: 150rpx;
  156. }
  157. }
  158. </style>