seckill.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. <template>
  2. <view>
  3. <!--components/seckill/seckill.wxml-->
  4. <!-- 秒杀 -->
  5. <template name="seckill">
  6. <view class="pdlr20">
  7. <!-- 秒杀 -->
  8. <view class="mt20 bgfff r10" v-if="seckillList.products.length > 0">
  9. <navigator class="head" hover-class="none" :url="'/activity/seckill/seckill' + url">
  10. <view class="titleNav pdlr20 dflex" v-if="seckillTemplate.titleType==1">
  11. {{seckillTemplate.titleCon}}
  12. <image src="/static/pages/images/more.png" class="more"></image>
  13. </view>
  14. <image lazy-load="true" v-if="seckillTemplate.titleType==2" :src="seckillTemplate.titleCon + '?x-oss-process=style/w750-auto'" mode="widthFix" class="imgtit"></image>
  15. </navigator>
  16. <goodsList :pageList="seckillList" :about="about" :merchant="web" :type="'2'" :typeName="'秒杀'"></goodsList>
  17. <!-- <view class="tabcon dflex">
  18. <block v-for="(item, index) in seckillList" :key="index">
  19. <view class="li">
  20. <view class="jsdimgs" @tap="toSeckillList" :data-index="index" :data-url="web">
  21. <image lazy-load="true" :src="item.pic + '?x-oss-process=style/w375'" mode="aspectFit" class="jsdpro" :data-index="index">
  22. </image>
  23. </view>
  24. <view class="jsdinfo">
  25. <view class="proname" @tap="toSeckillList" :data-url="web" :data-index="index">{{item.productName}}</view>
  26. <view class="operate dflex">
  27. <view class="price proprice" @tap="toSeckillList" :data-url="web" :data-index="index">
  28. ¥<text>{{item.money}}</text><text class="del" v-if="item.marketPrice!=0&&item.marketPrice>item.money">¥{{item.marketPrice}}</text></view>
  29. <view class="qiang mbglinear" v-if="item.start" @tap="toSeckillList" :data-url="web" :data-index="index">购买
  30. </view>
  31. <block v-else>
  32. <view class="qiang mbggreen" @tap="cancelActivityRemind" :data-index="index" :data-id="item.id" v-if="item.isRemind" data-type="3">已预约</view>
  33. <view class="qiang mbggreen" @tap="addActivityRemind" :data-index="index" :data-id="item.id" data-type="3" v-else>预约</view>
  34. </block>
  35. </view>
  36. </view>
  37. </view>
  38. </block>
  39. </view> -->
  40. <!--
  41. <view class="msinfos bgfff r10" wx:for="{{seckillList}}" wx:key="item">
  42. <image src="{{item.pic + '?x-oss-process=style/w750-auto'}}" mode="aspectFit" bindtap="toSeckillList"
  43. data-index="{{index}}"></image>
  44. <view class="msinfo">
  45. <view class="msname" bindtap="toSeckillList" data-index="{{index}}">{{item.productName}}</view>
  46. <view class="qgsta dflex">
  47. <view class="price proprice" bindtap="toSeckillList" data-index="{{index}}">¥<text>{{item.money}}</text><text
  48. class="del">¥{{item.marketPrice}}</text></view>
  49. <view class="qiang mbgcolor" wx:if="{{item.start}}" bindtap="toSeckillList" data-index="{{index}}">立即抢购</view>
  50. <block wx:else>
  51. <view class="qiang mbggreen" bindtap="cancelActivityRemind" data-index="{{index}}" data-id="{{item.id}}"
  52. wx:if="{{item.isRemind}}" data-type="3">取消提醒</view>
  53. <view class="qiang mbggreen" bindtap="addActivityRemind" data-index="{{index}}" data-id="{{item.id}}"
  54. data-type="3" wx:else>预约提醒</view>
  55. </block>
  56. </view>
  57. </view>
  58. </view> -->
  59. </view>
  60. </view>
  61. </template>
  62. </view>
  63. </template>
  64. <script>
  65. // components/seckill/seckill.js
  66. const route = require("../../utils/route.js");
  67. const utils = require("../../utils/util.js");
  68. const mes = require("../../utils/requestmessage.js");
  69. const req = require("../../utils/request.js");
  70. const app = getApp();
  71. import goodsList from "../../components/goodsList/goodsList";
  72. export default {
  73. data() {
  74. return {
  75. };
  76. },
  77. components: {goodsList},
  78. props: {
  79. seckillList:Object,
  80. seckillTemplate:Object,
  81. web:String,
  82. url:String,
  83. about:Object
  84. },
  85. watch: {
  86. },
  87. methods: {
  88. getRqeDatas() {
  89. let that = this; //秒杀
  90. let seckill = that.homeTemplate.filter(it => it.module == that.templateType.module_seckill);
  91. if (seckill && seckill.length > 0 && seckill[0].state == 0) {
  92. that.setData({
  93. seckillTemplate: seckill[0]
  94. });
  95. this.seckillListFun(seckill[0]);
  96. }
  97. },
  98. //秒杀商品
  99. seckillListFun(seckillTemplate) {
  100. let _ts = this;
  101. if (this.merchant && this.merchant.type == 5 || this.shopId && this.merchantId) {
  102. let from = {
  103. page: this.page,
  104. limit: seckillTemplate.number,
  105. type: 3,
  106. merchantId: this.merchant.merchantDTO.id,
  107. sid: this.merchant.id
  108. };
  109. if (this.shopId && this.merchantId) from.merchantId = this.merchantId, from.sid = this.shopId;
  110. route.getShopeList(from, res => {
  111. res = res.list.map(it => {
  112. it.isRemind = it.remindId;
  113. return it;
  114. });
  115. let arrObjFilter = res.filter(ele => ele.end == false);
  116. this.setData({
  117. seckillList: arrObjFilter
  118. });
  119. });
  120. }
  121. if (this.merchant && this.merchant.type != 5) {
  122. route.getAcitve({
  123. page: 1,
  124. limit: seckillTemplate.number,
  125. type: 2,
  126. tag: 'home'
  127. }, res => {
  128. data = res.map(it => {
  129. it.num = it.sellStock / it.quantity * 100;
  130. it.isRemind = it.remindId;
  131. return it;
  132. });
  133. data.sort(function (a, b) {
  134. return Date.parse(a.startTime) - Date.parse(b.startTime);
  135. });
  136. _ts.setData({
  137. seckillList: data
  138. });
  139. });
  140. }
  141. },
  142. toSeckillList(event) {
  143. const index = event.currentTarget.dataset.index;
  144. const activity = this.seckillList[index];
  145. const url = event.currentTarget.dataset.url
  146. app.globalData.openPage('activity/seckillDetails/seckillDetails?acid=' + activity.id + "&id=" + activity.productId + url);
  147. // app.openPage('activity/seckillDetails/seckillDetails?acid=' + activity.id + "&id=" + activity.productId);
  148. },
  149. cancelActivityRemind(event) {
  150. const index = event.currentTarget.dataset.index;
  151. const id = event.currentTarget.dataset.id;
  152. const type = event.currentTarget.dataset.type;
  153. if(req.header.appId=='ZQ1VK5oc17I387E'){
  154. }else{
  155. route.cancelActivityRemind({
  156. id: id
  157. }, res => {
  158. req.msg('取消提醒成功');
  159. let data = {};
  160. if (type == 3) data['seckillList[' + index + '].isRemind'] = false;
  161. this.setData(data);
  162. });
  163. }
  164. },
  165. addActivityRemind(event) {
  166. const index = event.currentTarget.dataset.index;
  167. const id = event.currentTarget.dataset.id;
  168. const type = event.currentTarget.dataset.type;
  169. route.addActivityRemind({
  170. activityId: id
  171. }, res => {
  172. mes.remind().then(res => res);
  173. // mes.remind().then(res=>res)
  174. // mes.requsetmessage()
  175. req.msg('订阅提醒成功');
  176. let data = {};
  177. if (type == 3) data['seckillList[' + index + '].isRemind'] = true;
  178. this.setData(data);
  179. });
  180. }
  181. }
  182. };
  183. </script>
  184. <style>
  185. @import "./seckill.css";
  186. </style>