nxdt-uniapp/pages/learningTasks/learningTasksDetails.vue

186 lines
4.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<Navbar title="学习任务详情" :goTo="'/pages/learningTasks/index'" />
<div class="content">
<div class="title-wrapper">
<div class="title">{{ opt.name }}</div>
<!-- <div class="period">合格标准{{ standard }}</div> -->
<div class="period">学习期限{{ opt.learningDate }}</div>
<div class="list-wrapper">
<div
v-for="(item, index) in studyList"
:key="index"
style="max-height: 200px; overflow: auto"
@click="goToDocLeaning(item)"
>
<ListItem :itemData="item" />
</div>
<div @click="goToExercise">
<ListItem
v-if="exerciseObj.id"
:itemData="exerciseObj"
background="#F1FFED"
:showProgress="false"
icon="/static/images/imgs/lianxi.png"
/>
</div>
<div @click="goToExam">
<ListItem
v-if="examObj.id"
:itemData="examObj"
background="#FDF4F2"
:showProgress="false"
icon="/static/images/imgs/zhihuikaoshi.png"
/>
</div>
</div>
<div style="height: 30px;"></div>
</div>
</div>
</view>
</template>
<script>
import ListItem from './components/ListItem'
import { getLearningTaskDetail } from '@/api/educationTraining'
export default {
components: { ListItem },
data() {
return {
opt: {},
// 学习列表
studyList: [],
// 练习
exerciseObj: {},
// 考试
examObj: {}
}
},
onShow() {
this.$nextTick(() => {
this.getDetail()
})
},
onLoad(opt) {
this.opt = JSON.parse(opt.params)
console.log('🚀 ~ onLoad ~ this.opt:', this.opt)
// this.getDetail()
},
methods: {
// 获取详情
async getDetail() {
this.studyList = []
this.exerciseObj = {}
this.examObj = {}
console.log('🚀 ~ getDetail ~ this.opt:', this.opt)
const res = await getLearningTaskDetail({ studyTaskId: this.opt.id })
console.log('🚀 ~ getDetail ~ res:', res)
this.exerciseObj = {
...res.data.find(item => item.type == '练习'),
title: '练习'
}
this.examObj = {
...res.data.filter(item => item.type == '考试')[0],
title: '考试'
}
console.log('🚀 ~ getDetail ~ this.examObj:', this.examObj)
this.studyList = res.data.filter(item => item.type == '课件')
this.studyList.forEach(item => {
item.filePath = item.filePath.replace(/\\/g, '/')
item.url = item.filePath
// 如果url 是.MP4视频文件 item.title = '视频' 否则 item.title = '文件'
if (item.url.includes('.mp4') || item.url.includes('.MP4')) {
item.title = '视频'
} else {
item.title = '文件'
}
})
console.log('🚀 ~ getDetail ~ this.studyList:', this.studyList)
},
goToDocLeaning(item) {
console.log('🚀 ~ goToDocLeaning ~ item:', item, this.examObj)
const params = {
taskId: this.opt.id,
coursewareId: item.id,
duration: item.duration || 0,
learningProgress: item.learningProgress || 0,
url: item.url,
studyProgress: item.studyProgress || 0,
taskLength: this.studyList.length,
singId: item.singId,
type: this.examObj?.id ? '' : '1'
}
if (item.title == '视频') {
uni.navigateTo({
url: '/pages/learningTasks/videoLearning?params=' + JSON.stringify(params)
})
} else {
uni.navigateTo({
url: '/pages/learningTasks/documentLearning?params=' + JSON.stringify(params)
})
}
},
// 点击练习
goToExercise() {
console.log('练习', this.exerciseObj)
if (this.exerciseObj.id) {
uni.navigateTo({
url: '/pages/myExercise/exercises?params=' + JSON.stringify(this.exerciseObj)
})
}
},
// 点击考试
goToExam() {
console.log('考试', this.examObj)
if (Number(this.examObj.score) > Number(this.examObj.passScore)) {
uni.showToast({
title: '已通过考试',
icon: 'none'
})
return
}
if (this.examObj.id) {
const params = {
...this.examObj,
name: this.examObj.fileName,
isStudyTask: true,
taskId: this.opt.id,
type: this.studyList.length > 0 ? '' : '1'
}
uni.navigateTo({
url: '/pages/myExam/beforeExamExplain?params=' + JSON.stringify(params)
})
}
}
}
}
</script>
<style lang="scss" scoped>
.content {
padding: 0 20px;
line-height: 1.5;
.title {
font-size: 16px;
font-weight: bold;
margin-bottom: 10px;
}
.period {
font-size: 12px;
color: #8a8a8a;
}
.collapse {
margin-top: 30px;
}
.list-wrapper {
margin: 20px 0;
}
}
</style>