Bladeren bron

删除简答题,阅读题的简答题配题改为问答题

dusenyao 1 jaar geleden
bovenliggende
commit
b9b6654e55

+ 6 - 6
package-lock.json

@@ -3176,9 +3176,9 @@
       }
     },
     "axios": {
-      "version": "1.6.4",
-      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.6.4.tgz",
-      "integrity": "sha512-heJnIs6N4aa1eSthhN9M5ioILu8Wi8vmQW9iHQ9NUvfkJb0lEEDUiIdQNAuBtfUt3FxReaKdpQA5DbmMOqzF/A==",
+      "version": "1.6.5",
+      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.6.5.tgz",
+      "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==",
       "requires": {
         "follow-redirects": "^1.15.4",
         "form-data": "^4.0.0",
@@ -4643,9 +4643,9 @@
       }
     },
     "dompurify": {
-      "version": "3.0.7",
-      "resolved": "https://registry.npmmirror.com/dompurify/-/dompurify-3.0.7.tgz",
-      "integrity": "sha512-BViYTZoqP3ak/ULKOc101y+CtHDUvBsVgSxIF1ku0HmK6BRf+C03MC+tArMvOPtVtZp83DDh5puywKDu4sbVjQ=="
+      "version": "3.0.8",
+      "resolved": "https://registry.npmmirror.com/dompurify/-/dompurify-3.0.8.tgz",
+      "integrity": "sha512-b7uwreMYL2eZhrSCRC4ahLTeZcPZxSmYfmcQGXGkXiZSNW1X85v+SDM5KsWcpivIiUBH47Ji7NtyUdpLeF5JZQ=="
     },
     "domready": {
       "version": "1.0.8",

+ 2 - 2
package.json

@@ -10,9 +10,9 @@
   },
   "dependencies": {
     "@tinymce/tinymce-vue": "^3.2.8",
-    "axios": "^1.6.4",
+    "axios": "^1.6.5",
     "core-js": "^3.35.0",
-    "dompurify": "^3.0.7",
+    "dompurify": "^3.0.8",
     "element-ui": "^2.15.14",
     "hanzi-writer": "^3.6.1",
     "js-audio-recorder": "^1.0.7",

+ 7 - 1
src/views/exercise_questions/answer/index.vue

@@ -93,7 +93,7 @@
         </div>
       </el-popover>
 
-      <div>
+      <div class="footer-opeartion">
         <template v-if="curQuestionIndex === -1 && !(user_answer_record_info.is_exist_answer_record === 'true')">
           <el-button type="primary" round @click="startAnswer">开始答题</el-button>
         </template>
@@ -616,6 +616,12 @@ export default {
       }
     }
 
+    &-opeartion {
+      .el-button {
+        font-size: 16px;
+      }
+    }
+
     .el-button {
       padding: 9px 40px;
     }

+ 2 - 2
src/views/exercise_questions/create/components/exercises/ReadQuestion.vue

@@ -106,7 +106,7 @@ import SelectQuestion from '@/views/exercise_questions/create/components/exercis
 import JudgeQuestion from '@/views/exercise_questions/create/components/exercises/JudgeQuestion.vue';
 import MatchingQuestion from '@/views/exercise_questions/create/components/exercises/MatchingQuestion.vue';
 import FillQuestion from '@/views/exercise_questions/create/components/exercises/FillQuestion.vue';
-import ShortAnswerQuestion from './ShortAnswerQuestion.vue';
+import EssayQuestion from './EssayQuestion.vue';
 import RichText from '@/components/common/RichText.vue';
 
 export default {
@@ -129,7 +129,7 @@ export default {
         judge: JudgeQuestion,
         matching: MatchingQuestion,
         fill: FillQuestion,
-        short_answer: ShortAnswerQuestion,
+        essay_question: EssayQuestion,
       },
     };
   },

+ 0 - 113
src/views/exercise_questions/create/components/exercises/ShortAnswerQuestion.vue

