mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-18 23:36:44 +08:00
Merge branch '20251212-fix-1130' of https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal into 20251212-fix-1130
This commit is contained in:
@@ -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() {
|
||||
//加载是否请过分
|
||||
|
||||
Reference in New Issue
Block a user