197 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Vue
		
	
	
| <!-- TODO 霖:是不是怎么复用 s-count-down 组件 -->
 | ||
| <template>
 | ||
|   <view class="time" :style="justifyLeft">
 | ||
|     <text class="" v-if="tipText">{{ tipText }}</text>
 | ||
|     <text
 | ||
|       class="styleAll p6"
 | ||
|       v-if="isDay === true"
 | ||
|       :style="{ background: bgColor.bgColor, color: bgColor.Color }"
 | ||
|       >{{ day }}{{ bgColor.isDay ? '天' : '' }}</text
 | ||
|     >
 | ||
|     <text
 | ||
|       class="timeTxt"
 | ||
|       v-if="dayText"
 | ||
|       :style="{ width: bgColor.timeTxtwidth, color: bgColor.bgColor }"
 | ||
|       >{{ dayText }}</text
 | ||
|     >
 | ||
|     <text
 | ||
|       class="styleAll"
 | ||
|       :class="isCol ? 'timeCol' : ''"
 | ||
|       :style="{ background: bgColor.bgColor, color: bgColor.Color, width: bgColor.width }"
 | ||
|       >{{ hour }}</text
 | ||
|     >
 | ||
|     <text
 | ||
|       class="timeTxt"
 | ||
|       v-if="hourText"
 | ||
|       :class="isCol ? 'whit' : ''"
 | ||
|       :style="{ width: bgColor.timeTxtwidth, color: bgColor.bgColor }"
 | ||
|       >{{ hourText }}</text
 | ||
|     >
 | ||
|     <text
 | ||
|       class="styleAll"
 | ||
|       :class="isCol ? 'timeCol' : ''"
 | ||
|       :style="{ background: bgColor.bgColor, color: bgColor.Color, width: bgColor.width }"
 | ||
|       >{{ minute }}</text
 | ||
|     >
 | ||
|     <text
 | ||
|       class="timeTxt"
 | ||
|       v-if="minuteText"
 | ||
|       :class="isCol ? 'whit' : ''"
 | ||
|       :style="{ width: bgColor.timeTxtwidth, color: bgColor.bgColor }"
 | ||
|       >{{ minuteText }}</text
 | ||
|     >
 | ||
|     <text
 | ||
|       class="styleAll"
 | ||
|       :class="isCol ? 'timeCol' : ''"
 | ||
|       :style="{ background: bgColor.bgColor, color: bgColor.Color, width: bgColor.width }"
 | ||
|       >{{ second }}</text
 | ||
|     >
 | ||
|     <text class="timeTxt" v-if="secondText">{{ secondText }}</text>
 | ||
|   </view>
 | ||
| </template>
 | ||
| 
 | ||
| <script>
 | ||
