This commit is contained in:
joshen
2025-12-12 15:23:45 +08:00

View File

@@ -29,241 +29,238 @@
--></div>
</div>
</div>
<div class="course-content xcontent">
<div
class="course-playbox"
ref="coursePlayerBox"
id="id_course_player_box"
>
<div class="course-player" ref="coursePlayer" id="id_course_player">
<div>
<div v-if="renderCourse">
<div v-if="resType == null || resType == 0">
<!--先显示视频图片-->
<course-image
v-if="courseInfo.id != ''"
:course="courseInfo"
></course-image>
</div>
<div v-if="resType == 10" style="position: relative">
<videoPlayer
ref="myVideoPlayer"
id="myVideoPlayer"
@progress="progress"
:src="blobUrl"
:blobId="blobId"
@onPlayerPlaying="onPlayerPlaying"
:initTime="contentData.lastStudyTime"
:notePlay="notePlay"
@onPlayerPlay="onPlayerPlay"
:isDrag="curriculumData.isDrag"
@onFullscreen="onFullscreen"
@onPlayerPause="onPlayerPause"
@onPlayerEnded="onPlayerEnded"
:isCrowd="isCrowd"
@onTimeUpdate="handleAudioTimeUpdate"
></videoPlayer>
<div class="player-box" v-if="playerBoxShow">
<div class="player-praise" style="cursor: pointer">
<div @click="praiseContent">
<img
class="icon-small"
v-if="isPraise"
:src="
require('@/assets/images/icon/praise-active.png')
"
/>
<img
class="icon-small"
v-else
:src="require('@/assets/images/icon/zhan.png')"
/>
<!-- {{ courseInfo.praises }} -->
<div style="color: #fff; cursor: pointer"></div>
</div>
<div
style="margin-left: 15px; cursor: pointer"
@click="treadContent"
>
<img
class="icon-small"
v-if="isTrample"
:src="
require('@/assets/images/icon/trample-active.png')
"
/>
<img
class="icon-small"
v-else
:src="require('@/assets/images/icon/cai.png')"
/>
<!-- {{ courseInfo.trampleCount }} -->
<div style="color: #fff; cursor: pointer"></div>
</div>
</div>
<div v-if="!scoreInfo.has" class="player-rate">
<el-rate
v-model="scoreInfo.score"
text-color="#ff9900"
score-template="{value}"
void-color="#fff"
@change="addScore"
></el-rate>
</div>
<div class="course-content xcontent">
<div
class="course-playbox"
ref="coursePlayerBox"
id="id_course_player_box"
>
<div class="course-player" ref="coursePlayer" id="id_course_player">
<div>
<div v-if="renderCourse">
<div v-if="resType == null || resType == 0">
<!--先显示视频图片-->
<course-image
v-if="courseInfo.id != ''"
:course="courseInfo"
></course-image>
</div>
<div v-if="resType == 10" style="position: relative">
<videoPlayer
ref="myVideoPlayer"
id="myVideoPlayer"
@progress="progress"
:src="blobUrl"
:blobId="blobId"
@onPlayerPlaying="onPlayerPlaying"
:initTime="contentData.lastStudyTime"
:notePlay="notePlay"
@onPlayerPlay="onPlayerPlay"
:isDrag="curriculumData.isDrag"
@onFullscreen="onFullscreen"
@onPlayerPause="onPlayerPause"
@onPlayerEnded="onPlayerEnded"
:isCrowd="isCrowd"
@onTimeUpdate="handleAudioTimeUpdate"
></videoPlayer>
<div class="player-box" v-if="playerBoxShow">
<div class="player-praise" style="cursor: pointer">
<div @click="praiseContent">
<img
class="icon-small"
v-if="isPraise"
:src="require('@/assets/images/icon/praise-active.png')"
/>
<img
class="icon-small"
v-else
:src="require('@/assets/images/icon/zhan.png')"
/>
<!-- {{ courseInfo.praises }} -->
<div style="color: #fff; cursor: pointer"></div>
</div>
<div
v-if="scoreInfo.has"
style="padding-top: 5px; display: flex"
style="margin-left: 15px; cursor: pointer"
@click="treadContent"
>
<div class="player-rate" style="padding-left: 35px">
<el-rate
disabled
v-model="courseInfo.score"
:allow-half="true"
></el-rate>
</div>
<span class="score-text" style="margin-top: 35px">
<span style="color: #ffb30f">{{
toScore(courseInfo.score)
}}</span>
<span style="font-size: 12px; color: #fff"></span>
</span>
<img
class="icon-small"
v-if="isTrample"
:src="
require('@/assets/images/icon/trample-active.png')
"
/>
<img
class="icon-small"
v-else
:src="require('@/assets/images/icon/cai.png')"
/>
<!-- {{ courseInfo.trampleCount }} -->
<div style="color: #fff; cursor: pointer"></div>
</div>
</div>
</div>
<div v-if="resType == 20">
<div class="con-audio">
<div class="con-audio-title">
{{ contentData.contentName }}
</div>
<div class="con-audio-player">
<audioPlayer
v-if="resType == 20"
:url="blobUrl"
:name="contentData.contentName"
@onPlaying="audioPlaying"
:isDrag="curriculumData.isDrag"
@onPlay="audioPlay"
@onPause="audioPause"
@onPlayEnd="audioEnd"
></audioPlayer>
</div>
</div>
</div>
<div v-if="resType == 40">
<div
style="padding: 10px; color: #ed0000"
v-if="curCFile.converStatus < 2 && !contentData.content"
>
<div>此课程内容无法预览请联系管理员</div>
<div v-if="!scoreInfo.has" class="player-rate">
<el-rate
v-model="scoreInfo.score"
text-color="#ff9900"
score-template="{value}"
void-color="#fff"
@change="addScore"
></el-rate>
</div>
<div
style="padding: 10px; color: #ed0000"
v-if="curCFile.converStatus == 3 && !contentData.content"
v-if="scoreInfo.has"
style="padding-top: 5px; display: flex"
>
此课程内容无法预览请联系管理员
</div>
<pdfPreview
:autoScroll="true"
v-if="resType == 40"
:filePath="fileBaseUrl + contentData.content"
>
</pdfPreview>
</div>
<div v-if="resType == 41">
<div style="padding: 20px" v-html="contentData.content"></div>
</div>
<div v-if="resType == 50" style="min-height: 500px">
<iframe
id="iframeId"
v-if="scormUrl"
:src="scormUrl"
frameborder="0"
border="0px"
style="width: 100%; height: 500px; border: 0px"
></iframe>
</div>
<div v-if="resType == 52">
<div v-if="contentData.content != ''">
<div class="hyper-link" v-if="conLink.openType == 2">
<div class="hyper-link-row">
{{ contentData.contentName }}
</div>
<div class="hyper-link-row">{{ conLink.url }}</div>
</div>
<div v-if="conLink.openType == 1">
<iframe
:src="conLink.url"
style="width: 100%; border: 0px; min-height: 473px"
frameborder="0"
></iframe>
<div class="player-rate" style="padding-left: 35px">
<el-rate
disabled
v-model="courseInfo.score"
:allow-half="true"
></el-rate>
</div>
<span class="score-text" style="margin-top: 35px">
<span style="color: #ffb30f">{{
toScore(courseInfo.score)
}}</span>
<span style="font-size: 12px; color: #fff"></span>
</span>
</div>
</div>
<div v-if="resType == 60">
<homework
@submit="homeWorkSubmit"
v-if="resType == 60 && studyId != ''"
:studyId="studyId"
:content="contentData"
></homework>
</div>
<div v-if="resType == 20">
<div class="con-audio">
<div class="con-audio-title">
{{ contentData.contentName }}
</div>
<div class="con-audio-player">
<audioPlayer
v-if="resType == 20"
:url="blobUrl"
:name="contentData.contentName"
@onPlaying="audioPlaying"
:isDrag="curriculumData.isDrag"
@onPlay="audioPlay"
@onPause="audioPause"
@onPlayEnd="audioEnd"
></audioPlayer>
</div>
</div>
<div v-if="resType == 61">
<exam
@startTest="startTest"
v-if="resType == 61 && studyId != ''"
:studyId="studyId"
:content="contentData"
></exam>
</div>
<div v-if="resType == 40">
<div
style="padding: 10px; color: #ed0000"
v-if="curCFile.converStatus < 2 && !contentData.content"
>
<div>此课程内容无法预览请联系管理员</div>
</div>
<div v-if="resType == 62" style="padding: 5px">
<assess
v-if="resType == 62 && studyId != '' && contentData.id"
:studyId="studyId"
:content="contentData"
>
</assess>
<div
style="padding: 10px; color: #ed0000"
v-if="curCFile.converStatus == 3 && !contentData.content"
>
此课程内容无法预览请联系管理员
</div>
<pdfPreview
:autoScroll="true"
v-if="resType == 40"
:filePath="fileBaseUrl + contentData.content"
>
</pdfPreview>
</div>
<div v-if="resType == 41">
<div style="padding: 20px" v-html="contentData.content"></div>
</div>
<div
v-if="!renderCourse && Internet == 2"
style="margin: 350px 250px"
class="jianjie pdftext"
id="pdfPreview"
v-if="resType == 50 || isLoadIframe"
style="min-height: 500px"
>
<div
style="
margin-top: 40px;
font-weight: 700;
font-size: 22px;
color: #ccc;
"
>
<span
>十分抱歉您当前的网络环境不符合观看要求为了保障课程信息的安全您需要接入公司内网才能观看</span
>
</div>
<div
style="margin-top: 20px; text-align: center"
@click="refreshPage"
>
<el-button type="primary">重新检测</el-button>
<iframe
v-if="scormUrl || isLoadIframe"
:src="scormUrl"
frameborder="0"
border="0px"
style="width: 100%; height: 500px; border: 0px"
></iframe>
</div>
<div v-if="resType == 52">
<div v-if="contentData.content != ''">
<div class="hyper-link" v-if="conLink.openType == 2">
<div class="hyper-link-row">
{{ contentData.contentName }}
</div>
<div class="hyper-link-row">{{ conLink.url }}</div>
</div>
<div v-if="conLink.openType == 1">
<iframe
:src="conLink.url"
style="width: 100%; border: 0px; min-height: 473px"
frameborder="0"
></iframe>
</div>
</div>
</div>
<div v-if="resType == 60">
<homework
@submit="homeWorkSubmit"
v-if="resType == 60 && studyId != ''"
:studyId="studyId"
:content="contentData"
></homework>
</div>
<div v-if="resType == 61">
<exam
@startTest="startTest"
v-if="resType == 61 && studyId != ''"
:studyId="studyId"
:content="contentData"
></exam>
</div>
<div v-if="resType == 62" style="padding: 5px">
<assess
v-if="resType == 62 && studyId != '' && contentData.id"
:studyId="studyId"
:content="contentData"
>
</assess>
</div>
</div>
<!--交互部分-->
<div>
<div class="course-interact">
<div class="score" style="display: flex">
<div
v-if="!scoreInfo.has"
style="
margin-left: 10px;
cursor: pointer;
padding-top: 18px;
"
>
<!-- <el-popover placement="top" width="300" trigger="hover"> -->
<!-- <div style="text-align:center;line-height:50px;padding:20px 0px">
<div
v-if="!renderCourse && Internet == 2"
style="margin: 350px 250px"
class="jianjie pdftext"
id="pdfPreview"
>
<div
style="
margin-top: 40px;
font-weight: 700;
font-size: 22px;
color: #ccc;
"
>
<span
>十分抱歉您当前的网络环境不符合观看要求为了保障课程信息的安全您需要接入公司内网才能观看</span
>
</div>
<div
style="margin-top: 20px; text-align: center"
@click="refreshPage"
>
<el-button type="primary">重新检测</el-button>
</div>
</div>
</div>
<!--交互部分-->
<div>
<div class="course-interact">
<div class="score" style="display: flex">
<div
v-if="!scoreInfo.has"
style="margin-left: 10px; cursor: pointer; padding-top: 18px"
>
<!-- <el-popover placement="top" width="300" trigger="hover"> -->
<!-- <div style="text-align:center;line-height:50px;padding:20px 0px">
<div style="padding-top:30px"><el-button @click="addScore">提交评分</el-button></div>
</div> -->
@@ -1080,7 +1077,7 @@ export default {
warnTitle: "测试标题",
isFinishingStudyItem: false, // 防止重复调用完成状态更新接口
// // 全局状态:是否正在等待接口完成
// isWaitingForApis: false,
isLoadIframe: false,
// // 待执行的切换操作(存储点击的目标课程)
// pendingSwitchAction: null,
};
@@ -1097,8 +1094,6 @@ export default {
this.stopStudyTime(); //先关闭
this.cleanAppendTime(); //
this.loadData();
// // 监听iframe接口
// this.checkAllApisCompleted();
},
computed: {
// ai播放器相关
@@ -1349,6 +1344,13 @@ export default {
this.$refs.mynote.showVideoTimeBtn(false);
let $this = this;
this.resType = r.contentType;
if (this.resType == 50) {
this.isLoadIframe = true;
} else {
setTimeout(() => {
this.isLoadIframe = false;
}, 10000);
}
this.contentData = r;
this.activeId = this.contentData.id;
if (item) {
@@ -1603,9 +1605,7 @@ export default {
}
}
}
setTimeout(() => {
this.changePlayRes(r, item);
}, 10000);
this.changePlayRes(r, item);
},
loadScorePraiseAndTrample() {
//加载是否请过分