nxdt-uniapp/pages/learningTasks/documentLearning.vue

93 lines
2.5 KiB
Vue

<template>
<view>
<Navbar title="文件学习" />
<div class="content">
<div class="time" v-if="this.opt.studyProgress < 100">
<div>倒计时:</div>
<div>
<u-count-down :time="30 * 1000" format="mm:ss" @finish="endFinish"></u-count-down>
</div>
</div>
<div style="width: 100vw; height: 100vh">
<bns-kkFile-preview :items="filePreview" :isStudy="true"></bns-kkFile-preview>
</div>
</div>
</view>
</template>
<script>
import bnsKkFilePreview from '../component/bns-kkFile-preview'
import { updateProgress } from '@/api/educationTraining'
import { getLearningTaskDetail } from '@/api/educationTraining'
export default {
components: {
bnsKkFilePreview
},
data() {
return {
opt: {},
userId: uni.getStorageSync('userInfo').userId,
filePreview: {
// filePreviewUrl: '2024/10/17/工作分析辅导新3(1)_20241017170902A129.pdf?preventDownload=true',
filePreviewUrl: '',
fileName: ''
}
}
},
onLoad(opt) {
this.opt = JSON.parse(opt.params)
this.filePreview.filePreviewUrl = this.opt.url
console.log('🚀 ~ onLoad ~ this.opt:', this.opt)
this.getDetail()
},
methods: {
async getDetail() {
console.log('🚀 ~ getDetail ~ this.opt:', this.opt)
const res = await getLearningTaskDetail({ studyTaskId: this.opt.taskId })
console.log('🚀 ~ getDetail ~ res:', res)
// 查找 res.data 中 id 与 this.opt.coursewareId 相同的数据
const data = res.data.find(item => item.id == this.opt.coursewareId)
console.log('🚀 ~ getDetail ~ data:', data)
if (data && data.studyProgress == 100) {
this.opt.studyProgress = 100
}
},
async endFinish() {
const params = {
taskId: this.opt.taskId,
type: this.opt.type,
coursewareId: this.opt.coursewareId,
userUuid: this.userId,
studyTime: 30,
studyProgress: 100,
taskLength: this.opt.taskLength
}
console.log('用户点击确定', params)
if (this.opt.studyProgress < 100) {
uni.showToast({
title: '已完成学习',
icon: 'none',
duration: 1500
})
const res = await updateProgress(params)
console.log('🚀 ~ endStudy ~ 结束学习:', res)
this.opt.studyProgress = 100
}
}
}
}
</script>
<style lang="scss">
.time {
display: flex;
justify-content: flex-start;
align-items: center;
text-align: center;
padding: 10px;
font-size: 16px;
color: #333;
}
</style>