|   export default {
 | ||
|     name: 'countDown',
 | ||
|     props: {
 | ||
|       justifyLeft: {
 | ||
|         type: String,
 | ||
|         default: '',
 | ||
|       },
 | ||
|       //距离开始提示文字
 | ||
|       tipText: {
 | ||
|         type: String,
 | ||
|         default: '倒计时',
 | ||
|       },
 | ||
|       dayText: {
 | ||
|         type: String,
 | ||
|         default: '天',
 | ||
|       },
 | ||
|       hourText: {
 | ||
|         type: String,
 | ||
|         default: '时',
 | ||
|       },
 | ||
|       minuteText: {
 | ||
|         type: String,
 | ||
|         default: '分',
 | ||
|       },
 | ||
|       secondText: {
 | ||
|         type: String,
 | ||
|         default: '秒',
 | ||
|       },
 | ||
|       datatime: {
 | ||
|         type: Number,
 | ||
|         default: 0,
 | ||
|       },
 | ||
|       isDay: {
 | ||
|         type: Boolean,
 | ||
|         default: true,
 | ||
|       },
 | ||
|       isCol: {
 | ||
|         type: Boolean,
 | ||
|         default: false,
 | ||
|       },
 | ||
|       bgColor: {
 | ||
|         type: Object,
 | ||
|         default: null,
 | ||
|       },
 | ||
|     },
 | ||
|     data: function () {
 | ||
|       return {
 | ||
|         day: '00',
 | ||
|         hour: '00',
 | ||
|         minute: '00',
 | ||
|         second: '00',
 | ||
|       };
 | ||
|     },
 | ||
|     created: function () {
 | ||
|       this.show_time();
 | ||
|     },
 | ||
|     mounted: function () {},
 | ||
|     methods: {
 | ||
|       show_time: function () {
 | ||
|         let that = this;
 | ||
| 
 | ||
|         function runTime() {
 | ||
|           //时间函数
 | ||
|           let intDiff = that.datatime - Date.parse(new Date()) / 1000; //获取数据中的时间戳的时间差;
 | ||
|           let day = 0,
 | ||
|             hour = 0,
 | ||
|             minute = 0,
 | ||
|             second = 0;
 | ||
|           if (intDiff > 0) {
 | ||
|             //转换时间
 | ||
|             if (that.isDay === true) {
 | ||
|               day = Math.floor(intDiff / (60 * 60 * 24));
 | ||
|             } else {
 | ||
|               day = 0;
 | ||
|             }
 | ||
|             hour = Math.floor(intDiff / (60 * 60)) - day * 24;
 | ||
|             minute = Math.floor(intDiff / 60) - day * 24 * 60 - hour * 60;
 | ||
|             second = Math.floor(intDiff) - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60;
 | ||
|             if (hour <= 9) hour = '0' + hour;
 | ||
|             if (minute <= 9) minute = '0' + minute;
 | ||
|             if (second <= 9) second = '0' + second;
 | ||
|             that.day = day;
 | ||
|             that.hour = hour;
 | ||
|             that.minute = minute;
 | ||
|             that.second = second;
 | ||
|           } else {
 | ||
|             that.day = '00';
 | ||
|             that.hour = '00';
 | ||
|             that.minute = '00';
 | ||
|             that.second = '00';
 | ||
|           }
 | ||
|         }
 | ||
|         runTime();
 | ||
|         setInterval(runTime, 1000);
 | ||
|       },
 | ||
|     },
 | ||
|   };
 | ||
| </script>
 | ||
| 
 | ||
| <style scoped>
 | ||
|   .p6 {
 | ||
|     padding: 0 8rpx;
 | ||
|   }
 | ||
|   .styleAll {
 | ||
|     /* color: #fff; */
 | ||
|     font-size: 24rpx;
 | ||
|     height: 36rpx;
 | ||
|     line-height: 36rpx;
 | ||
|     border-radius: 6rpx;
 | ||
|     text-align: center;
 | ||
|     /* padding: 0 6rpx; */
 | ||
|   }
 | ||
|   .timeTxt {
 | ||
|     text-align: center;
 | ||
|     /* width: 16rpx; */
 | ||
|     height: 36rpx;
 | ||
|     line-height: 36rpx;
 | ||
|     display: inline-block;
 | ||
|   }
 | ||
|   .whit {
 | ||
|     color: #fff !important;
 | ||
|   }
 | ||
|   .time {
 | ||
|     display: flex;
 | ||
|     justify-content: center;
 | ||
|   }
 | ||
| 
 | ||
|   .red {
 | ||
|     color: #fc4141;
 | ||
|     margin: 0 4rpx;
 | ||
|   }
 | ||
| 
 | ||
|   .timeCol {
 | ||
|     /* width: 40rpx;
 | ||
|     height: 40rpx;
 | ||
|     line-height: 40rpx;
 | ||
|     text-align:center;
 | ||
|     border-radius: 6px;
 | ||
|     background: #fff;
 | ||
|     font-size: 24rpx; */
 | ||
|     color: #e93323;
 | ||
|   }
 | ||
| </style>
 |