@@ -1,113 +0,0 @@
-<template>
-  <QuestionBase>
-    <template #content>
-      <div class="stem">
-        <RichText v-model="data.stem" :font-size="18" placeholder="输入题干" />
-
-        <el-input
-          v-if="isEnable(data.property.is_enable_description)"
-          v-model="data.description"
-          rows="3"
-          resize="none"
-          type="textarea"
-          placeholder="输入文段"
-        />
-
-        <el-input
-          v-if="isEnable(data.property.is_enable_reference_answer)"
-          v-model="data.reference_answer"
-          type="textarea"
-          rows="3"
-          placeholder="输入参考答案"
-        />
-      </div>
-    </template>
-
-    <template #property>
-      <el-form :model="data.property" label-width="72px" label-position="left">
-        <el-form-item label="题号">
-          <el-input v-model="data.property.question_number" />
-        </el-form-item>
-        <el-form-item>
-          <el-radio
-            v-for="{ value, label } in questionNumberTypeList"
-            :key="value"
-            v-model="data.other.question_number_type"
-            :label="value"
-          >
-            {{ label }}
-          </el-radio>
-        </el-form-item>
-
-        <el-form-item label="题干题号">
-          <el-select v-model="data.property.stem_question_number_font_size">
-            <el-option v-for="item in fontSizeList" :key="item" :label="item" :value="item" />
-          </el-select>
-        </el-form-item>
-
-        <el-form-item label="提示">
-          <el-radio
-            v-for="{ value, label } in switchOption"
-            :key="value"
-            v-model="data.property.is_enable_description"
-            :label="value"
-          >
-            {{ label }}
-          </el-radio>
-        </el-form-item>
-
-        <el-form-item label="参考答案">
-          <el-radio
-            v-for="{ value, label } in switchOption"
-            :key="value"
-            v-model="data.property.is_enable_reference_answer"
-            :label="value"
-          >
-            {{ label }}
-          </el-radio>
-        </el-form-item>
-
-        <el-form-item label="分值">
-          <el-radio
-            v-for="{ value, label } in scoreTypeList"
-            :key="value"
-            v-model="data.property.score_type"
-            :label="value"
-          >
-            {{ label }}
-          </el-radio>
-        </el-form-item>
-        <el-form-item>
-          <el-input-number
-            v-model="data.property.score"
-            :min="0"
-            :step="data.property.score_type === scoreTypeList[0].value ? 1 : 0.1"
-          />
-        </el-form-item>
-      </el-form>
-    </template>
-  </QuestionBase>
-</template>
-
-<script>
-import QuestionMixin from '../common/QuestionMixin.js';
-
-import { shortAnswerData } from '@/views/exercise_questions/data/shortAnswer';
-
-export default {
-  name: 'ReadAloudQuestion',
-  mixins: [QuestionMixin],
-  data() {
-    return {
-      data: JSON.parse(JSON.stringify(shortAnswerData)),
-    };
-  },
-  methods: {},
-};
-</script>
-
-<style lang="scss" scoped>
-.stem {
-  border-bottom-width: 0 !important;
-}
-</style>

+ 1 - 1
src/views/exercise_questions/data/read.js

@@ -7,7 +7,7 @@ export const questionTypeOption = [
   { label: '判断题', value: 'judge' },
   { label: '填空题', value: 'fill' },
   { label: '连线题', value: 'matching' },
-  { label: '问答题', value: 'short_answer' },
+  { label: '问答题', value: 'essay_question' },
 ];
 
 // 题型类型列表

+ 0 - 28
src/views/exercise_questions/data/shortAnswer.js

