Browse Source

fix: fix quiz list

WuXinyu 6 years ago
parent
commit
ab0c3fe41a

+ 1 - 1
src/server/quiz.js

@@ -52,7 +52,7 @@ export function deleteQuiz(quizId) {
 
 export function submitQuiz({ quizId, answers = [] }) {
   return axios
-    .post(useQuizServer(`/${quizId}/student-answer`), { answers })
+    .put(useQuizServer(`/${quizId}/student-answer`), { answers })
     .then(res => res.data)
 }
 

+ 6 - 2
src/views/quiz/QuizDetail.vue

@@ -1,6 +1,7 @@
 <template>
   <div>
     <back-title>{{ quizDetail.name }}</back-title>
+    <quiz-result v-if="quizDetail.state === QuizState.closed" :quiz-id="$route.params.quizId" />
     <quiz-detail-factory :quiz-detail="quizDetail" />
   </div>
 </template>
@@ -10,12 +11,15 @@ import { createDefaultQuiz } from '@/views/quiz/utils/default'
 import { getQuizById } from '@/server/quiz'
 import BackTitle from '@/components/Basic/BackTitle'
 import QuizDetailFactory from '@/views/quiz/components/QuizDetailFactory'
+import QuizResult from '@/views/quiz/components/QuizResult'
+import { QuizState } from '@/server/enums/quiz-state'
 
 export default {
-  components: { QuizDetailFactory, BackTitle },
+  components: { QuizResult, QuizDetailFactory, BackTitle },
   data() {
     return {
-      quizDetail: createDefaultQuiz()
+      quizDetail: createDefaultQuiz(),
+      QuizState
     }
   },
   mounted() {

+ 1 - 1
src/views/quiz/components/ChoiceQuestionDetail.vue

@@ -10,7 +10,7 @@
         :key="index"
         class="choice"
       >
-        <div class="choice__index">{{ index }}</div>
+        <div class="choice__index">{{ index }}.</div>
         <markdown-section :raw="item" />
       </section>
     </editor-section>

+ 32 - 0
src/views/quiz/components/QuizResult.vue

@@ -0,0 +1,32 @@
+<template>
+  <div>平均分:{{ result.average }}</div>
+</template>
+
+<script>
+import { getQuizResult } from '@/server/quiz'
+
+export default {
+  name: 'QuizResult',
+  props: {
+    quizId: {
+      type: String,
+      required: true
+    }
+  },
+  data() {
+    return {
+      result: {}
+    }
+  },
+  watch: {
+    quizId: {
+      immediate: true,
+      handler(id) {
+        getQuizResult(id)
+          .then(res => (this.result = res))
+          .catch(err => this.$setErrorMessage(err.response.data.msg))
+      }
+    }
+  }
+}
+</script>

+ 1 - 1
src/views/student/tabs/StudentQuiz.vue

@@ -9,7 +9,7 @@
         <div>{{ quiz.slide && quiz.slide.name }}</div>
       </router-link>
       <div class="sub-title">已完成的测验 & 结果</div>
-      <router-link :key="quiz.id" :to="`/student/quiz/${quiz.id}`" v-for="quiz in ongoingQuizzes">
+      <router-link :key="quiz.id" :to="`/student/quiz/${quiz.id}`" v-for="quiz in closedQuizzes">
         <div>{{ quiz.name }}</div>
         <div>{{ quiz.course && quiz.course.name }}</div>
         <div>{{ quiz.slide && quiz.slide.name }}</div>

+ 1 - 1
src/views/teacher/components/TeacherSlideDetail.vue

@@ -67,7 +67,7 @@ export default {
       this.$router.push({ name: 'pdf-reader', params: { slide: this.slide } })
     },
     handleQuizSetting () {
-      this.$router.push({ name: 'teacher-quiz-setting', params: { slideId: '123' } })
+      this.$router.push({ name: 'teacher-quiz-setting', params: { slideId: this.slide.id } })
     },
     handleDeleteSlide () {
       const msg = '请谨慎操作:确定删除本课件吗:\n\n课件名称:' + this.slide.name

+ 4 - 2
vue.config.js

@@ -4,13 +4,15 @@ module.exports = {
   devServer: {
     proxy: {
       '^/api/question': {
-        target: 'http://localhost:4000',
+        // target: 'http://localhost:4000',
+        target: 'http://localhost:8080',
         ws: true,
         changeOrigin: true
       },
 
       '^/api/quiz': {
-        target: 'http://localhost:4000',
+        // target: 'http://localhost:4000',
+        target: 'http://localhost:8080',
         ws: true,
         changeOrigin: true
       }