**
@author Celeste
@date 2021/4/17
@description 用于结束还剩多少时间
**
<template>
<div>
<h1 :style="timeStyle">结束还剩 </h1>
<span :style="timeStyle">{{ time }}</span>
</div>
</template>
<script>
export default {
props :{
// 结束时间
endTime:{
type:String,
default:''
}
},
data () {
return {
time : '',
flag : false,
timeStyle: {
display: 'block',
'text-align': 'center'
},
}
},
mounted () {
//定时更新当前时间
let time = setInterval(()=>{
if(this.flag == true){
clearInterval(time)
}
this.timeDown()
})
},
methods : {
// 计算剩余时间
timeDown () {
const endTime = new Date(this.endTime)
const nowTime = new Date();
let leftTime = parseInt((endTime.getTime()-nowTime.getTime())/1000)
let d = parseInt(leftTime/(24*60*60))
let h = this.formate(parseInt(leftTime/(60*60)%24))
let m = this.formate(parseInt(leftTime/60%60))
let s = this.formate(parseInt(leftTime%60))
if(leftTime <= 0){
this.flag = true
this.timeStyle.display = 'none'
this.$emit('time-end')
}
this.time = `${d}天${h}小时${m}分${s}秒` // 需要修改时间样式的话 ,比如需要什么30分钟倒计时,就只保留分和秒
},
formate (time) {
if(time>=10){
return time
}else{
return `0${time}` //数字前补 0
}
}
}
}
</script>
<style lang="scss" scoped>
h1{
color: #C20A0A;
}
</style>
ps
:这是一个抽出来的组件,要在别的页面引用