|
@@ -13,6 +13,7 @@ import PlayQuestion from '../model/play-question'
|
|
|
import request from '@/helpers/request'
|
|
|
import { QuestionType } from '../unit'
|
|
|
import { useRect } from '@vant/use'
|
|
|
+import { state as baseState } from '@/state'
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'unit-detail',
|
|
@@ -33,6 +34,7 @@ export default defineComponent({
|
|
|
swipeHeight: 'auto' as any
|
|
|
})
|
|
|
|
|
|
+ // 学生端查看详情
|
|
|
const getExamDetails = async () => {
|
|
|
try {
|
|
|
const { data } = await request.post('/api-student/studentUnitExamination/detail', {
|
|
@@ -45,6 +47,12 @@ export default defineComponent({
|
|
|
const temp = questionJson || []
|
|
|
temp.forEach((item: any) => {
|
|
|
item.userAnswer = formatUserAnswers(item, studentAnswerJson)
|
|
|
+ item.showAnalysis = true
|
|
|
+ item.analysis = {
|
|
|
+ message: item.answerAnalysis,
|
|
|
+ topic: true, // 是否显示结果
|
|
|
+ userResult: formatUserResult(item.id) // 用户答题对错
|
|
|
+ }
|
|
|
})
|
|
|
// 问题列表
|
|
|
state.questionList = temp
|
|
@@ -58,6 +66,62 @@ export default defineComponent({
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ const getExamTeaherDetails = async () => {
|
|
|
+ try {
|
|
|
+ const { data } = await request.post('/api-teacher/classGroupUnitExamination/report', {
|
|
|
+ requestType: 'form',
|
|
|
+ data: {
|
|
|
+ classGroupUnitExaminationId: state.id,
|
|
|
+ level: route.query.level
|
|
|
+ }
|
|
|
+ })
|
|
|
+ console.log(data)
|
|
|
+ // const { questionJson, studentAnswerJson, answerResult, ...res } = data
|
|
|
+ state.examDetail = {
|
|
|
+ unitExaminationName: data.unitExaminationName,
|
|
|
+ questionNum: data.questionNum || 0
|
|
|
+ }
|
|
|
+ // 问题列表
|
|
|
+ const temp = data.examinationQuestionAdds || []
|
|
|
+ temp.forEach((item: any) => {
|
|
|
+ item.userAnswer = formatTeacherAnswer(item.answers)
|
|
|
+ item.showAnalysis = true
|
|
|
+ item.showRate = true
|
|
|
+ item.analysis = {
|
|
|
+ message: item.answerAnalysis,
|
|
|
+ topic: false // 是否显示结果
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // 问题列表
|
|
|
+ state.questionList = temp
|
|
|
+ // 正确答案
|
|
|
+ } catch {
|
|
|
+ //
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * @description 初始化正确答案
|
|
|
+ */
|
|
|
+ const formatTeacherAnswer = (answers: any) => {
|
|
|
+ console.log(answers)
|
|
|
+ const result: any = []
|
|
|
+ answers.forEach((answer: any) => {
|
|
|
+ // rightAnswerFlag 说明是正确的
|
|
|
+ if (answer.rightAnswerFlag) {
|
|
|
+ const rightOption = answers.find(
|
|
|
+ (item: any) => item.questionExtra === answer.questionExtra
|
|
|
+ )
|
|
|
+
|
|
|
+ result.push({
|
|
|
+ answer: answer.questionAnswer,
|
|
|
+ answerId: answer.examinationQuestionAnswerId,
|
|
|
+ answerExtra: rightOption ? rightOption.questionExtra : null
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return result || []
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @description 初始化用户答案
|
|
|
*/
|
|
@@ -65,8 +129,6 @@ export default defineComponent({
|
|
|
// 判断是否有结果
|
|
|
if (!userAnswer) return []
|
|
|
const answers = userAnswer || []
|
|
|
-
|
|
|
- // const questionItem = answers.find((child: any) => child.questionId === item.id)
|
|
|
return answers[item.id] ? answers[item.id] : []
|
|
|
}
|
|
|
|
|
@@ -117,7 +179,11 @@ export default defineComponent({
|
|
|
}
|
|
|
|
|
|
onMounted(async () => {
|
|
|
- await getExamDetails()
|
|
|
+ if (baseState.platformType === 'TEACHER') {
|
|
|
+ await getExamTeaherDetails()
|
|
|
+ } else {
|
|
|
+ await getExamDetails()
|
|
|
+ }
|
|
|
|
|
|
// 初始化高度
|
|
|
resizeSwipeItemHeight()
|
|
@@ -125,7 +191,7 @@ export default defineComponent({
|
|
|
|
|
|
return () => (
|
|
|
<div class={styles.unitDetail}>
|
|
|
- <Cell center class={styles.unitSection}>
|
|
|
+ <Cell center class={styles.unitSection} border={false}>
|
|
|
{{
|
|
|
title: () => <div class={styles.unitTitle}>{state.examDetail.unitExaminationName}</div>,
|
|
|
label: () => (
|
|
@@ -184,12 +250,9 @@ export default defineComponent({
|
|
|
data={item}
|
|
|
readOnly
|
|
|
type="radio"
|
|
|
- showAnalysis
|
|
|
- analysis={{
|
|
|
- message: item.answerAnalysis,
|
|
|
- topic: true, // 是否显示结果
|
|
|
- userResult: formatUserResult(item.id) // 用户答题对错
|
|
|
- }}
|
|
|
+ showRate={item.showRate}
|
|
|
+ showAnalysis={item.showAnalysis}
|
|
|
+ analysis={item.analysis}
|
|
|
/>
|
|
|
)}
|
|
|
{item.questionTypeCode === QuestionType.CHECKBOX && (
|
|
@@ -199,12 +262,9 @@ export default defineComponent({
|
|
|
data={item}
|
|
|
readOnly
|
|
|
type="checkbox"
|
|
|
- showAnalysis
|
|
|
- analysis={{
|
|
|
- message: item.answerAnalysis,
|
|
|
- topic: true, // 是否显示结果
|
|
|
- userResult: formatUserResult(item.id) // 用户答题对错
|
|
|
- }}
|
|
|
+ showRate={item.showRate}
|
|
|
+ showAnalysis={item.showAnalysis}
|
|
|
+ analysis={item.analysis}
|
|
|
/>
|
|
|
)}
|
|
|
{item.questionTypeCode === QuestionType.SORT && (
|
|
@@ -213,12 +273,9 @@ export default defineComponent({
|
|
|
v-model:value={item.userAnswer}
|
|
|
data={item}
|
|
|
index={index + 1}
|
|
|
- showAnalysis
|
|
|
- analysis={{
|
|
|
- message: item.answerAnalysis,
|
|
|
- topic: true, // 是否显示结果
|
|
|
- userResult: formatUserResult(item.id) // 用户答题对错
|
|
|
- }}
|
|
|
+ showRate={item.showRate}
|
|
|
+ showAnalysis={item.showAnalysis}
|
|
|
+ analysis={item.analysis}
|
|
|
/>
|
|
|
)}
|
|
|
{item.questionTypeCode === QuestionType.LINK && (
|
|
@@ -227,12 +284,9 @@ export default defineComponent({
|
|
|
v-model:value={item.userAnswer}
|
|
|
data={item}
|
|
|
index={index + 1}
|
|
|
- showAnalysis
|
|
|
- analysis={{
|
|
|
- message: item.answerAnalysis,
|
|
|
- topic: true, // 是否显示结果
|
|
|
- userResult: formatUserResult(item.id) // 用户答题对错
|
|
|
- }}
|
|
|
+ showRate={item.showRate}
|
|
|
+ showAnalysis={item.showAnalysis}
|
|
|
+ analysis={item.analysis}
|
|
|
/>
|
|
|
)}
|
|
|
{item.questionTypeCode === QuestionType.PLAY && (
|
|
@@ -242,12 +296,9 @@ export default defineComponent({
|
|
|
data={item}
|
|
|
index={index + 1}
|
|
|
unitId={state.id as any}
|
|
|
- showAnalysis
|
|
|
- analysis={{
|
|
|
- message: item.answerAnalysis,
|
|
|
- topic: true, // 是否显示结果
|
|
|
- userResult: formatUserResult(item.id) // 用户答题对错
|
|
|
- }}
|
|
|
+ showRate={item.showRate}
|
|
|
+ showAnalysis={item.showAnalysis}
|
|
|
+ analysis={item.analysis}
|
|
|
/>
|
|
|
)}
|
|
|
</div>
|
|
@@ -293,17 +344,22 @@ export default defineComponent({
|
|
|
<AnswerList
|
|
|
value={state.questionList}
|
|
|
answerResult={state.answerResult}
|
|
|
- look
|
|
|
- statusList={[
|
|
|
- {
|
|
|
- text: '答对',
|
|
|
- color: '#71B0FF'
|
|
|
- },
|
|
|
- {
|
|
|
- text: '答错',
|
|
|
- color: '#FF8486'
|
|
|
- }
|
|
|
- ]}
|
|
|
+ index={state.currentIndex}
|
|
|
+ lookType={baseState.platformType === 'STUDENT' ? 'RESULT' : 'CLICK'}
|
|
|
+ statusList={
|
|
|
+ baseState.platformType === 'STUDENT'
|
|
|
+ ? [
|
|
|
+ {
|
|
|
+ text: '答对',
|
|
|
+ color: '#71B0FF'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: '答错',
|
|
|
+ color: '#FF8486'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ : []
|
|
|
+ }
|
|
|
onSelect={(item: any) => {
|
|
|
// 跳转,并且跳过动画
|
|
|
swipeRef.value?.swipeTo(item, {
|