mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-21 00:36:44 +08:00
Merge branch 'player-20251117-v1' into master-20251210
# Conflicts: # src/api/modules/course.js # src/components/Course/courseForm.vue # src/security.js # src/views/portal/course/Index.vue # src/views/study/coursenew.vue
This commit is contained in:
@@ -373,6 +373,30 @@
|
||||
></i
|
||||
>我的笔记
|
||||
</div>
|
||||
<!-- ai播放器相关 开发阶段先放开 v-if="courseInfo.aiDraft == 1" -->
|
||||
<div
|
||||
@click="heartabthree"
|
||||
v-if="courseInfo.aiDraft == 1 && contentData.contentType == 10"
|
||||
:class="tab == 3 ? 'control-tab-active' : ' '"
|
||||
style="position: relative"
|
||||
>
|
||||
<i
|
||||
class="el-icon-document"
|
||||
style="margin-right: 9px; margin-left: 9px"
|
||||
></i
|
||||
>ai文稿
|
||||
<img
|
||||
src="@/assets/images/course/wengaoTip.png"
|
||||
alt=""
|
||||
style="
|
||||
position: absolute;
|
||||
top: -3px;
|
||||
right: -14px;
|
||||
width: 15px;
|
||||
height: 14px;
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 课程单元 -->
|
||||
<div class="course-units" v-if="tab == 1">
|
||||
@@ -625,6 +649,11 @@
|
||||
:score="courseInfo.score"
|
||||
></my-note>
|
||||
</div>
|
||||
<!-- ai播放器相关 -->
|
||||
<!-- ai文稿 -->
|
||||
<div class="ai-script" v-if="contentData.contentType == 10 && tab == 3">
|
||||
<ai-script ref="aiscript" :blobId="blobId" :isDrag="curriculumData.isDrag" @changeCurrentTime="changeCurrentTime"></ai-script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="course-infobox">
|
||||
@@ -637,6 +666,16 @@
|
||||
>
|
||||
内容简介<span class=""></span>
|
||||
</div>
|
||||
<!-- ai播放器相关 -->
|
||||
<div
|
||||
@click="coutab(4)"
|
||||
v-if="courseInfo.aiAbstract == 1"
|
||||
style="position: relative;"
|
||||
:class="courestab == 4 ? 'course-info-tab-active' : ''"
|
||||
>
|
||||
AI摘要<span class=""></span>
|
||||
<img style="position: absolute;top: -18px;right: -23px;width: 36px;height: 24px;" src="@/assets/images/course/courseNew.png" alt="">
|
||||
</div>
|
||||
<div
|
||||
@click="coutab(2)"
|
||||
:class="courestab == 2 ? 'course-info-tab-active' : ''"
|
||||
@@ -709,6 +748,15 @@
|
||||
></note-comments>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ai播放器相关 -->
|
||||
<div
|
||||
v-show="courestab == 4"
|
||||
style="padding-left: 17px; padding-top: 20px;background-color: #fff;"
|
||||
>
|
||||
<div style="padding: 30px;line-height: 24px;letter-spacing: 0.3px;color: rgba(102, 102, 102, 1);">
|
||||
{{ courseInfo.summaryContent || '' }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="course-teacher">
|
||||
<div class="cteacher-top">
|
||||
@@ -799,7 +847,8 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { mapGetters } from "vuex";
|
||||
// ai播放器相关
|
||||
import { mapGetters, mapMutations } from "vuex";
|
||||
import followButton from "@/components/Follow/button.vue";
|
||||
import portalHeader from "@/components/PortalHeader.vue";
|
||||
import portalFooter from "@/components/PortalFooter.vue";
|
||||
@@ -836,6 +885,8 @@ import exam from "@/components/Course/exam";
|
||||
import homework from "@/components/Course/homework";
|
||||
import assess from "@/components/Course/assess";
|
||||
import myNote from "../../components/Course/myNote.vue";
|
||||
// ai播放器相关
|
||||
import aiScript from "../../components/Course/aiScript.vue";
|
||||
import apiFollow from "@/api/phase2/userfollow.js";
|
||||
import apiMessage from "@/api/system/message.js";
|
||||
// import Vue from 'vue';
|
||||
@@ -855,6 +906,7 @@ export default {
|
||||
audioPlayer,
|
||||
videoPlayer,
|
||||
myNote,
|
||||
aiScript,
|
||||
noteComments,
|
||||
portalFooter,
|
||||
followButton,
|
||||
@@ -968,7 +1020,8 @@ export default {
|
||||
this.loadData();
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(["userInfo"]),
|
||||
// ai播放器相关
|
||||
...mapGetters(["userInfo", 'selectableLang']),
|
||||
catalogTree() {
|
||||
let treeList = [];
|
||||
this.completed = [];
|
||||
@@ -1004,6 +1057,16 @@ export default {
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
// ai播放器相关
|
||||
// 处理从AI文稿组件传递过来的时间跳转事件
|
||||
changeCurrentTime(time) {
|
||||
console.log(time,'time')
|
||||
this.$refs.myVideoPlayer && this.$refs.myVideoPlayer.seekToTime(time);
|
||||
},
|
||||
...mapMutations({
|
||||
SET_selectableLang: 'video/SET_selectableLang',
|
||||
SET_courseInfo: 'video/SET_courseInfo',
|
||||
}),
|
||||
handleOpen(key, path) {
|
||||
if (this.isFalse) {
|
||||
this.defaultOpeneds = [key];
|
||||
@@ -1165,6 +1228,10 @@ export default {
|
||||
this.curriculumData.url = r.content;
|
||||
}
|
||||
this.$refs.mynote.showVideoTimeBtn(true);
|
||||
// ai播放器相关 - 视频类型加载ai相关功能
|
||||
if (r.contentType == 10) {
|
||||
this.handleAIVideo(r.boeaiSubtitleRspList, r);
|
||||
}
|
||||
this.createPlayUrl(r.contentRefId, this.curriculumData.url);
|
||||
} else if (r.contentType == 40) {
|
||||
// if (r.content != '' && r.content.indexOf('.pdf') == -1) {
|
||||
@@ -1327,6 +1394,16 @@ export default {
|
||||
localStorage.setItem("videoProgressData", JSON.stringify(arr));
|
||||
}
|
||||
},
|
||||
// ai播放器相关 - 视频处理
|
||||
handleAIVideo(list = [], r) {
|
||||
console.log('触发了-----------list', list);
|
||||
this.SET_selectableLang(list);
|
||||
this.SET_courseInfo(this.courseInfo);
|
||||
if (this.courseInfo.aiSet && this.courseInfo.aiAbstract == 1 && this.courseInfo.summaryContent) {
|
||||
this.coutab(4);
|
||||
}
|
||||
console.log("ai处理", this.selectableLang);
|
||||
},
|
||||
isShowTime() {
|
||||
if (this.isContentTypeTwo != this.contentData.contentType) {
|
||||
return;
|
||||
@@ -2290,6 +2367,10 @@ export default {
|
||||
heartabtwo() {
|
||||
this.tab = 2;
|
||||
},
|
||||
// ai播放器相关
|
||||
heartabthree() {
|
||||
this.tab = 3;
|
||||
},
|
||||
handleAudioTimeUpdate(currentTime) {
|
||||
// if(this.contentStudysLength.length == 0){
|
||||
let params = {
|
||||
|
||||
Reference in New Issue
Block a user