From 168ff70e22f06a7fa69f7981ce2493eb273c1c09 Mon Sep 17 00:00:00 2001 From: zhangyanli Date: Thu, 23 May 2024 15:04:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=99=E5=9F=B9=E5=8A=9F=E8=83=BDbug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/application/onlinexxks/video_study.vue | 31 ++++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/pages/application/onlinexxks/video_study.vue b/pages/application/onlinexxks/video_study.vue index ed8f4f5..eecea6d 100644 --- a/pages/application/onlinexxks/video_study.vue +++ b/pages/application/onlinexxks/video_study.vue @@ -114,7 +114,6 @@ import {basePath, loginUser, baseImgPath} from "@/common/tool"; let faceAuthTimer; // 人脸认证计时器 let throttleTimer; let throttleFlag; -let videoContext; export default { data() { return { @@ -142,7 +141,7 @@ export default { videoSrc: "", // 视频地址 videoPoster: "", // 视频封面图 scrollHeight: '0px', // scroll-view减去的高度 - // videoContext: null, // 视频上下文 + videoContext: null, // 视频上下文 submitTimeWaitForCount: 0, // 提交时间等待次数 verification:false,// 是否人脸认证 } @@ -327,7 +326,7 @@ export default { this.videoList = resData.pd.VIDEOLIST; }, async fnVideoSwitching(videoData, hasNodes, index, index1) { - videoContext && videoContext.pause(); + this.videoContext && this.videoContext.pause(); this.submitTimeWaitForCount = 0; if (this.changeVideoPlayTime !== 0) { await this.fnSubmitPlayTime("0", this.changeVideoPlayTime); @@ -364,9 +363,7 @@ export default { if (!resData.pd.RESOURCETIME) { await this.fnSubmitPlayTime("0", 0); } - console.log('resData.pd.RESOURCETIME:'+resData.pd.RESOURCETIME) this.serverVideoPlayTime = Math.floor(resData.pd.RESOURCETIME) || 0 - console.log('this.serverVideoPlayTime:'+this.serverVideoPlayTime) if (this.ISFACE === "1") { if (this.verification) { this.fnCreateVideo(); @@ -378,13 +375,14 @@ export default { } }, fnCreateVideo() { - videoContext = null; - videoContext = uni.createVideoContext("video"); - videoContext.play(); - console.log('fnCreateVideo:'+this.serverVideoPlayTime) + if (!this.videoContext) { + this.videoContext = uni.createVideoContext("video"); + } + this.videoContext.play(); this.serverVideoPlayTime !== 0 && videoContext.seek(this.serverVideoPlayTime); }, - async fnTimeUpdate(event) { + fnTimeUpdate(event) { + this.throttle(async () => { const currentTime = event.detail.currentTime; if (currentTime - this.serverVideoPlayTime >= 10) { uni.navigateBack(); @@ -392,7 +390,7 @@ export default { } //app视频自带bug,判断当前视频进度与服务器进度差,如果小于10秒,则退出重新进 if(currentTime !== 0 && Math.abs(currentTime - this.serverVideoPlayTime) > 10) { - videoContext.pause(); + this.videoContext.pause(); uni.showModal({ title: "提示", content: "app开发环境问题,偶现当前视频进度获取不准确,为了防止进度被覆盖,请退出重新进入!", @@ -412,6 +410,7 @@ export default { this.submitTimeWaitForCount = 0; await this.fnSubmitPlayTime("0", currentTime); } + }, 1000); }, async fnSubmitPlayTime(IS_END, RESOURCETIME) { if(!this.videoData.VIDEOCOURSEWARE_ID) { @@ -463,7 +462,7 @@ export default { this.videoList[this.firstIndex].percent = percent; } if (resData.pd.CANEXAM === "1") { - videoContext.pause(); + this.videoContext.pause(); uni.showModal({ title: "提示", content: "当前班级内所有课程均已学完,是否直接参加考试?", @@ -471,12 +470,12 @@ export default { cancelButtonText: "否", success: (res) => { if (res.confirm) { - videoContext && videoContext.exitFullScreen() + this.videoContext && this.videoContext.exitFullScreen() uni.navigateTo({ url: '/pages/application/onlinexxks/course_exam?STAGEEXAMPAPERINPUT_ID=' + resData.paper.STAGEEXAMPAPERINPUT_ID + '&STAGEEXAMPAPER_ID=' + resData.paper.STAGEEXAMPAPERINPUT_ID + '&CLASS_ID=' + this.CLASS_ID + '&POST_ID=' + resData.pd.POST_ID + '&STUDENT_ID=' + this.STUDENT_ID + '&NUMBEROFEXAMS=' + resData.pd.NUMBEROFEXAMS + '&entrySite=video_study' }) } else if (res.cancel) { - videoContext.play(); + this.videoContext.play(); } }, }); @@ -489,7 +488,7 @@ export default { } this.changeVideoPlayTime = 0; this.fnSubmitPlayTime("1", 0); - videoContext.pause(); + this.videoContext.pause(); this.fnClearInterval(); }, fnPlay() { @@ -523,7 +522,7 @@ export default { CHAPTER_ID: this.videoData.CHAPTER_ID, VIDEOCOURSEWARE_ID: this.videoData.VIDEOCOURSEWARE_ID, }) - videoContext && videoContext.exitFullScreen() + this.videoContext && this.videoContext.exitFullScreen() const resData = await this.post('/app/user/getUserFace', { USERNAME: loginUser.NAME, USER_ID: loginUser.USER_ID,