|
|
@@ -622,6 +622,9 @@ let homeworkStartTime = null;
|
|
|
const cameraPreview = ref(null);
|
|
|
const recordingDuration = ref(0); // 录制时长(秒)
|
|
|
let recordingTimer = null; // 录制计时器
|
|
|
+
|
|
|
+const lastSavePromptTime = ref(0); // 记录上次提示保存的时间点
|
|
|
+const SAVE_REMINDER_INTERVAL = 180; // 3分钟(180秒)提醒一次
|
|
|
// 开始作业
|
|
|
const startHomework = async () => {
|
|
|
scrollToBottom();
|
|
|
@@ -654,6 +657,13 @@ const startHomework = async () => {
|
|
|
// 启动录制时长计时器
|
|
|
recordingTimer = setInterval(() => {
|
|
|
recordingDuration.value += 1;
|
|
|
+
|
|
|
+ // 每3分钟提醒保存一次(180秒)
|
|
|
+ if (recordingDuration.value % SAVE_REMINDER_INTERVAL === 0 &&
|
|
|
+ recordingDuration.value !== lastSavePromptTime.value) {
|
|
|
+ lastSavePromptTime.value = recordingDuration.value;
|
|
|
+ ElMessage.warning('录制时长已超过3分钟,建议暂存当前进度');
|
|
|
+ }
|
|
|
}, 1000);
|
|
|
// 将摄像头画面绑定到 video 元素
|
|
|
if (cameraPreview.value) {
|
|
|
@@ -715,6 +725,7 @@ const saveHomework = async () => {
|
|
|
isHomeworkStarted.value = false;
|
|
|
ElMessage.success("视频片段暂存成功");
|
|
|
loadingInstance.close();
|
|
|
+ lastSavePromptTime.value = 0; // 重置提示计时
|
|
|
})
|
|
|
} catch (error) {
|
|
|
console.error("视频片段上传失败:", error);
|
|
|
@@ -802,6 +813,7 @@ const resetHomework = async() => {
|
|
|
if (recordingTimer) {
|
|
|
clearInterval(recordingTimer);
|
|
|
recordingTimer = null;
|
|
|
+
|
|
|
}
|
|
|
// 清除摄像头画面
|
|
|
if (cameraPreview.value) {
|
|
|
@@ -830,6 +842,7 @@ const resetHomework = async() => {
|
|
|
recordingDuration.value = 0;
|
|
|
ElMessage.success("作业内容已清空");
|
|
|
getHistory()
|
|
|
+ lastSavePromptTime.value = 0; // 重置提示计时
|
|
|
|
|
|
} else {
|
|
|
ElMessage.error("清除失败,请稍后尝试")
|
|
|
@@ -1010,6 +1023,7 @@ onBeforeUnmount(() => {
|
|
|
if (cameraPreview.value) {
|
|
|
cameraPreview.value.srcObject = null;
|
|
|
}
|
|
|
+ lastSavePromptTime.value = 0; // 清理计时
|
|
|
});
|
|
|
|
|
|
|