Files
tra-app/src/pages/courseRecord/courseStudyRecordDetail.vue
T
2025-08-28 16:54:52 +08:00

174 lines
3.7 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 class="course-record-page">
<view class="top-bg"></view>
<view class="bot-bg"></view>
<view class="course-study-body">
<view class="body-title">
<uv-icon class="arrow-icon" name="arrow-left" @click="backRouter()" />
{{ recordTitle }}
</view>
<scroll-view class="talking-list" :scroll-y="true" :scroll-top="scrollTop" :show-scrollbar="false"
:scroll-with-animation="true">
<talkingItem v-for="item in talkingList" :type="item.type"
:dataInfo="item" :activeVoiceId="activeVoiceTalkingItemId" :isPlaying="activeVoiceTalkingItemId === item.id"
:voiceRate="chooseRate" />
</scroll-view>
</view>
</view>
</template>
<script setup>
import {
onLoad
} from '@dcloudio/uni-app';
import {
ref,
unref,
computed,
watch
} from 'vue'
import {
queryTraStudyExecuteRecord
} from '@/api/courseRecord.js'
import common from '@/common/common';
import talkingItem from './components/talkingItem.vue'
const stdyId = ref('')
const scrollTop = ref(0)
const showOrder = ref(1)
const pgrphNum = ref(1)
const activeVoiceTalkingItemId = ref('')
const chooseRate = ref('1.0')
const recordTitle = ref('')
onLoad((params) => {
stdyId.value = params.stdyId
recordTitle.value = params.crsName || '课程学习记录'
getRecordInfo()
})
const talkingRecord = ref([])
const talkingList = computed(()=>{
let _arr = []
talkingRecord.value.forEach((t,index)=> {
_arr.push({
...t,
id: 'prgh-'+index,
chatContent:( t.pgrphContent || ''),
titleNum: '知识点'+(index+1)+'',
type: 3
})
if(t.qnsInfoVos && t.qnsInfoVos.length>0){
t.qnsInfoVos.forEach((k,indexk)=>{
if(k.qnsTyp === 'ES'){
_arr.push({
...k,
chatContent: (k.qnsContent || ''),
titleNum: '问题'+(indexk+1)+'',
type: 8,
id: 'qns-'+index+'-'+indexk,
})
}else{
_arr.push({
...k,
chatContent:(k.qnsContent || ''),
titleNum: '问题'+(indexk+1)+'',
type: 8,
id: 'qns-'+index+'-'+indexk,
isQuestion: true,
my_answer: [],
backend_answer: [],
})
}
})
}
})
return _arr
})
const getRecordInfo = () => {
queryTraStudyExecuteRecord({
stdyId: stdyId.value
}).then(res => {
talkingRecord.value = res.body
})
}
const backRouter = () => {
common.navigateBack()
}
</script>
<style scoped lang="scss">
.course-record-page {
position: relative;
display: flex;
flex-direction: column;
height: 100vh;
.top-bg {
background: linear-gradient(16deg, rgba(234, 246, 255, 0) 0%, #e6eafd 100%);
height: 480rpx;
width: 750rpx;
}
.bot-bg {
background: linear-gradient(136deg, rgba(234, 246, 255, 0) 0%, #e6eafd 100%);
width: 750rpx;
flex: 1;
}
.course-study-body {
position: absolute;
overflow: hidden;
left: 0;
top: 0;
height: 100%;
width: 100%;
padding: 0 0rpx;
box-sizing: border-box;
display: flex;
flex-direction: column;
padding-top: var(--status-bar-height);
.body-title {
height: 90rpx;
text-align: center;
font-size: 33rpx;
padding-top: 10rpx;
line-height: 46rpx;
box-sizing: border-box;
font-weight: 500;
color: #000;
position: relative;
.arrow-icon {
position: absolute;
left: 21rpx;
top: 5rpx;
color: #000;
padding: 15rpx;
}
}
.talking-list {
flex: 1;
overflow-y: auto;
padding: 10rpx 30rpx;
background: url(@/static/images/course/study-bg.png) no-repeat;
background-size: cover;
background-position: center bottom;
box-sizing: border-box;
width: 100%;
.talking-list-cont {
padding: 0;
}
.talking-item {
margin-bottom: 46rpx;
}
}
}
}
</style>