mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-09 10:56:44 +08:00
Compare commits
33 Commits
master-081
...
20250813-h
| Author | SHA1 | Date | |
|---|---|---|---|
| a96f53cd0d | |||
| 2a124e78a9 | |||
| f6e99a1657 | |||
| 67f7e9e70d | |||
|
|
029d5b0791 | ||
|
|
12a6ed8fea | ||
|
|
363492866f | ||
|
|
d237dc99ee | ||
|
|
995933ae56 | ||
|
|
dff81df91d | ||
|
|
0864704c4c | ||
|
|
58fc6264fe | ||
|
|
5276813eba | ||
|
|
3485435c9e | ||
|
|
2ee3daedf6 | ||
|
|
5d0d64abbf | ||
|
|
ea97aee4af | ||
|
|
a968062936 | ||
|
|
6d11475456 | ||
|
|
a7396e0a6a | ||
|
|
ac236e8d7c | ||
|
|
f537608e4f | ||
|
|
c7f4a224ff | ||
|
|
a4d088a3ae | ||
|
|
3cd2c5f433 | ||
|
|
8c69fac9be | ||
|
|
4033eb2294 | ||
|
|
ec469db72a | ||
|
|
5e1ea2469b | ||
|
|
2baa5c61a4 | ||
|
|
b627398b7d | ||
|
|
7be5c072d9 | ||
|
|
de14f9f561 |
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* 课程的操作,课程的添加,修改,列表查询,课程的审核发布等操作。
|
* 课程的操作,课程的添加,修改,列表查询,课程的审核发布等操作。
|
||||||
* 针对于管理员,教师的功能
|
* 针对于管理员,教师的功能
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
import ajax from '@/utils/xajax.js'
|
import ajax from '@/utils/xajax.js'
|
||||||
|
|
||||||
@@ -170,7 +170,9 @@ const updateContentOrders = function(cid,items) {
|
|||||||
const detail = function(id) {
|
const detail = function(id) {
|
||||||
return ajax.get('/xboe/m/course/manage/detail?id=' + id);
|
return ajax.get('/xboe/m/course/manage/detail?id=' + id);
|
||||||
}
|
}
|
||||||
|
const getDictIds = function(pid,type) {
|
||||||
|
return ajax.get(`/xboe/m/course/manage/getDictIds?pid=${pid}&type=${type}`);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 更新内容的名称
|
* 更新内容的名称
|
||||||
* @param {Object} data
|
* @param {Object} data
|
||||||
@@ -274,7 +276,7 @@ const countWaitAudit = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [已用courseAudit中的hrbpAuditList替换]
|
* [已用courseAudit中的hrbpAuditList替换]
|
||||||
* 当前用户需要审核的课程列表
|
* 当前用户需要审核的课程列表
|
||||||
* @param {Object} query 同pageList
|
* @param {Object} query 同pageList
|
||||||
*/
|
*/
|
||||||
@@ -283,9 +285,9 @@ const auditList = function(query) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 【已移到courseAudit中】
|
* 【已移到courseAudit中】
|
||||||
* 教师需要审核的课程列表
|
* 教师需要审核的课程列表
|
||||||
*/
|
*/
|
||||||
const teacherAuditList = function(query) {
|
const teacherAuditList = function(query) {
|
||||||
return ajax.post('/xboe/m/course/audit/teacher-course', query);
|
return ajax.post('/xboe/m/course/audit/teacher-course', query);
|
||||||
@@ -446,6 +448,7 @@ export default {
|
|||||||
findUpdateLogs,
|
findUpdateLogs,
|
||||||
getUpdateLog,
|
getUpdateLog,
|
||||||
detail,
|
detail,
|
||||||
|
getDictIds,
|
||||||
saveContent,
|
saveContent,
|
||||||
pageList,
|
pageList,
|
||||||
setEnabled,
|
setEnabled,
|
||||||
|
|||||||
@@ -571,6 +571,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
this.getDictIds();
|
||||||
let extendFlag=this.$route.query.f; //是否是管理端过来的
|
let extendFlag=this.$route.query.f; //是否是管理端过来的
|
||||||
this.extendRefId=this.$route.query.refId;
|
this.extendRefId=this.$route.query.refId;
|
||||||
this.extendRefType=this.$route.query.refType;
|
this.extendRefType=this.$route.query.refType;
|
||||||
@@ -601,16 +602,8 @@ export default {
|
|||||||
this.isPermission = false;
|
this.isPermission = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
console.log("--- this.dicts = ",this.dicts)
|
||||||
this.isPermission = this.dicts.includes(orgId);
|
this.isPermission = this.dicts.includes(orgId);
|
||||||
/*if(this.isPermission && !this.courseInfo && !this.courseInfo.device){
|
|
||||||
this.courseInfo.device = 4;
|
|
||||||
}else{
|
|
||||||
if(!this.courseInfo && !this.courseInfo.device){
|
|
||||||
return;
|
|
||||||
}else{
|
|
||||||
this.courseInfo.device = 3;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
console.log("--- 监听结束 this.isPermission = ",this.isPermission)
|
console.log("--- 监听结束 this.isPermission = ",this.isPermission)
|
||||||
},
|
},
|
||||||
// 关键字的更改
|
// 关键字的更改
|
||||||
@@ -917,6 +910,21 @@ export default {
|
|||||||
this.courseCoverurl = '';
|
this.courseCoverurl = '';
|
||||||
this.courseInfo.coverImg = '';
|
this.courseInfo.coverImg = '';
|
||||||
},
|
},
|
||||||
|
//获取字典信息
|
||||||
|
async getDictIds() {
|
||||||
|
console.log("--- 获取字典信息 1 = ", this.dicts);
|
||||||
|
try {
|
||||||
|
const response = await apiCourse.getDictIds(637, 1); // 确保返回 Promise
|
||||||
|
console.log("--- 获取字典信息 2 result= ", response);
|
||||||
|
|
||||||
|
if (response.status === 200) {
|
||||||
|
this.dicts = response.result.dicts; // 正确提取 dicts
|
||||||
|
console.log("--- 获取字典信息 3 = ", this.dicts);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error("获取字典信息失败:", error);
|
||||||
|
}
|
||||||
|
},
|
||||||
//获取课程信息
|
//获取课程信息
|
||||||
async getDetail(id) {
|
async getDetail(id) {
|
||||||
this.curCourseId = id;
|
this.curCourseId = id;
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ export default {
|
|||||||
},
|
},
|
||||||
isDrag:{
|
isDrag:{
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true,
|
|
||||||
},
|
},
|
||||||
blobId:{
|
blobId:{
|
||||||
type: String,
|
type: String,
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="label">
|
<div class="label">
|
||||||
<author :aid="caseDetail.sysCreateAid" :onlyAvatar="true" :avatar="authorInfo.avatar"
|
<author :aid="caseDetail.sysCreateAid" :onlyAvatar="true" :avatar="authorInfo.avatar"
|
||||||
:sex="authorInfo.sex"></author>
|
:sex="authorInfo.sex" :name="authorInfo.name"></author>
|
||||||
<span>案主:{{ authorInfo.name }} ({{ authorInfo.orgInfo }})</span>
|
<span>案主:{{ authorInfo.name }} ({{ authorInfo.orgInfo }})</span>
|
||||||
<!-- <span>案主:{{ authorInfo.name }}</span>
|
<!-- <span>案主:{{ authorInfo.name }}</span>
|
||||||
<span>工号:{{ authorInfo.code }}</span>
|
<span>工号:{{ authorInfo.code }}</span>
|
||||||
|
|||||||
@@ -1609,7 +1609,7 @@ export default {
|
|||||||
})
|
})
|
||||||
console.log(res?.result?.list ,'有没有数据2');
|
console.log(res?.result?.list ,'有没有数据2');
|
||||||
this.caseList.list = res.result.list
|
this.caseList.list = res.result.list
|
||||||
// this.getCaseUserData(res.result.list);
|
this.getCaseUserData(res.result.list);
|
||||||
// 给所有的赋值
|
// 给所有的赋值
|
||||||
this.caseList.count = res.result.count;
|
this.caseList.count = res.result.count;
|
||||||
this.caseList.showPagCount = res.result.count;
|
this.caseList.showPagCount = res.result.count;
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<div class="course-playbox" ref="coursePlayerBox" id="id_course_player_box">
|
<div class="course-playbox" ref="coursePlayerBox" id="id_course_player_box">
|
||||||
<div class="course-player" ref="coursePlayer" id="id_course_player">
|
<div class="course-player" ref="coursePlayer" id="id_course_player">
|
||||||
<div>
|
<div>
|
||||||
<div v-if="Internet != 2">
|
<div v-if="renderCourse">
|
||||||
<div v-if="resType == null || resType == 0">
|
<div v-if="resType == null || resType == 0">
|
||||||
<!--先显示视频图片-->
|
<!--先显示视频图片-->
|
||||||
<course-image v-if="courseInfo.id != ''" :course="courseInfo"></course-image>
|
<course-image v-if="courseInfo.id != ''" :course="courseInfo"></course-image>
|
||||||
@@ -110,11 +110,11 @@
|
|||||||
</assess>
|
</assess>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="Internet == 2 || Internet == 3" style="margin:350px 250px" class="jianjie pdftext" id="pdfPreview">
|
<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">
|
<div style="margin-top:40px;font-weight:700;font-size: 22px;color: #ccc">
|
||||||
<span>十分抱歉,您当前的网络环境不符合观看要求。为了保障案例信息的安全,您需要接入公司内网才能观看。</span>
|
<span>十分抱歉,您当前的网络环境不符合观看要求。为了保障课程信息的安全,您需要接入公司内网才能观看。</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top:20px;text-align:center" @click="getInternet">
|
<div style="margin-top:20px;text-align:center" @click="refreshPage">
|
||||||
<el-button type="primary">重新检测</el-button>
|
<el-button type="primary">重新检测</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -177,7 +177,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 课程单元 -->
|
<!-- 课程单元 -->
|
||||||
<div class="course-units" v-if="tab == 1">
|
<div class="course-units" v-if="tab == 1">
|
||||||
<div :style="`height: ${controlHeight}px;overflow-y: auto;`">
|
<div style="min-height: 350px;max-height: 650px ;overflow-y: auto;">
|
||||||
<div class="catalog" v-if="courseInfo.type == 20">
|
<div class="catalog" v-if="courseInfo.type == 20">
|
||||||
<div v-for="(item, index) in catalogTree" :key="index" :name="index">
|
<div v-for="(item, index) in catalogTree" :key="index" :name="index">
|
||||||
<el-menu
|
<el-menu
|
||||||
@@ -454,6 +454,7 @@
|
|||||||
getType: getType,
|
getType: getType,
|
||||||
ctabName: 'catalog',
|
ctabName: 'catalog',
|
||||||
resType: null,
|
resType: null,
|
||||||
|
renderCourse: true,
|
||||||
activeNames: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
|
activeNames: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
|
||||||
scoreInfo: {
|
scoreInfo: {
|
||||||
dlgShow: false,
|
dlgShow: false,
|
||||||
@@ -482,6 +483,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
this.getInternet();
|
||||||
// 增加的用户受众id
|
// 增加的用户受众id
|
||||||
let localKey = "user_" + this.userInfo.sysId + "_gids";
|
let localKey = "user_" + this.userInfo.sysId + "_gids";
|
||||||
let hasIds = sessionStorage.getItem(localKey);
|
let hasIds = sessionStorage.getItem(localKey);
|
||||||
@@ -529,10 +531,6 @@
|
|||||||
return treeList;
|
return treeList;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
destroyed(){
|
|
||||||
this.cleanAppendTime();
|
|
||||||
this.stopStudyTime();
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
handleOpen(key,path){
|
handleOpen(key,path){
|
||||||
if(this.isFalse){
|
if(this.isFalse){
|
||||||
@@ -547,13 +545,13 @@
|
|||||||
},
|
},
|
||||||
noteChange(){
|
noteChange(){
|
||||||
//视频点定位,直接到播放的视频位置
|
//视频点定位,直接到播放的视频位置
|
||||||
this.timer = new Date().getTime()
|
this.timer = new Date().getTime()
|
||||||
},
|
},
|
||||||
//清空追加学习时长事件
|
//清空追加学习时长事件
|
||||||
cleanAppendTime(){
|
cleanAppendTime(){
|
||||||
if(this.appendStudyOtherHandle){
|
if(this.appendStudyOtherHandle){
|
||||||
window.clearTimeout(this.appendStudyOtherHandle);
|
window.clearTimeout(this.appendStudyOtherHandle);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
//非音视频课学习时长的增加,每一分钟保存一次
|
//非音视频课学习时长的增加,每一分钟保存一次
|
||||||
appendStudyOtherTime() {
|
appendStudyOtherTime() {
|
||||||
@@ -564,46 +562,46 @@
|
|||||||
if (!this.contentData.id) {
|
if (!this.contentData.id) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//每一分钟保存一次
|
//每一分钟保存一次
|
||||||
// 取消阅读的每分钟六十秒的计时,最多是设置的时间或默认时间
|
// 取消阅读的每分钟六十秒的计时,最多是设置的时间或默认时间
|
||||||
let $this=this;
|
let $this=this;
|
||||||
let startTime = new Date().getTime();
|
let startTime = new Date().getTime();
|
||||||
this.appendStudyOtherHandle = setTimeout(function() {
|
this.appendStudyOtherHandle = setTimeout(function() {
|
||||||
let endTime = new Date().getTime();
|
let endTime = new Date().getTime();
|
||||||
let totalTime = Math.round((endTime - startTime) / 1000);
|
let totalTime = Math.round((endTime - startTime) / 1000);
|
||||||
$this.cumulativeDuration += totalTime;
|
$this.cumulativeDuration += totalTime;
|
||||||
if($this.cumulativeDuration <= $this.maxDuration){
|
if($this.cumulativeDuration <= $this.maxDuration){
|
||||||
//发送时长
|
//发送时长
|
||||||
$this.sendStudyOtherTime(totalTime);
|
$this.sendStudyOtherTime(totalTime);
|
||||||
//递归调用
|
//递归调用
|
||||||
$this.appendStudyOtherTime();
|
$this.appendStudyOtherTime();
|
||||||
}else{
|
}else{
|
||||||
clearTimeout(this.appendStudyOtherHandle);
|
clearTimeout(this.appendStudyOtherHandle);
|
||||||
$this.cumulativeDuration = 0;
|
$this.cumulativeDuration = 0;
|
||||||
$this.maxDuration = 0;
|
$this.maxDuration = 0;
|
||||||
}
|
}
|
||||||
}, 1000*60);
|
}, 1000*60);
|
||||||
|
|
||||||
},
|
},
|
||||||
sendStudyOtherTime(totalTime){
|
sendStudyOtherTime(totalTime){
|
||||||
//静默处理
|
//静默处理
|
||||||
apiStat.sendEvent({
|
apiStat.sendEvent({
|
||||||
"key": "StudyCourseOther",//课程学习的key
|
"key": "StudyCourseOther",//课程学习的key
|
||||||
"title": "非音视频课内容",//事件的标题
|
"title": "非音视频课内容",//事件的标题
|
||||||
"parameters":"second:" + totalTime,//second:value 本次的学习时长
|
"parameters":"second:" + totalTime,//second:value 本次的学习时长
|
||||||
"content": "学习课程",//事件的内容
|
"content": "学习课程",//事件的内容
|
||||||
"objId": this.courseInfo.id,//课程的id
|
"objId": this.courseInfo.id,//课程的id
|
||||||
"objType": "1",//类型
|
"objType": "1",//类型
|
||||||
"source":"page",
|
"source":"page",
|
||||||
"objInfo": ""+this.courseInfo.name,
|
"objInfo": ""+this.courseInfo.name,
|
||||||
"aid":this.userInfo.aid, //当前登录人的id
|
"aid":this.userInfo.aid, //当前登录人的id
|
||||||
"aname":this.userInfo.name,//当前人的姓名
|
"aname":this.userInfo.name,//当前人的姓名
|
||||||
"status": 1 //状态
|
"status": 1 //状态
|
||||||
}).then(rs=>{
|
}).then(rs=>{
|
||||||
if(rs.status != 200) {
|
if(rs.status != 200) {
|
||||||
console.log(rs.message);
|
console.log(rs.message);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
//笔记组件触发,播放指定时间
|
//笔记组件触发,播放指定时间
|
||||||
onPlayVideo(contentId,time){
|
onPlayVideo(contentId,time){
|
||||||
@@ -612,32 +610,32 @@
|
|||||||
console.log(contentId,this.contentData.id,'两个内容id');
|
console.log(contentId,this.contentData.id,'两个内容id');
|
||||||
let $this=this;
|
let $this=this;
|
||||||
if(this.contentData.id==contentId){
|
if(this.contentData.id==contentId){
|
||||||
this.onPlayerPause()
|
this.onPlayerPause()
|
||||||
this.contentData.lastStudyTime=time;
|
this.contentData.lastStudyTime=time;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
$this.$refs.myVideoPlayer.startPlay(time);
|
$this.$refs.myVideoPlayer.startPlay(time);
|
||||||
}, 10)
|
}, 10)
|
||||||
console.log('开始播放1');
|
console.log('开始播放1');
|
||||||
}else{
|
}else{
|
||||||
//通过contentId
|
//通过contentId
|
||||||
let toResContent=null;
|
let toResContent=null;
|
||||||
this.contentList.forEach(c => {
|
this.contentList.forEach(c => {
|
||||||
if(c.id==contentId){
|
if(c.id==contentId){
|
||||||
c.lastStudyTime=time;
|
c.lastStudyTime=time;
|
||||||
toResContent=c;
|
toResContent=c;
|
||||||
}
|
|
||||||
});
|
|
||||||
if(toResContent){
|
|
||||||
|
|
||||||
this.changePlayRes(toResContent);
|
|
||||||
setTimeout(() => {
|
|
||||||
$this.$refs.myVideoPlayer.startPlay(time);
|
|
||||||
}, 10)
|
|
||||||
|
|
||||||
console.log('开始播放2');
|
|
||||||
}else{
|
|
||||||
this.$message.error('资源已不存在或更换过,已无法定位');
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
if(toResContent){
|
||||||
|
|
||||||
|
this.changePlayRes(toResContent);
|
||||||
|
setTimeout(() => {
|
||||||
|
$this.$refs.myVideoPlayer.startPlay(time);
|
||||||
|
}, 10)
|
||||||
|
|
||||||
|
console.log('开始播放2');
|
||||||
|
}else{
|
||||||
|
this.$message.error('资源已不存在或更换过,已无法定位');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this.playerBoxShow = false;
|
this.playerBoxShow = false;
|
||||||
},
|
},
|
||||||
@@ -715,23 +713,23 @@
|
|||||||
}else if(r.contentType==50){ //scorm
|
}else if(r.contentType==50){ //scorm
|
||||||
this.scormUrl='';
|
this.scormUrl='';
|
||||||
apiCourseFile.detail(r.contentRefId).then(cfrs => {
|
apiCourseFile.detail(r.contentRefId).then(cfrs => {
|
||||||
if(cfrs.status==200){
|
if(cfrs.status==200){
|
||||||
this.curCFile = cfrs.result;
|
this.curCFile = cfrs.result;
|
||||||
//this.scormUrl=cfrs
|
//this.scormUrl=cfrs
|
||||||
let pars='?mode=normal&r='+Math.random();
|
let pars='?mode=normal&r='+Math.random();
|
||||||
pars+='&scormId='+this.curCFile.id;
|
pars+='&scormId='+this.curCFile.id;
|
||||||
pars+='&courseId='+this.courseId;
|
pars+='&courseId='+this.courseId;
|
||||||
pars+='&contentId='+r.id;
|
pars+='&contentId='+r.id;
|
||||||
pars+='&studentId='+this.userInfo.aid;
|
pars+='&studentId='+this.userInfo.aid;
|
||||||
pars+='&studentName='+encodeURIComponent(this.userInfo.name);
|
pars+='&studentName='+encodeURIComponent(this.userInfo.name);
|
||||||
pars+='&lmsId='+this.studyId;
|
pars+='&lmsId='+this.studyId;
|
||||||
pars+='&scoId=';//不指定,scorm模块自动根据学习记录定位
|
pars+='&scoId=';//不指定,scorm模块自动根据学习记录定位
|
||||||
let urlPre=window.location.protocol;
|
let urlPre=window.location.protocol;
|
||||||
let configUrl=process.env.VUE_APP_SCORM_URL;
|
let configUrl=process.env.VUE_APP_SCORM_URL;
|
||||||
configUrl=urlPre+configUrl.substring(configUrl.indexOf(':')+1);
|
configUrl=urlPre+configUrl.substring(configUrl.indexOf(':')+1);
|
||||||
|
|
||||||
this.scormUrl=configUrl+pars;//播放的首页
|
this.scormUrl=configUrl+pars;//播放的首页
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}else if (r.contentType == 52) {
|
}else if (r.contentType == 52) {
|
||||||
@@ -762,12 +760,12 @@
|
|||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.isContentTypeTwo = r.contentType
|
this.isContentTypeTwo = r.contentType
|
||||||
$this.isShowTime()
|
$this.isShowTime()
|
||||||
}, 2000);
|
}, 2000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//以下是学习记录,50是scorm项目
|
//以下是学习记录,50是scorm项目
|
||||||
if (this.contentData.contentType > 20 && this.contentData.contentType !== 50) { //非视频类的
|
if (this.contentData.contentType > 20 && this.contentData.contentType !== 50) { //非视频类的
|
||||||
//用户的学习时长,非音视频课程学习,单独的处理
|
//用户的学习时长,非音视频课程学习,单独的处理
|
||||||
this.isAppendTime = false;
|
this.isAppendTime = false;
|
||||||
|
|
||||||
this.appendStudyOtherHandle = setTimeout(function() {
|
this.appendStudyOtherHandle = setTimeout(function() {
|
||||||
@@ -777,18 +775,18 @@
|
|||||||
// 没有设置默认时长三十分钟,
|
// 没有设置默认时长三十分钟,
|
||||||
$this.maxDuration = r.duration !== 0 ? r.duration * 2 : $this.defaultMaxTime;
|
$this.maxDuration = r.duration !== 0 ? r.duration * 2 : $this.defaultMaxTime;
|
||||||
$this.$store.dispatch("userTrigger", {
|
$this.$store.dispatch("userTrigger", {
|
||||||
"key": "StudyCourseOther",//课程学习的key
|
"key": "StudyCourseOther",//课程学习的key
|
||||||
"title": "非音视频课内容",//事件的标题
|
"title": "非音视频课内容",//事件的标题
|
||||||
"parameters":"second:15",//second:value 本次的学习时长
|
"parameters":"second:15",//second:value 本次的学习时长
|
||||||
"content": "学习课程",//事件的内容
|
"content": "学习课程",//事件的内容
|
||||||
"objId": $this.courseInfo.id,//课程的id
|
"objId": $this.courseInfo.id,//课程的id
|
||||||
"objType": "1",//类型
|
"objType": "1",//类型
|
||||||
"source":"page",
|
"source":"page",
|
||||||
"objInfo": ""+$this.courseInfo.name,
|
"objInfo": ""+$this.courseInfo.name,
|
||||||
"aid":$this.userInfo.aid, //当前登录人的id
|
"aid":$this.userInfo.aid, //当前登录人的id
|
||||||
"aname":$this.userInfo.name,//当前人的姓名
|
"aname":$this.userInfo.name,//当前人的姓名
|
||||||
"status": 1 //状态
|
"status": 1 //状态
|
||||||
});
|
});
|
||||||
$this.appendStudyOtherTime();
|
$this.appendStudyOtherTime();
|
||||||
}, 15000); //非音视频课程学习,十五秒后记录
|
}, 15000); //非音视频课程学习,十五秒后记录
|
||||||
this.isContentType = this.contentData.contentType
|
this.isContentType = this.contentData.contentType
|
||||||
@@ -805,20 +803,21 @@
|
|||||||
|
|
||||||
|
|
||||||
this.$nextTick(function(){
|
this.$nextTick(function(){
|
||||||
if (r.contentType == 10) {
|
if (r.contentType == 10) {
|
||||||
console.log('视频处理lastStudyTime',this.contentData.lastStudyTime)
|
console.log('视频处理lastStudyTime',this.contentData.lastStudyTime)
|
||||||
console.log('视频处理progressVideo',this.contentData.progressVideo)
|
console.log('视频处理progressVideo',this.contentData.progressVideo)
|
||||||
this.$refs.myVideoPlayer.updateProgressByClickBar2(this.contentData.lastStudyTime,this.contentData.progressVideo);
|
this.$refs.myVideoPlayer.updateProgressByClickBar2(this.contentData.lastStudyTime,this.contentData.progressVideo);
|
||||||
}
|
}
|
||||||
|
|
||||||
let h=$this.$refs.coursePlayer.offsetHeight;
|
let h=$this.$refs.coursePlayer.offsetHeight;
|
||||||
//解决获取高度不正的问题
|
//解决获取高度不正的问题
|
||||||
if(h>400 && h<500){
|
if(h>400 && h<500){
|
||||||
h=h+40;
|
h=h+40;
|
||||||
}else if(h>500){
|
}else if(h>500){
|
||||||
h=h+60;
|
h=h+60;
|
||||||
}
|
}
|
||||||
$this.controlHeight=h-95;
|
// 移除高度控制 防止内容塌陷
|
||||||
|
// $this.controlHeight=h-95;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -960,9 +959,9 @@
|
|||||||
this.interactRuning = true;
|
this.interactRuning = true;
|
||||||
let teacherId='';
|
let teacherId='';
|
||||||
if(this.teachers.length>0){
|
if(this.teachers.length>0){
|
||||||
teacherId=this.teachers[0].teacherId;
|
teacherId=this.teachers[0].teacherId;
|
||||||
}else{
|
}else{
|
||||||
teacherId=this.courseInfo.sysCreateAid
|
teacherId=this.courseInfo.sysCreateAid
|
||||||
}
|
}
|
||||||
let postData = {
|
let postData = {
|
||||||
objType: 1,
|
objType: 1,
|
||||||
@@ -1103,7 +1102,7 @@
|
|||||||
class: 'catalog-cell-state1'
|
class: 'catalog-cell-state1'
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
@@ -1164,8 +1163,8 @@
|
|||||||
var markDiv = div.querySelector("#" + divId);
|
var markDiv = div.querySelector("#" + divId);
|
||||||
console.log("去除水印 ---- gx markDiv ----",markDiv);
|
console.log("去除水印 ---- gx markDiv ----",markDiv);
|
||||||
if (markDiv) {
|
if (markDiv) {
|
||||||
console.log("执行去除水印 ---- gx markDiv ----",markDiv);
|
console.log("执行去除水印 ---- gx markDiv ----",markDiv);
|
||||||
div.removeChild(markDiv);
|
div.removeChild(markDiv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1224,9 +1223,9 @@
|
|||||||
var time = localStorage.getItem('videoProgressData')
|
var time = localStorage.getItem('videoProgressData')
|
||||||
var arr = time&&JSON.parse(time) || {}
|
var arr = time&&JSON.parse(time) || {}
|
||||||
if(arr[this.blobId] && this.contentData.progressVideo<arr[this.blobId]) {
|
if(arr[this.blobId] && this.contentData.progressVideo<arr[this.blobId]) {
|
||||||
postData.progressVideo = arr[this.blobId]
|
postData.progressVideo = arr[this.blobId]
|
||||||
// postData.contentId = this.contentData.id
|
// postData.contentId = this.contentData.id
|
||||||
// postData.courseId = this.contentData.courseId
|
// postData.courseId = this.contentData.courseId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//console.log('记录播放时间')
|
//console.log('记录播放时间')
|
||||||
@@ -1284,9 +1283,9 @@
|
|||||||
var time = localStorage.getItem('videoProgressData')
|
var time = localStorage.getItem('videoProgressData')
|
||||||
var arr = time&&JSON.parse(time) || {}
|
var arr = time&&JSON.parse(time) || {}
|
||||||
if(arr[this.blobId] && this.contentData.progressVideo<arr[this.blobId]) {
|
if(arr[this.blobId] && this.contentData.progressVideo<arr[this.blobId]) {
|
||||||
postData.progressVideo = arr[this.blobId]
|
postData.progressVideo = arr[this.blobId]
|
||||||
// postData.contentId = this.contentData.id
|
// postData.contentId = this.contentData.id
|
||||||
// postData.courseId = this.contentData.courseId
|
// postData.courseId = this.contentData.courseId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//console.log('记录播放时间')
|
//console.log('记录播放时间')
|
||||||
@@ -1324,10 +1323,16 @@
|
|||||||
audiences:this.audiences
|
audiences:this.audiences
|
||||||
}).then(rs => {
|
}).then(rs => {
|
||||||
if (rs.status == 200) {
|
if (rs.status == 200) {
|
||||||
if (rs.result.isPermission){
|
if(rs.result.isPermission){
|
||||||
// if (true){
|
this.protocolDialogVisible=true
|
||||||
this.getInternet()
|
}
|
||||||
console.log('需要内网环境')
|
if (!rs.result.isPermission || (rs.result.isPermission && this.Internet==1)){
|
||||||
|
// this.getInternet()
|
||||||
|
this.renderCourse = true
|
||||||
|
}else{
|
||||||
|
// this.Internet=1;
|
||||||
|
this.renderCourse = false
|
||||||
|
this.protocolDialogVisible=true
|
||||||
}
|
}
|
||||||
if(rs.result.contents.length==0){
|
if(rs.result.contents.length==0){
|
||||||
$this.$message.error('课程内容已删除或课程已不再使用');
|
$this.$message.error('课程内容已删除或课程已不再使用');
|
||||||
@@ -1339,11 +1344,11 @@
|
|||||||
}
|
}
|
||||||
//设置必须的字段
|
//设置必须的字段
|
||||||
if(rs.result.contents.length==1){
|
if(rs.result.contents.length==1){
|
||||||
$this.tab=2;
|
$this.tab=2;
|
||||||
//console.log('内容只有一个');
|
//console.log('内容只有一个');
|
||||||
}
|
}
|
||||||
if(!rs.result.isCrowd){
|
if(!rs.result.isCrowd){
|
||||||
$this.$message.error('您没有查看该课程的权限');
|
$this.$message.error('您没有查看该课程的权限');
|
||||||
}
|
}
|
||||||
// 是否播放
|
// 是否播放
|
||||||
this.isCrowd = rs.result.isCrowd
|
this.isCrowd = rs.result.isCrowd
|
||||||
@@ -1420,8 +1425,14 @@
|
|||||||
} else {
|
} else {
|
||||||
this.$message.error(rs.message);
|
this.$message.error(rs.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
refreshPage() {
|
||||||
|
location.reload();
|
||||||
|
// this.getInternet();
|
||||||
|
// this.loadData();
|
||||||
|
},
|
||||||
getXmlHttpRequest() {
|
getXmlHttpRequest() {
|
||||||
if (window.XMLHttpRequest) {
|
if (window.XMLHttpRequest) {
|
||||||
return new XMLHttpRequest();
|
return new XMLHttpRequest();
|
||||||
@@ -1439,7 +1450,7 @@
|
|||||||
let timer = setTimeout(function () {
|
let timer = setTimeout(function () {
|
||||||
timedOut = true;
|
timedOut = true;
|
||||||
xmlhttp.abort();
|
xmlhttp.abort();
|
||||||
}, 1);
|
}, 1000);
|
||||||
xmlhttp.open("HEAD", window.location.protocol + "//uapi.boe.com.cn/500.html", true);
|
xmlhttp.open("HEAD", window.location.protocol + "//uapi.boe.com.cn/500.html", true);
|
||||||
xmlhttp.send();
|
xmlhttp.send();
|
||||||
xmlhttp.onreadystatechange = function () {
|
xmlhttp.onreadystatechange = function () {
|
||||||
@@ -1449,7 +1460,7 @@
|
|||||||
$this.Internet = 1;
|
$this.Internet = 1;
|
||||||
} else {
|
} else {
|
||||||
clearTimeout(timer);
|
clearTimeout(timer);
|
||||||
$this.protocolDialogVisible=true
|
// $this.protocolDialogVisible=true
|
||||||
$this.Internet = 2;
|
$this.Internet = 2;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -1580,37 +1591,37 @@
|
|||||||
progress(val) {
|
progress(val) {
|
||||||
const progressValue = parseFloat(val) * 100;
|
const progressValue = parseFloat(val) * 100;
|
||||||
this.sendEventProgress = Number(progressValue.toFixed(2));
|
this.sendEventProgress = Number(progressValue.toFixed(2));
|
||||||
},
|
},
|
||||||
saveStudyDuration(duration) { //保存本地存储的学习时长
|
saveStudyDuration(duration) { //保存本地存储的学习时长
|
||||||
if (duration > 0) {
|
if (duration > 0) {
|
||||||
//发送用户学习事件
|
//发送用户学习事件
|
||||||
//console.log('保存到后台学习时长='+duration);
|
//console.log('保存到后台学习时长='+duration);
|
||||||
let postData={
|
let postData={
|
||||||
"key": "StudyCourse",//课程学习的key
|
"key": "StudyCourse",//课程学习的key
|
||||||
"title": "学习课程",//事件的标题
|
"title": "学习课程",//事件的标题
|
||||||
"parameters":"second:"+duration,//second:value,total:value 本次的学习时长
|
"parameters":"second:"+duration,//second:value,total:value 本次的学习时长
|
||||||
"content": "学习课程【"+this.courseInfo.name+"】",//事件的内容
|
"content": "学习课程【"+this.courseInfo.name+"】",//事件的内容
|
||||||
"objId": this.courseInfo.id,//课程的id
|
"objId": this.courseInfo.id,//课程的id
|
||||||
"objType": "1",//类型
|
"objType": "1",//类型
|
||||||
"source":"page",
|
"source":"page",
|
||||||
"objInfo": ""+this.courseInfo.name,
|
"objInfo": ""+this.courseInfo.name,
|
||||||
"aid":this.userInfo.aid, //当前登录人的id
|
"aid":this.userInfo.aid, //当前登录人的id
|
||||||
"aname":this.userInfo.name,//当前人的姓名
|
"aname":this.userInfo.name,//当前人的姓名
|
||||||
"status": 1, //状态
|
"status": 1, //状态
|
||||||
"contentId": this.contentData.id,
|
"contentId": this.contentData.id,
|
||||||
|
}
|
||||||
|
if(this.resType == 10){
|
||||||
|
postData.progress = this.sendEventProgress;
|
||||||
|
}
|
||||||
|
//静默处理
|
||||||
|
apiStat.sendEvent(postData).then(rs=>{
|
||||||
|
if(rs.status == 200) {
|
||||||
|
// this.appendStartTime = new Date();//重新计时
|
||||||
|
// studyUtil.clearStudyDuration(); //清除本地存储
|
||||||
|
} else {
|
||||||
|
console.log(rs.message);
|
||||||
}
|
}
|
||||||
if(this.resType == 10){
|
});
|
||||||
postData.progress = this.sendEventProgress;
|
|
||||||
}
|
|
||||||
//静默处理
|
|
||||||
apiStat.sendEvent(postData).then(rs=>{
|
|
||||||
if(rs.status == 200) {
|
|
||||||
// this.appendStartTime = new Date();//重新计时
|
|
||||||
// studyUtil.clearStudyDuration(); //清除本地存储
|
|
||||||
} else {
|
|
||||||
console.log(rs.message);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// let postAppendData = {
|
// let postAppendData = {
|
||||||
// id: this.appentId,
|
// id: this.appentId,
|
||||||
// studyId: this.studyId,
|
// studyId: this.studyId,
|
||||||
@@ -1632,13 +1643,13 @@
|
|||||||
},
|
},
|
||||||
//结束追加学习时长
|
//结束追加学习时长
|
||||||
stopStudyTime(){
|
stopStudyTime(){
|
||||||
//console.log('停止追加学习时长');
|
//console.log('停止追加学习时长');
|
||||||
this.isAppendTime=false;
|
this.isAppendTime=false;
|
||||||
//暂停让他为空 从新计时
|
//暂停让他为空 从新计时
|
||||||
this.appendStartTime = null
|
this.appendStartTime = null
|
||||||
if (this.appendHandle != null) {
|
if (this.appendHandle != null) {
|
||||||
window.clearTimeout(this.appendHandle);
|
window.clearTimeout(this.appendHandle);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
appendStudyTime() {
|
appendStudyTime() {
|
||||||
// 暂停的时候重新从十五秒开始计时
|
// 暂停的时候重新从十五秒开始计时
|
||||||
@@ -1660,11 +1671,11 @@
|
|||||||
this.appendHandle && window.clearTimeout(this.appendHandle);
|
this.appendHandle && window.clearTimeout(this.appendHandle);
|
||||||
//启动下次追加学习时长
|
//启动下次追加学习时长
|
||||||
this.appendHandle = setTimeout(() => {
|
this.appendHandle = setTimeout(() => {
|
||||||
let endTime = new Date().getTime();
|
let endTime = new Date().getTime();
|
||||||
this.appentInterval = 60
|
this.appentInterval = 60
|
||||||
let totalTime = Math.round((endTime - this.appendStartTime) / 1000);
|
let totalTime = Math.round((endTime - this.appendStartTime) / 1000);
|
||||||
this.appendStudyTime();
|
this.appendStudyTime();
|
||||||
this.saveStudyDuration(totalTime)
|
this.saveStudyDuration(totalTime)
|
||||||
}, this.appentInterval * 1000);
|
}, this.appentInterval * 1000);
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -1730,26 +1741,30 @@
|
|||||||
},
|
},
|
||||||
handleAudioTimeUpdate(currentTime) {
|
handleAudioTimeUpdate(currentTime) {
|
||||||
// if(this.contentStudysLength.length == 0){
|
// if(this.contentStudysLength.length == 0){
|
||||||
let params = {
|
let params = {
|
||||||
studyId: this.studyId, //学习id,
|
studyId: this.studyId, //学习id,
|
||||||
courseId: this.courseId, //课程id,
|
courseId: this.courseId, //课程id,
|
||||||
contentId: this.contentData.id, //内容id,
|
contentId: this.contentData.id, //内容id,
|
||||||
contentType: this.contentData.contentType,
|
contentType: this.contentData.contentType,
|
||||||
contentName: this.contentData.contentName, //内容名称
|
contentName: this.contentData.contentName, //内容名称
|
||||||
progress: 1,
|
progress: 1,
|
||||||
status: 2,
|
status: 2,
|
||||||
contentTotal: this.totalContent
|
contentTotal: this.totalContent
|
||||||
};
|
};
|
||||||
if(currentTime > 2 && this.trueFalse){
|
if(currentTime > 2 && this.trueFalse){
|
||||||
apiStudy.studyContent(params).then(()=>{
|
apiStudy.studyContent(params).then(()=>{
|
||||||
if(this.contentData.status<2){
|
if(this.contentData.status<2){
|
||||||
this.contentData.status = 2;
|
this.contentData.status = 2;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.trueFalse = false
|
this.trueFalse = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
destroyed(){
|
||||||
|
this.cleanAppendTime();
|
||||||
|
this.stopStudyTime();
|
||||||
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -1786,22 +1801,44 @@
|
|||||||
margin: 20px auto;
|
margin: 20px auto;
|
||||||
.course-playbox {
|
.course-playbox {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
min-height: 400px;
|
//min-height: 400px;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
.course-player-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
.course-player{ //内容播放区域
|
.course-player{ //内容播放区域
|
||||||
background-color: #f5f7fa;
|
flex: 4; // 80%高度
|
||||||
flex:1;
|
|
||||||
min-width: 700px;
|
min-width: 700px;
|
||||||
min-height: 400px;
|
// min-height: 400px;
|
||||||
max-height: 800px;
|
// max-height: 800px;
|
||||||
//height: 100%;
|
height: 80%;
|
||||||
border: 1px solid #ffffff;
|
border: 1px solid #ffffff;
|
||||||
padding-right: 20px;
|
padding-right: 20px;
|
||||||
|
background-color: rgb(238, 238, 238);
|
||||||
// overflow: auto;
|
// overflow: auto;
|
||||||
}
|
}
|
||||||
.course-control{ //内容控制区域
|
.course-control{ //内容控制区域
|
||||||
width: 420px;
|
width: 420px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 1200px) {
|
||||||
|
.course-playbox,
|
||||||
|
.course-infobox {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.course-player,
|
||||||
|
.course-info {
|
||||||
|
min-width: 100%;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
.course-control,
|
||||||
|
.course-teacher {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.course-infobox {
|
.course-infobox {
|
||||||
@@ -1923,13 +1960,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.player-box {
|
.player-box {
|
||||||
position: absolute;
|
position: relative;
|
||||||
// top: 62px;
|
width: 100%;
|
||||||
// left: 184px;
|
max-width: 300px;
|
||||||
width: 300px;
|
margin: 20px auto;
|
||||||
left: 50%;
|
|
||||||
top: 50%;
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
height: 187px;
|
height: 187px;
|
||||||
background: rgba(74, 74, 74, .5);
|
background: rgba(74, 74, 74, .5);
|
||||||
border-radius: 33px;
|
border-radius: 33px;
|
||||||
@@ -2072,6 +2106,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.course-interact {
|
.course-interact {
|
||||||
|
flex: 1; // 20%高度
|
||||||
height: 54px;
|
height: 54px;
|
||||||
// padding-top: 10px;
|
// padding-top: 10px;
|
||||||
// padding-right: 10px;
|
// padding-right: 10px;
|
||||||
|
|||||||
Reference in New Issue
Block a user