Переглянути джерело

秒杀加购,支付混合

junyuanz 4 роки тому
батько
коміт
f19d1cbbe3

+ 116 - 8
pages/cart/cart.js

@@ -14,7 +14,8 @@ Page({
     selectedall:false,
     submitlock:false,
     x:0,
-    currentX: 0
+    currentX: 0,
+	seckillruntimearr:[]
   },
   handleMovableChange: function(e) {
     // this.data.currentX = e.detail.x;
@@ -56,14 +57,19 @@ Page({
     var success = function (res) {
       console.log(res)
     	if(res.data.list){
+			var skrt = that.data.seckillruntimearr;
     		for(let i in res.data.list){
     			res.data.list['movex'] = 0;
+				skrt.push('');
     		}
     		that.setData({
 	        cartList: res.data.list,
 	        cartCount: res.data.count,
-	        cartTotal: res.data.total
+	        cartTotal: res.data.total,
+			seckillruntimearr:skrt
 	      })
+		  
+		  that.seckilltime();
     	}else{
     		wx.showToast({
 	        title: '请先授权登录~',
@@ -221,9 +227,18 @@ Page({
   	let index = e.currentTarget.dataset.index;
   	var bool = this.data.cartList[index].IsBuy;
   	console.log('bool',bool)
-    this.setData({
-      ['cartList[' + index + '].IsBuy']: !bool
-    })
+	
+	if(this.data.cartList[index].seckill_end < 0 || (Date.parse(new Date()) / 1000 > this.data.cartList[index].seckill_start && Date.parse(new Date()) / 1000 < this.data.cartList[index].seckill_end)){
+		this.setData({
+		  ['cartList[' + index + '].IsBuy']: !bool
+		})
+	}else{
+		wx.showToast({
+		  title: '当前商品秒杀已结束或尚未开始~',
+		  icon: 'none',
+		  duration: 2000
+		})
+	}
     
   	this.checkSelected();
   },
@@ -239,9 +254,11 @@ Page({
 	    })
   	}else{
   		for(var i in this.data.cartList){
-  			this.setData({
-		      ['cartList[' + i + '].IsBuy']: true
-		    })
+			if(this.data.cartList[i].seckill_end < 0 || (Date.parse(new Date()) / 1000 > this.data.cartList[i].seckill_start && Date.parse(new Date()) / 1000 < this.data.cartList[i].seckill_end)){
+				this.setData({
+				  ['cartList[' + i + '].IsBuy']: true
+				})
+			}
   		}
   		this.setData({
 	      selectedall: true
@@ -375,5 +392,96 @@ Page({
 		    }
 		  })
   	}
+  },
+  seckilltime() {
+    var that = this;
+	
+	var runtime = setInterval(function () {
+		var _cartlist = that.data.cartList;
+		for(var index = 0;index<_cartlist.length;index++){
+			if(_cartlist[index].seckill_end > 0){
+				if(Date.parse(new Date()) / 1000 < _cartlist[index].seckill_end && Date.parse(new Date()) / 1000 > _cartlist[index].seckill_start){
+					var __cartdata = that.data.cartList[index];
+					var __cartindex = index;
+					var t = Date.parse(new Date())
+					t = t / 1000;
+					var leftTime = __cartdata['seckill_end'] - t
+					var d, h, m, s, ms;
+					if (leftTime >= 0) {
+					  // day = parseInt(ctime / 86400)
+					  h = parseInt(leftTime / 3600)
+					  m = parseInt(leftTime / 60 ) - parseInt(leftTime / 3600) * 60
+					  s = parseInt(leftTime) - parseInt(leftTime / 60 ) * 60
+					  s = s < 10 ? "0" + s : s
+					  m = m < 10 ? "0" + m : m
+					  h = h < 10 ? "0" + h : h
+					  
+					  __cartdata['seckill_runtime'] = h+':'+m+':'+s;
+					  var allcartlist = that.data.cartList;
+					  allcartlist[index] = __cartdata;
+					  that.setData({
+						  // ['cartList[' + __cartindex + '].seckill_runtime']:h+':'+m+':'+s
+						  cartList:allcartlist,
+						  ['seckillruntimearr['+index+']']:'秒杀剩余时间 '+h+':'+m+':'+s
+					  })
+					}
+					if (leftTime < 0) {
+					  // clearInterval(that.data.timer);
+					  that.setData({
+						  ['cartList[' + __cartindex + '].seckill_runtime']:'秒杀剩余时间 00:00:00',
+						  ['seckillruntimearr['+index+']']:'秒杀剩余时间 00:00:00'
+					  })
+					}
+				}else{
+					if(Date.parse(new Date()) / 1000 < _cartlist[index].seckill_start){
+						
+						var __cartdata = that.data.cartList[index];
+						var __cartindex = index;
+						var t = Date.parse(new Date())
+						t = t / 1000;
+						var leftTime = __cartdata['seckill_start'] - t
+						var d, h, m, s, ms;
+						if (leftTime >= 0) {
+						  // day = parseInt(ctime / 86400)
+						  h = parseInt(leftTime / 3600)
+						  m = parseInt(leftTime / 60 ) - parseInt(leftTime / 3600) * 60
+						  s = parseInt(leftTime) - parseInt(leftTime / 60 ) * 60
+						  s = s < 10 ? "0" + s : s
+						  m = m < 10 ? "0" + m : m
+						  h = h < 10 ? "0" + h : h
+						  
+						  __cartdata['seckill_runtime'] = h+':'+m+':'+s;
+						  var allcartlist = that.data.cartList;
+						  allcartlist[index] = __cartdata;
+						  that.setData({
+							  // ['cartList[' + __cartindex + '].seckill_runtime']:h+':'+m+':'+s
+							  cartList:allcartlist,
+							  ['seckillruntimearr['+index+']']:'距离秒杀开始 '+h+':'+m+':'+s
+						  })
+						}
+						if (leftTime < 0) {
+						  // clearInterval(that.data.timer);
+						  that.setData({
+							  ['cartList[' + __cartindex + '].seckill_runtime']:'距离秒杀开始 00:00:00',
+							  ['seckillruntimearr['+index+']']:'距离秒杀开始 00:00:00'
+						  })
+						}
+						
+					}else{
+						that.setData({
+							['seckillruntimearr['+index+']']:'秒杀已结束'
+						})
+					}
+				}
+			}
+		}
+		
+		console.log('cartList',that.data.cartList);
+	},1000);
+	
+	
+	that.setData({
+	  timer: runtime,
+	});
   }
 })

+ 8 - 3
pages/cart/cart.wxml

@@ -44,9 +44,13 @@
 		</view>
 	-->	
 		<view class="cartlist" wx:for="{{cartList}}" wx:key="id">
+			<view class="seckill-time" wx:if="{{seckillruntimearr[index]}}">
+				<view class="time-text" style="float: left;color:#666">当前为秒杀商品</view>
+			  <view class="time-text">{{seckillruntimearr[index]}}</view>
+			</view>
 			<view class="main_item">
-		      <movable-area style="{{item.package?'height:'+(210+item.package_list.length * 25)+'rpx':''}}">
-		        <movable-view damping="100" out-of-bounds="true" direction="horizontal" x="{{item.movex}}" id="{{index}}" animation="false" bindchange="handleMovableChange" capture-bind:touchstart="handleTouchestart" capture-bind:touchend="handleTouchend" style="{{item.package?'height:'+(210+item.package_list.length * 25)+'rpx':''}}">
+		      <movable-area style="{{item.package?'height:'+(210+item.package_list.length * 14)+'rpx':''}}">
+		        <movable-view damping="100" out-of-bounds="true" direction="horizontal" x="{{item.movex}}" id="{{index}}" animation="false" bindchange="handleMovableChange" capture-bind:touchstart="handleTouchestart" capture-bind:touchend="handleTouchend" style="{{item.package?'height:'+(210+item.package_list.length * 14)+'rpx':''}}">
 		          <view class="main_item_content ">
 		          		  <view class="cartlist_item">
 						   	  <view class="cartlist_select {{item.IsBuy ? 'active' : ''}}" bindtap="itemselected" data-count="{{item.count}}" data-id='{{item.id}}' data-price="{{item.original_price}}" data-index="{{index}}">
@@ -71,13 +75,14 @@
 						        	<input type="number" value="{{item.count}}" bindinput="changeCount" data-id='{{item.id}}' data-index="{{index}}"/>
 						        	<button bindtap="add" data-id='{{item.id}}' data-count="{{item.count}}" data-index="{{index}}" class="add">+</button>
 						        </view>
+								
 						      </view>
 						      <view class='clear'></view>
 						  </view>
 		          </view>
 		        </movable-view>
 		      </movable-area>
-		      <view class="delete_btn" data-productIndex="{{index}}" data-id='{{item.id}}' bindtap="delitem" style="{{item.package?'height:'+(210+item.package_list.length * 25)+'rpx;line-height:'+(210+item.package_list.length * 25)+'rpx':''}}">删除</view>
+		      <view class="delete_btn" data-productIndex="{{index}}" data-id='{{item.id}}' bindtap="delitem" style="{{item.package?'height:'+(210+item.package_list.length * 14)+'rpx;line-height:'+(210+item.package_list.length * 14)+'rpx':''}}">删除</view>
 		    </view>
 	    </view>
 	</view>

+ 11 - 0
pages/cart/cart.wxss

@@ -569,4 +569,15 @@ movable-view {
 	    line-height: 36rpx;
 	    color: #666;
 		margin: 10rpx 0 ;
+}
+.seckill-time{
+	display: block;
+	margin-bottom: -20rpx;
+	margin-top: 15rpx;
+	background: #FFF;
+	padding: 15rpx;
+	font-size: 26rpx;
+	color: #F00;
+	text-align: right;
+	border-radius: 15rpx;
 }

+ 35 - 2
pages/pay/pay.js

@@ -113,6 +113,20 @@ Page({
   		for(var i in val.data.product_list){
       	total = total + (val.data.product_list[i].price * val.data.product_list[i].count)
       }
+	  
+	  var canusebalance = 0;
+	  var nousebalance = 0;
+	  for(var i in val.data.product_list){
+		  var item = val.data.product_list[i];
+		  if(item.pv >= item.price){
+			   canusebalance = canusebalance + item.price;
+		  }else{
+			  nousebalance = nousebalance + item.price;
+		  }
+	  }
+	  
+	  console.log('canusebalance',canusebalance);
+	  console.log('nousebalance',nousebalance);
       
       that.setData({
         payData: val.data,
@@ -120,6 +134,8 @@ Page({
         total:total,
         yunfei:that.data.receivetype == 0 ? total<9900?val.data.freight:0 : 0,
 		_yunfei:total<9900?val.data.freight:0,
+		canusebalance:canusebalance,
+		nousebalance:nousebalance
       });
       
       
@@ -152,13 +168,30 @@ Page({
     
     var success = function (val) {
 //  	console.log('showusebalance:',(val.data.total > 0 && that.data.payData.order_type == 0))
+
+		var afterdec = 0;
+		if(that.data.receivetype == 0){
+			if(parseInt(val.data.total) >= parseInt(that.data.canusebalance) + parseInt(that.data.yunfei)){
+				afterdec = that.data.nousebalance;
+			}else{
+				afterdec = (that.data.canusebalance + that.data.yunfei)-val.data.total + that.data.nousebalance;
+			}
+		}else{
+			if(parseInt(val.data.total) >= parseInt(that.data.canusebalance)){
+				afterdec = that.data.nousebalance;
+			}else{
+				afterdec = (that.data.canusebalance)-val.data.total + that.data.nousebalance;
+			}
+		}
+
       that.setData({
         balanceInfo: val.data,
         cache: false,
 //      curPayway:val.data.total >= (that.data.total + that.data.yunfei)?'balance':'weixinpay'
 				curPayway:'weixinpay',
-				useBalance:(val.data.total > 0 && that.data.payData.order_type == 0 && that.data.payData.pv >= that.data.payData.total_price)? true:false,
-				afterdec:that.data.receivetype == 0 ? parseInt(val.data.total) >= parseInt(that.data.total) + parseInt(that.data.yunfei)?'0':(that.data.total + that.data.yunfei)-val.data.total : 0
+				// useBalance:(val.data.total > 0 && that.data.payData.order_type == 0 && that.data.payData.pv >= that.data.payData.total_price)? true:false,
+				useBalance:(val.data.total > 0 && that.data.payData.order_type == 0)? true:false,
+				afterdec: afterdec
       });
     }
     __request.$get(url, params, success)

+ 2 - 2
pages/pay/pay.wxml

@@ -140,7 +140,7 @@
         <view class="clean"></view>
       </view>
 -->
-	<view class="pay-payway-item" wx:if="{{payData.order_type == 0 && balanceInfo.total && payData.pay_way == '' && payData.pv >= payData.total_price}}">
+	<view class="pay-payway-item" wx:if="{{payData.order_type == 0 && balanceInfo.total && payData.pay_way == ''}}">
 		<view class="pay-payway-balance fl">
           <image class="pay-icon" src="http://fohow.oss-cn-shenzhen.aliyuncs.com/xcx/image/pay/luobopay.jpg" bindtap="selectClick" data-payway="balance"></image>
           <text bindtap="selectClick" data-payway="balance">提货券抵扣 (剩余:{{balanceInfo.total / 100}})</text>
@@ -225,7 +225,7 @@
 	  </view>
 	  
 	  <view wx:if="{{useBalance || payData.coupon_price>0}}" style="padding:15rpx;text-align:right">
-	  	使用提货券抵扣 <text style="color:#F00">-{{payData.coupon_price>0?payData.coupon_price/100:balanceInfo.total - total+yunfei >= 0 ? (total+yunfei) / 100 : balanceInfo.total / 100}}</text> 提货券
+	  	使用提货券抵扣 <text style="color:#F00">-{{payData.coupon_price>0?payData.coupon_price/100:((total+yunfei)-afterdec) / 100}}</text> 提货券
 	  </view>
 	  
     </view>

+ 4 - 1
pages/projects/project-detail/project-detail.wxml

@@ -185,8 +185,11 @@
 	  
 	  
 	  <!-- 正常流程-->
-	  <button class="detail-footer-item detail-yellow" bindtap="toCart" wx:if="{{!project.is_deliver && project.seckill_show_price <= 0 && project.left_count > 0}}">
+	  <!-- <button class="detail-footer-item detail-yellow" bindtap="toCart" wx:if="{{!project.is_deliver && project.seckill_show_price <= 0 && project.left_count > 0}}">
 				<text>加入购物车</text>
+	  </button> -->
+	  <button class="detail-footer-item detail-yellow" bindtap="toCart" wx:if="{{!project.is_deliver && project.seckill_show_price <= 0 && project.left_count > 0}}">
+	  				<text>加入购物车</text>
 	  </button>
 	  <form bindsubmit="toPay" report-submit="{{true}}" wx:if="{{!project.is_deliver &&project.left_count > 0 && project.seckill_state !='end'}}" class="detail-footer-item">
 				<button class=" detail-red"  formType="submit">