Browse Source

拼团订单

twt 1 year ago
parent
commit
71e247c7c6
4 changed files with 314 additions and 20 deletions
  1. 89 9
      pages/activity/jkDetail.vue
  2. 172 3
      pages/user/myOrder/activityOrderDetail.vue
  3. BIN
      static/timg/icon_guan.png
  4. 53 8
      utils/common.js

+ 89 - 9
pages/activity/jkDetail.vue

@@ -23,7 +23,7 @@
 				<view class="ptlineRight">
 					<view class="ptlinexx">
 						<view class="DiffBNumber">还差 <span>{{item.DiffBNumber}}人</span>拼成 </view>
-						<view class="ptdjs">剩余{{item.EndTime | limitTimeFilter}}</view>
+						<view class="ptdjs">剩余{{item.EndTime | limitTimeFilter }}</view><!-- | limitTimeFilter -->
 					</view>
 					<view class="ptBtn" @click="join(item)">{{item.IfMyself?'邀请好友':'去拼团'}} </view>
 				</view>
@@ -268,11 +268,37 @@
 				<image src="../../static/timg/icon_guanbi@2x.png"  @click="authorizShowno" mode="" class="authorizCloseImg"></image>
 			</view>
 		</view>
+		
+		<!-- 拼单更多 -->
+		
+		<view class="baomingBox" v-if="djsMoreShow">
+			<view class="djsCont">
+				<view class="bmTop">
+					<view class="bmTitle">12人正在拼单,可直接参与</view>
+					<img src="../../static/timg/chahao.png" alt="" class="bmChimg" @click="noShowShop2">
+				</view>
+				<view class="djsLineBox">
+					<view class="ptLine" v-for="(item,index) in info.groupList">
+						<view class="FirstMobilePhone">{{item.FirstMobilePhone?item.FirstMobilePhone:'***'}}</view>
+						<view class="ptlineRight">
+							<view class="ptlinexx">
+								<view class="DiffBNumber">还差 <span>{{item.DiffBNumber}}人</span>拼成 </view>
+								<view class="ptdjs">剩余{{item.EndTime | limitTimeFilter }}</view><!-- | limitTimeFilter -->
+							</view>
+							<view class="ptBtn" @click="join(item)">{{item.IfMyself?'邀请好友':'去拼团'}} </view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		
+		
 	</view>
 </template>
 
 <script>
 	import homenav from "../../components/homenav/nav.vue"
