Commit 7ebd45112bc2759943655fc48c48e20a4bf42c84

Authored by 后端研发-苏泰源
1 parent 323374f5

套盒商品

packageA/pages/goodsInfo/goodsInfo.js
... ... @@ -555,6 +555,8 @@ Page({
555 555 if (fir_com[ind].weapp_img) fir_com[ind].weapp_img = JSON.parse(fir_com[ind].weapp_img);
556 556 }
557 557 }
  558 +
  559 + this.getTaohe();
558 560  
559 561 // if (th.data.is_closecoupon != 1 && (!th.data.fir_quan || th.data.fir_quan.length<=0)) {
560 562 // //----获取详情页的券的数量----
... ... @@ -2705,6 +2707,43 @@ Page({
2705 2707 });
2706 2708 },
2707 2709  
  2710 +
  2711 + // 判断是否开启美业,获取套盒列表
  2712 + getTaohe() {
  2713 + // 判断是否开启美业
  2714 + getApp().promiseGet('/api/weshop/store/getTabSys/' + os.stoid, {}).then(res => {
  2715 + if(res.data.code == 0) {
  2716 + let enableMeiye = res.data.data.EnableMeiye;
  2717 + self.setData({
  2718 + enableMeiye,
  2719 + });
  2720 +
  2721 + if(enableMeiye) { // 开启美业
  2722 + // 获取套盒列表
  2723 + let url = '/api/weshop/serviceGoods/list'
  2724 + let data = {
  2725 + store_id: getApp().globalData.setting.stoid,
  2726 + service_id: this.data.data.id,
  2727 + };
  2728 + // 请求数据
  2729 + getApp().promiseGet(url, {
  2730 + data: data,
  2731 + }).then(res => {
  2732 + if (res.data.code == 0) {
  2733 + console.log('请求成功套盒列表', res);
  2734 + self.setData({
  2735 + taoheList: res.data.data,
  2736 + });
  2737 + } else {
  2738 + throw (res);
  2739 + };
  2740 + }).catch(err => {});
  2741 +
  2742 + };
  2743 + };
  2744 + });
  2745 + }
  2746 +
2708 2747  
2709 2748  
2710 2749 });
... ...
packageA/pages/goodsInfo/goodsInfo.wxml
... ... @@ -203,13 +203,13 @@
203 203 </view>
204 204 <view class="pdh20">
205 205  
206   - <view wx:if="{{listServiceItem && listServiceItem.length > 0}}">
  206 + <block wx:if="{{listServiceItem && listServiceItem.length > 0}}">
207 207 <view class="card fs28" wx:for="{{listServiceItem}}">
208 208 <view class="flex ai_c jc_sb" style="height: 88rpx;">
209   - <view class="ellipsis-2">{{item.projectName}}({{item.frequency}}次)</view>
  209 + <view class="ellipsis-2 f1">{{item.projectName}}({{item.frequency}}次)</view>
210 210 <view class="pdl30 t-r">
211   - <view class="rmb fs36 bold c-red" wx:if="{{item.money}}">{{item.money}}</view>
212   - <view class="fs22 c-9" wx:if="{{item.showPrice}}">零售价:¥{{item.showPrice}}</view>
  211 + <view class="rmb fs36 bold c-red">{{item.money}}</view>
  212 + <view class="fs22 c-9 del" wx:if="{{item.showPrice}}">零售价:¥{{item.showPrice}}</view>
213 213 </view>
214 214 </view>
215 215 <view class="flex ai_c jc_sb fs24 c-6">
... ... @@ -217,8 +217,25 @@
217 217 <!-- <view class="pdl30 shrink0">有效期:50天/2022-02-02</view> -->
218 218 </view>
219 219 </view>
  220 + </block>
220 221  
221   - </view>
  222 + <block wx:if="{{enableMeiye}}">
  223 + <block wx:if="{{taoheList && taoheList.length > 0}}">
  224 + <view class="taohe fs28" wx:for="{{taoheList}}">
  225 + <view class="flex ai_c jc_sb" style="height: 88rpx;">
  226 + <view class="ellipsis-2 f1">{{item.goods_name}} ({{item.goods_sn}}) ({{item.frequency}}个)</view>
  227 + <view class="pdl30 t-r">
  228 + <view class="rmb fs36 bold c-red">{{item.vipprice}}</view>
  229 + <view class="fs22 c-9 del">零售价:¥{{item.show_price}}</view>
  230 + </view>
  231 + </view>
  232 + <view class="flex ai_c jc_sb fs24 c-6 pdt10">
  233 + <view class="ellipsis-1">备注:{{filters.show_default(item.remark, '无')}}</view>
  234 + <view class="pdl30 shrink0">有效期:{{item.effective_days}}天<text wx:if="{{item.effective_date}}">/{{item.effective_date}}</text></view>
  235 + </view>
  236 + </view>
  237 + </block>
  238 + </block>
