From 5d7df19bce9c4cac2a4e71776b25317c04ee1303 Mon Sep 17 00:00:00 2001 From: nisen Date: Mon, 20 Nov 2023 17:12:50 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=87=E7=AB=A0=E8=AE=A1=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/resource/articeDetail.vue | 44 +++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/pages/resource/articeDetail.vue b/pages/resource/articeDetail.vue index 8919362..e747db8 100644 --- a/pages/resource/articeDetail.vue +++ b/pages/resource/articeDetail.vue @@ -91,9 +91,7 @@ }, destroyed() { - if(this.setTime){ - clearTimeout(this.setTime); - } + this.setTime && clearTimeout(this.setTime); }, onReachBottom(){ this.getDetail() @@ -104,24 +102,15 @@ methods: { // 发送计时 sendEventData(){ - let event = { - key: "ReadArticle",//后台的事件key 发布文章且审核通过 - title: "阅读文章",//事件的标题 - parameters:"second:" + this.secondTime,//用户自定义参数 name:value,name:value - content: "阅读了文章",//事件的内容 - source:'page', - objId: this.id,//关联的id - objType: "2",//关联的类型 - objInfo: this.detail.title, - aid: this.userInfo.aid, //当前登录人的id - aname: this.userInfo.name,//当前人的姓名 - status: 1 ,//状态,直接写1 - source:"h5", - } + this.setTime && clearTimeout(this.setTime); + let startTime = new Date().getTime(); this.setTime = setTimeout(()=>{ - this.cumulativeDuration += this.secondTime + let endTime = new Date().getTime(); + let totalTime = Math.round((endTime - startTime) / 1000); + this.cumulativeDuration += totalTime; + console.log(this.cumulativeDuration,'时间'); if(this.cumulativeDuration <= this.defaultMaxTime){ - apiStat.sendEvent(event); + this.sendStudyTime(totalTime) this.secondTime = 60 this.sendEventData() }else{ @@ -131,6 +120,23 @@ } },this.secondTime * 1000);//15秒记录一次之后1分钟后记录 }, + //发送学习时间 + sendStudyTime(totalTime){ + apiStat.sendEvent({ + key: "ReadArticle",//后台的事件key 发布文章且审核通过 + title: "阅读文章",//事件的标题 + parameters:"second:" + totalTime,//用户自定义参数 name:value,name:value + content: "阅读了文章",//事件的内容 + source:'page', + objId: this.id,//关联的id + objType: "2",//关联的类型 + objInfo: this.detail.title, + aid: this.userInfo.aid, //当前登录人的id + aname: this.userInfo.name,//当前人的姓名 + status: 1 ,//状态,直接写1 + source:"h5", + }); + }, getDetail(){ uni.showLoading({title:'加载中...'}); let $this=this; From 58645d9718eb2ef396b5f60c1ead7f0d409d70af Mon Sep 17 00:00:00 2001 From: nisen Date: Mon, 20 Nov 2023 17:15:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E9=9F=B3=E9=A2=91?= =?UTF-8?q?=E8=AE=A1=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/study/courseStudy.vue | 102 ++++++++++++++++++++++++++---------- 1 file changed, 73 insertions(+), 29 deletions(-) diff --git a/pages/study/courseStudy.vue b/pages/study/courseStudy.vue index fb01886..66dbf7a 100644 --- a/pages/study/courseStudy.vue +++ b/pages/study/courseStudy.vue @@ -486,6 +486,9 @@ appendStudyOtherHandle:null, articleMore:true, scormUrl:'', + maxDuration:0, //非音频最大时长 + cumulativeDuration:0, //非音频累计时长 + defaultMaxTime:1800, //非音频默认最大时间 } }, computed: { @@ -957,8 +960,31 @@ //用户的学习时长,音视频课程学习,单独的处理,不再追加学习时长 this.isAppendTime = false; this.appendStudyOtherHandle = setTimeout(function() { + // 开始之前把响应式清空 + $this.maxDuration = 0; + $this.cumulativeDuration = 0; + // 没有设置默认时长三十分钟, + $this.maxDuration = con.duration !== 0 ? con.duration * 2 : $this.defaultMaxTime; + //静默处理 + apiStat.sendEvent({ + "key": "StudyCourse",//课程学习的key + "title": "学习课程",//事件的标题 + "parameters":"second:15",//second:value,total:value 本次的学习时长 + "content": "学习课程【"+$this.courseInfo.name+"】",//事件的内容 + "objId": $this.courseInfo.id,//课程的id + "objType": "1",//类型 + "source":"h5", + "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); + } + }); $this.appendStudyOtherTime(); - }, 1000*60*2); //非音视频课程学习,2分钟后记录,因为一次记录是60秒 + }, 1000 * 15); //非音视频课程学习,15秒后记录,因为一次记录是60秒 //this.appendStudyTime(); //非视频,音频的5秒后学习完成 if(con.contentType!=50){ @@ -1287,7 +1313,7 @@ //静默处理 apiStat.sendEvent(postData).then(rs=>{ if(rs.status == 200) { - this.appendStartTime = new Date();//重新计时 + //this.appendStartTime = new Date();//重新计时 studyUtil.clearStudyDuration(); //清除本地存储 } else { console.log(rs.message); @@ -1299,6 +1325,8 @@ stopStudyTime(){ //console.log('停止追加学习时长'); this.isAppendTime=false; + //暂停让他为空 从新计时 + this.appendStartTime = null if (this.appendHandle != null) { window.clearTimeout(this.appendHandle); } @@ -1331,7 +1359,7 @@ $this.appendStudyTime(); }, $this.appentInterval); //设置定时追加学习时长 //保存之前的 - if (duration >0 ) { + if (duration >= 60 ) { this.saveStudyDuration(duration); } return; @@ -1339,13 +1367,16 @@ //如果当前追加开始时间不为空 let now = new Date(); let m = now.getTime() - this.appendStartTime.getTime(); //相差的毫秒数 - let sen = parseInt(m / 1000); //计算秒数 - duration = duration + $this.appentInterval/1000;//追加的是秒 + let sen = Math.round(m / 1000); //计算秒数 + // 每次添加的是定时器计时的时间 + duration = duration + sen;//追加的是秒 if (sen>=60) { //一分钟保存一次 this.saveStudyDuration(duration); } else { studyUtil.setStudyDuration(duration); //添加到本地存储中 } + //重新覆盖时间 + this.appendStartTime = new Date(); //启动下次追加学习时长 this.appendHandle = setTimeout(function() { $this.appendStudyTime(); @@ -1360,31 +1391,44 @@ if (!this.curContent.id) { return; } - let postData={ - "key": "StudyCourseOther",//课程学习的key - "title": "非音视频课内容",//事件的标题 - "parameters":"second:60",//second:value 本次的学习时长 - "content": "学习课程",//事件的内容 - "objId": this.courseInfo.id,//课程的id - "objType": "1",//类型 - "source":"h5", - "objInfo": ""+this.courseInfo.name, - "aid":this.userInfo.aid, //当前登录人的id - "aname":this.userInfo.name,//当前人的姓名 - "status": 1 //状态 - } - //静默处理 - apiStat.sendEvent(postData).then(rs=>{ - if(rs.status != 200) { - console.log(rs.message); - } - }); //每一分钟保存一次 - let $this=this; - this.appendStudyOtherHandle = setTimeout(function() { - $this.appendStudyOtherTime(); - }, 1000*60); - + // 取消阅读的每分钟六十秒的计时,最多是设置的时间或默认时间 + let $this=this; + let startTime = new Date().getTime(); + this.appendStudyOtherHandle = setTimeout(function() { + let endTime = new Date().getTime(); + let totalTime = Math.round((endTime - startTime) / 1000); + $this.cumulativeDuration += totalTime; + if($this.cumulativeDuration <= $this.maxDuration){ + //静默处理 + $this.sendOtherTime(totalTime) + $this.appendStudyOtherTime(); + }else{ + clearTimeout(this.appendStudyOtherHandle); + $this.cumulativeDuration = 0; + $this.maxDuration = 0; + } + }, 1000*60); + + }, + sendOtherTime(totalTime){ + apiStat.sendEvent({ + "key": "StudyCourseOther",//课程学习的key + "title": "非音视频课内容",//事件的标题 + "parameters":"second:" + totalTime,//second:value 本次的学习时长 + "content": "学习课程",//事件的内容 + "objId": this.courseInfo.id,//课程的id + "objType": "1",//类型 + "source":"h5", + "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); + } + }); }, //先保存学习的内容,针对于音视频的内容 saveStudyItem(){