+	let that;
 	export default {
 		components: {
 			homenav
@@ -323,6 +349,8 @@
 				 iStatusBarHeight:'',
 				 groupOwner:'',
 				 groupID:'',
+				 ticker: null,
+				 djsMoreShow:false,
 			}
 		},
 		onLoad(opt) {
@@ -370,7 +398,11 @@
 		  
 		   this.shopckList= uni.getStorageSync("shopckList");
 		   //this.ckmusic=uni.getStorageSync("ckmusic");
-		  
+		  //这一段是防止进入页面出去后再进来计时器重复启动
+			  if (this.ticker) {
+			   clearInterval(this.ticker);
+			 }
+		    this.beginTimer();
 		   
 		},
 		onPullDownRefresh(){
@@ -388,7 +420,42 @@
 		onUnload(){
 			this.bgmMusic.stop()
 		},
+		
+		
 		methods: {
+			beginTimer() { //这个计时器是每秒减去数组中指定字段的时间
+			
+			  this.ticker = setInterval(() => {
+				 this.info.groupList= JSON.parse(JSON.stringify( this.info.groupList))
+				/* for (let i = 0, len = this.info.groupList.length; i < len; i++) {
+				  const item = this.info.groupList[i];
+				  if (item.EndTime) {
+					
+				  }
+				} */
+			  }, 1000);
+			},
+			setDate(time) {    
+					var t_s = Date.parse(new Date(time)); //转化为时间戳毫秒数
+			      //  console.log(t_s)
+			        var newt=t_s - 1000; //设置新时间比旧时间少一秒                
+			       return this.formatDate(newt) 
+			    }  ,
+			    
+			  formatDate(time) {
+			   	let date = new Date(time);
+			   	
+			   	let YY = date.getFullYear();
+			       let MM = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
+			       let DD = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
+			       let hh = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
+			       let mm = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
+			       let ss = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
+			   	
+			   	// 这里可以修改返回的日期格式
+			   	return YY + "-" + MM + "-" + DD + " " + hh + ":" + mm + ":" + ss;
+			   },
+			  
 			authorizShowno(){
 				this.authorizShow=false
 			},
@@ -915,24 +982,26 @@
 		filters: {
 		    	// 拼团有效期的filter
 		    	limitTimeFilter (val) {
-					console.log('limitTimeFilter')
+					//console.log('limitTimeFilter')
 					//https://blog.csdn.net/qq_39905409/article/details/104478623
 			      	if (val) {
 						console.log(val)
-			            let formateLimitTimes = this.$common.formateTimeStamp(val);
-			            let txt = `${formateLimitTimes.hour} 时 ${formateLimitTimes.min} 分            			${formateLimitTimes.seconds} 秒`;
-			            if (formateLimitTimes.day != '00') {
+			            let formateLimitTimes = that.$common.formateTimeStamp(val);
+			            let txt = `${formateLimitTimes.hour}: ${formateLimitTimes.min} :${formateLimitTimes.seconds} `;
+			           /* if (formateLimitTimes.day != '00') {
 			              txt = `${Number(formateLimitTimes.day)*24} 时 ${formateLimitTimes.min} 分   ${formateLimitTimes.seconds} 秒`;
-			            }
+			            } */
 			          return txt;
 			         } else {
-			            const twtxt = `0 时 0 分 0 秒`
+			            const twtxt = `0 : 0 : 0 `
 			            return twtxt;
 			         }
 			    }
 			    
 		   },
-		
+		beforeCreate: function () {
+		  that = this;
+		},
 		onShareAppMessage(res) {
 			console.log(this.userInfo)
 			var img='';
@@ -961,6 +1030,17 @@
 </script>
 
 <style scoped>
+.djsCont{
+	width: 638rpx;
+	height: 60vh;
+	background: #fff;
+	margin-top: 20vh;
+	margin-left:56rpx ;border-radius: 15rpx;
+}
+.djsLineBox{
+	height: calc(60vh - 120rpx);
+	overflow-y: scroll;
+}
 .ptLine{
 	display: flex;
 	justify-content: space-between;

+ 172 - 3
pages/user/myOrder/activityOrderDetail.vue

@@ -31,9 +31,29 @@
 
 
 		</view>
+		<!-- 拼团信息 -->
+		<view class="ptCont" v-if="orderData.data.sheetState == 5">
+			<view class="ptTimeBox">
+				<view class="ptTimeTxt">拼团剩余</view>
+				<view class="ptTime">{{dh}}</view>
+				<view class="ptdd">:</view>
+				<view class="ptTime">{{dm}}</view>
+				<view class="ptdd">:</view>
+				<view class="ptTime">{{ds}}</view>
+			</view>
+			<view class="ptmobilePhoneLine">
+				<image src="../../../static/timg/icon_guan.png" mode="" class="vipIcon"></image>
+				<view class="ptmobilePhone">{{orderData.openGroup.firstMobilePhone}}</view>
+			</view>
+			<view class="DiffBNumber">还差 <span style="#FF0000">{{orderData.openGroup.groupNumber - orderData.groupList.length}}</span> 人,赶快邀请好友来拼团吧</view>
+		    <view class="ptBtnBox">
+		    	<view class="seeTy" @click="seeTyshowBtn">查看全部团员</view>
+				<view class="yqhypt">邀请好友拼团</view>
+		    </view>
+		</view>
 
 		<!-- 店铺信息 -->
-		<view class="shopBox">
+		<view class="shopBox" :class="{shopBoxpt:orderData.data.sheetState == 5}">
 			<image src="../../../static/img/icon_store.png" mode="" class="shopBoximg"></image>
 			<view class="shopCont">
 				<view class="shopName">{{orderData.shopInfo.shopName}}</view>
@@ -208,6 +228,29 @@
 			<image src="../../../static/timg/icon_guanbi@2x.png" mode="" class="authorizCloseImg"></image>
 		</view>
 	</view>
+	
+	<!-- 全部团员 -->
+	<view class="maBox" v-if="seeTyshow" @click="seeTyHide">
+		<view class="grouptk" @click.stop="">
+			<view class="maTop">
+				<view class="maTitle">全部团员</view>
+				<image  src="../../../static/img/icon_delete.png" mode=""
+					style="width: 26rpx;height: 26rpx;margin-left: 10rpx;" @click="seeTyHide"></image>
+			</view>
+			<view class="grouptkCobt">
+				<view class="grouptkLIne" v-for="(item,index) in orderData.groupList">
+				  <view class="grouptkLIneLeft">
+					  <view class="groupTz" v-if="item.groupMemberLevel==1">团长</view>
+					   <view class="groupTy" v-else>团员</view>
+					  <view class="groupmobilePhone">{{item.mobilePhone}}</view>
+				  </view>
+				  <view class="grouptkLIneTime">{{item.payTime}}</view>
+				</view>
+				
+			</view>
+		</view>
+	</view>
+	
 
 	</view>
 </template>
@@ -250,6 +293,10 @@
                 userInfo:'',
                 ext:'',
                 wxOpenData:'',
+				dh:'',
+				dm:'',
+				ds:'',
+				seeTyshow:false,
 			}
 		},
 		onLoad(opt) {
@@ -281,7 +328,13 @@
 		},
 		
 
-		methods: {
+		methods: {
+			seeTyHide(){
+				this.seeTyshow=false;
+			},
+			seeTyshowBtn(){
+				this.seeTyshow=true;
+			},
 			decryptPhoneNumber: function(e) {
 			  console.log(e);
 			  this.code=e.detail.code
@@ -506,12 +559,43 @@
 							}
 						})
 					}
-					
+					this.clock()
 					console.log('可用券码--',this.quanMaList);
 					
 				})
 			},
