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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 课程管理分页查询(新)
|
||||
* @param {Object} query
|
||||
*/
|
||||
const managePage = function(query) {
|
||||
return ajax.postJson('/xboe/m/course/manage/page', query);
|
||||
}
|
||||
|
||||
|
||||
/**计算待审核课程*/
|
||||
const countWaitAudit = function() {
|
||||
@@ -363,21 +355,6 @@ const setTop = function(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 是否启用}
|
||||
@@ -445,13 +422,8 @@ const exportCourseAudit=function(query){
|
||||
参数同上待审核课程记录导出
|
||||
课程的导出和已审核的课程导出
|
||||
*/
|
||||
const exportCourse = function(query) {
|
||||
return ajax.get({
|
||||
url: '/xboe/m/course/manage/export',
|
||||
method: 'get',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
const exportCourse=function(query){
|
||||
return ajax.post('/xboe/m/course/manage/exportCourse',query);
|
||||
}
|
||||
|
||||
//判断受众id是否有关联
|
||||
@@ -469,19 +441,6 @@ const ids=function (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设置
|
||||
const benchAiSet=function(data){
|
||||
return ajax.postJson('/xboe/m/course/manage/benchAiSet',data);
|
||||
@@ -497,7 +456,6 @@ export default {
|
||||
getDictIds,
|
||||
saveContent,
|
||||
pageList,
|
||||
managePage,
|
||||
setEnabled,
|
||||
del,
|
||||
publish,
|
||||
@@ -514,8 +472,6 @@ export default {
|
||||
auditAndPublish,
|
||||
getAssess,
|
||||
setTop,
|
||||
fetchTopCourseList,
|
||||
updateTopCourseSort,
|
||||
delSection,
|
||||
getExam,
|
||||
delContent,
|
||||
@@ -532,9 +488,6 @@ export default {
|
||||
exportCourse,
|
||||
queryCrowd,
|
||||
ids,
|
||||
saveTip,
|
||||
courseList
|
||||
ids,
|
||||
benchAiSet
|
||||
benchAiSet,
|
||||
|
||||
}
|
||||
|
||||
@@ -783,6 +783,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">
|
||||
@@ -795,6 +800,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' : ''"
|
||||
@@ -869,6 +884,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">
|
||||
@@ -961,7 +985,7 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { mapGetters } from "vuex";
|
||||
import { mapGetters, mapMutations } from "vuex";
|
||||
import followButton from "@/components/Follow/button.vue";
|
||||
import portalHeader from "@/components/PortalHeader.vue";
|
||||
import portalFooter from "@/components/PortalFooter.vue";
|
||||
@@ -998,6 +1022,7 @@
|
||||
import homework from "@/components/Course/homework";
|
||||
import assess from "@/components/Course/assess";
|
||||
import myNote from "../../components/Course/myNote.vue";
|
||||
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';
|
||||
@@ -1017,6 +1042,7 @@
|
||||
audioPlayer,
|
||||
videoPlayer,
|
||||
myNote,
|
||||
aiScript,
|
||||
noteComments,
|
||||
portalFooter,
|
||||
followButton,
|
||||
@@ -1115,6 +1141,7 @@
|
||||
warn: "测试内容",
|
||||
warnTitle: "测试标题",
|
||||
isFinishingStudyItem: false, // 防止重复调用完成状态更新接口
|
||||
newEmployee: false
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
@@ -1131,7 +1158,8 @@
|
||||
this.loadData();
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(["userInfo"]),
|
||||
// ai播放器相关
|
||||
...mapGetters(["userInfo", 'selectableLang']),
|
||||
catalogTree() {
|
||||
let treeList = [];
|
||||
this.completed = [];
|
||||
@@ -1167,6 +1195,16 @@
|
||||
},
|
||||
},
|
||||
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() {
|
||||
this.isShowScoreConfirm = false;
|
||||
this.scoreInfo.score = 5;
|
||||
@@ -1335,6 +1373,10 @@
|
||||
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) {
|
||||
@@ -1503,6 +1545,16 @@
|
||||
}
|
||||
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) {
|
||||
//i:子节下标,index:章下标
|
||||
// 无权限查看不能点击
|
||||
@@ -2460,6 +2512,10 @@
|
||||
heartabtwo() {
|
||||
this.tab = 2;
|
||||
},
|
||||
// ai播放器相关
|
||||
heartabthree() {
|
||||
this.tab = 3;
|
||||
},
|
||||
handleAudioTimeUpdate(currentTime) {
|
||||
// if(this.contentStudysLength.length == 0){
|
||||
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