仅内网可见-管理员端 调试

This commit is contained in:
670788339
2025-07-21 20:59:06 +08:00
parent a4d088a3ae
commit c7f4a224ff

View File

@@ -114,7 +114,7 @@
<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>
@@ -531,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){
@@ -549,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() {
@@ -566,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){
@@ -614,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;
}, },
@@ -717,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) {
@@ -764,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() {
@@ -779,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
@@ -807,20 +803,20 @@
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;
}) })
@@ -962,9 +958,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,
@@ -1105,7 +1101,7 @@
class: 'catalog-cell-state1' class: 'catalog-cell-state1'
}; };
} }
break; break;
} }
return data; return data;
}, },
@@ -1166,8 +1162,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);
} }
} }
}, },
@@ -1226,9 +1222,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('记录播放时间')
@@ -1286,9 +1282,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('记录播放时间')
@@ -1344,11 +1340,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
@@ -1428,6 +1424,9 @@
}); });
}, },
refreshPage() {
location.reload();
},
getXmlHttpRequest() { getXmlHttpRequest() {
if (window.XMLHttpRequest) { if (window.XMLHttpRequest) {
return new XMLHttpRequest(); return new XMLHttpRequest();
@@ -1453,6 +1452,7 @@
if (xmlhttp.status == 200) { if (xmlhttp.status == 200) {
clearTimeout(timer); clearTimeout(timer);
$this.Internet = 1; $this.Internet = 1;
} else { } else {
clearTimeout(timer); clearTimeout(timer);
// $this.protocolDialogVisible=true // $this.protocolDialogVisible=true
@@ -1586,37 +1586,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,
@@ -1638,13 +1638,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() {
// 暂停的时候重新从十五秒开始计时 // 暂停的时候重新从十五秒开始计时
@@ -1666,11 +1666,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);
}, },
@@ -1736,26 +1736,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>