You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							213 lines
						
					
					
						
							6.8 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							213 lines
						
					
					
						
							6.8 KiB
						
					
					
				
								<template>
							 | 
						|
								<view class="seckill-time-box " :class="mold == 'index' ? 'index' : ''">
							 | 
						|
								    <view class="seckill seckill-item" v-if="active" >
							 | 
						|
								        <view v-if="endtype == 0">
							 | 
						|
								            <view class="no-starts">
							 | 
						|
								                进行中
							 | 
						|
								            </view>
							 | 
						|
								            <view class="time-text">
							 | 
						|
								                {{endmessage}}
							 | 
						|
								            </view>
							 | 
						|
								        </view>
							 | 
						|
								        <view class="time-out" v-if="endtype == 1">
							 | 
						|
								            <i class="iconfont icon-shijian"></i>
							 | 
						|
								            <view class="text my-class" >距离拼团结束还剩余</view>
							 | 
						|
								            <view class="tiem"><span class="num-item"> <p class="zero" v-if="endTime.hour < 10">0</p>{{endTime.hour}}</span> 时 <span class="num-item"><p class="zero" v-if="endTime.minute < 10">0</p>{{endTime.minute}}</span> 分 <span class="num-item"><p class="zero" v-if="endTime.second < 10">0</p>{{endTime.second}}</span> 秒</view>
							 | 
						|
								        </view>
							 | 
						|
								    </view>
							 | 
						|
								    <view class="seckill-item" v-else>
							 | 
						|
								        <view v-if="gotype == 0">
							 | 
						|
								            <view class="no-starts">
							 | 
						|
								                未开始
							 | 
						|
								            </view>
							 | 
						|
								            <view class="time-text">
							 | 
						|
								                {{message}}
							 | 
						|
								            </view>
							 | 
						|
								        </view>
							 | 
						|
								        <view class="time-out" v-if="gotype == 1">
							 | 
						|
								            <i class="iconfont icon-shijian"></i>
							 | 
						|
								            <view class="text">距离拼团开始还剩余</view>
							 | 
						|
								            <view class="tiem"><span class="num-item"> <p class="zero" v-if="startsTime.hour < 10">0</p>{{startsTime.hour}}</span> 时 <span class="num-item"> <p class="zero"v-if="startsTime.minute < 10">0</p>{{startsTime.minute}}</span> 分 <span class="num-item"> <p class="zero" v-if="startsTime.second < 10">0</p>{{startsTime.second}}</span> 秒</view>
							 | 
						|
								        </view>
							 | 
						|
								    </view>
							 | 
						|
								</view>
							 | 
						|
								</template>
							 | 
						|
								<script>
							 | 
						|
								
							 | 
						|
								export default {
							 | 
						|
								  data() {
							 | 
						|
								    return {
							 | 
						|
								      message: '',
							 | 
						|
								      endmessage: '',
							 | 
						|
								      active: false,
							 | 
						|
								      gotype: 0,
							 | 
						|
								      endtype: 0,
							 | 
						|
								      endTime: {
							 | 
						|
								        interval: '',
							 | 
						|
								        day: 0,
							 | 
						|
								        hour: 0,
							 | 
						|
								        minute: 0,
							 | 
						|
								        second: 0,
							 | 
						|
								        count: 0
							 | 
						|
								      },
							 | 
						|
								      startsTime: {
							 | 
						|
								        interval: '',
							 | 
						|
								        day: 0,
							 | 
						|
								        hour: 0,
							 | 
						|
								        minute: 0,
							 | 
						|
								        second: 0,
							 | 
						|
								        count: 0
							 | 
						|
								      }
							 | 
						|
								    };
							 | 
						|
								  },
							 | 
						|
								  props: {
							 | 
						|
									  end:{
							 | 
						|
									    type: String,
							 | 
						|
									    value: null
							 | 
						|
									  },
							 | 
						|
									  starts: {
							 | 
						|
									    type: String,
							 | 
						|
									    value: null
							 | 
						|
									  },
							 | 
						|
									  index: {
							 | 
						|
									    type: Number,
							 | 
						|
									    value: 0
							 | 
						|
									  },
							 | 
						|
									  findex: {
							 | 
						|
									    type: Number,
							 | 
						|
									    value: 0
							 | 
						|
									  },
							 | 
						|
									  server: {
							 | 
						|
									    type: String,
							 | 
						|
									    value: null
							 | 
						|
									  },
							 | 
						|
									  mold: {
							 | 
						|
									    type: String,
							 | 
						|
									    value: 'goods'
							 | 
						|
									  }
							 | 
						|
								  },
							 | 
						|
								 
							 | 
						|
								   options: {
							 | 
						|
								    addGlobalClass: true
							 | 
						|
								  },
							 | 
						|
								  
							 | 
						|
								  
							 | 
						|
								  
							 | 
						|
								    methods: {
							 | 
						|
								      //    		活动开始的倒计时
							 | 
						|
								      countTime() {
							 | 
						|
								        var d = 86400000,
							 | 
						|
								            h = 3600000,
							 | 
						|
								            n = 60000,
							 | 
						|
								            end = this.end,
							 | 
						|
								            server = this.server,
							 | 
						|
								            arr = String(end).split(/\D/),
							 | 
						|
								            newArr = String(server).split(/\D/);
							 | 
						|
								        newArr = newArr.map(Number);
							 | 
						|
								        arr = arr.map(Number);
							 | 
						|
								        var serverTime = new Date(newArr[0], newArr[1] - 1, newArr[2], newArr[3], newArr[4], newArr[5]).getTime();
							 | 
						|
								        var endTime = new Date(arr[0], arr[1] - 1, arr[2], arr[3], arr[4], arr[5]).getTime(); //		        组件才秒杀列表页使用时,没有重新请求列表,服务器时间应该加上未开始倒计时的时间
							 | 
						|
								
							 | 
						|
								        if (this.mold == 'list') {
							 | 
						|
								          this.serverTime =  serverTime + this.startsTime.count;
							 | 
						|
								        } //		        计算开始时间跟结束时间的差值
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								        var timeDiff = endTime - serverTime; //		        在本地计算倒计时
							 | 
						|
								
							 | 
						|
								        var allTime = this.endTime.count + 1000;
							 | 
						|
								        this.endTime.count =  allTime;
							 | 
						|
								        var interval = timeDiff - this.endTime.count;
							 | 
						|
								
							 | 
						|
								        if (interval < d) {
							 | 
						|
								          this.endtype = 1;
							 | 
						|
								
							 | 
						|
								          if (interval < 0) {
							 | 
						|
								            //		        	活动结束
							 | 
						|
								            this.$emit('end', {
							 | 
						|
								              findex: this.findex,
							 | 
						|
								              index: this.index
							 | 
						|
								            }); // 				this.$emit('end',this.index)
							 | 
						|
								          } else {
							 | 
						|
								            var day = Math.floor(interval / d);
							 | 
						|
								            Math.floor(interval -= day * d);
							 | 
						|
								            var hour = Math.floor(interval / h);
							 | 
						|
								            Math.floor(interval -= hour * h);
							 | 
						|
								            var minute = Math.floor(interval / n);
							 | 
						|
								            var second = Math.floor(interval % n / 1000);
							 | 
						|
								            this.endTime.day =  day;
							 | 
						|
								            this.endTime.hour =  hour;
							 | 
						|
								            this.endTime.minute =  minute;
							 | 
						|
								            this.endTime.second = second;
							 | 
						|
								          }
							 | 
						|
								        } else {
							 | 
						|
								         this.endmessage =  `${arr[1]} 月 ${arr[2]} 日,${arr[3]} : ${arr[4]} 结束`;
							 | 
						|
								        }
							 | 
						|
								      },
							 | 
						|
								
							 | 
						|
								      //            活动未开始的倒计时
							 | 
						|
								      countStartsTime() {
							 | 
						|
								        var d = 86400000,
							 | 
						|
								            h = 3600000,
							 | 
						|
								            n = 60000,
							 | 
						|
								            sta = this.starts,
							 | 
						|
								            server = this.server,
							 | 
						|
								            arr = String(sta).split(/\D/),
							 | 
						|
								            newArr = String(server).split(/\D/);
							 | 
						|
											console.log('jijiwawa');
							 | 
						|
								        newArr = newArr.map(Number);
							 | 
						|
								        arr = arr.map(Number);
							 | 
						|
								        var serverTime = new Date(newArr[0], newArr[1] - 1, newArr[2], newArr[3], newArr[4], newArr[5]).getTime();
							 | 
						|
								        var staTime = new Date(arr[0], arr[1] - 1, arr[2], arr[3], arr[4], arr[5]).getTime();
							 | 
						|
								        var timeDiff = staTime - serverTime;
							 | 
						|
								        var allTime = this.startsTime.count + 1000;
							 | 
						|
								        this.startsTime.count =  allTime;
							 | 
						|
								        var interval = timeDiff - this.startsTime.count; //		        var interval = staTime - nowTime;
							 | 
						|
								        //		        时间差小于一天
							 | 
						|
								
							 | 
						|
								        if (interval < d) {
							 | 
						|
								          this.gotype =  1
							 | 
						|
								
							 | 
						|
								          if (interval < 0) {
							 | 
						|
								            //			        	代表活动已经开始了,需要执行活动开始倒计时
							 | 
						|
								            var interval = setInterval(() => {
							 | 
						|
								              this.countTime();
							 | 
						|
								            }, 1000);
							 | 
						|
								           this.active =  true;
							 | 
						|
								           this.endTime.interval =  interval
							 | 
						|
								            this.$emit('starts', {
							 | 
						|
								              findex: this.findex,
							 | 
						|
								              index: this.index
							 | 
						|
								            }); // 					this.$emit('starts',this.index);
							 | 
						|
								            //                        清除掉倒计时,以免重复分发事件
							 | 
						|
								
							 | 
						|
								            clearInterval(this.startsTime.interval);
							 | 
						|
								          } else {
							 | 
						|
								            var day = Math.floor(interval / d);
							 | 
						|
								            Math.floor(interval -= day * d);
							 | 
						|
								            var hour = Math.floor(interval / h);
							 | 
						|
								            Math.floor(interval -= hour * h);
							 | 
						|
								            var minute = Math.floor(interval / n);
							 | 
						|
								            var second = Math.floor(interval % n / 1000);
							 | 
						|
											this.startsTime.day =  day;
							 | 
						|
											this.startsTime.hour =  hour;
							 | 
						|
											this.startsTime.minute =  minute;
							 | 
						|
											this.startsTime.second = second;
							 | 
						|
								          }
							 | 
						|
								        } else {
							 | 
						|
								          this.message =  `${arr[1]} 月 ${arr[2]} 日,${arr[3]} : ${arr[4]} 开始`
							 | 
						|
								        }
							 | 
						|
								      }
							 | 
						|
								
							 | 
						|
								    },
							 | 
						|
								    mounted(){
							 | 
						|
								      var interval = setInterval(() => {
							 | 
						|
								        this.countStartsTime();
							 | 
						|
								      }, 1000);
							 | 
						|
									  this.startsTime.interval = interval
							 | 
						|
								    }
							 | 
						|
								};
							 | 
						|
								</script>
							 | 
						|
								<style rel="stylesheet/less" lang="less">
							 | 
						|
								    @import "group";
							 | 
						|
								</style>
							 |