mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-10 19:36:43 +08:00
Merge remote-tracking branch 'aliyun/player-20251117' into player-20251117
# Conflicts: # src/api/modules/course.js # src/views/study/coursenew.vue
This commit is contained in:
@@ -269,14 +269,6 @@ const pageList = function(query) {
|
|||||||
return ajax.post('/xboe/m/course/manage/pagelist', query);
|
return ajax.post('/xboe/m/course/manage/pagelist', query);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 课程管理分页查询(新)
|
|
||||||
* @param {Object} query
|
|
||||||
*/
|
|
||||||
const managePage = function(query) {
|
|
||||||
return ajax.postJson('/xboe/m/course/manage/page', query);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**计算待审核课程*/
|
/**计算待审核课程*/
|
||||||
const countWaitAudit = function() {
|
const countWaitAudit = function() {
|
||||||
@@ -363,21 +355,6 @@ const setTop = function(data) {
|
|||||||
return ajax.post('/xboe/m/course/manage/top', data);
|
return ajax.post('/xboe/m/course/manage/top', data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取置顶课程列表
|
|
||||||
*/
|
|
||||||
const fetchTopCourseList = function() {
|
|
||||||
return ajax.get('/xboe/m/course/manage/topList');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新置顶课程排序
|
|
||||||
* @param {Array<{id:string,sortWeight:number}>} data
|
|
||||||
*/
|
|
||||||
const updateTopCourseSort = function(data) {
|
|
||||||
return ajax.postJson('/xboe/m/course/manage/top-sortchange', data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 管理员的设置启用停用
|
* 管理员的设置启用停用
|
||||||
* @param {Object} query {ids:课程id,多个使用逗号分隔,title:课程的名称, Boolean enabled 是否启用}
|
* @param {Object} query {ids:课程id,多个使用逗号分隔,title:课程的名称, Boolean enabled 是否启用}
|
||||||
@@ -445,13 +422,8 @@ const exportCourseAudit=function(query){
|
|||||||
参数同上待审核课程记录导出
|
参数同上待审核课程记录导出
|
||||||
课程的导出和已审核的课程导出
|
课程的导出和已审核的课程导出
|
||||||
*/
|
*/
|
||||||
const exportCourse = function(query) {
|
const exportCourse=function(query){
|
||||||
return ajax.get({
|
return ajax.post('/xboe/m/course/manage/exportCourse',query);
|
||||||
url: '/xboe/m/course/manage/export',
|
|
||||||
method: 'get',
|
|
||||||
params: query,
|
|
||||||
responseType: 'blob'
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//判断受众id是否有关联
|
//判断受众id是否有关联
|
||||||
@@ -469,19 +441,6 @@ const ids=function (data){
|
|||||||
return ajax.postJson('/xboe/m/course/manage/ids',data);
|
return ajax.postJson('/xboe/m/course/manage/ids',data);
|
||||||
}
|
}
|
||||||
|
|
||||||
const saveTip = function() {
|
|
||||||
return ajax.postJson('/xboe/m/course/manage/saveTip');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取我开发的课程列表
|
|
||||||
*/
|
|
||||||
const courseList = function(data) {
|
|
||||||
return ajax.postJson('/xboe/m/course/manage/page', data);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ai播放器相关 - 批量AI设置
|
// ai播放器相关 - 批量AI设置
|
||||||
const benchAiSet=function(data){
|
const benchAiSet=function(data){
|
||||||
return ajax.postJson('/xboe/m/course/manage/benchAiSet',data);
|
return ajax.postJson('/xboe/m/course/manage/benchAiSet',data);
|
||||||
@@ -497,7 +456,6 @@ export default {
|
|||||||
getDictIds,
|
getDictIds,
|
||||||
saveContent,
|
saveContent,
|
||||||
pageList,
|
pageList,
|
||||||
managePage,
|
|
||||||
setEnabled,
|
setEnabled,
|
||||||
del,
|
del,
|
||||||
publish,
|
publish,
|
||||||
@@ -514,8 +472,6 @@ export default {
|
|||||||
auditAndPublish,
|
auditAndPublish,
|
||||||
getAssess,
|
getAssess,
|
||||||
setTop,
|
setTop,
|
||||||
fetchTopCourseList,
|
|
||||||
updateTopCourseSort,
|
|
||||||
delSection,
|
delSection,
|
||||||
getExam,
|
getExam,
|
||||||
delContent,
|
delContent,
|
||||||
@@ -532,9 +488,6 @@ export default {
|
|||||||
exportCourse,
|
exportCourse,
|
||||||
queryCrowd,
|
queryCrowd,
|
||||||
ids,
|
ids,
|
||||||
saveTip,
|
benchAiSet,
|
||||||
courseList
|
|
||||||
ids,
|
|
||||||
benchAiSet
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -782,6 +782,11 @@
|
|||||||
@onPlayVideo="onPlayVideo"
|
@onPlayVideo="onPlayVideo"
|
||||||
:score="courseInfo.score"
|
:score="courseInfo.score"
|
||||||
></my-note>
|
></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>
|
||||||
</div>
|
</div>
|
||||||
@@ -795,6 +800,16 @@
|
|||||||
>
|
>
|
||||||
内容简介<span class=""></span>
|
内容简介<span class=""></span>
|
||||||
</div>
|
</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
|
<div
|
||||||
@click="coutab(2)"
|
@click="coutab(2)"
|
||||||
:class="courestab == 2 ? 'course-info-tab-active' : ''"
|
:class="courestab == 2 ? 'course-info-tab-active' : ''"
|
||||||
@@ -867,6 +882,15 @@
|
|||||||
:obj-id="courseInfo.id"
|
:obj-id="courseInfo.id"
|
||||||
:name="courseInfo.name"
|
:name="courseInfo.name"
|
||||||
></note-comments>
|
></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>
|
||||||
</div>
|
</div>
|
||||||
@@ -961,7 +985,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { mapGetters } from "vuex";
|
import { mapGetters, mapMutations } from "vuex";
|
||||||
import followButton from "@/components/Follow/button.vue";
|
import followButton from "@/components/Follow/button.vue";
|
||||||
import portalHeader from "@/components/PortalHeader.vue";
|
import portalHeader from "@/components/PortalHeader.vue";
|
||||||
import portalFooter from "@/components/PortalFooter.vue";
|
import portalFooter from "@/components/PortalFooter.vue";
|
||||||
@@ -998,6 +1022,7 @@
|
|||||||
import homework from "@/components/Course/homework";
|
import homework from "@/components/Course/homework";
|
||||||
import assess from "@/components/Course/assess";
|
import assess from "@/components/Course/assess";
|
||||||
import myNote from "../../components/Course/myNote.vue";
|
import myNote from "../../components/Course/myNote.vue";
|
||||||
|
import aiScript from "../../components/Course/aiScript.vue";
|
||||||
import apiFollow from "@/api/phase2/userfollow.js";
|
import apiFollow from "@/api/phase2/userfollow.js";
|
||||||
import apiMessage from "@/api/system/message.js";
|
import apiMessage from "@/api/system/message.js";
|
||||||
// import Vue from 'vue';
|
// import Vue from 'vue';
|
||||||
@@ -1017,6 +1042,7 @@
|
|||||||
audioPlayer,
|
audioPlayer,
|
||||||
videoPlayer,
|
videoPlayer,
|
||||||
myNote,
|
myNote,
|
||||||
|
aiScript,
|
||||||
noteComments,
|
noteComments,
|
||||||
portalFooter,
|
portalFooter,
|
||||||
followButton,
|
followButton,
|
||||||
@@ -1115,6 +1141,7 @@
|
|||||||
warn: "测试内容",
|
warn: "测试内容",
|
||||||
warnTitle: "测试标题",
|
warnTitle: "测试标题",
|
||||||
isFinishingStudyItem: false, // 防止重复调用完成状态更新接口
|
isFinishingStudyItem: false, // 防止重复调用完成状态更新接口
|
||||||
|
newEmployee: false
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@@ -1131,7 +1158,8 @@
|
|||||||
this.loadData();
|
this.loadData();
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(["userInfo"]),
|
// ai播放器相关
|
||||||
|
...mapGetters(["userInfo", 'selectableLang']),
|
||||||
catalogTree() {
|
catalogTree() {
|
||||||
let treeList = [];
|
let treeList = [];
|
||||||
this.completed = [];
|
this.completed = [];
|
||||||
@@ -1167,6 +1195,16 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
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',
|
||||||
|
}),
|
||||||
handleCancelScore() {
|
handleCancelScore() {
|
||||||
this.isShowScoreConfirm = false;
|
this.isShowScoreConfirm = false;
|
||||||
this.scoreInfo.score = 5;
|
this.scoreInfo.score = 5;
|
||||||
@@ -1335,6 +1373,10 @@
|
|||||||
this.curriculumData.url = r.content;
|
this.curriculumData.url = r.content;
|
||||||
}
|
}
|
||||||
this.$refs.mynote.showVideoTimeBtn(true);
|
this.$refs.mynote.showVideoTimeBtn(true);
|
||||||
|
// ai播放器相关 - 视频类型加载ai相关功能
|
||||||
|
if (r.contentType == 10) {
|
||||||
|
this.handleAIVideo(r.boeaiSubtitleRspList, r);
|
||||||
|
}
|
||||||
this.createPlayUrl(r.contentRefId, this.curriculumData.url);
|
this.createPlayUrl(r.contentRefId, this.curriculumData.url);
|
||||||
} else if (r.contentType == 40) {
|
} else if (r.contentType == 40) {
|
||||||
// if (r.content != '' && r.content.indexOf('.pdf') == -1) {
|
// if (r.content != '' && r.content.indexOf('.pdf') == -1) {
|
||||||
@@ -1503,6 +1545,16 @@
|
|||||||
}
|
}
|
||||||
this.contentData.status = 2;
|
this.contentData.status = 2;
|
||||||
},
|
},
|
||||||
|
// 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);
|
||||||
|
},
|
||||||
showRes(r, i, index, item) {
|
showRes(r, i, index, item) {
|
||||||
//i:子节下标,index:章下标
|
//i:子节下标,index:章下标
|
||||||
// 无权限查看不能点击
|
// 无权限查看不能点击
|
||||||
@@ -2460,6 +2512,10 @@
|
|||||||
heartabtwo() {
|
heartabtwo() {
|
||||||
this.tab = 2;
|
this.tab = 2;
|
||||||
},
|
},
|
||||||
|
// ai播放器相关
|
||||||
|
heartabthree() {
|
||||||
|
this.tab = 3;
|
||||||
|
},
|
||||||
handleAudioTimeUpdate(currentTime) {
|
handleAudioTimeUpdate(currentTime) {
|
||||||
// if(this.contentStudysLength.length == 0){
|
// if(this.contentStudysLength.length == 0){
|
||||||
let params = {
|
let params = {
|
||||||
|
|||||||
3103
src/views/study/coursenew_ai.vue
Normal file
3103
src/views/study/coursenew_ai.vue
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user