@@ -1,28 +0,0 @@
-import { stemTypeList, questionNumberTypeList, scoreTypeList, switchOption, fontSizeList } from './common';
-
-// 问答题数据模板
-export const shortAnswerData = {
-  type: 'short_answer', // 题型
-  stem: '', // 题干
-  description: '', // 描述
-  reference_answer: '', // 参考答案
-  file_id_list: [], // 文件 id 列表
-  answer: {
-    score: 1,
-    score_type: scoreTypeList[0].value,
-  }, // 答案
-  // 题型属性
-  property: {
-    stem_type: stemTypeList[1].value, // 题干类型
-    question_number: '1', // 题号
-    stem_question_number_font_size: fontSizeList[6], // 题干题号
-    is_enable_description: switchOption[0].value, // 是否启用描述
-    is_enable_reference_answer: switchOption[0].value, // 是否开启参考答案
-    score: 1, // 分值
-    score_type: scoreTypeList[0].value, // 分值类型
-  },
-  // 其他属性
-  other: {
-    question_number_type: questionNumberTypeList[1].value, // 题号类型
-  },
-};

+ 2 - 2
src/views/exercise_questions/preview/ReadPreview.vue

@@ -48,7 +48,7 @@ import SelectPreview from '@/views/exercise_questions/preview/SelectPreview.vue'
 import JudgePreview from '@/views/exercise_questions/preview/JudgePreview.vue';
 import MatchingPreview from '@/views/exercise_questions/preview/MatchingPreview.vue';
 import FillPreview from '../preview/FillPreview.vue';
-import ShortAnswerPreview from './ShortAnswerPreview.vue';
+import EssayQuestionPreview from './EssayQuestionPreview.vue';
 
 import { GetQuestionInfo } from '@/api/exercise';
 
@@ -68,7 +68,7 @@ export default {
         judge: JudgePreview,
         matching: MatchingPreview,
         fill: FillPreview,
-        short_answer: ShortAnswerPreview,
+        essay_question: EssayQuestionPreview,
       },
       question_list: [],
     };

+ 0 - 71
src/views/exercise_questions/preview/ShortAnswerPreview.vue

@@ -1,71 +0,0 @@
-<!-- eslint-disable vue/no-v-html -->
-<template>
-  <div class="readaloud-preview">
-    <div class="stem">
-      <span class="question-number" :style="{ fontSize: data.property.stem_question_number_font_size }">
-        {{ questionNumberEndIsBracket(data.property.question_number) }}
-      </span>
-      <span v-html="sanitizeHTML(data.stem)"></span>
-    </div>
-
-    <div v-if="isEnable(data.property.is_enable_description)" class="description">{{ data.description }}</div>
-
-    <AudioPlay
-      v-if="isEnable(data.property.is_enable_listening) && data.file_id_list.length > 0"
-      :file-id="data.file_id_list[0]"
-      :show-slider="true"
-    />
-
-    <el-input
-      v-model="answer.answer_list[0].text"
-      :disabled="disabled"
-      type="textarea"
-      :autosize="{ minRows: 6, maxRows: 36 }"
-    />
-    <SoundRecordPreview :wav-blob.sync="answer.answer_list[0].audio_file_id" />
-
-    <div v-if="disabled" class="reference-answer">
-      <div class="title">参考答案</div>
-      <div>{{ data.reference_answer }}</div>
-    </div>
-  </div>
-</template>
-
-<script>
-import PreviewMixin from './components/PreviewMixin';
-import SoundRecordPreview from './components/common/SoundRecordPreview.vue';
-
-export default {
-  name: 'ShortAnswerPreview',
-  components: {
-    SoundRecordPreview,
-  },
-  mixins: [PreviewMixin],
-  created() {
-    this.$set(this.answer.answer_list, 0, { text: '', audio_file_id: '' });
-  },
-  methods: {},
-};
-</script>
-
-<style lang="scss" scoped>
-@use '@/styles/mixin.scss' as *;
-
-.readaloud-preview {
-  @include preview;
-
-  .reference-answer {
-    display: flex;
-    flex-direction: column;
-    row-gap: 8px;
-    padding: 12px 24px;
-    font-size: 14px;
-    white-space: pre;
-    background-color: $content-color;
-
-    .title {
-      color: #4e5969;
-    }
-  }
-}
-</style>