+			clock(){
+			  let _this = this
+			  let today = new Date() // 当前时间
+			  let h = today.getHours()
+			  let m = today.getMinutes()
+			  let s = today.getSeconds()
+			  let startTime = new Date(_this.orderData.openGroup.endTime.replace(/-/g, '/')) // 结束时间
+			  if (Number(new Date(_this.orderData.openGroup.endTime).getTime()) < Number(new Date().getTime())) {
+			    //this.activityNoOpen = true
+			    return
+			  }
+			
+			  let stopH = startTime.getHours()
+			  let stopM = startTime.getMinutes()
+			  let stopS = startTime.getSeconds()
+			  let shenyu = startTime.getTime() - today.getTime() // 倒计时毫秒数
+			  let shengyuD = parseInt(shenyu / (60 * 60 * 24 * 1000)) // 转换为天
+			 // let D = parseInt(shenyu) - parseInt(shengyuD * 60 * 60 * 24 * 1000)// 除去天的毫秒数
+			  let D = parseInt(shenyu)
+			  let shengyuH = parseInt(D / (60 * 60 * 1000)) // 除去天的毫秒数转换成小时
+			  let H = D - shengyuH * 60 * 60 * 1000 // 除去天、小时的毫秒数
+			  let shengyuM = parseInt(H / (60 * 1000)) // 除去天的毫秒数转换成分钟
+			  let M = H - shengyuM * 60 * 1000// 除去天、小时、分的毫秒数
+			  let S = parseInt((shenyu - shengyuD * 60 * 60 * 24 * 1000 - shengyuH * 60 * 60 * 1000 - shengyuM * 60 * 1000) / 1000)// 除去天、小时、分的毫秒数转化为秒
 			
+			 // this.daojishi = '报名倒计时:' + shengyuD + '天' + shengyuH + '小时' + shengyuM + '分' + S + '秒'
+			  // setTimeout("clock()",500);
+			  this.dh=shengyuH;
+			  this.dm=shengyuM;
+			  this.ds=s;
+			  setTimeout(_this.clock, 500)
+			},
 			goback() {
 				uni.navigateBack({
 				 	delta: 1
@@ -536,6 +620,88 @@
 </script>
 
 <style scoped>
+.grouptk{
+	width: 638rpx;
+	height: 750rpx;
+	background: #FFFFFF;
+	border-radius: 24rpx;
+	margin-top: 300rpx;
+	margin-left: 56rpx;
+}
+.grouptkLIneLeft{
+	display: flex;
+}
+.groupTz{
+	border-radius: 15rpx;padding: 0 10rpx;margin-right: 8rpx;
+	border: 1rpx solid #FF9D00;color: #FF9D00;font-size: 22rpx;
+}
+.groupTy{
+	border-radius: 15rpx;padding: 0 10rpx;margin-right: 8rpx;
+	border: 1rpx solid #764D49;color: #764D49;font-size: 22rpx;
+}
+.grouptkLIne{
+	display: flex;padding: 15rpx 24rpx;
+	justify-content: space-between;font-weight: 400;
+color: #3C3C3C;font-size: 26rpx;line-height: 32rpx;
+}
+.grouptk .maTitle{
+	padding-left: 24rpx;
+}
+.ptCont{
+	width: 702rpx;
+	height: 297rpx;
+	background: linear-gradient(180deg, #FFFFFF 0%, #FFFFFF 100%);
+	border-radius: 10rpx;
+	margin-left: 24rpx;
+	margin-top: -60rpx;
+}
+.ptTimeBox{
+	display: flex;font-weight: 400;justify-content: center;padding-top: 24rpx;
+}
+.ptTimeTxt{
+	font-weight: 400;font-size: 24rpx;line-height: 42rpx;
+	color: #764D49;padding-right: 18rpx;
+}
+.ptdd{
+	font-size: 24rpx;padding:0 8rpx;
+	line-height: 42rpx;
+	font-weight: 400;
+	color: #764D49;
+}
+.ptTime{
+	width: 42rpx;font-size: 24rpx;
+	height: 42rpx;text-align: center;line-height: 42rpx;
+	background: #FF0000;
+	border-radius: 6rpx;
+	font-weight: 500;
+	color: #FFFFFF;
+}
+.DiffBNumber{
+	color: #764D49;font-size: 24rpx;text-align: center;padding-top:16rpx;padding-bottom: 30rpx;
+}
+.ptmobilePhoneLine{
+	display: flex;font-weight: 400;justify-content: center;
+color: #764D49;font-size: 26rpx;padding-top:20rpx;
+}
+.vipIcon{
+	width: 32rpx;height: 32rpx;
+}
+.seeTy{
+	width: 260rpx;line-height: 62rpx;text-align: center;
+	height: 62rpx;color: #FF0000;
+	border-radius: 36rpx;font-size: 26rpx;
+	border: 2rpx solid #FF0000;
+}
+.ptBtnBox{
+	display: flex;
+	justify-content: space-around;
+}
+.yqhypt{
+	width: 260rpx;color: #FFFFFF;line-height: 66rpx;text-align: center;
+	height: 66rpx;font-size: 26rpx;
+	background: linear-gradient(132deg, #FD5C05 0%, #FD0323 100%);
+	border-radius: 36rpx;
+}
 	.box {
 		min-height: 100vh;
 		background: #F4F5F7;
@@ -1074,4 +1240,7 @@
 			margin-top: 62rpx;
 			margin-left:71rpx;
 		}
+		.shopBoxpt{
+			margin-top: 20rpx;
+		}
 </style>

BIN
static/timg/icon_guan.png


+ 53 - 8
utils/common.js

@@ -90,33 +90,77 @@ function formateTimeStamp (timeStamp) {
   var hour;
   var min;
   var seconds;
+  let today = new Date() // 当前时间
 
-  hour = parseInt(timeStamp / (60 * 60)) // 计算整数小时数
-  var afterHour = timeStamp - hour * 60 * 60 // 取得算出小时数后剩余的秒数
-  min = parseInt(afterHour / 60) // 计算整数分
-  seconds = parseInt(timeStamp - hour * 60 * 60 - min * 60) // 取得算出分后剩余的秒数
-
+  let startTime = new Date(timeStamp.replace(/-/g, '/')) // 结束时间
+  let shenyu = startTime.getTime() - today.getTime() // 倒计时毫秒数
+ let shengyuD = parseInt(shenyu / (60 * 60 * 24 * 1000)) // 转换为天
+  //console.log(shengyuD+'shengyuD')
+  //hour = parseInt(shenyu / (60 * 60)) // 计算整数小时数
+  hour = parseInt(shenyu / (60 * 60 * 1000))
+  var afterHour = shenyu - hour * 60 * 60 * 1000 // 取得算出小时数后剩余的秒数
+  min = parseInt(afterHour / (60 * 1000)) // 计算整数分
+  //seconds = parseInt(shenyu - hour * 60 * 60 - min * 60) // 取得算出分后剩余的秒数
+  seconds= parseInt((shenyu - shengyuD * 60 * 60 * 24 * 1000 - hour * 60 * 60 * 1000 - min * 60 * 1000) / 1000)
   if (hour < 10) {
     hour = '0' + hour
   }
-
+  //console.log(hour)
   if (min < 10) {
     min = '0' + min;
   }
-
+//console.log(min)
   if (seconds < 10) {
     seconds = '0' + seconds;
   }
-
+//console.log(seconds)
   const restTime = {
     hour: hour,
     min: min,
     seconds: seconds
   }
+  //console.log(restTime)
+  /// setTimeout(formateTimeStamp(timeStamp), 1000)
   return restTime
 }
 
+function countdown (timeStamp) {
+  var hour;
+  var min;
+  var seconds;
+  let today = new Date() // 当前时间
 
+  let startTime = new Date(timeStamp.replace(/-/g, '/')) // 结束时间
+  let shenyu = startTime.getTime() - today.getTime() // 倒计时毫秒数
+ let shengyuD = parseInt(shenyu / (60 * 60 * 24 * 1000)) // 转换为天
+  //console.log(shengyuD+'shengyuD')
+  //hour = parseInt(shenyu / (60 * 60)) // 计算整数小时数
+  hour = parseInt(shenyu / (60 * 60 * 1000))
+  var afterHour = shenyu - hour * 60 * 60 * 1000 // 取得算出小时数后剩余的秒数
+  min = parseInt(afterHour / (60 * 1000)) // 计算整数分
+  //seconds = parseInt(shenyu - hour * 60 * 60 - min * 60) // 取得算出分后剩余的秒数
+seconds= parseInt((shenyu - shengyuD * 60 * 60 * 24 * 1000 - hour * 60 * 60 * 1000 - min * 60 * 1000) / 1000)
+  if (hour < 10) {
+    hour = '0' + hour
+  }
+  console.log(hour)
+  if (min < 10) {
+    min = '0' + min;
+  }
+//console.log(min)
+  if (seconds < 10) {
+    seconds = '0' + seconds;
+  }
+
+  const restTime = {
+    hour: hour,
+    min: min,
+    seconds: seconds
+  }
+   var txt = hour+':'+min+':'+seconds;
+  console.log(txt)
+  return txt
+}
 
 export default {
     commonData:{
@@ -127,6 +171,7 @@ export default {
 	getExtStoreId,
 	noMultipleClicks,      // 禁止多次点击
 	formateTimeStamp,
+	countdown
 }