YNUtdPlatform/pages/YNEduApp/learnProj/pdfStudy.vue

120 lines
3.7 KiB
Vue

<template>
<view>
<div>
<PdfView v-if="isShow" :path="path" />
</div>
</view>
</template>
<script>
import PdfView from './components/PdfView.vue'
import config from '@/config'
export default {
components: { PdfView },
data() {
return {
isShow: true,
path: '',
params: {},
timer: null
}
},
onLoad(opt) {
opt = JSON.parse(opt.params)
console.log('🚀 ~ onLoad ~ opt:', opt)
this.params = JSON.parse(JSON.stringify(opt))
this.params.studyDuration = Number(opt.studyDuration)
this.params.allStudyDuration = Number(opt.allStudyDuration)
this.path =
config.fileUrl + opt.path + `&studyDuration=${opt.studyDuration}&allStudyDuration=${opt.allStudyDuration}`
console.log('🚀 ~ onLoad ~ this.params:', this.path)
console.log('🚀 ~ onLoad ~ this.params:', Number(opt.studyDuration), Number(opt.allStudyDuration))
if (Number(opt.studyDuration) <= Number(opt.allStudyDuration)) {
setTimeout(() => {
this.countDown()
}, 1000)
} else {
// 提示-学习时长已满
uni.showToast({
title: '学习时长已满, 随时可以结束学习',
icon: 'none'
})
}
},
// 卸载
onUnload() {
console.log('🚀 ~ onUnload ~ 页面关闭')
clearInterval(this.timer)
// 关闭页面时,修改项目进度
this.updStudyDuration()
},
methods: {
// 根据allStudyDuration 倒计时
countDown() {
let allStudyDuration = Number(this.params.allStudyDuration) - Number(this.params.studyDuration)
// let studyDuration = Number(this.params.studyDuration)
this.timer = setInterval(() => {
allStudyDuration--
// studyDuration++
this.params.studyDuration++
// this.$set(this.params, 'studyDuration', studyDuration)
console.log('🚀 ~ countDown ~ this.params.studyDuration:', this.params.studyDuration)
if (allStudyDuration <= 0) {
clearInterval(this.timer)
// 提示-学习时长已满
uni.showToast({
title: '学习时长已满',
icon: 'none'
})
setTimeout(() => {
this.updStudyDuration()
}, 1000)
}
console.log('🚀 ~ countDown ~ 剩余时间-->:', allStudyDuration)
console.log('🚀 ~ countDown ~ this.params.studyDuration:', this.params.studyDuration)
}, 1000)
},
// 修改项目进度
updStudyDuration() {
const params = {
userId: this.params.userId,
studyId: this.params.studyId,
stageId: this.params.stageId,
stageContentId: this.params.stageContentId,
stageType: this.params.stageType,
studyCourseId: this.params.studyCourseId,
sourceId: this.params.sourceId,
studyDuration: this.params.studyDuration,
studyPercentage: Math.round(
(Number(this.params.studyDuration) / Number(this.params.allStudyDuration)) * 100
).toFixed(2)
}
console.log('🚀 ~ updStudyDuration ~ params:', params)
uni.request({
url: config.baseUrl + '/exam-student/student/updStudyDuration',
method: 'post',
data: params,
header: {
'Content-Type': 'application/x-www-form-urlencoded',
Authorization: uni.getStorageSync('access_token')
},
success: res => {
console.log('🚀 ~ handleEnd ~ res:', res)
this.isShow = false
uni.navigateTo({
url: '/pages/YNEduApp/learnProj/learnProjDetail?id=' + this.params.studyId
})
},
fail: err => {
console.log('🚀 ~ handleEnd ~ err:', err)
}
})
}
}
}
</script>
<style lang="scss" scoped></style>