Bladeren bron

update exam

reghao 1 jaar geleden
bovenliggende
commit
06b4afec0b
3 gewijzigde bestanden met toevoegingen van 75 en 79 verwijderingen
  1. 2 2
      src/api/exam.js
  2. 38 28
      src/views/exam/ExamPaperPreview.vue
  3. 35 49
      src/views/exam/ExamPaperResult.vue

+ 2 - 2
src/api/exam.js

@@ -48,8 +48,8 @@ export function getPapers(param) {
   return get(examApi.getPaper, param)
 }
 
-export function getPaper(examId) {
-  return get(examApi.getPaper + '/' + examId)
+export function getPaper(paperId) {
+  return get(examApi.getPaper + '/' + paperId)
 }
 
 export function getPaperKeyValues() {

+ 38 - 28
src/views/exam/ExamPaperPreview.vue

@@ -3,17 +3,19 @@
     <el-header>
       <el-row>
         <el-col style="border-bottom: 1px solid #f5f5f5">
-          <span class="startExam">试卷名字:</span>
-          <span style="color: red;font-size: 18px;">{{ examInfo.examId }}</span>
-          <span class="examTitle">考试时长:</span>
-          <span style="color: red;font-size: 18px;">{{ examInfo.examDuration }} 分钟</span>
-          <el-button
-            type="warning"
-            round
-            style="background-color: #ffd550;float: right;color: black;font-weight: 800"
-            @click="uploadExamToAdmin"
-          >提交试卷
-          </el-button>
+          <span class="startExam">试卷名字: </span>
+          <span style="color: red;font-size: 18px;">{{ examInfo.name }}</span>
+          <span class="examTitle">考试时长: </span>
+          <span style="color: red;font-size: 18px;">{{ examInfo.duration }} 分钟</span>
+          <div v-if="paperStatus === 2">
+            <el-button
+              type="warning"
+              round
+              style="background-color: #ffd550;float: right;color: black;font-weight: 800"
+              @click="uploadExamToAdmin"
+            >提交试卷
+            </el-button>
+          </div>
         </el-col>
       </el-row>
     </el-header>
@@ -24,8 +26,6 @@
           <el-row v-for="(item, index) in questionMap" :key="index">
             <el-row class="card-style">
               <el-card>
-                <!--                <span>{{item[0]}}</span>-->
-                <!--                <span>{{item[1]}}</span>-->
                 <!-- 题目信息 -->
                 <div>
                   <span v-if="item[1].questionType === 1">【单选题】</span>
@@ -39,10 +39,18 @@
                   <br>
                   <br>
                   <i class="num">{{ item[1].pos }}</i>
+                  <span style="color: red">
+                    ({{ item[1].score }} 分)
+                  </span>
                   <span v-html="item[1].questionContent" />
                   <div v-if="item[1].questionType === 8">
                     <div v-for="(child, childIndex) in item[1].children" :key="childIndex">
                       <div>
+                        <i class="num">{{ item[1].pos }}</i>
+                        <i class="num">{{ child.pos }}</i>
+                        <span style="color: red">
+                          ({{ child.score }} 分)
+                        </span>
                         <span v-html="child.questionContent" />
                       </div>
                       <!-- 单选和判断题候选答案列表 -->
@@ -283,7 +291,7 @@
 </template>
 
 <script>
-import { getExamInfo, getPaperQuestions, submitExam } from '@/api/exam'
+import { getPaper, submitExam } from '@/api/exam'
 
 export default {
   name: 'ExamPaperPreview',
@@ -291,7 +299,12 @@ export default {
     return {
       paperStatus: 1,
       // 当前考试的信息
-      examInfo: {},
+      examInfo: {
+        name: '',
+        description: '',
+        duration: 0,
+        totalScore: 0
+      },
       // 当前的考试题目
       questionList: [
         {
@@ -354,8 +367,7 @@ export default {
     }
 
     const paperId = this.$route.params.paperId
-    this.getQuestionInfo1(paperId)
-    this.getExamInfo(paperId)
+    this.getPaperDeatil(paperId)
   },
   methods: {
     renderByMathjax() {
@@ -369,18 +381,16 @@ export default {
       })
     },
     // 查询当前考试的信息
-    getExamInfo(paperId) {
-      getExamInfo(paperId).then((resp) => {
-        if (resp.code === 0) {
-          this.examInfo = resp.data
-        }
-      })
-    },
-    // 查询考试的题目信息
-    getQuestionInfo1(paperId) {
-      getPaperQuestions(paperId).then(resp => {
+    getPaperDeatil(paperId) {
+      getPaper(paperId).then((resp) => {
         if (resp.code === 0) {
-          this.questionList = resp.data || []
+          const respData = resp.data
+          this.examInfo.name = respData.name
+          this.examInfo.description = respData.description
+          this.examInfo.duration = respData.duration
+          this.examInfo.totalScore = respData.totalScore
+
+          this.questionList = respData.questions
           // 重置问题的顺序 单选 ->  -> 判断 -> 简答
           this.questionList = this.questionList.sort(function(a, b) {
             return a.questionType - b.questionType

+ 35 - 49
src/views/exam/ExamPaperResult.vue

@@ -3,19 +3,33 @@
     <el-header>
       <el-row>
         <el-col style="border-bottom: 1px solid #f5f5f5">
-          <span class="startExam">试卷名字:</span>
-          <span style="color: red;font-size: 18px;">{{ examInfo.examName }}</span>
-          <span class="examTitle">考试时间:</span>
-          <span style="color: red;font-size: 18px;">{{ examInfo.examTime }}</span>
-          <div v-if="paperStatus === 3">
-            <el-button
-              type="warning"
-              round
-              style="background-color: #ffd550;float: right;color: black;font-weight: 800"
-              @click="uploadExamToAdmin"
-            >提交阅卷
-            </el-button>
-          </div>
+          <el-row>
+            <span class="examTitle">试卷名字: </span>
+            <span style="color: red;font-size: 18px;">{{ examInfo.examName }}</span>
+            <span class="examTitle">试卷总分: </span>
+            <span style="color: red;font-size: 18px;">{{ examInfo.paperScore }} 分</span>
+            <span class="examTitle">考试时间: </span>
+            <span style="color: red;font-size: 18px;">{{ examInfo.examTime }}</span>
+          </el-row>
+          <el-row>
+            <span class="examTitle">总分: </span>
+            <span style="color: red;font-size: 18px;">{{ examInfo.userScore }} 分</span>
+            <span class="examTitle">客观题得分: </span>
+            <span style="color: red;font-size: 18px;">{{ examInfo.objectiveScore }} 分</span>
+            <span class="examTitle">主观题得分: </span>
+            <span style="color: red;font-size: 18px;">{{ examInfo.subjectiveScore }} 分</span>
+          </el-row>
+          <el-row>
+            <div v-if="paperStatus === 3">
+              <el-button
+                type="warning"
+                round
+                style="background-color: #ffd550;float: right;color: black;font-weight: 800"
+                @click="uploadExamToAdmin"
+              >提交阅卷
+              </el-button>
+            </div>
+          </el-row>
         </el-col>
       </el-row>
     </el-header>
@@ -43,8 +57,8 @@
                     ({{ item.questionInfo.score }} 分)
                   </span>
                   <span v-html="item.questionInfo.questionContent" />
-                  <span v-if="item.questionInfo.questionType !== 8" style="color: green">
-                    (得分: {{ item.questionInfo.score }} 分)
+                  <span style="color: green">
+                    (得分: {{ item.userScore }} 分)
                   </span>
                   <div v-if="item.questionInfo.questionType !== 8">
                     <el-button
@@ -64,7 +78,7 @@
                         </span>
                         <span v-html="child.questionInfo.questionContent" />
                         <span style="color: green">
-                          (得分: {{ child.questionInfo.score }} 分)
+                          (得分: {{ child.userScore }} 分)
                         </span>
                         <el-button
                           type="warning"
@@ -338,25 +352,6 @@
               </div>
             </el-card>
           </el-row>
-          <el-row class="card-style">
-            <el-card>
-              <el-checkbox-group
-                v-for="(value, key) in items"
-                :key="key"
-                v-model="test"
-                text-color="red"
-              >
-                <el-checkbox-button
-                  :label="value.content"
-                  disabled
-                  border
-                  style="margin-top: 20px"
-                >
-                  <span>{{ value.content }}</span>
-                </el-checkbox-button>
-              </el-checkbox-group>
-            </el-card>
-          </el-row>
           <el-row class="card-style">
             <el-card>
               <div>
@@ -517,7 +512,6 @@ export default {
       },
       questionMap: new Map(),
       childMap: new Map(),
-      userAnswers: new Map(),
       questionResults: [],
       questionMarks: [
         { score: 0, review: '' }, { score: 0, review: '' }, { score: 0, review: '' }, { score: 0, review: '' }, { score: 0, review: '' },
@@ -531,18 +525,6 @@ export default {
         { score: 0, review: '' }, { score: 0, review: '' }, { score: 0, review: '' }, { score: 0, review: '' }, { score: 0, review: '' },
         { score: 0, review: '' }, { score: 0, review: '' }, { score: 0, review: '' }, { score: 0, review: '' }, { score: 0, review: '' },
         { score: 0, review: '' }, { score: 0, review: '' }, { score: 0, review: '' }, { score: 0, review: '' }, { score: 0, review: '' }
-      ],
-      test: ['选项一', '选项三'],
-      items: [
-        { id: 10, content: '选项一', disabled: false, checked: true },
-        { id: 11, content: '选项二', disabled: false, checked: false },
-        { id: 12, content: '选项三', disabled: false, checked: false }
-      ],
-      test1: '选项一',
-      items1: [
-        { id: 0, content: '选项一', disabled: false, checked: true },
-        { id: 1, content: '选项二', disabled: false, checked: false },
-        { id: 2, content: '选项三', disabled: false, checked: false }
       ]
     }
   },
@@ -579,9 +561,13 @@ export default {
           const respData = resp.data
           this.examInfo = {
             examId: respData.examId,
+            resultId: respData.resultId,
             examName: respData.examName,
+            paperScore: respData.paperScore,
             examTime: respData.examTime,
-            resultId: respData.resultId
+            userScore: respData.userScore,
+            objectiveScore: respData.objectiveScore,
+            subjectiveScore: respData.subjectiveScore
           }
           this.questionResults = resp.data.questionResults
           const paperId = resp.data.examId