<div class="top">
<div class="delay">剩余时间</div>
<div class="time">{{ countdownText }}</div>
<div v-if="isLastTenMinutes" style="color:red;margin:10px 5%;">
注意:距离考试结束还有不到10分钟,请尽快完成答题!
</div>
countdownText: "",
isLastTenMinutes: false,
targetTimestamp: 0,
countdownTimer: null,
updateCountdown() {
setTimeout(() => {
this.$API
.getExamCountDown({ examId: this.params.examId })
.then((res) => {
this.targetTimestamp = res;
clearInterval(this.countdownTimer);
this.countdownTimer = setInterval(() => {
const now = Date.now();
const remainingTime = this.targetTimestamp - now;
if (remainingTime <= 0) {
this.$API.submitPaper(this.resDataParams).then((res) => {
if (res) {
this.$message({
type: "success",
message: "交卷成功!",
});
this.$router.push({ path: "/exam",query: { fullscreen: false },});
window.location.reload()
}
});
} else {
const hours = Math.floor(remainingTime / 1000 / 60 / 60);
const minutes = Math.floor(remainingTime / 1000 / 60);
const seconds = Math.floor((remainingTime / 1000) % 60);
const formattedHours = String(hours).padStart(2, "0");
const formattedMinutes = String(Math.floor(minutes % 60)).padStart(2, "0");
const formattedSeconds = String(Math.floor(seconds % 60)).padStart(2, "0");
this.countdownText = `${formattedHours}:${formattedMinutes}:${formattedSeconds}`;
if (remainingTime <= 10 * 60 * 1000) {
this.isLastTenMinutes = true;
}
}
}, 1000);
});
}, 1000);
},