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

262 lines
7.4 KiB

  1. <template>
  2. <view id="store-seckill">
  3. <view class="contents">
  4. <view class="no-list" v-if="!list.length && init">
  5. 暂无数据
  6. </view>
  7. <view class="seckill-list">
  8. <!-- <view wx:for="{{list}}" wx:key="*this" wx:for-index="idx" wx:for-item="items">
  9. <view class="item" data-id="{{item.goods.id}}" wx:for="{{list[idx]}}" wx:key="*this" wx:for-index="index" wx:if="{{!item.is_end}}" bindtap="jump">
  10. <view class="groups-img">
  11. <view class="num">
  12. {{item.number}}人团
  13. </view>
  14. <image mode="widthFix" src="{{item.img}}" alt="" />
  15. <view class="time-box {{item.init_status == 1 ? 'active' : ''}}">
  16. <group end="{{item.ends_at}}" starts="{{item.starts_at}}" server="{{item.server_time}}" mold="list" index="{{index}}" findex="{{idx}}" bind:starts="isStarts" bind:end="isEnd"></group>
  17. </view>
  18. </view>
  19. <view class="groups-name">
  20. {{item.goods.name}}
  21. </view>
  22. <div class="groups-bottom">
  23. <view class="money">
  24. <view class="new">
  25. {{item.groupon_price}}
  26. </view>
  27. <view class="old">
  28. 单买价 <span>¥{{item.goods.sell_price}}</span>
  29. </view>
  30. </view>
  31. <view class="buttom">
  32. 去拼团
  33. </view>
  34. </div>
  35. </view>
  36. </view> -->
  37. <view v-for="(items, idx) in list" :key="idx">
  38. <view class="item" :data-id="item.goods.id" v-for="(item, index) in list[idx]" :key="index" @tap="jump">
  39. <view class="left">
  40. <image mode="widthFix" :src="item.goods.img" alt></image>
  41. </view>
  42. <view class="right">
  43. <view class="name">
  44. {{item.goods.name}}
  45. </view>
  46. <view class="price-box">
  47. <view class="old-price">
  48. 单买价 {{item.goods.sell_price}}
  49. </view>
  50. <view class="meal-price">
  51. <view class="price">
  52. <span>{{item.number}}人团</span>
  53. {{item.price}}
  54. </view>
  55. <view class="btn" :style="'background: ' + config.mainColor">
  56. <span v-if="item.init_status == 1">去拼团
  57. <!-- <i class="iconfont icon-Chevron"></i> -->
  58. </span>
  59. <span v-else>即将开抢
  60. <!-- <i class="iconfont icon-Chevron"></i> -->
  61. </span>
  62. </view>
  63. </view>
  64. </view>
  65. </view>
  66. </view>
  67. </view>
  68. <view class="loadingbox" :hidden="!show">
  69. {{showText}}
  70. </view>
  71. </view>
  72. </view>
  73. </view>
  74. </template>
  75. <script>
  76. import {pageLogin, getUrl,config,is} from '@/common/js/utils.js';
  77. import group from "@/components/group/group";
  78. export default {
  79. data() {
  80. return {
  81. hasMore: true,
  82. init: false,
  83. list: [],
  84. page: '',
  85. showText: '正在加载下一页数据',
  86. show: false,
  87. config: '',
  88. author: config.PACKAGES.author
  89. };
  90. },
  91. components:{
  92. group
  93. },
  94. // 加载更多
  95. onReachBottom() {
  96. if (this.hasMore) {
  97. var page = this.page + 1;
  98. this.setData({
  99. show: true
  100. });
  101. this.querySeckillList(page);
  102. } else {
  103. wx.showToast({
  104. image: '../../../static/error.png',
  105. title: '再拉也没有啦'
  106. });
  107. }
  108. },
  109. // 分享
  110. onShareAppMessage(res) {
  111. return {
  112. title: '惊喜不断,超低价拼团火热进行中',
  113. path: '/pages/store/groups/groups'
  114. };
  115. },
  116. onLoad(e) {
  117. // 第三方平台配置颜色
  118. var bgConfig = this.$cookieStorage.get('globalConfig') || '';
  119. this.setData({
  120. config: bgConfig
  121. });
  122. wx.showLoading({
  123. title: "加载中",
  124. mask: true
  125. });
  126. this.querySeckillList(1);
  127. },
  128. components: {
  129. group
  130. },
  131. props: {},
  132. methods: {
  133. jump(e) {
  134. wx.navigateTo({
  135. url: '/pages/store/detail/detail?id=' + e.currentTarget.dataset.id
  136. });
  137. },
  138. // 请求秒杀列表
  139. querySeckillList(page) {
  140. this.$http.get({
  141. api: 'api/multiGroupon/list',
  142. data: {
  143. page: page
  144. }
  145. }).then(res => {
  146. if (res.statusCode == 200) {
  147. res = res.data;
  148. if (res.status) {
  149. var pages = res.meta.pagination;
  150. var current_page = pages.current_page;
  151. var total_pages = pages.total_pages;
  152. this.setData({
  153. // [`list[${page - 1}]`]: res.data,
  154. init: true,
  155. page: current_page,
  156. hasMore: current_page < total_pages
  157. });
  158. this.$set(this.list, page -1, res.data);
  159. } else {
  160. wx.showModal({
  161. title: '',
  162. content: '请求失败',
  163. showCancel: false
  164. });
  165. }
  166. } else {
  167. wx.showModal({
  168. title: '',
  169. content: '请求失败',
  170. showCancel: false
  171. });
  172. }
  173. wx.hideLoading();
  174. this.setData({
  175. show: false
  176. });
  177. }, err => {
  178. wx.hideLoading();
  179. this.setData({
  180. show: false
  181. });
  182. });
  183. },
  184. // 秒杀开始
  185. isStarts(e) {
  186. var findex = e.detail.findex;
  187. var index = e.detail.index;
  188. if (index != undefined || findex != undefined) {
  189. var item = this.list[findex][index];
  190. if (item.init_status != 1) {
  191. // this.setData({
  192. // [`list[${findex}][${index}].init_status`]: 1
  193. // });
  194. this.list[findex][index].init_status=1;
  195. }
  196. }
  197. },
  198. // 秒杀结束
  199. isEnd(e) {
  200. var findex = e.detail.findex;
  201. var index = e.detail.index;
  202. if (index != undefined || findex != undefined) {
  203. var item = this.list[findex][index];
  204. if (item.is_end == false) {
  205. // this.setData({
  206. // [`list[${findex}][${index}].is_end`]: true
  207. // });
  208. this.list[findex][index].is_end=true;
  209. }
  210. }
  211. },
  212. setData: function (obj) {
  213. let that = this;
  214. let keys = [];
  215. let val, data;
  216. Object.keys(obj).forEach(function (key) {
  217. keys = key.split('.');
  218. val = obj[key];
  219. data = that.$data;
  220. keys.forEach(function (key2, index) {
  221. if (index + 1 == keys.length) {
  222. that.$set(data, key2, val);
  223. } else {
  224. if (!data[key2]) {
  225. that.$set(data, key2, {});
  226. }
  227. }
  228. data = data[key2];
  229. });
  230. });
  231. }
  232. },
  233. computed: {},
  234. watch: {}
  235. };
  236. </script>
  237. <style rel="stylesheet/less" lang="less">
  238. @import "groups";
  239. </style>