Bladeren bron

feat: 支持多次考试

yhd12345 3 jaren geleden
bovenliggende
commit
aa09011cda
4 gewijzigde bestanden met toevoegingen van 20 en 4 verwijderingen
  1. 1 0
      src/api/types.d.ts
  2. 3 1
      src/views/student/Overview.vue
  3. 6 2
      src/views/student/StudentExamList.vue
  4. 10 1
      src/views/teacher/ExamCreate.vue

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

@@ -62,6 +62,7 @@ export interface ExamSerializer {
   examName: string
   isPublic: boolean
   isHidden: boolean
+  examCount: number
   courseId?: ID
   course?: CourseSerializer
   // 上边是创建评测所需的信息

+ 3 - 1
src/views/student/Overview.vue

@@ -106,7 +106,9 @@ export default Vue.extend({
           this.examList.forEach(function(exam) {
             if (exam.examId) {
               getExamSubmitRecordsByUserId(exam.examId).then(({ data }) => {
-                if (data.result.find((val) => !val.message)) {
+                //若用户提交次数大于等于考试允许次数 则设定为已完成
+                console.log(data.result)
+                if (data.result.length >= exam.examCount) {
                   that.$set(exam, 'isFinished', true)
                 } else {
                   that.$set(exam, 'isFinished', false)

+ 6 - 2
src/views/student/StudentExamList.vue

@@ -110,9 +110,13 @@ export default Vue.extend({
           this.examList.forEach(function(exam) {
             if (exam.examId) {
               getExamSubmitRecordsByUserId(exam.examId).then(({ data }) => {
-                if (data.result.find((val) => !val.message)) {
+                if (data.result.length >= exam.examCount) {
                   that.$set(exam, 'isFinished', true)
-                } else {
+                }
+                // if (data.result.find((val) => !val.message)) {
+                //   that.$set(exam, 'isFinished', true)
+                // }
+                else {
                   that.$set(exam, 'isFinished', false)
                 }
               })

+ 10 - 1
src/views/teacher/ExamCreate.vue

@@ -219,6 +219,13 @@
           label="备注"
           class="ma-4 mb-8"
         ></v-text-field>
+        <v-text-field
+          v-model="examCount"
+          label="允许考试的次数"
+          class="ma-4"
+          type="number"
+        >
+        </v-text-field>
         <v-btn
           color="success"
           class="ma-4"
@@ -298,6 +305,7 @@ export default Vue.extend({
       endDate: '',
       endTime: '',
       comment: '',
+      examCount: 1,
       antiCheating: false,
       isPrivate: false,
       valid: true,
@@ -390,7 +398,8 @@ export default Vue.extend({
         antiCheating: this.antiCheating,
         isPublic: !this.isPrivate,
         isHidden: false,
-        courseId: this.course
+        courseId: this.course,
+        examCount: this.examCount
       } as ExamSerializer
       console.log('创建评测', obj)
       createExam(obj).then(({ data }) => {