mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-15 22:06:43 +08:00
Merge branch 'zcwyTeacher' into 'master'
Zcwy teacher See merge request !89
This commit is contained in:
@@ -22,6 +22,8 @@
|
|||||||
tabindex="0"
|
tabindex="0"
|
||||||
width="100%"
|
width="100%"
|
||||||
height="100%"
|
height="100%"
|
||||||
|
@waiting="onWaiting"
|
||||||
|
@playing="onPlaying"
|
||||||
>
|
>
|
||||||
<source :src="src" />
|
<source :src="src" />
|
||||||
</video>
|
</video>
|
||||||
@@ -358,6 +360,20 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
//当视频由于需要缓冲下一帧而停止,解决一直计时的问题
|
||||||
|
onWaiting(){
|
||||||
|
console.log('触发了onWairing');
|
||||||
|
this.$emit('onPlayerPause', {})
|
||||||
|
},
|
||||||
|
//当音频/视频在已因缓冲而暂停或停止后已就绪时
|
||||||
|
onPlaying(){
|
||||||
|
console.log('触发缓存结束onPlaying');
|
||||||
|
if(this.videoDom.paused){
|
||||||
|
this.$emit('onPlayerPause', {})
|
||||||
|
}else{
|
||||||
|
this.$emit('onPlayerPlay', {});
|
||||||
|
}
|
||||||
|
},
|
||||||
/* 切换播放状态
|
/* 切换播放状态
|
||||||
*/
|
*/
|
||||||
togglePlayStatus() {
|
togglePlayStatus() {
|
||||||
@@ -372,6 +388,7 @@ export default {
|
|||||||
this.isPlaying = true;
|
this.isPlaying = true;
|
||||||
this.isInit = true;
|
this.isInit = true;
|
||||||
this.$emit('onPlayerPlay', {});//播放(播放时会调用)
|
this.$emit('onPlayerPlay', {});//播放(播放时会调用)
|
||||||
|
console.log('播放');
|
||||||
} else {
|
} else {
|
||||||
this.videoDom.pause();
|
this.videoDom.pause();
|
||||||
this.isPlaying = false;
|
this.isPlaying = false;
|
||||||
|
|||||||
@@ -282,23 +282,14 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
sendEventData(){
|
sendEventData(){
|
||||||
let event = {
|
this.setTime && clearTimeout(this.setTime);
|
||||||
key: "ReadArticle",//后台的事件key 发布文章且审核通过
|
let startTime = new Date().getTime();
|
||||||
title: "阅读文章",//事件的标题
|
|
||||||
parameters:"second:" + this.secondTime,//用户自定义参数 name:value,name:value
|
|
||||||
content: "阅读了文章",//事件的内容
|
|
||||||
source:'page',
|
|
||||||
objId: this.articleId,//关联的id
|
|
||||||
objType: "2",//关联的类型
|
|
||||||
objInfo: this.articleDetailData.title,
|
|
||||||
aid: this.userInfo.aid, //当前登录人的id
|
|
||||||
aname: this.userInfo.name,//当前人的姓名
|
|
||||||
status: 1 //状态,直接写1
|
|
||||||
}
|
|
||||||
this.setTime = setTimeout(()=>{
|
this.setTime = setTimeout(()=>{
|
||||||
this.cumulativeDuration += this.secondTime
|
let endTime = new Date().getTime();
|
||||||
|
let totalTime = Math.round((endTime - startTime) / 1000);
|
||||||
|
this.cumulativeDuration += totalTime;
|
||||||
if(this.cumulativeDuration <= this.defaultMaxTime){
|
if(this.cumulativeDuration <= this.defaultMaxTime){
|
||||||
this.$store.dispatch("userTrigger", event);
|
this.sendStudyTime(totalTime);
|
||||||
this.secondTime = 60
|
this.secondTime = 60
|
||||||
this.sendEventData()
|
this.sendEventData()
|
||||||
}else{
|
}else{
|
||||||
@@ -308,6 +299,22 @@ export default {
|
|||||||
}
|
}
|
||||||
},this.secondTime * 1000);//15秒记录一次之后1分钟后记录
|
},this.secondTime * 1000);//15秒记录一次之后1分钟后记录
|
||||||
},
|
},
|
||||||
|
// 发送学习时间
|
||||||
|
sendStudyTime(totalTime){
|
||||||
|
this.$store.dispatch("userTrigger", {
|
||||||
|
key: "ReadArticle",//后台的事件key 发布文章且审核通过
|
||||||
|
title: "阅读文章",//事件的标题
|
||||||
|
parameters:"second:" + totalTime,//用户自定义参数 name:value,name:value
|
||||||
|
content: "阅读了文章",//事件的内容
|
||||||
|
source:'page',
|
||||||
|
objId: this.articleId,//关联的id
|
||||||
|
objType: "2",//关联的类型
|
||||||
|
objInfo: this.articleDetailData.title,
|
||||||
|
aid: this.userInfo.aid, //当前登录人的id
|
||||||
|
aname: this.userInfo.name,//当前人的姓名
|
||||||
|
status: 1 //状态,直接写1
|
||||||
|
});
|
||||||
|
},
|
||||||
//获取文章发布人的人物信息
|
//获取文章发布人的人物信息
|
||||||
getAuthorInfo(data){
|
getAuthorInfo(data){
|
||||||
let ids=[data.sysCreateAid]
|
let ids=[data.sysCreateAid]
|
||||||
|
|||||||
@@ -541,22 +541,15 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
sendEventData() {
|
sendEventData() {
|
||||||
let event = {
|
this.setTimeCase && clearTimeout(this.setTimeCase);
|
||||||
key: "ReadCase",//后台的事件key 发布文章且审核通过
|
let startTime = new Date().getTime();
|
||||||
title: '阅读案例',//事件的标题
|
|
||||||
parameters: "second:" + this.secondTime,//用户自定义参数 name:value,name:value
|
|
||||||
content: '阅读了案例',//事件的内容
|
|
||||||
objId: this.resolveId,//关联的id
|
|
||||||
objType: "3",//关联的类型
|
|
||||||
objInfo: this.caseDetail.title,
|
|
||||||
aid: this.userInfo.aid, //当前登录人的id
|
|
||||||
aname: this.userInfo.name,//当前人的姓名
|
|
||||||
status: 1 //状态,直接写1
|
|
||||||
}
|
|
||||||
this.setTimeCase = setTimeout(() => {
|
this.setTimeCase = setTimeout(() => {
|
||||||
this.cumulativeDuration += this.secondTime
|
let endTime = new Date().getTime();
|
||||||
|
let totalTime = Math.round((endTime - startTime) / 1000);
|
||||||
|
this.cumulativeDuration += totalTime
|
||||||
if(this.cumulativeDuration <= this.defaultMaxTime){
|
if(this.cumulativeDuration <= this.defaultMaxTime){
|
||||||
this.$store.dispatch("userTrigger", event);
|
console.log(totalTime,'时长');
|
||||||
|
this.sendStudyTime(totalTime)
|
||||||
this.secondTime = 60
|
this.secondTime = 60
|
||||||
this.sendEventData()
|
this.sendEventData()
|
||||||
}else{
|
}else{
|
||||||
@@ -566,6 +559,20 @@ export default {
|
|||||||
}
|
}
|
||||||
}, this.secondTime * 1000);//15秒记录一次之后1分钟之后发送阅读案例事件
|
}, this.secondTime * 1000);//15秒记录一次之后1分钟之后发送阅读案例事件
|
||||||
},
|
},
|
||||||
|
sendStudyTime(totalTime){
|
||||||
|
this.$store.dispatch("userTrigger", {
|
||||||
|
key: "ReadCase",//后台的事件key 发布文章且审核通过
|
||||||
|
title: '阅读案例',//事件的标题
|
||||||
|
parameters: "second:" + totalTime,//用户自定义参数 name:value,name:value
|
||||||
|
content: '阅读了案例',//事件的内容
|
||||||
|
objId: this.resolveId,//关联的id
|
||||||
|
objType: "3",//关联的类型
|
||||||
|
objInfo: this.caseDetail.title,
|
||||||
|
aid: this.userInfo.aid, //当前登录人的id
|
||||||
|
aname: this.userInfo.name,//当前人的姓名
|
||||||
|
status: 1 //状态,直接写1
|
||||||
|
});
|
||||||
|
},
|
||||||
getCaseData() {
|
getCaseData() {
|
||||||
let $this = this;
|
let $this = this;
|
||||||
apiCase.details(this.resolveId, true).then(res => {
|
apiCase.details(this.resolveId, true).then(res => {
|
||||||
|
|||||||
@@ -669,17 +669,17 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
// 受众需要每次刷新
|
// 受众需要每次刷新
|
||||||
// created() {
|
created() {
|
||||||
// let localKey = "user_" + this.userInfo.sysId + "_gids";
|
let localKey = "user_" + this.userInfo.sysId + "_gids";
|
||||||
// apiUserbasic.getInAudienceIds().then(rs => {
|
apiUserbasic.getInAudienceIds().then(rs => {
|
||||||
// if (rs.status == 200) {
|
if (rs.status == 200) {
|
||||||
// this.audiences = rs.result;
|
this.audiences = rs.result;
|
||||||
// sessionStorage.setItem(localKey, this.audiences);
|
sessionStorage.setItem(localKey, this.audiences);
|
||||||
// } else {
|
} else {
|
||||||
// console.log(rs.message);
|
console.log(rs.message);
|
||||||
// }
|
}
|
||||||
// })
|
})
|
||||||
// },
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
let screenWidth = window.screen.availWidth;
|
let screenWidth = window.screen.availWidth;
|
||||||
// if (screenWidth < 1280) {
|
// if (screenWidth < 1280) {
|
||||||
|
|||||||
@@ -396,7 +396,7 @@
|
|||||||
appendStudyOtherHandle:null,
|
appendStudyOtherHandle:null,
|
||||||
cumulativeDuration:0, //非音频累计时长
|
cumulativeDuration:0, //非音频累计时长
|
||||||
maxDuration:0, //非音频最大时长
|
maxDuration:0, //非音频最大时长
|
||||||
defaultMaxTime:1800 //非音频默认最大时间
|
defaultMaxTime:1800, //非音频默认最大时间
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@@ -474,31 +474,18 @@
|
|||||||
if (!this.contentData.id) {
|
if (!this.contentData.id) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let postData={
|
|
||||||
"key": "StudyCourseOther",//课程学习的key
|
|
||||||
"title": "非音视频课内容",//事件的标题
|
|
||||||
"parameters":"second:60",//second:value 本次的学习时长
|
|
||||||
"content": "学习课程",//事件的内容
|
|
||||||
"objId": this.courseInfo.id,//课程的id
|
|
||||||
"objType": "1",//类型
|
|
||||||
"source":"page",
|
|
||||||
"objInfo": ""+this.courseInfo.name,
|
|
||||||
"aid":this.userInfo.aid, //当前登录人的id
|
|
||||||
"aname":this.userInfo.name,//当前人的姓名
|
|
||||||
"status": 1 //状态
|
|
||||||
}
|
|
||||||
//每一分钟保存一次
|
//每一分钟保存一次
|
||||||
// 取消阅读的每分钟六十秒的计时,最多是设置的时间或默认时间
|
// 取消阅读的每分钟六十秒的计时,最多是设置的时间或默认时间
|
||||||
let $this=this;
|
let $this=this;
|
||||||
|
let startTime = new Date().getTime();
|
||||||
this.appendStudyOtherHandle = setTimeout(function() {
|
this.appendStudyOtherHandle = setTimeout(function() {
|
||||||
$this.cumulativeDuration += 60;
|
let endTime = new Date().getTime();
|
||||||
|
let totalTime = Math.round((endTime - startTime) / 1000);
|
||||||
|
$this.cumulativeDuration += totalTime;
|
||||||
if($this.cumulativeDuration <= $this.maxDuration){
|
if($this.cumulativeDuration <= $this.maxDuration){
|
||||||
//静默处理
|
//发送时长
|
||||||
apiStat.sendEvent(postData).then(rs=>{
|
$this.sendStudyOtherTime(totalTime);
|
||||||
if(rs.status != 200) {
|
//递归调用
|
||||||
console.log(rs.message);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$this.appendStudyOtherTime();
|
$this.appendStudyOtherTime();
|
||||||
}else{
|
}else{
|
||||||
clearTimeout(this.appendStudyOtherHandle);
|
clearTimeout(this.appendStudyOtherHandle);
|
||||||
@@ -508,6 +495,26 @@
|
|||||||
}, 1000*60);
|
}, 1000*60);
|
||||||
|
|
||||||
},
|
},
|
||||||
|
sendStudyOtherTime(totalTime){
|
||||||
|
//静默处理
|
||||||
|
apiStat.sendEvent({
|
||||||
|
"key": "StudyCourseOther",//课程学习的key
|
||||||
|
"title": "非音视频课内容",//事件的标题
|
||||||
|
"parameters":"second:" + totalTime,//second:value 本次的学习时长
|
||||||
|
"content": "学习课程",//事件的内容
|
||||||
|
"objId": this.courseInfo.id,//课程的id
|
||||||
|
"objType": "1",//类型
|
||||||
|
"source":"page",
|
||||||
|
"objInfo": ""+this.courseInfo.name,
|
||||||
|
"aid":this.userInfo.aid, //当前登录人的id
|
||||||
|
"aname":this.userInfo.name,//当前人的姓名
|
||||||
|
"status": 1 //状态
|
||||||
|
}).then(rs=>{
|
||||||
|
if(rs.status != 200) {
|
||||||
|
console.log(rs.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
//笔记组件触发,播放指定时间
|
//笔记组件触发,播放指定时间
|
||||||
onPlayVideo(contentId,time){
|
onPlayVideo(contentId,time){
|
||||||
//这里需要根据contentId,是否切换到对应的内容的视频的时间
|
//这里需要根据contentId,是否切换到对应的内容的视频的时间
|
||||||
@@ -1400,7 +1407,7 @@
|
|||||||
//静默处理
|
//静默处理
|
||||||
apiStat.sendEvent(postData).then(rs=>{
|
apiStat.sendEvent(postData).then(rs=>{
|
||||||
if(rs.status == 200) {
|
if(rs.status == 200) {
|
||||||
this.appendStartTime = new Date();//重新计时
|
// this.appendStartTime = new Date();//重新计时
|
||||||
studyUtil.clearStudyDuration(); //清除本地存储
|
studyUtil.clearStudyDuration(); //清除本地存储
|
||||||
} else {
|
} else {
|
||||||
console.log(rs.message);
|
console.log(rs.message);
|
||||||
@@ -1428,6 +1435,8 @@
|
|||||||
stopStudyTime(){
|
stopStudyTime(){
|
||||||
//console.log('停止追加学习时长');
|
//console.log('停止追加学习时长');
|
||||||
this.isAppendTime=false;
|
this.isAppendTime=false;
|
||||||
|
//暂停让他为空 从新计时
|
||||||
|
this.appendStartTime = null
|
||||||
if (this.appendHandle != null) {
|
if (this.appendHandle != null) {
|
||||||
window.clearTimeout(this.appendHandle);
|
window.clearTimeout(this.appendHandle);
|
||||||
}
|
}
|
||||||
@@ -1460,7 +1469,7 @@
|
|||||||
$this.appendStudyTime();
|
$this.appendStudyTime();
|
||||||
}, $this.appentInterval); //设置定时追加学习时长
|
}, $this.appentInterval); //设置定时追加学习时长
|
||||||
//保存之前的
|
//保存之前的
|
||||||
if (duration >0 ) {
|
if (duration >= 60 ) {
|
||||||
this.saveStudyDuration(duration);
|
this.saveStudyDuration(duration);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@@ -1468,13 +1477,19 @@
|
|||||||
//如果当前追加开始时间不为空
|
//如果当前追加开始时间不为空
|
||||||
let now = new Date();
|
let now = new Date();
|
||||||
let m = now.getTime() - this.appendStartTime.getTime(); //相差的毫秒数
|
let m = now.getTime() - this.appendStartTime.getTime(); //相差的毫秒数
|
||||||
let sen = parseInt(m / 1000); //计算秒数
|
// console.log(m/1000,'时间');
|
||||||
duration = duration + $this.appentInterval/1000;//追加的是秒
|
|
||||||
if (sen>=60) { //一分钟保存一次
|
let sen = Math.round(m / 1000); //计算秒数
|
||||||
|
// console.log('定时器时间',sen);
|
||||||
|
// 每次添加的是定时器计时的时间
|
||||||
|
duration = duration + sen;//追加的是秒
|
||||||
|
if (duration >= 60) { //一分钟保存一次
|
||||||
this.saveStudyDuration(duration);
|
this.saveStudyDuration(duration);
|
||||||
} else {
|
} else {
|
||||||
studyUtil.setStudyDuration(duration); //添加到本地存储中
|
studyUtil.setStudyDuration(duration); //添加到本地存储中
|
||||||
}
|
}
|
||||||
|
//重新覆盖时间
|
||||||
|
this.appendStartTime = new Date();
|
||||||
//启动下次追加学习时长
|
//启动下次追加学习时长
|
||||||
this.appendHandle = setTimeout(function() {
|
this.appendHandle = setTimeout(function() {
|
||||||
$this.appendStudyTime();
|
$this.appendStudyTime();
|
||||||
|
|||||||
Reference in New Issue
Block a user