| 
					
				 | 
			
			
				@@ -1,71 +1,143 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ActionSheet, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Button, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Cell, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  CountDown, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Icon, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Image, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Popup, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Swipe, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  SwipeItem, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Tag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} from 'vant' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { defineComponent, onMounted, reactive, ref } from 'vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { ActionSheet, Button, Cell, Icon, Image, Swipe, SwipeItem } from 'vant' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { defineComponent, onMounted, reactive, ref, nextTick } from 'vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { useRoute, useRouter } from 'vue-router' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import NoticeStart from '../model/notice-start' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import styles from './index.module.less' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import iconQuestionNums from '../images/icon-question-nums.png' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import iconCountDown from '../images/icon-count-down.png' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import iconButtonList from '../images/icon-button-list.png' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import OSticky from '@/components/o-sticky' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import ChoiceQuestion from '../model/choice-question' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import AnswerList from '../model/answer-list' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import ODialog from '@/components/o-dialog' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import DragQuestion from '../model/drag-question' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import KeepLookQuestion from '../model/keep-look-question' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import PlayQuestion from '../model/play-question' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import request from '@/helpers/request' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { QuestionType } from '../unit' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useRect } from '@vant/use' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   name: 'unit-detail', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   setup() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const route = useRoute() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const router = useRouter() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const countDownRef = ref() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const swipeRef = ref() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const state = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      id: route.query.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      examDetail: {} as any, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       visiableAnswer: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       currentIndex: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      questionList: [5], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      answerList: {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      time: 30 * 60 * 1000, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      visiableSure: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      childs: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { name: 'John', id: 0 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { name: 'Joao', id: 1 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { name: 'Jean', id: 2 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      questionList: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      time: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      resultInfo: {} as any, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      answerResult: [] as any, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      nextStatus: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      swipeHeight: 'auto' as any 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const getExamDetails = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const { data } = await request.post('/api-school/studentUnitExamination/detail', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          requestType: 'form', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          data: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            studentUnitExaminationId: state.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const { questionJson, studentAnswerJson, answerResult, ...res } = data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const temp = questionJson || [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        temp.forEach((item: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.userAnswer = formatUserAnswers(item, studentAnswerJson) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 问题列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.questionList = temp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 正确答案 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.answerResult = answerResult ? JSON.parse(answerResult) : [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 详情 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.examDetail = { ...res } || {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @description 初始化用户答案 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const formatUserAnswers = (item: any, userAnswer: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 判断是否有结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!userAnswer) return [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const answers = JSON.parse(userAnswer) || [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const questionItem = answers.find((child: any) => child.questionId === item.id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return questionItem ? questionItem.details : [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @description 检查用户是否答对 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @returns Boolean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const formatUserResult = (id: string) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let result = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      state.answerResult.forEach((item: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (item.questionId === id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          result = item.rightFlag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return result 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @description 重置当前的题目高度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const resizeSwipeItemHeight = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      nextTick(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        window.scrollTo(0, 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const currentItemDom: Element = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            document.querySelectorAll('.swipe-item-question')[state.currentIndex] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          console.log(currentItemDom, state.currentIndex) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const rect = useRect(currentItemDom) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          state.swipeHeight = rect.height 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 100) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @description 下一题 | 测试完成 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const onNextQuestion = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.nextStatus = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (state.questionList.length === state.currentIndex + 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          router.back() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        swipeRef.value?.next() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.nextStatus = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.nextStatus = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onMounted(async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      await getExamDetails() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 初始化高度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      resizeSwipeItemHeight() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <div class={styles.unitDetail}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <Cell center class={styles.unitSection}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           {{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            title: () => <div class={styles.unitTitle}>长笛level1上册测验一</div>, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            title: () => <div class={styles.unitTitle}>{state.examDetail.unitExaminationName}</div>, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             label: () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               <div class={styles.unitCount}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 <div class={styles.qNums}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   <Icon class={styles.icon} name={iconQuestionNums} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  题目数量 <span class={styles.num}>1</span>/4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <div class={styles.qNums}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  <Icon class={styles.icon} name={iconCountDown} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  剩余时长: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  <CountDown 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ref={countDownRef} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    time={state.time} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    format={'mm:ss'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    autoStart={false} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  题目数量{' '} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <span class={styles.num} style={{ paddingLeft: '6px' }}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    {state.currentIndex + 1} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  /{state.examDetail.questionNum || 0} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -79,26 +151,109 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           duration={300} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           touchable={false} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           lazyRender 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // initialSwipe={state.currentIndex} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          style={{ paddingBottom: '12px' }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          height={state.swipeHeight} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           onChange={(index: number) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             state.currentIndex = index 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            resizeSwipeItemHeight() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <ChoiceQuestion v-model:value={state.answerList[0]} type="checkbox" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <ChoiceQuestion v-model:value={state.answerList[1]} type="radio" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <DragQuestion /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <KeepLookQuestion /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <PlayQuestion /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          {state.questionList.map((item: any, index: number) => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // item.questionTypeCode === QuestionType.CHECKBOX && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //   <SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //     <ChoiceQuestion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //       v-model:value={item.userAnswer} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //       index={index + 1} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //       data={item} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //       readOnly 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //       type="radio" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //       showAnalysis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //       analysis={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //         message: item.answerAnalysis, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //         topic: true, // 是否显示结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //         userResult: formatUserResult(item.id) // 用户答题对错 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //       }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //     /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //   </SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class="swipe-item-question"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {item.questionTypeCode === QuestionType.RADIO && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <ChoiceQuestion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    v-model:value={item.userAnswer} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    index={index + 1} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    data={item} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    readOnly 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    type="radio" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    showAnalysis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    analysis={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      message: item.answerAnalysis, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      topic: true, // 是否显示结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      userResult: formatUserResult(item.id) // 用户答题对错 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {item.questionTypeCode === QuestionType.CHECKBOX && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <ChoiceQuestion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    v-model:value={item.userAnswer} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    index={index + 1} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    data={item} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    readOnly 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    type="checkbox" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    showAnalysis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    analysis={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      message: item.answerAnalysis, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      topic: true, // 是否显示结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      userResult: formatUserResult(item.id) // 用户答题对错 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {item.questionTypeCode === QuestionType.SORT && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <DragQuestion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    readOnly 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    v-model:value={item.userAnswer} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    data={item} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    index={index + 1} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    showAnalysis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    analysis={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      message: item.answerAnalysis, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      topic: true, // 是否显示结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      userResult: formatUserResult(item.id) // 用户答题对错 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {item.questionTypeCode === QuestionType.LINK && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <KeepLookQuestion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    readOnly 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    v-model:value={item.userAnswer} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    data={item} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    index={index + 1} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    showAnalysis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    analysis={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      message: item.answerAnalysis, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      topic: true, // 是否显示结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      userResult: formatUserResult(item.id) // 用户答题对错 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {item.questionTypeCode === QuestionType.PLAY && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <PlayQuestion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    readOnly 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    v-model:value={item.userAnswer} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    data={item} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    index={index + 1} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    unitId={state.id as any} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    showAnalysis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    analysis={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      message: item.answerAnalysis, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      topic: true, // 是否显示结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      userResult: formatUserResult(item.id) // 用户答题对错 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ))} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </Swipe> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <OSticky position="bottom" background="white"> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -120,16 +275,11 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               block 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               round 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               type="primary" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              onClick={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // if (state.questionList.length - 1 === state.currentIndex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //   state.visiableSure = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                swipeRef.value?.next() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              onClick={onNextQuestion} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              loading={state.nextStatus} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              disabled={state.nextStatus} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              下一题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              {/* {state.questionList.length === state.currentIndex + 1 ? '测试完成' : '下一题'} */} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {state.questionList.length === state.currentIndex + 1 ? '确定' : '下一题'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             </Button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             <Image 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               src={iconButtonList} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -142,7 +292,19 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {/* 题目集合 */} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <ActionSheet v-model:show={state.visiableAnswer} title="题目列表" safeAreaInsetBottom> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           <AnswerList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            value={[1, 3, 4]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            value={state.questionList} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            answerResult={state.answerResult} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            look 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            statusList={[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                text: '答对', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                color: '#71B0FF' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                text: '答错', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                color: '#FF8486' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             onSelect={(item: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               // 跳转,并且跳过动画 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               swipeRef.value?.swipeTo(item, { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -152,16 +314,6 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </ActionSheet> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <ODialog 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          v-model:show={state.visiableSure} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          title="测验完成" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          message="确认本次测验的题目都完成了吗?\n提交后不可修改哦" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          messageAlign="left" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          showCancelButton 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          cancelButtonText="再等等" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          confirmButtonText="确认完成" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 |