222 239  
223 240 <view class="table_s" wx:if="{{service_list}}">
224 241 <view class="tb_item tb-l">
... ...
packageA/pages/goodsInfo/goodsInfo.wxss
... ... @@ -2855,7 +2855,8 @@ button.custom-service::after{
2855 2855 .gray{ background-color: #dcdcdc !important;}
2856 2856  
2857 2857  
2858   -.card {
  2858 +.card,
  2859 +.taohe {
2859 2860 position: relative;
2860 2861 padding: 20rpx;
2861 2862 margin-bottom: 20rpx;
... ... @@ -2870,7 +2871,7 @@ button.custom-service::after{
2870 2871 .card::before {
2871 2872 position: absolute;
2872 2873 font-family: iconfont;
2873   - content: '\e630';
  2874 + content: '\e62a';
2874 2875 color: rgba(255,0,0,.1);
2875 2876 font-size: 260rpx;
2876 2877 /* transform: rotateZ(45deg); */
... ... @@ -2878,6 +2879,16 @@ button.custom-service::after{
2878 2879 left: -70rpx;
2879 2880 }
2880 2881  
  2882 +.taohe::before {
  2883 + position: absolute;
  2884 + font-family: iconfont;
  2885 + content: '\e64e';
  2886 + color: rgba(255,0,0,.1);
  2887 + font-size: 260rpx;
  2888 + top: -20rpx;
  2889 + left: -30rpx;
  2890 +}
  2891 +
2881 2892 .rmb::before {
2882 2893 content: '¥';
2883 2894 font-size: 24rpx;
... ... @@ -2892,3 +2903,7 @@ button.custom-service::after{
2892 2903 overflow: hidden;
2893 2904 margin-right: 10rpx;
2894 2905 }
  2906 +
  2907 +.del {
  2908 + text-decoration: line-through;
  2909 +}
... ...
packageB/pages/boxes-details/boxes-details.js
1 1 // packageA/pages/details_serviceCard/details_serviceCard.js
2 2 const app = getApp();
3   -const os = app.globalData.setting;
  3 +// const os = app.globalData.setting;
4 4 let self = null;
  5 +// 防抖函数用定时器
  6 +let timer;
  7 +const {
  8 + barcode,
  9 + qrcode
  10 +} = require('../../../utils/index.js');
5 11  
6 12 Page({
7 13  
... ... @@ -9,7 +15,7 @@ Page({
9 15 * 页面的初始数据
10 16 */
11 17 data: {
12   - is_summit_ing: 0,
  18 + // is_summit_ing: 0,
13 19  
14 20 showQr: false,
15 21 },
... ... @@ -19,12 +25,18 @@ Page({
19 25 */
20 26 onLoad: function(options) {
21 27 self = this;
22   - this.data.options = options;
  28 + this.setData({
  29 + options,
  30 + });
  31 + // this.data.options = options;
23 32 app.isLogin().then(function(data) {
24 33 self.setData({
25 34 userInfo: data,
26 35 });
27   - self.getConfig();
  36 + wx.setNavigationBarTitle({
  37 + title: options.title,
  38 + });
  39 + // self.getConfig();
28 40 });
29 41 },
30 42  
... ... @@ -39,6 +51,7 @@ Page({
39 51 * 生命周期函数--监听页面显示
40 52 */
41 53 onShow: function() {
  54 + console.log('show~~~');
42 55 if (app.globalData.userInfo) {
43 56 if (!this.data.isLogin) {
44 57 this.setData({
... ... @@ -47,11 +60,10 @@ Page({
47 60 isLogin: true,
48 61 });
49 62  
50   - let url = '/api/weshop/recharge/user/page'
  63 + let url = '/api/weshop/serviceGoods/list'
51 64 let data = {
52 65 store_id: app.globalData.setting.stoid,
53   - user_id: this.data.userInfo.user_id,
54   - order_id: this.data.options.order_id,
  66 + service_id: this.data.options.service_id,
55 67 };
56 68  
57 69 // 请求数据
... ... @@ -61,18 +73,19 @@ Page({
61 73 if (res.data.code == 0) {
62 74 console.log('请求成功', res);
63 75 this.setData({
64   - details: res.data.data.pageData[0],
  76 + details: res.data.data,
65 77 });
66 78 } else {
67 79 throw (res);
68 80 };
69 81 }).catch(err => {
70   - wx.showToast({
71   - title: err.data.data,
72   - icon: 'error',
73   - });
  82 + // wx.showToast({
  83 + // title: err.data.data,
  84 + // icon: 'error',
  85 + // });
74 86 });
75   -
  87 +
  88 +
76 89 };
77 90 };
78 91 },
... ... @@ -113,21 +126,6 @@ Page({
113 126 },
114 127  
115 128  
116   - // 内容复制到剪贴板
117   - copy() {
118   - console.log('点击了复制按钮');
119   - wx.setClipboardData({
120   - data: this.data.details.order_sn,
121   - success(res) {
122   - wx.getClipboardData({
123   - success(res) {
124   - console.log(res.data);
125   - }
126   - })
127   - }
128   - })
129   - },
130   -
131 129  
132 130 // 图片异常时加载默认图片
133 131 bind_bnerr(e) {
... ... @@ -137,362 +135,85 @@ Page({
137 135 this.setData(errObj); // this.setData({ details.list[0].img_url});
138 136 },
139 137  
140   -
141   - // 查看商品详情
142   - viewDetails(e) {
143   - let goods_id = e.currentTarget.dataset.gid;
144   - let url = '/packageA/pages/goodsInfo/goodsInfo?goods_id=' + goods_id;
145   - app.goto(url);
146   - },
147   -
148   - // 获取系统参数
149   - getConfig() {
150   - app.getConfig2(function(e) {
151   - // console.log('101',e);
152   - let json_d = JSON.parse(e.switch_list);
153   - self.setData({
154   - sys_switch: json_d,
155   - // weapp_customertype: json_d.weapp_customertype,
156   - });
157   - }, 1);
158   - },
159   -
160   -
161   - // 联系微信客服
162   - contact_wx() {
163   - var url = this.data.sys_switch.weapp_customertype_url;
164   - var id = this.data.sys_switch.weapp_customertype_appid;
165   - wx.openCustomerServiceChat({
166   - extInfo: {
167   - url: url
168   - },
169   - corpId: id,
170   - success(res) {}
171   - })
172   - },
173   -
174   -
175   - // 联系电话客服
176   - contactService() {
177   - app.getConfig(function(t) {
178   - if (t.store_tel == undefined) {
179   - app.request.get('/api/weshop/store/get/' + os.stoid, {
180   - isShowLoading: 1,
181   - data: {},
182   - success: function(rs) {
183   - app.globalData.config = rs.data.data;
184   - if (rs.data.data.store_tel == null && rs.data.data.store_tel == undefined) {
185   - app.my_warnning('商家未设置电话', 0, self);
186   - return false;
187   - }
188   - app.confirmBox('请联系客服:' + rs.data.data.store_tel);
189   - }
190   - })
191   - } else {
192   - app.confirmBox('请联系客服:' + t.store_tel);
  138 +
  139 + createQr() {
  140 + wx.showLoading({
  141 + title:'生成核销码中',
  142 + });
  143 +
  144 + let store_id = app.globalData.setting.stoid;
  145 + let id = this.data.options.id;
  146 + let url = `/api/weshop/rechargeServicelist/update/${store_id}/${id}`;
  147 +
  148 + app.request.put(url, {
  149 + data: {},
  150 + success: function(res) {
  151 + wx.hideLoading();
  152 + if(res.data.code == 0) {
  153 + let verify_code = res.data.data.verify_code;
  154 + self.qrcode(verify_code);
  155 + self.setData({
  156 + verify_code,
  157 + showQr: true,
  158 + });
  159 + };
193 160 }
194 161 });
195 162 },
196   -
197   -
198   - // 评价商品
199   - access() {
200   - let listLength = this.data.details.list.length;
201   - let order_id = this.data.details.order_id;
202   - let url = '';
203   -
204   - // 卡项订单跳转到评论页要多加个参数card=1
205   - // 卡项订单goods_id要带card_id
206   - if (listLength == 1) {
207   - let price = this.data.details.list[0].price;
208   - let card_id = this.data.details.list[0].card_id;
209   - url =
210   - `/packageB/pages/user/add_comment/add_comment?card=1&goods_id=${card_id}&order_id=${order_id}&price=${price}`
211   - };
212   - if (listLength > 1) {
213   - url = `/packageB/pages/user/comment/comment?card=1&status=0&order_id=${order_id}`;
214   - };
215   - f
216   - // console.log('url', url);
217   - app.goto(url);
218   - },
219   -
220   -
221   - // 查看评论
222   - viewComment() {
223   - let order_id = this.data.details.order_id;
224   - let card_id = this.data.details.list[0].card_id;
225   - let listLength = this.data.details.list.length;
226   - let url = '';
227   -
228   - // 卡项订单单个商品
229   - if (listLength == 1) {
230   - url = `/packageB/pages/user/view_comment/view_comment?card=1&goods_id=${card_id}&order_id=${order_id}`;
231   - };
232   - // 卡项订单多个商品
233   - if (listLength > 1) {
234   - // status控制评论列表页的activeStatus
235   - url = `/packageB/pages/user/comment/comment?card=1&status=1&order_id=${order_id}`;
236   - };
237   -
238   - app.goto(url);
  163 +
  164 + showQr() {
  165 + this.debounce(this.createQr, 300)();
239 166 },
240   -
241   -
242   - // 再来一单
243   - buy2(t) {
244   - let details = this.data.details;
245   - var th = this;
246   - var ind = 1; // 1:加入购物车
247   - // var ind = t.currentTarget.dataset.openSpecModal_ind;
248   - // var action= t.currentTarget.dataset.action;
249   - var action = 'add'; //
250   - // if(!ind) ind = t.currentTarget.dataset.openspecmodal_ind;
251   -
252   - th.setData({
253   - open_ind_store: ind
  167 +
  168 +
  169 + closeQr() {
  170 + this.setData({
  171 + showQr: false,
254 172 });
255   -
256   - // if(!th.data.sto_sele_name){
257   - // getApp().my_warnning('请选择门店', 1, th, 450);
258   - // return false;
259   - // }
260   -
261   -
262   - if (action == "buy") {
263   - //--------------此时操作的数据------------
264   - // var newd = {
265   - // id: th.data.data.id,
266   - // goods_num: th.data.goodsInputNum,
267   - // pick_id: th.data.sto_sele_id,
268   - // keyid: th.data.sto_sele_keyid,
269   - // };
270   - // newd['pick_name'] = th.data.sto_sele_name;
271   - // newd['guide_id'] = getApp().globalData.guide_id;
272   - // newd['guide_type']=0;
273   - // th.buyNow(newd);
274   - } else {
275   -
276   - var newd = {
277   - // service_id: th.data.data.id,
278   - // service_sn:th.data.data.service_sn,
279   - // service_name:th.data.data.goods_name,
280   - // goods_num: th.data.goodsInputNum,
281   - // pick_id: th.data.sto_sele_id,
282   - // user_id:oo.user_id,
283   - // store_id:os.stoid,
284   - // money:th.data.data.shop_price,
285   -
286   - service_id: details.list[0].card_id,
287   - service_sn: details.list[0].service_sn,
288   - service_name: details.list[0].service_name,
289   - goods_num: details.list[0].qty,
290   - pick_id: details.list[0].pickup_id,
291   - user_id: this.data.userInfo.user_id,
292   - store_id: app.globalData.setting.stoid,
293   - money: details.list[0].price,
294   - };
295   - if (getApp().globalData.guide_id) {
296   - newd['guide_id'] = getApp().globalData.guide_id;
297   - newd['guide_type'] = 0;
298   - }
299   -
300   - //----先看会员在购物车中是否加入了该商品-----
301   - app.request.get("/api/weshop/cartService/page", {
302   - data: {
303   - store_id: app.globalData.setting.stoid,
304   - user_id: this.data.userInfo.user_id,
305   - service_id: details.list[0].card_id,
306   - pick_id: details.list[0].pickup_id,
307   - },
308   - success: function(re) {
309   -
310   - //-------如果购物车中有相关的数据---------
311   - if (re.data.data.total > 0) {
312   - var item = re.data.data.pageData[0];
313   - var updata = {
314   - id: item.id,
315   - goods_num: details.list[0].qty + item.goods_num,
316   - money: details.list[0].price,
317   - store_id: app.globalData.setting.stoid,
318   - };
319   -
320   - if (getApp().globalData.guide_id) {
321   - updata['guide_id'] = getApp().globalData.guide_id;
322   - updata['guide_type'] = 1;
323   - }
324   - getApp().request.put("/api/weshop/cartService/update", {
325   - data: updata,
326   - success: function(t) {
327   - // getApp().my_warnning('加入购物车成功', 1, th, 450);
328   - var c_num = th.data.cartGoodsNum + th.data.goodsInputNum;
329   - th.setData({
330   - cartGoodsNum: c_num
331   - });
332   - app.goto('/pages/cart/cart/cart');
333   - // th.closeSpecModal();
334   - }
335   - });
336   - } else {
337   -
338   - getApp().request.post("/api/weshop/cartService/save", {
339   - data: newd,
340   - success: function(t) {
341   - // getApp().my_warnning('加入购物车成功', 1, th, 450);
342   - var c_num = th.data.cartGoodsNum + th.data.goodsInputNum;
343   - th.setData({
344   - cartGoodsNum: c_num
345   - });
346   - app.goto('/pages/cart/cart/cart');
347   - // th.closeSpecModal();
348   - }
349   - });
350   - }
351   - }
352   - });
353   -
354   - }
355   - },
356   -
357   -
358   - // 取消订单
359   - // api/weshop/recharge/update?store_id=&order_id=&order_status=3
360   - cancle() {
361   - wx.showModal({
362   - title: '提示',
363   - content: '确定取消订单吗?',
364   - success(res) {
365   - if (res.confirm) {
366   - console.log('用户点击确定');
367   - let order_id = self.data.details.order_id;
368   - let order_sn = self.data.details.order_sn;
369   - app.request.put('/api/weshop/recharge/update', {
370   - data: {
371   - store_id: os.stoid,
372   - order_id: order_id,
373   - order_sn: order_sn,
374   - order_status: 3,
375   - },
376   - success: function(res) {
377   -
378   - //取消成功刷新订单
379   - let url = '/api/weshop/recharge/user/page'
380   - let data = {
381   - store_id: app.globalData.setting.stoid,
382   - user_id: self.data.userInfo.user_id,
383   - order_id: self.data.options.order_id,
384   - };
385   -
386   - // 请求数据
387   - app.promiseGet(url, {
388   - data: data,
389   - }).then(res => {
390   - if (res.data.code == 0) {
391   - console.log('请求成功', res);
392   - wx.showToast({
393   - title: '取消成功',
394   - });
395   - self.setData({
396   - details: res.data.data.pageData[0],
397   - });
398   - } else {
399   - throw (res);
400   - };
401   - }).catch(err => {
402   - wx.showToast({
403   - title: err.data.data,
404   - icon: 'error',
405   - });
406   - });
407   -
408   - },
409   - })
410   - } else if (res.cancel) {
411   - console.log('用户点击取消');
412   - }
413   - }
  173 +
  174 + // 关闭二维码弹窗后,检测核销情况,改变按钮状态
  175 + wx.showLoading({
  176 + title: '刷新中',
  177 + mask: true,
414 178 });
415   - },
416   -
417   -
418   - // 立即支付
419   - pay() {
420   - let order_sn = this.data.details.order_sn;
421 179 let store_id = app.globalData.setting.stoid;
422   -
423   - app.request.post('/api/weshop/order/pay/createRechargeOrder', {
424   - data: {
425   - parentSn: order_sn,
426   - store_id: store_id,
427   - },
428   -
429   - success: function(res) {
430   - var n = res.data.data;
431   - self.weixinPay(n, function() {
432   - app.showWarning('支付成功');
433   - // setTimeout(function() {
434   - // wx.reLaunch({
435   - // url: '/pages/user/my_service/i_service',
436   - // })
437   - // }, 1000)
438   - }, function() {
439   - app.showWarning('支付失败');
440   - // setTimeout(function() {
441   - // wx.reLaunch({
442   - // url: '/packageA/pages/cardList/cardList',
443   - // })
444   - // }, 1000)
445   - });
446   - }
447   - })
448   - },
449   -
450   -
451   - //------调起支付框--------
452   - weixinPay: function(n, success, fail) {
453   - if (!n) return false;
454   - wx.requestPayment({
455   - timeStamp: String(n.timeStamp),
456   - nonceStr: n.nonceStr,
457   - package: n.packageValue,
458   - signType: n.signType,
459   - paySign: n.paySign,
460   - success: function(n) {
461   - console.log(n), getApp().showSuccess("支付成功!");
462   - "function" == typeof success && success();
463   - wx.redirectTo({
464   - url: "../deposit/deposit"
465   - });
466   - },
467   - fail: function(n) {
468   - console.log(n), "requestPayment:fail" == n.errMsg ? getApp().showWarning("支付失败") :
469   - "requestPayment:fail cancel" == n.errMsg ? getApp().showWarning("您已取消支付") : getApp().showWarning("支付失败:" + n
470   - .errMsg.substr("requestPayment:fail ".length)),
471   - "function" == typeof fail && fail();
  180 + let id = this.data.options.id;
  181 + let url = `/api/weshop/rechargeServicelist/update/${store_id}/${id}`;
  182 +
  183 + app.request.put(url, {
  184 + data: {},
  185 + success: function(res) {
  186 + wx.hideLoading();
  187 + if(res.data.code == 0) {
  188 + // console.log('xxx000', res.data.data.use_state);
  189 + self.setData({
  190 + ['options.usestate']: res.data.data.use_state,
  191 + });
  192 + };
472 193 }
473 194 });
474 195 },
475 196  
  197 + /**
  198 + * 生成二维码
  199 + * by sty
  200 + */
  201 + qrcode:function(val){
  202 + barcode('barcode', val, 600,140);
  203 + qrcode('qrcode', val, 300, 300);
  204 + },
476 205  
  206 + touchMove() {},
477 207  
478   -
479   -
480   -
481   -
482   -
483   - showQr() {
484   - this.setData({
485   - showQr: true,
486   - });
  208 + // 函数防抖
  209 + debounce(func, wait) {
  210 + return () => {
  211 + clearTimeout(timer);
  212 + timer = setTimeout(func, wait);
  213 + };
487 214 },
488 215  
489   - closeQr() {
490   - this.setData({
491   - showQr: false,
492   - });
493   - },
494 216  
495   - touchMove() {}
496 217  
497 218  
498 219  
... ...
packageB/pages/boxes-details/boxes-details.json
1 1 {
2   - "navigationBarTitleText": "订单详情",
  2 + "navigationBarTitleText": "加载中",
3 3 "usingComponents": {
4 4 "nodata": "/components/nodata/nodata",
5 5 "share_button": "/components/share/share"
... ...
packageB/pages/boxes-details/boxes-details.wxml
1   -<wxs module="filter" src="../../../utils/filter.wxs"></wxs>
  1 +<wxs module="filters" src="../../../utils/filter.wxs"></wxs>
2 2  
3 3 <view class="main">
4 4 <view class="bg-white pdh20 bdr12">
5   - <block>
6   - <!-- 门店名称栏 -->
7   - <!-- <view class="flex jc_sb ai_c pdv20">
8   - <view class="ellipsis-1 pdr40 fs30"><text class="iconfont icon-shop c-red pdr10"></text>{{item.pickup_name}}</view>
9   - <block>
10   - <text class="c-red shrink0 fs26" wx:if="{{details.order_status == 0}}">待支付</text>
11   - <text class="c-red shrink0 fs26" wx:if="{{details.order_status == 1}}">待评价</text>
12   - <text class="c-red shrink0 fs26" wx:if="{{details.order_status == 2}}">已评价</text>
13   - <text class="c-red shrink0 fs26" wx:if="{{details.order_status == 3}}">已取消</text>
14   - <text class="c-red shrink0 fs26" wx:if="{{details.order_status == 5}}">已作废</text>
15   - </block>
16   - </view> -->
17   -
18   - <!-- 列表栏 -->
19   - <view>
20   - <!-- <view class="flex pdv20" wx:for="{{details.list}}" bindtap="viewDetails" data-gid="{{item.card_id}}"> -->
21   - <view class="flex pdv20" bindtap="viewDetails" data-gid="{{item.card_id}}" wx:for="{{14}}">
22   - <view class="pic-box shrink0">
23   - <text class="iconfont icon-shangpin fs60 white"></text>
24   - </view>
25   - <view class="pdl20 f1">
26   - <view class="flex jc_sb ai_c">
27   - <view class="title ellipsis-2 pdr40">商品名称名称名称名称名称名称名称名称名称名称名称名称名称名称名称名称名称名称</view>
28   - <text class="c-6">x1{{item.price}}</text>
29   - </view>
30   - <view class="flex ai_c c-9 fs26">
31   - <!-- <text>10个/蓝色</text> -->
32   - <text class="rmb c-red">2{{filters.price(item.group_price)}}</text>
33   - <view class="fs22 del pdl10 c-c7">零售价<text class="rmb">3{{item.market_price}}</text></view>
34   - </view>
35   - </view>
  5 + <view class="flex pdv20" wx:for="{{details}}">
  6 + <view class="pic-box shrink0">
  7 + <text class="iconfont icon-shangpin fs60 white"></text>
  8 + </view>
  9 + <view class="pdl20 f1">
  10 + <view class="flex jc_sb ai_c">
  11 + <view class="title ellipsis-2 pdr40">{{item.goods_name}}</view>
  12 + <text class="c-6">x{{item.frequency}}</text>
  13 + </view>
  14 + <view class="flex ai_c c-9 fs26">
  15 + <text class="rmb c-red">{{item.vipprice}}</text>
  16 + <view class="fs22 del pdl10 c-c7">零售价<text class="rmb">{{item.show_price}}</text></view>
36 17 </view>
37 18 </view>
38   - </block>
39   -
40   -
41   - <!-- 统计栏 -->
42   - <!-- <view class="t-r bdt pdv20">共{{filter.count(details.list)}}件商品,合计:<text class="rmb c-red bold fs30">{{details.account}}</text></view> -->
  19 + </view>
43 20 </view>
44 21  
45   -
46   -
47   -
48 22 <!-- 底部按钮栏 -->
49 23 <view class="btn-bar bg-white pd20 t-c">
50   - <!-- <text class="btn bg-orange white" bindtap="buy2">再来一单</text> -->
51   - <text class="btn bg-red white" bindtap="showQr">立即兑换</text>
  24 + <!-- 已核销 -->
  25 + <text class="btn bg-gray white" wx:if="{{options.usestate == 1}}">已核销</text>
  26 + <!-- 待核销 -->
  27 + <block wx:else>
  28 + <text class="btn bg-gray white" wx:if="{{filters.isExpired(options.date)}}">已过期</text>
  29 + <text class="btn bg-red white" bindtap="showQr" wx:else>立即兑换</text>
  30 + </block>
52 31 </view>
53 32 </view>
54 33  
55 34  
56   -
57   -
58   -
59   -
60 35 <!-- 遮罩层 -->
61 36 <view class="mask" hidden="{{!showQr}}" catchtouchmove="touchMove"></view>
62 37 <!-- 码 -->
63 38 <view class="popup-container" hidden="{{!showQr}}" catchtouchmove="touchMove">
64   - <view class="t-r pdb20"><text class="iconfont icon-close fs40" bindtap="closeQr"></text></view>
  39 + <view class="t-r pdb10"><text class="iconfont icon-close fs40" bindtap="closeQr"></text></view>
65 40 <view class="popup">
66   - <!-- <view class="popup-title">
67   - <block wx:if="{{details[useIndex].isby == 1}}">包邮券</block>
68   - <block wx:else>
69   - {{filter.getNum(details[useIndex].Sum)}}元微券
70   - </block>
71   - </view> -->
72   - <!-- <view class="pdt20 c-fe0000"><text class="rmb fs80" wx:if="{{details[useIndex].isby != 1}}">{{filter.getNum(details[useIndex].Sum)}}</text></view> -->
73 41 <!-- 条形码 -->
74 42 <view class="bar-container">
75 43 <canvas class="barcode" canvas-id="barcode"/>
76   - <view class="pdt20 fs26" wx:if="{{details[useIndex].CashRepNo}}">{{details[useIndex].CashRepNo}}</view>
77   - <view class="pdt20 fs26" wx:else>{{details[useIndex].no}}</view>
78 44 </view>
79 45 <!-- 二维码 -->
80 46 <view class="qr-container">
81 47 <canvas class="qrcode" canvas-id="qrcode"/>
82 48 </view>
83 49 <view class="pdv20 c-7b fs26 bdt">
84   - <text wx:if="{{details[useIndex].ValidDate}}" class="ellipsis-1x">有效期:{{details[useIndex].BeginDate==null ? " " : time.replace_time2(details[useIndex].BeginDate)}} 至 {{time.replace_time2(details[useIndex].ValidDate)}}</text>
85   - <text wx:elif="{{details[useIndex].use_end_time}}" class="ellipsis-1x">有效期:{{details[useIndex].use_start_time==null ? " " : time.format_time(details[useIndex].use_start_time)}} 至 {{time.format_time(details[useIndex].use_end_time)}}</text>
86   - <text wx:else>有效期:不限</text>
  50 + <text>核销码: {{verify_code}}</text>
87 51 </view>
88 52 </view>
89 53 </view>
... ...
packageB/pages/boxes-details/boxes-details.wxss
... ... @@ -29,6 +29,11 @@ page {
29 29 background-image: linear-gradient(135deg,#ffba0d,#ffc30d 69%,#ffcf0d);
30 30 }
31 31  
  32 +.bg-gray {
  33 + background-image: -webkit-linear-gradient(315deg,#bfbfbf,#c3c3c3 70%,#d4d3d3);
  34 + background-image: linear-gradient(135deg,#bfbfbf,#c3c3c3 70%,#d4d3d3);
  35 + }
  36 +
32 37 .c-orange {
33 38 color: #ff9000;
34 39 }
... ... @@ -177,6 +182,11 @@ page {
177 182 background-color: pink;
178 183 }
179 184  
  185 + .barcode {
  186 + width: 100%;
  187 + height: 140rpx;
  188 + }
  189 +
180 190 .qrcode {
181 191 width: 300rpx;
182 192 height: 300rpx;
... ... @@ -194,6 +204,11 @@ page {
194 204 .breakall {
195 205 word-break: break-all;
196 206 }
  207 +
  208 + .bar-container {
  209 + box-sizing: border-box;
  210 + padding: 30rpx 20rpx;
  211 + }
197 212  
198 213  
199 214  
... ...
packageB/pages/boxes-list/boxes-list.js
1 1 const app = getApp();
2 2 let self = null;
  3 +// 防抖函数用定时器
  4 +let timer;
3 5  
4 6 Page({
5 7 data: {
... ... @@ -11,26 +13,6 @@ Page({
11 13 isLoading: false, // 检测是否已经发送请求,防止重复发送请求
12 14 noMore: false, // 检测是否有更多数据,true为没有更多数据,false为还有数据
13 15 pageNum: 1, // 当前页数
14   -
15   - // showReward: false,
16   - // prizesArr: [],
17   -
18   - // typeArr: [{
19   - // key: 'point',
20   - // name: '积分',
21   - // },{
22   - // key: 'grow',
23   - // name: '成长值',
24   - // },{
25   - // key: 'point',
26   - // name: '优惠券',
27   - // },{
28   - // key: 'prestore_name',
29   - // name: '项目服务',
30   - // },{
31   - // key: 'prestore_money',
32   - // name: '预存金额',
33   - // }],
34 16 },
35 17  
36 18 onLoad: function () {
... ... @@ -54,10 +36,12 @@ Page({
54 36 let data = {
55 37 store_id: app.globalData.setting.stoid,
56 38 user_id: this.data.userInfo.user_id,
  39 + service_type: 1,
  40 + use_state: 0,
57 41 };
58 42  
59   - // 默认获取'全部'
60   - this.getData(true, '/api/weshop/prom/luckyOrder/page', data)
  43 + // 默认获取'待核销'
  44 + this.getData(true, '/api/weshop/rechargeServicelist/page', data)
61 45 .then(()=>{
62 46 this.setData({
63 47 currentData: data,
... ... @@ -73,7 +57,7 @@ Page({
73 57 * 页面上拉触底事件的处理函数
74 58 */
75 59 onReachBottom: function () {
76   - this.scrollToLower('/api/weshop/prom/luckyOrder/page', this.data.currentData);
  60 + this.scrollToLower('/api/weshop/rechargeServicelist/page', this.data.currentData);
77 61 },
78 62  
79 63  
... ... @@ -91,7 +75,7 @@ Page({
91 75  
92 76  
93 77 // 点击tab选项卡
94   - clickTab(e) {
  78 + handleTab(e) {
95 79 this.setData({
96 80 currentTabIndex: e.target.dataset.index,
97 81 noMore: false,
... ... @@ -106,28 +90,24 @@ Page({
106 90  
107 91 switch(currentTabIndex) {
108 92 case 0: {
109   - delete currentData.team_status;
  93 + currentData.use_state = 0;
110 94 break;
111 95 };
112 96 case 1: {
113   - currentData.team_status = 0;
114   - break;
115   - };
116   - case 2: {
117   - currentData.team_status = 2;
118   - break;
119   - };
120   - case 3: {
121   - currentData.team_status = 1;
  97 + currentData.use_state = 1;
122 98 break;
123 99 };
124 100 };
125 101  
126 102 // 请求
127   - this.getData(true, '/api/weshop/prom/luckyOrder/page', currentData);
  103 + this.getData(true, '/api/weshop/rechargeServicelist/page', currentData);
128 104  
129 105 },
130 106  
  107 + clickTab(e) {
  108 + this.debounce(this.handleTab.bind(this, e), 200)();
  109 + },
  110 +
131 111  
132 112 /**
133 113 * 请求数据
... ... @@ -197,134 +177,28 @@ Page({
197 177 };
198 178 },
199 179  
  180 +
200 181  
201   - //跳转
202   - go: function (e) {
203   - var url = e.currentTarget.dataset.url;
204   - getApp().goto(url);
205   - },
206   -
207   - //查看奖励
208   - showReward: function(e) {
209   - this.setData({
210   - currentItemIndex: e.target.dataset.index,
211   - currentItemAid: e.target.dataset.aid,
212   - });
213   - this.getPrizes(this.data.currentItemIndex);
214   - },
215   -
216   - //关闭奖励
217   - closeReward: function() {
218   - this.setData({
219   - showReward: false,
220   - });
  182 + viewDetails(e) {
  183 + let id = e.currentTarget.dataset.id;
  184 + let title = e.currentTarget.dataset.title;
  185 + let serviceId = e.currentTarget.dataset.serviceid;
  186 + let date = e.currentTarget.dataset.date; //有效截止日期
  187 + let use_state = this.data.currentTabIndex; //0待核销 1已核销
  188 + let url = `/packageB/pages/boxes-details/boxes-details?service_id=${serviceId}&id=${id}&title=${title}&usestate=${use_state}&date=${date}`;
  189 +
  190 + app.goto(url);
221 191 },
222 192  
223 193  
224   - // 获取优惠券奖励和服务项目奖励
225   - getPrizes: function(currentItemIndex) {
226   - let currentItem = this.data.list.pageData[currentItemIndex];
227   - let type = currentItem.type;
228   -
229   - // 分割type字符串
230   - let typeArr = this.splitStringToArr(type);
231   - let prizesArr = [];
232   - let promiseArr = [];
233   - typeArr.forEach(function(item) {
234   -
235   - let obj = {};
236   - obj.type = item;
237   -
238   - let promise = new Promise((resolve, reject) => {
239   - switch(item) {
240   - case 1: { //积分
241   - obj.name = '积分';
242   - obj.num = 'point';
243   - prizesArr.push(obj);
244   - resolve();
245   - break;
246   - };
247   - case 2: { //成长值
248   - obj.name = '成长值';
249   - obj.num = 'grow';
250   - prizesArr.push(obj);
251   - resolve();
252   - break;
253   - };
254   - case 3: { //优惠券
255   - app.request.promiseGet('/api/weshop/prom/luckyCoupon/page', {
256   - data: {
257   - store_id: app.globalData.setting.stoid,
258   - aid: self.data.currentItemAid,
259   - }
260   - }).then(res => {
261   - if(res.data.code == 0) {
262   - obj.couponList = res.data.data.pageData;
263   - prizesArr.push(obj);
264   - resolve();
265   - };
266   - });
267   - break;
268   - };
269   - case 4: { //服务项目
270   - app.request.promiseGet('/api/weshop/prom/luckyService/page', {
271   - data: {
272   - store_id: app.globalData.setting.stoid,
273   - aid: self.data.currentItemAid,
274   - }
275   - }).then(res => {
276   - if(res.data.code == 0) {
277   - obj.serviceList = res.data.data.pageData;
278   - prizesArr.push(obj);
279   - resolve();
280   - };
281   - });
282   - break;
283   - };
284   - case 5: { //预存金额
285   - obj.name = 'prestore_name';
286   - obj.num = 'prestore_money';
287   - prizesArr.push(obj);
288   - resolve();
289   - break;
290   - };
291   - };
292   - });
293   -
294   - promiseArr.push(promise);
295   -
296   -
297   - Promise.all(promiseArr).then(()=> {
298   - self.setData({
299   - prizesArr,
300   - showReward: true,
301   - });
302   - });
303   -
304   - });
305   - },
306   -
307   - // 将type字符串分割成数组
308   - splitStringToArr: function(typeStr) {
309   - var index;
310   - var newTypeArr = [];
311   - var typeStrArr = typeStr.split(',');
312   - typeStrArr.forEach(function(item) {
313   - index = parseInt(item);
314   - newTypeArr.push(index);
315   - });
316   - return newTypeArr;
  194 + // 函数防抖
  195 + debounce(func, wait) {
  196 + return () => {
  197 + clearTimeout(timer);
  198 + timer = setTimeout(func, wait);
  199 + };
317 200 },
318 201  
319 202  
320   -
321   -
322   -
323   - viewDetails() {
324   - let url = '/packageB/pages/boxes-details/boxes-details';
325   - app.goto(url);
326   - }
327   -
328   -
329 203 })
330 204  
... ...
packageB/pages/boxes-list/boxes-list.wxml
... ... @@ -10,26 +10,34 @@
10 10 <view class="tab-bd">
11 11 <view class="list">
12 12  
13   -
14   - <view class="list-item" wx:if="{{currentTabIndex == 0}}" bindtap="viewDetails">
  13 + <block wx:for="{{list.pageData}}">
  14 + <view class="list-item" bindtap="viewDetails" data-serviceid="{{item.card_id}}" data-id="{{item.id}}" data-title="{{item.service_name}}" data-date="{{item.EffectiveDates}}">
15 15 <view class="pd20">
16   - <view class=""><text class="fs24 c-9">订单编号:</text>191561561565555</view>
17   - <view class="ellipsis-2 title">卡项名称卡项名称卡项名称卡项名称卡项名称卡项名称卡项名称卡项名称卡项名称项名称卡项名称卡项名称项名称卡项名称卡项名称项名称卡项名称卡项名称项名称卡项名称卡项名称项名称卡项名称卡项名称</view>
  16 + <view class="fs26"><text class="c-9">卡项编号:</text>{{item.service_sn}}</view>
  17 + <view class="ellipsis-2 title fs28">{{item.service_name}}</view>
18 18 <view class="flex ai-center">
19   - <text class="rmb fs40 c-red">2{{filters.price(item.group_price)}}</text>
20   - <view class="fs22 del pdl10 c-c7">零售价<text class="rmb">3{{item.market_price}}</text></view>
  19 + <text class="rmb fs40 c-red">{{item.money}}</text>
  20 + <view class="fs22 del pdl10 c-c7">零售价<text class="rmb">{{item.show_price}}</text></view>
21 21 </view>
22   - <view class="fs24 c-red">*兑换截止日期:2022-01-01至2022-12-31</view>
  22 + <view class="fs24 c-red">*兑换截止日期:{{item.BeginDates}}至{{item.EffectiveDates}}</view>
23 23 </view>
24 24  
25 25 <view class="pd20 bdt fs24 t-r">
26   - <view class="btn bg-gray white">已过期</view>
27   - <view class="btn bg-red white">立即兑换</view>
  26 + <block wx:if="{{currentTabIndex == 0}}">
  27 + <view class="btn bg-gray white" wx:if="{{filters.isExpired(item.EffectiveDates)}}">已过期</view>
  28 + <view class="btn bg-red white" wx:else>立即兑换</view>
  29 + </block>
  30 +
  31 + <block wx:if="{{currentTabIndex == 1}}">
  32 + <view class="btn bg-gray white">已核销</view>
  33 + </block>
28 34 </view>
  35 +
29 36 </view>
  37 + </block>
30 38  
31 39  
32   - <view class="list-item" wx:if="{{currentTabIndex == 1}}">
  40 + <!-- <view class="list-item" wx:if="{{currentTabIndex == 1}}">
33 41 <view class="pd20">
34 42 <view class=""><text class="fs24 c-9">订单编号:</text>191561561565555</view>
35 43 <view class="ellipsis-2 title">卡项名称卡项名称卡项名称卡项名称卡项名称卡项名称卡项名称卡项名称卡项名称项名称卡项名称卡项名称项名称卡项名称卡项名称项名称卡项名称卡项名称项名称卡项名称卡项名称项名称卡项名称卡项名称</view>
... ... @@ -43,7 +51,7 @@
43 51 <view class="pd20 bdt fs24 t-r">
44 52 <view class="btn bg-gray white">已核销</view>
45 53 </view>
46   - </view>
  54 + </view> -->
47 55  
48 56 </view>
49 57 </view>
... ...
packageB/pages/boxes-list/boxes-list.wxss
... ... @@ -37,6 +37,7 @@ page {
37 37  
38 38 .tab-hd-item.active {
39 39 color: #ff6768;
  40 + font-weight: bold;
40 41 }
41 42  
42 43 .tab-hd-item.active::after {
... ...
utils/filter.wxs
... ... @@ -184,6 +184,18 @@ var filters = {
184 184 };
185 185 },
186 186  
  187 + // 判断时间是否过期
  188 + isExpired: function(date) {
  189 + var mydate = getDate(date).getTime();
  190 + var currentDate = getDate().getTime();
  191 +
  192 + if(currentDate >= mydate) {
  193 + return true;
  194 + } else {
  195 + return false;
  196 + };
  197 + },
  198 +
187 199  
188 200  
189 201 };
... ... @@ -206,4 +218,5 @@ module.exports = {
206 218 div100: filters.div100,
207 219 JSONStringify: filters.JSONStringify,
208 220 count: filters.count,
  221 + isExpired: filters.isExpired,
209 222 }
210 223 \ No newline at end of file
... ...