bargain.vue 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <template>
  2. <view>
  3. <!--components/bargain/bargain.wxml-->
  4. <!-- 砍价 -->
  5. <template name="bargain">
  6. <view class="pdlr20">
  7. <view class="mt20 bgfff r10 " v-if="bargainList && bargainList.products.length > 0">
  8. <navigator hover-class="none" :url="'/activity/bargain/index/index' + url" class="head">
  9. <view class="titleNav pdlr20 dflex" v-if="bargainTemplate.titleType==1">
  10. {{bargainTemplate.titleCon}}
  11. <image src="/static/pages/images/more.png" class="more"></image>
  12. </view>
  13. <image lazy-load="true" v-if="bargainTemplate.titleType==2" :src="bargainTemplate.titleCon + '?x-oss-process=style/w750-auto'" mode="widthFix" class="imgtit"></image>
  14. </navigator>
  15. <goodsList :pageList="bargainList" :about="about" :merchant="web" :type="'5'" :typeName="'砍价'"></goodsList>
  16. <!-- <view class="pintuan pdlr20">
  17. <block v-for="(item, index) in bargainList" :key="index">
  18. <view class="li dflex">
  19. <image :src="item.pic" mode="aspectFit" class="proimg" @tap="goUrl" :data-url="'activity/bargain/detail/detail?id=' + item.productId + '&acid=' + item.id + '' + web">
  20. </image>
  21. <view class="kjcon flex">
  22. <view class="name" @tap="goUrl" :data-url="'activity/bargain/detail/detail?id=' + item.productId + '&acid=' + item.id + '' + web">
  23. {{item.productName}}
  24. </view>
  25. <view class="kan-price dflex" @tap="goUrl" :data-url="'activity/bargain/detail/detail?id=' + item.productId + '&acid=' + item.id + '' + web">
  26. <text class="tag mbglinear">砍价后</text>
  27. <view class="price"><text>¥</text>{{item.money}}</view>
  28. <text class="del" v-if="item.orPrice!=0&&item.orPrice>item.money">原价:¥{{item.orPrice}}</text>
  29. </view>
  30. <view class="kan-times dflex">
  31. <view class="kan-time" v-if="item.end==true&&item.start==true">已结束</view>
  32. <view class="kan-time dflex" v-else>
  33. <block v-if="item.times.length==4">
  34. <block v-if="item.times[0] !=0"><text>{{item.times[0]}}</text>天</block>
  35. <text>{{item.times[1]}}</text>:
  36. <text>{{item.times[2]}}</text>:
  37. <text>{{item.times[3]}}</text>
  38. </block>
  39. <block v-else>
  40. <text>{{item.times[0]}}</text>:
  41. <text>{{item.times[1]}}</text>:
  42. <text>{{item.times[2]}}</text>
  43. </block>
  44. <view>{{item.start==false?'后开始':'后结束'}}</view>
  45. </view>
  46. <view class="kan-btn mbglinear" v-if="item.end==false&&item.start==true" @tap="goUrl" :data-url="'activity/bargain/detail/detail?id=' + item.productId + '&acid=' + item.id + '' + web">
  47. 立即砍价</view>
  48. <block v-else>
  49. <view class="remind mbggreen dflex" v-if="item.start==false&&item.isRemind" @tap="cancelActivityRemind" :data-index="index" data-type="4" :data-id="item.id">取消预约
  50. </view>
  51. <view class="remind mbggreen dflex" v-if="item.start==false&&!item.isRemind" @tap="addActivityRemind" :data-index="index" data-type="4" :data-id="item.id">
  52. <icon class="iconfont icon-yugao"></icon>预约提醒
  53. </view>
  54. </block>
  55. </view>
  56. </view>
  57. </view>
  58. </block>
  59. </view> -->
  60. </view>
  61. </view>
  62. </template>
  63. </view>
  64. </template>
  65. <script>
  66. // components/bargain/bargain.js
  67. const route = require("../../utils/route.js");
  68. const utils = require("../../utils/util.js");
  69. const mes = require("../../utils/requestmessage.js");
  70. const req = require("../../utils/request.js");
  71. const app = getApp();
  72. import goodsList from "../../components/goodsList/goodsList";
  73. export default {
  74. data() {
  75. return {
  76. };
  77. },
  78. components: {goodsList},
  79. props: {
  80. bargainTemplate:Object, //砍价后台模板配置
  81. bargainList:Object, //{backgroundColor:背景颜色,displayStyle: 样式模板,lineNumber:每行几个,products:产品列表}
  82. url:String, //跳转地址
  83. web:String, //跳转地址
  84. about:Object //参数配置
  85. },
  86. watch: {
  87. },
  88. methods: {
  89. getRqeDatas() {
  90. let that = this; //砍价
  91. let bargain = that.homeTemplate.filter(it => it.module == that.templateType.module_bargain);
  92. if (bargain && bargain.length > 0 && bargain[0].state == 0) {
  93. that.setData({
  94. bargainTemplate: bargain[0]
  95. });
  96. this.bargainListFun(bargain[0]);
  97. }
  98. },
  99. //砍价
  100. bargainListFun(bargainTemplate) {
  101. let _ts = this;
  102. _ts.clearAllTimer(3);
  103. if (this.merchant && this.merchant.type == 5 || this.shopId && this.merchantId) {
  104. let from = {
  105. page: this.page,
  106. limit: bargainTemplate.number,
  107. type: 7,
  108. merchantId: this.merchant.merchantDTO.id,
  109. sid: this.merchant.id
  110. };
  111. if (this.shopId && this.merchantId) from.merchantId = this.merchantId, from.sid = this.shopId;
  112. route.getShopeList(from, res => {
  113. res = res.list.map(it => {
  114. it.isRemind = it.remindId;
  115. return it;
  116. });
  117. let arrObjFilter = res.filter(ele => ele.end == false);
  118. this.setData({
  119. bargainList: arrObjFilter
  120. });
  121. _ts.initGroupTimer(3);
  122. });
  123. }
  124. if (this.merchant && this.merchant.type != 5) {
  125. route.getAcitveNew({
  126. page: 1,
  127. limit: bargainTemplate.number,
  128. type: 5,
  129. tag: 'home'
  130. }, data => {
  131. data = data.list.map(it => {
  132. it.isRemind = it.remindId;
  133. return it;
  134. });
  135. let arrObjFilter = data.filter(ele => ele.end == false);
  136. _ts.setData({
  137. bargainList: arrObjFilter
  138. });
  139. _ts.initGroupTimer(3);
  140. });
  141. }
  142. },
  143. //1为社区团购,2为拼团,3为砍价
  144. initGroupTimer(type) {
  145. //社区拼图定时器
  146. let _ts = this;
  147. let list = [];
  148. if (type == 3) list = this.bargainList;
  149. if (list && list.length > 0) {
  150. // let activityGroup = this.data.activityGroup;
  151. for (let i = 0, len = list.length; i < len; i++) {
  152. let group = list[i];
  153. let nowTime = new Date(group.nowTime.replace(/-/g, '/')).getTime();
  154. let startTime = new Date(group.startTime.replace(/-/g, '/')).getTime();
  155. let endTime = new Date(group.endTime.replace(/-/g, '/')).getTime();
  156. if (!group.start) endTime = startTime;
  157. let times = parseInt((endTime - nowTime) / 1000);
  158. let timer = setInterval(() => {
  159. times--;
  160. let data = {};
  161. if (times === 0) {
  162. //重新加载列表
  163. if (type == 3) data['bargainList[' + i + '].end'] = true;
  164. clearInterval(timer);
  165. } else {
  166. let n = utils.formatDayTimes(times);
  167. if (type == 3) data['bargainList[' + i + '].times'] = n.split(/:|天/g);
  168. }
  169. _ts.setData(data);
  170. }, 1000);
  171. if (type == 3) this.bargainList[i]['timer'] = timer; // let fs = [];
  172. // fs['activityGroup[' + i + '].timer'] = timer;
  173. // _ts.setData(fs);
  174. }
  175. }
  176. },
  177. clearAllTimer(type) {
  178. // console.log(this.activityGroup, this.joingroupList, this.bargainList, this.customersList);
  179. if (type == 3) this.bargainList.forEach(it => clearInterval(it.timer));
  180. },
  181. cancelActivityRemind(event) {
  182. const index = event.currentTarget.dataset.index;
  183. const id = event.currentTarget.dataset.id;
  184. const type = event.currentTarget.dataset.type;
  185. if(req.header.appId=='ZQ1VK5oc17I387E'){
  186. }else{
  187. route.cancelActivityRemind({
  188. id: id
  189. }, res => {
  190. req.msg('取消提醒成功');
  191. let data = {};
  192. if (type == 4) data['bargainList[' + index + '].isRemind'] = false;
  193. this.setData(data);
  194. });
  195. }
  196. },
  197. addActivityRemind(event) {
  198. const index = event.currentTarget.dataset.index;
  199. const id = event.currentTarget.dataset.id;
  200. const type = event.currentTarget.dataset.type;
  201. route.addActivityRemind({
  202. activityId: id
  203. }, res => {
  204. mes.remind().then(res => res);
  205. // mes.remind().then(res=>res)
  206. // mes.requsetmessage()
  207. req.msg('订阅提醒成功');
  208. let data = {};
  209. if (type == 4) data['bargainList[' + index + '].isRemind'] = true;
  210. this.setData(data);
  211. });
  212. },
  213. goUrl(event) {
  214. //跳转链接
  215. let url = event.currentTarget.dataset.url;
  216. app.globalData.openPage(url);
  217. }
  218. }
  219. };
  220. </script>
  221. <style>
  222. @import "./bargain.css";
  223. </style>