//启动定时器
this.task = setInterval(() => {
this.autoUpdateStatus();
}, 1000);
autoUpdateStatus() {
if(this.product.status && this.product.status === ‘2’) {
this.product.statusText = ‘直播已结束’;
//删除定时器
clearInterval(this.task);
} else {
let startDate = this.product.startDate;
let endDate = this.product.endDate;
let start = this.$moment(startDate, 'YYYY-MM-DD HH:mm:ss');
let end = this.$moment(endDate, 'YYYY-MM-DD HH:mm:ss');
let now = new Date();
if(start.isAfter(now)) {
//预告
this.product.status = '0';
//直播未开始时,显示开播倒计时
//注意,毫秒是13位数字
//计算毫秒的差值
let milliseconds = start.valueOf() - now.getTime();
let day = Math.floor(milliseconds / 1000 / 3600 / 24);
let hour = Math.floor(milliseconds / 1000 / 3600 - day * 24);
let minute = Math.floor(milliseconds / 1000 / 60 - day * 24 * 60 - hour * 60);
let second = Math.floor(milliseconds / 1000 - day * 24 * 3600 - hour * 3600 - minute * 60);
this.product.statusText = '仅剩' + (day == 0? '': day + '天') + hour + '小时' + minute + '分' + second + '秒开播';
} else if(end.isBefore(now)) {
//直播结束
this.product.status = '2';
this.product.statusText = '直播已结束';
//删除定时器
clearInterval(this.task);
} else {
//直播中
this.product.status = '1';
//正在直播时,显示直播结束倒计时
//注意,毫秒是13位数字
//计算毫秒的差值
let milliseconds = end.valueOf() - now.getTime();
let day = Math.floor(milliseconds / 1000 / 3600 / 24);
let hour = Math.floor(milliseconds / 1000 / 3600 - day * 24);
let minute = Math.floor(milliseconds / 1000 / 60 - day * 24 * 60 - hour * 60);
let second = Math.floor(milliseconds / 1000 - day * 24 * 3600 - hour * 3600 - minute * 60);
this.product.statusText = '仅剩' + (day == 0? '': day + '天') + hour + '小时' + minute + '分' + second + '秒直播结束';
}
}
//强制刷新UI,否则倒计时看不到效果
this.$forceUpdate();
}