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.
70 lines
1.4 KiB
70 lines
1.4 KiB
<template>
|
|
<span>
|
|
{{state}}
|
|
</span>
|
|
</template>
|
|
|
|
<script>
|
|
|
|
export default {
|
|
props: {
|
|
// 倒计时开始时间
|
|
startTime: {
|
|
type: Number,
|
|
default: null,
|
|
},
|
|
isAuto : {
|
|
type : Boolean,
|
|
default : false,
|
|
}
|
|
},
|
|
|
|
data() {
|
|
return {
|
|
state: '',
|
|
timer:null
|
|
};
|
|
},
|
|
watch:{
|
|
startTime(n,o){
|
|
if(n&&this.isAuto){
|
|
this.handle()
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
fillZero (num) {
|
|
if (parseInt(num) < 10) return `0${num}`;
|
|
else return num;
|
|
},
|
|
|
|
formatTime(ret) {
|
|
let sec = this.fillZero(ret % 60);
|
|
let min = this.fillZero(Math.floor(ret/60));
|
|
return `${min}:${sec}`
|
|
},
|
|
|
|
handle: function () {
|
|
// 开始倒计时
|
|
clearInterval(this.timer);
|
|
this.timer = utils.curryTimeTD(ret => { // 倒计时过程中
|
|
this.state = this.formatTime(ret);
|
|
}, this.startTime)(() => { // 倒计时完成
|
|
this.state = `00:00`;
|
|
// 停止倒计时
|
|
clearInterval(this.timer);
|
|
this.$emit('end')
|
|
});
|
|
},
|
|
},
|
|
created(){
|
|
if(this.startTime&&this.isAuto){
|
|
this.handle()
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
</style>
|
|
|