金诚优选前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

149 lines
4.0 KiB

  1. <template>
  2. <view id="container">
  3. <view class="body_box">
  4. <view v-if="list && list.length && list[0] && list[0].length">
  5. <view class="bargain_body" v-for="(items,index) in list" :key="index">
  6. <view v-for="(item,idx) in items" :key="item.id" style="margin-bottom: 10px;background-color: #FFFFFF; width: 100%;">
  7. <view class="bargain_goods">
  8. <view class="goods_left">
  9. <image :src="item.reduce.goods.img" mode="widthFix" />
  10. </view>
  11. <view class="goods_right">
  12. <view class="goods_name">{{item.reduce.goods.name}}</view>
  13. <view class="number">剩余{{item.reduce.store_nums}}砍价名额</view>
  14. <view class="past_price">原价 <span>{{item.reduce.goods.max_price}}</span></view>
  15. <view class="right_foot">
  16. <view class="new_price">
  17. 砍后价{{item.reduce.price}}
  18. </view>
  19. <view class="btn" @tap="toDetail" :data-reduce-id="item.id" v-if="item.status_text=='进行中'">
  20. 查看详情
  21. </view>
  22. <view class="btn_other" @tap="toDetail" :data-reduce-id="item.id" v-else>
  23. 查看详情
  24. </view>
  25. </view>
  26. </view>
  27. </view>
  28. </view>
  29. </view>
  30. </view>
  31. <view v-if="list && list.length == 0 && list[0] && list[0].length == 0 && init" style="text-align: center;padding: 20px; font-size: 14px;">
  32. 您暂无砍价哟~
  33. </view>
  34. </view>
  35. </view>
  36. </template>
  37. <script>
  38. export default{
  39. data(){
  40. return{
  41. list:[],
  42. page:'',
  43. more:'',
  44. reduce_items_id:'',
  45. init:''
  46. }
  47. },
  48. onLoad(){
  49. this.getReduceList(1);
  50. },
  51. onShow(){
  52. },
  53. //下拉刷新
  54. onReachBottom(){
  55. if(this.more){
  56. let page = this.page + 1;
  57. this.getReduceList(page);
  58. } else {
  59. wx.showToast({
  60. image: '../../../static/error.png',
  61. title: '再拉也没有啦'
  62. });
  63. }
  64. },
  65. methods:{
  66. toDetail(e){
  67. this.reduce_items_id = e.currentTarget.dataset.reduceId;
  68. wx.navigateTo({
  69. url: `/pages/bargain/detail/detail?reduce_items_id=${this.reduce_items_id}`
  70. })
  71. },
  72. // 获取页面列表数据
  73. getReduceList(page) {
  74. wx.showLoading({
  75. title: "加载中",
  76. mask: true
  77. });
  78. var token = this.$cookieStorage.get('user_token');
  79. this.$http.get({
  80. api: 'api/reduce/list/me',
  81. header:{
  82. Authorization:token
  83. },
  84. data: {
  85. page:page
  86. }
  87. }).then(res => {
  88. res = res.data;
  89. if (res.status) {
  90. let pages = res.meta.pagination;
  91. let current_page = pages.current_page;
  92. let total_pages = pages.total_pages;
  93. this.setData({
  94. [`list.${page-1}`]: res.data,
  95. more: current_page < total_pages,
  96. page: current_page,
  97. init:true
  98. })
  99. } else {
  100. wx.showModal({
  101. content: res.message || '请求失败',
  102. showCancel: false
  103. })
  104. }
  105. wx.hideLoading()
  106. }).catch(rej => {
  107. wx.hideLoading()
  108. wx.showModal({
  109. content: rej.message || '请求失败',
  110. showCancel: false
  111. })
  112. })
  113. },
  114. setData: function(obj) {
  115. let that = this;
  116. let keys = [];
  117. let val, data;
  118. Object.keys(obj).forEach(function(key) {
  119. keys = key.split('.');
  120. val = obj[key];
  121. data = that.$data;
  122. keys.forEach(function(key2, index) {
  123. if (index + 1 == keys.length) {
  124. that.$set(data, key2, val);
  125. } else {
  126. if (!data[key2]) {
  127. that.$set(data, key2, {});
  128. }
  129. }
  130. data = data[key2];
  131. });
  132. });
  133. }
  134. }
  135. }
  136. </script>
  137. <style rel="stylesheet/less" lang="less">
  138. @import "list";
  139. </style>