1、先判断当前问卷是否设置了允许最长答题时间,如果没有设置则答题时间不受限制,如果设置则进行倒计时计算
2、进入领取页面计时生效,所以开始答题时当前时间戳 - 后台返回的时间戳为耗时差,再用最长答题时间 - 耗时差为剩余答题时间
// 倒计时计算
if (_this.consumeTime > 0) {
// 耗时 = 当前时间 - 开始答题时间
let usedTime = (new Date().getTime() - _this.startTime) / 1000 / 60;
// 剩余答题时间 = 答题时间 - 耗时
let time = _this.consumeTime - usedTime;
if (usedTime > _this.consumeTime) {
_this.consumeTime = '00 : 00';
}
else {
_this.countDown(time);
}
}
3、倒计时计算,判断是从外部进入页面,还是正常倒计时,加入从05:00减为04:59
countDown(val) {
let _this = this;
let m = parseInt(val); // 分钟
let s = null; // 秒
let time = String(val);
if (time.indexOf('.') > -1) {
// 获取小数点后两位,计算秒
let point = time.substring(time.indexOf("."), time.indexOf(".") + 3);
let num = parseFloat(0 + point);
s = parseInt(num * 60);
} else {
s = 59;
}
getCountDown();
if (m !== 0 || s !== 0) {
setInterval(() => {
getCountDown();
}, 1000);
}
function getCountDown() {
if (m >= 0) {
if (s > 0) {
let time = _this.formatterConsumeTime(m, s);
_this.consumeTime = time;
s--;
}
else if (s === 0) {
let time = _this.formatterConsumeTime(m, s);
_this.consumeTime = time;
m--;
s = 59;
}
}
}
},
formatterConsumeTime(m, s) {
let min = m < 10 ? `0${m}` : m;
let sec = s < 10 ? `0${s}` : s;
if ((Number(min) === 1 && Number(sec) === 0)) {
this.isLess1minute = true;
this.minuteTime = '01:00';
}
if (Number(min) === 0) {
this.isLess1minute = true;
this.minuteTime = `${sec}`;
}
return `${min} : ${sec}`;
}