金诚优选前端代码
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.

157 lines
4.0 KiB

  1. <template>
  2. <view id="mealList">
  3. <view class="no-list" v-if="!list.length && init">
  4. 暂无数据
  5. </view>
  6. <view v-for="(items,idx) in list" :key="idx" class="gergwr">
  7. <view class="item" :data-id="item.id" v-for="(item, index) in list[idx]" :key="index" @tap="jump">
  8. <view class="left">
  9. <image mode="widthFix" :src="item.items[0].goods.img" alt></image>
  10. <view class="img-box">
  11. <image mode="widthFix" :src="item.goods.img" v-for="(item, index) in item.items" :key="index" v-if="index > 0 && index < 3" alt></image>
  12. </view>
  13. </view>
  14. <view class="right">
  15. <view class="name">
  16. {{item.items[0].goods.name}}{{item.items.length}}件商品
  17. </view>
  18. <view class="price-box">
  19. <view class="old-price">
  20. {{item.items.length}}件单买价 {{item.origin_total}}
  21. </view>
  22. <view class="meal-price">
  23. <view class="price">
  24. <span>套餐价</span>
  25. {{item.total}}
  26. </view>
  27. <view class="btn">
  28. 去购买
  29. <!-- <i class="iconfont icon-Chevron"></i> -->
  30. </view>
  31. </view>
  32. </view>
  33. </view>
  34. </view>
  35. </view>
  36. </view>
  37. </template>
  38. <script>
  39. import {pageLogin, getUrl,config,is} from '@/common/js/utils.js';
  40. import Animation from '@/common/js/animation.js';
  41. export default {
  42. data() {
  43. return {
  44. hasMore: true,
  45. init: false,
  46. list: [],
  47. page: ''
  48. };
  49. },
  50. onReachBottom() {
  51. if (this.hasMore) {
  52. var page = this.page + 1;
  53. this.querySuitList(page);
  54. } else {
  55. wx.showToast({
  56. image: '../../../static/error.png',
  57. title: '再拉也没有啦'
  58. });
  59. }
  60. },
  61. onLoad(e) {
  62. wx.showLoading({
  63. title: "加载中",
  64. mask: true
  65. });
  66. this.querySuitList();
  67. },
  68. props: {},
  69. methods: {
  70. jump(e) {
  71. wx.navigateTo({
  72. url: '/pages/store/meal/meal?id=' + e.currentTarget.dataset.id
  73. });
  74. },
  75. querySuitList(page = 1) {
  76. this.$http.get({
  77. api: 'api/suit/list',
  78. data: {
  79. page: page
  80. }
  81. }).then(res => {
  82. if (res.statusCode == 200) {
  83. res = res.data;
  84. if (res.status) {
  85. var pages = res.meta.pagination;
  86. var current_page = pages.current_page;
  87. var total_pages = pages.total_pages;
  88. this.setData({
  89. //[`list[${page - 1}]`]: res.data,
  90. init: true,
  91. page: current_page,
  92. hasMore: current_page < total_pages
  93. });
  94. this.$set(this.list, page -1, res.data);
  95. } else {
  96. wx.showModal({
  97. title: '',
  98. content: '请求失败',
  99. showCancel: false
  100. });
  101. }
  102. } else {
  103. wx.showModal({
  104. title: '',
  105. content: '请求失败',
  106. showCancel: false
  107. });
  108. }
  109. wx.hideLoading();
  110. // this.setData({
  111. // show: false
  112. // });
  113. this.show=false;
  114. }, err => {
  115. wx.hideLoading();
  116. this.show=false;
  117. });
  118. },
  119. setData: function (obj) {
  120. let that = this;
  121. let keys = [];
  122. let val, data;
  123. Object.keys(obj).forEach(function (key) {
  124. keys = key.split('.');
  125. val = obj[key];
  126. data = that.$data;
  127. keys.forEach(function (key2, index) {
  128. if (index + 1 == keys.length) {
  129. that.$set(data, key2, val);
  130. } else {
  131. if (!data[key2]) {
  132. that.$set(data, key2, {});
  133. }
  134. }
  135. data = data[key2];
  136. });
  137. });
  138. }
  139. },
  140. computed: {},
  141. watch: {}
  142. };
  143. </script>
  144. <style rel="stylesheet/less" lang="less">
  145. @import "mealList";
  146. </style>