瀏覽代碼

解决断网情况下,网络请求被缓存的问题。练习结束时显示正确率。离线考试防止多次发下载的网络请求。

Michael Wang 6 年之前
父節點
當前提交
dafa40e83c

+ 8 - 3
src/features/OfflineExam/OfflineExamList.vue

@@ -29,8 +29,8 @@
             <template v-if="!course.isvalid">
               <div v-if="course.paperId" style="display: grid; grid-gap: 10px">
                 <i-button class="qm-primary-button" @click="previewPaper(course)">查看试卷</i-button>
-                <i-button class="qm-primary-button">
-                  <a style="color: white" :href="tk_server_url+'/api/ecs_ques/paper/export/'+course.paperId+'/PAPER/'+user.rootOrgName+'/'+course.paperId + '/offLine?$key='+user.key+'&$token='+user.token" download>下载试卷</a>
+                <i-button :disabled="disableDownloadPaperBtn" class="qm-primary-button">
+                  <a :style="{color: disableDownloadPaperBtn ? 'gray' : 'white'}" :disabled="disableDownloadPaperBtn" @click="tempDisableBtn" :href="tk_server_url+'/api/ecs_ques/paper/export/'+course.paperId+'/PAPER/'+user.rootOrgName+'/'+course.paperId + '/offLine?$key='+user.key+'&$token='+user.token" download>下载试卷</a>
                 </i-button>
                 <!-- <i-button class="qm-primary-button">
                   <a class="qm-primary-button" href="https://ecs-static.qmth.com.cn/offline-exam/答题卡.zip" download>下载答题卡</a>
@@ -67,7 +67,8 @@ export default {
   name: "EcsOfflineList",
   data() {
     return {
-      tk_server_url: TK_SERVER_URL
+      tk_server_url: TK_SERVER_URL,
+      disableDownloadPaperBtn: true
     };
   },
   props: {
@@ -92,6 +93,10 @@ export default {
         "/#/preview_paper/" +
         course.paperId +
         "?isback=true";
+    },
+    tempDisableBtn() {
+      this.disableDownloadPaperBtn = true;
+      setTimeout(() => (this.disableDownloadPaperBtn = false), 10 * 1000);
     }
   },
   components: {

+ 1 - 1
src/features/OnlineExam/Examing/ExamingEnd.vue

@@ -5,7 +5,7 @@
       <h1 class="">考试已结束</h1>
       <div><img class="user-avatar" :src="user.photoPath" alt="无底照" /></div>
       <div class="qm-big-text score-text" v-if="showObjectScore && !examResult.isWarn">客观题得分: <span style="color: red">{{examResult.objectiveScore}}</span></div>
-      <div class="qm-big-text score-text" v-if="examType !== 'ONLINE' && showObjectScore && !examResult.isWarn">客观题正确率: <span style="color: red">{{examResult.objectiveAccuracy}}%</span></div>
+      <div class="qm-big-text score-text" v-if="exam.examType !== 'ONLINE' && showObjectScore && !examResult.isWarn">客观题正确率: <span style="color: red">{{examResult.objectiveAccuracy}}%</span></div>
       <div class="qm-big-text score-text" v-if="examResult.isWarn">客观题得分: 成绩待审核</div>
       <h1 v-if="examResult.isWarn" class="">违纪提示: </h1>
       <div v-if="examResult.isWarn" class="" style="text-align: left;  padding-bottom: 20px">

+ 1 - 3
src/features/OnlineExam/Examing/QuestionNavView.vue

@@ -6,9 +6,7 @@
         <div class="list">
           <template v-for="(_, index2) in sectionQuestions(section)">
             <template v-if="isSelectedQuestion(section, index2)">
-              <div :key="index2" :class="itemClass(section, index2)">
-                <router-link :to="{ path: `/online-exam/exam/${$route.params.examId}/examRecordData/${$route.params.examRecordDataId}/order/${getQuestionNum(section, index2).order}`}">{{index2+1}}</router-link>
-              </div>
+              <router-link :key="index2" :class="itemClass(section, index2)" :to="{ path: `/online-exam/exam/${$route.params.examId}/examRecordData/${$route.params.examRecordDataId}/order/${getQuestionNum(section, index2).order}`}">{{index2+1}}</router-link>
             </template>
           </template>
         </div>

+ 12 - 3
src/utils/axiosCache.js

@@ -7,11 +7,20 @@ export default function(get, regexes) {
 
     if (regexes.some(regex => url.match(regex))) {
       if (cache.has(key)) {
-        return cache.get(key);
+        const request = cache.get(key);
+        // console.log("cache.get(key):" + request.then(v => console.log(v)));
+        return request;
       } else {
         const request = get(...arguments);
-        cache.set(key, request);
-        return request;
+        return request.then(v => {
+          if (v.response) {
+            // 如果能取到数据
+            cache.set(key, request);
+          }
+          return request;
+        });
+
+        // return request;
       }
     } else {
       const request = get(...arguments);