Ver código fonte

三力测试的考试模块完成

JXDS18FUJT 1 ano atrás
pai
commit
4a725045b7
3 arquivos alterados com 117 adições e 38 exclusões
  1. 1 0
      src/hooks/exam/driverExam.ts
  2. 18 12
      src/hooks/exam/threeExam.ts
  3. 98 26
      src/views/threeExam/index.vue

+ 1 - 0
src/hooks/exam/driverExam.ts

@@ -801,6 +801,7 @@ export const useDriverExam = (requestFn: Promise<openApi.selectFreeQuestionInfoR
           element.userAnswer = [];
         }
       });
+      window.sessionStorage.setItem('driverExam_current_list',JSON.stringify(res.rows))
       list.value = res.rows;
       message.destroy()
     }).catch(err => {

+ 18 - 12
src/hooks/exam/threeExam.ts

@@ -478,19 +478,24 @@ export const useThreeExam = (requestFn: Promise<threeApi.threeForceList>, config
             case 3:
                 name = "D";
                 break;
+            case 4:
+                name = "E";
+                break;
+            case 5:
+                name = "F";
+                break;
         }
         return name;
     };
     const switchAnswerBySelect = (userAnswer: string, index: number) => {
-       
         let select = "";
-        for (let index = 1; index <= 6; index++) {
-            if(userAnswer==''){
+        for (let i = 1; i <= 6; i++) {
+            if (userAnswer == '') {
                 break;
             }
-           
-            if (userAnswer == list.value[index]['an' + index]) {
-                select = String.fromCharCode(index + 64)
+
+            if (userAnswer == list.value[index]['an' + i]) {
+                select = String.fromCharCode(i + 64)
             }
         }
         return select;
@@ -505,7 +510,7 @@ export const useThreeExam = (requestFn: Promise<threeApi.threeForceList>, config
                 list.value[oldVal].userAnswer.length
             ) {
                 const userAnswer = list.value[oldVal].userAnswer as string;
-                const answer = list.value[oldVal]['an'+list.value[oldVal].answertrue];
+                const answer = list.value[oldVal]['an' + list.value[oldVal].answertrue];
                 if (answer == userAnswer) {
                     list.value[oldVal].isComplete = true;
                     list.value[oldVal].isError = false;
@@ -515,7 +520,7 @@ export const useThreeExam = (requestFn: Promise<threeApi.threeForceList>, config
                     list.value[oldVal].isError = true;
                     falseNum.value++;
                 }
-            } 
+            }
             //判断对错
             //提示
             if (
@@ -525,14 +530,14 @@ export const useThreeExam = (requestFn: Promise<threeApi.threeForceList>, config
             ) {
 
                 alert(
-                    "正确答案:" + switchAnswerBySelect(list.value[oldVal]['an' + list.value[oldVal].answertrue], oldVal)
+                    "正确答案:" + (switchAnswerBySelect(list.value[oldVal]['an' + list.value[oldVal].answertrue], oldVal))
                 );
             } else if (
                 list.value[oldVal].isError &&
                 list.value[oldVal].type === 1 &&
                 list.value[oldVal].isComplete
             ) {
-                alert("正确答案:" + list.value[oldVal]['an' + list.value[oldVal].answertrue]);
+                alert("正确答案:" + (list.value[oldVal]['an' + list.value[oldVal].answertrue] == '正确' ? '√' : '×'));
             }
 
         }
@@ -556,9 +561,10 @@ export const useThreeExam = (requestFn: Promise<threeApi.threeForceList>, config
     onMounted(() => {
         message.loading('题目加载中', 0)
         requestFn.then(res => {
-            res.rows.forEach(item=>{
-                item.userAnswer =""
+            res.rows.forEach(item => {
+                item.userAnswer = ""
             })
+            window.sessionStorage.setItem("threeExam_current_list",JSON.stringify(res.rows));
             list.value = res.rows;
             message.destroy()
         }).catch(err => {

+ 98 - 26
src/views/threeExam/index.vue

@@ -22,7 +22,7 @@
             <div class="font20 font-bold">姓名 中国驾考网</div>
             <div class="font20 font-bold">性别 男</div>
             <div class="font20 font-bold">车型 C1</div>
-            <div class="font20 font-bold">科目一理论考试</div>
+            <div class="font20 font-bold">三力测试理论考试</div>
           </div>
         </div>
         <div class="w1196 flex-1">
@@ -37,13 +37,21 @@
               ></span
             ></span>
           </div>
-          <div v-if="list[listIndex].questionType !== 1" class="mt30">
-            <div
-              v-for="(item, index) in list[listIndex].optsArr"
-              :key="index"
-              class="pl20 text-left font-bold"
-            >
-              <span>{{ switchIndexBySelect(index) }}</span> {{ item }}
+          <div
+            v-if="list[listIndex].type !== 1"
+            class="mt30 text-left pl20 font-bold"
+          >
+            <div class="" v-if="list[listIndex]['an1']">
+              A.&nbsp;&nbsp;{{ list[listIndex]["an1"] }}
+            </div>
+            <div class="" v-if="list[listIndex]['an2']">
+              B.&nbsp;&nbsp;{{ list[listIndex]["an2"] }}
+            </div>
+            <div class="" v-if="list[listIndex]['an3']">
+              C.&nbsp;&nbsp;{{ list[listIndex]["an3"] }}
+            </div>
+            <div class="" v-if="list[listIndex]['an4']">
+              D.&nbsp;&nbsp;{{ list[listIndex]["an4"] }}
             </div>
           </div>
         </div>
@@ -107,12 +115,30 @@
                           'text-red': list[index * 10 + _index].isError,
                         }"
                       >
-                        {{
-                          switchAnswerBySelect(
-                            list[index * 10 + _index].userAnswer,
-                            index * 10 + _index
-                          )
-                        }}
+                        <span
+                          v-if="
+                            list[index * 10 + _index].type == 1 &&
+                            list[index * 10 + _index].userAnswer
+                          "
+                          >{{
+                            list[index * 10 + _index].userAnswer == "正确"
+                              ? "√"
+                              : "×"
+                          }}</span
+                        >
+                        <span
+                          v-if="
+                            list[index * 10 + _index].type == 2 &&
+                            list[index * 10 + _index].userAnswer
+                          "
+                        >
+                          {{
+                            switchAnswerBySelect(
+                              list[index * 10 + _index].userAnswer,
+                              index * 10 + _index
+                            )
+                          }}</span
+                        >
                       </div>
                     </td>
                   </tr>
@@ -134,7 +160,9 @@
               v-if="list[listIndex].type == 1"
               class="ml90 font-bold inline-block"
             >
-              您选择的答案:{{ list[listIndex].userAnswer }}
+              您选择的答案:{{
+                list[listIndex].userAnswer == "正确" ? "√" : "×"
+              }}
             </div>
             <div
               v-if="list[listIndex].type != 1"
@@ -149,6 +177,7 @@
         <div class="flex cursor-pointer mt20">
           <!-- 答案列表 -->
           <div
+            v-if="list[listIndex]['an1']"
             @click="
               list[listIndex].isComplete
                 ? ''
@@ -156,15 +185,14 @@
             "
             class="w46 lh46 h46 answer-select font20 font-bold mr15 flex-grow-0"
           >
-            <span v-if="list[listIndex].type == 1">{{
-              list[listIndex]["an1"] 
-            }}</span>
-            <span v-if="list[listIndex].questionType !== 1">{{
-              switchIndexBySelect()
+            <span v-if="list[listIndex].type == 1">{{ "√" }}</span>
+            <span v-if="list[listIndex].type !== 1">{{
+              switchIndexBySelect(0)
             }}</span>
           </div>
 
           <div
+            v-if="list[listIndex]['an2']"
             @click="
               list[listIndex].isComplete
                 ? ''
@@ -172,11 +200,38 @@
             "
             class="w46 lh46 h46 answer-select font20 font-bold mr15 flex-grow-0"
           >
-            <span v-if="list[listIndex].type == 1">{{
-              list[listIndex]["an2"] 
+            <span v-if="list[listIndex].type == 1">{{ "×" }}</span>
+            <span v-if="list[listIndex].type !== 1">{{
+              switchIndexBySelect(1)
             }}</span>
-            <span v-if="list[listIndex].questionType !== 1">{{
-              switchIndexBySelect()
+          </div>
+          <div
+            v-if="list[listIndex]['an3']"
+            @click="
+              list[listIndex].isComplete
+                ? ''
+                : setUserAnswer(list[listIndex]['an3'])
+            "
+            class="w46 lh46 h46 answer-select font20 font-bold mr15 flex-grow-0"
+          >
+            <span v-if="list[listIndex].type == 1">{{ "×" }}</span>
+            <span v-if="list[listIndex].type !== 1">{{
+              switchIndexBySelect(2)
+            }}</span>
+          </div>
+
+          <div
+            v-if="list[listIndex]['an4']"
+            @click="
+              list[listIndex].isComplete
+                ? ''
+                : setUserAnswer(list[listIndex]['an4'])
+            "
+            class="w46 lh46 h46 answer-select font20 font-bold mr15 flex-grow-0"
+          >
+            <span v-if="list[listIndex].type == 1">{{ "×" }}</span>
+            <span v-if="list[listIndex].type !== 1">{{
+              switchIndexBySelect(3)
             }}</span>
           </div>
           <!-- <div class="w46 lh46 h46 answer-select font20 font-bold flex-grow-0">
@@ -188,7 +243,7 @@
         class="border-b-gray-200 border-b w-full h84 text-left pr30 pl30 flex justify-between"
       >
         <div class="text-red-500 pt15 font-bold">
-          操作提示:{{ getProblemTypeName(list[listIndex].questionType) }}
+          操作提示:{{ getProblemTypeName(list[listIndex].type) }}
         </div>
         <div class="flex h-full w390 items-center justify-between">
           <div @click="preProblem()" class="w120 lh46 bottom-button">
@@ -214,9 +269,16 @@
       <div class="h-full">
         <img
           class="h-full mr-auto ml-auto"
-          v-if="list[listIndex].mediaUrl"
+          v-if="isImageUrl(list[listIndex].mediaUrl)"
           :src="list[listIndex].mediaUrl"
         />
+        <video
+          class="h-full mr-auto ml-auto"
+          autoplay
+          loop
+          v-if="isVideoUrl(list[listIndex].mediaUrl)"
+          :src="list[listIndex].mediaUrl"
+        ></video>
         <!-- <video
           v-if="list[listIndex].mediaUrl"
           :src="list[listIndex].mediaUrl"
@@ -250,9 +312,19 @@ export default defineComponent({
   name: "driverExam",
   setup() {
     const route = useRoute();
+    const isImageUrl = (url: string) => {
+      var reg = /\.(png|jpg|gif|jpeg|webp)$/;
+      return reg.test(url);
+    };
+    const isVideoUrl = (url: string) => {
+      var reg = /\.(mp4|rmvb|3gp|flv|avi)$/;
+      return reg.test(url);
+    };
     return {
       alertVisible: ref(false),
       dialogVisible: ref(false),
+      isImageUrl,
+      isVideoUrl,
       ...useThreeExam(api.three.threeForceSelectTestQuestionInfoList()),
     };
   },