فهرست منبع

add: 添加隐藏评测功能

weijin 4 سال پیش
والد
کامیت
f45b71abb1
3فایلهای تغییر یافته به همراه23 افزوده شده و 1 حذف شده
  1. 6 0
      src/api/exam.ts
  2. 1 0
      src/api/types.d.ts
  3. 16 1
      src/views/teacher/components/TeacherExamInfoCard.vue

+ 6 - 0
src/api/exam.ts

@@ -83,3 +83,9 @@ export const setExamPaperQuestions = (
     questionScoreMap: questions
   })
 }
+
+export const setExamIsHidden = (examId: ID, hidden: boolean) => {
+  return axios.put<ReceivedData>(
+    `${EXAM_MODULE}/update/hidden?examId=${examId}&hidden=${hidden}`
+  )
+}

+ 1 - 0
src/api/types.d.ts

@@ -53,6 +53,7 @@ export interface ExamSerializer {
   startTime: LocalDateTime
   examName: string
   isPublic: boolean
+  isHidden: boolean
   // 上边是创建评测所需的信息
   examId?: number
   inviteCode?: string

+ 16 - 1
src/views/teacher/components/TeacherExamInfoCard.vue

@@ -22,6 +22,12 @@
         }}</v-chip>
       </v-col>
       <v-col class="mr-3 d-flex justify-end">
+        <v-btn v-if="!examInfo.isHidden" class="mx-2" @click="hideExam(true)">
+          隐藏考试
+        </v-btn>
+        <v-btn v-else class="mx-2" @click="hideExam(false)">
+          显示考试
+        </v-btn>
         <v-btn
           v-if="state === '已结束'"
           color="secondary"
@@ -105,7 +111,7 @@ import {
 } from '@/api/types'
 import { computeExamStateText, TIME_FORMAT, timeLength } from '@/utils/common'
 import { getExamJoinedUsers } from '@/api/user'
-import { extendExamTime } from '@/api/exam'
+import { extendExamTime, setExamIsHidden } from '@/api/exam'
 import dayjs from 'dayjs'
 
 export default Vue.extend({
@@ -191,6 +197,15 @@ export default Vue.extend({
           examId: examId
         }
       })
+    },
+    hideExam(hidden: boolean) {
+      if (this.examInfo.examId) {
+        setExamIsHidden(this.examInfo.examId, hidden).then(({ data }) => {
+          if (data.result) {
+            this.examInfo.isHidden = hidden
+          }
+        })
+      }
     }
   },
   mounted() {