Преглед на файлове

填空题和对话题的参考答案

dusenyao преди 1 година
родител
ревизия
598112ca3d

+ 14 - 0
src/styles/mixin.scss

@@ -64,6 +64,20 @@
       margin: 0;
     }
   }
+
+  // 参考答案
+  .reference-box {
+    padding: 12px;
+    background: #f9f8f9;
+
+    .reference-title {
+      margin: 0 0 10px;
+      font-size: 14px;
+      font-weight: 400;
+      line-height: 32px;
+      color: #4e5969;
+    }
+  }
 }
 
 // 列表

+ 18 - 0
src/views/exercise_questions/create/components/exercises/DialogueQuestion.vue

@@ -121,6 +121,10 @@
           </el-input>
         </template>
       </div>
+
+      <div v-if="isEnable(data.property.is_enable_reference_answer)" class="reference-answer">
+        <el-input v-model="data.reference_answer" type="textarea" rows="3" placeholder="输入参考答案" />
+      </div>
     </template>
 
     <template #property>
@@ -153,6 +157,16 @@
             {{ 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"
@@ -558,6 +572,10 @@ export default {
   }
 }
 
+.reference-answer {
+  margin-top: 8px;
+}
+
 .el-form {
   .role {
     :deep .el-form-item__content {

+ 13 - 0
src/views/exercise_questions/create/components/exercises/FillQuestion.vue

@@ -42,6 +42,15 @@
             <span slot="prefix">{{ i + 1 }}.</span>
           </el-input>
         </div>
+
+        <el-input
+          v-if="!isEnable(data.property.is_enable_word_select_fill)"
+          v-model="data.reference_answer"
+          type="textarea"
+          class="reference-answer"
+          rows="3"
+          placeholder="输入参考答案"
+        />
       </div>
     </template>
 
@@ -233,4 +242,8 @@ export default {
     }
   }
 }
+
+.reference-answer {
+  margin-top: 8px;
+}
 </style>

+ 3 - 3
src/views/exercise_questions/create/index.vue

@@ -248,7 +248,7 @@ export default {
      */
     getQuestionInfo() {
       if (this.index_list.length === 0) return;
-      this.$refs.createMain.clearSaveDate();
+      this.$refs.createMain?.clearSaveDate();
       this.loading = true;
       let curId = this.index_list[this.curIndex].id;
       GetQuestionInfo({ question_id: this.index_list[this.curIndex].id })
@@ -293,7 +293,7 @@ export default {
      */
     selectExerciseItem(index) {
       if (index < 0 || index > this.index_list.length - 1) return;
-      this.$refs.createMain.clearSaveDate();
+      this.$refs.createMain?.clearSaveDate();
       this.$refs.createMain.saveQuestion();
       this.curIndex = index;
     },
@@ -402,7 +402,7 @@ export default {
      * @param {number} param.oldIndex 移动前的索引
      */
     handleStart({ newIndex, oldIndex }) {
-      this.$refs.createMain.clearSaveDate();
+      this.$refs.createMain?.clearSaveDate();
       let isMoveCur = newIndex === this.curIndex || oldIndex === this.curIndex; // 是否移动当前题目
       let isEffectCurIndex = newIndex < this.curIndex !== oldIndex < this.curIndex; // 是否影响当前题目索引
       if (isMoveCur || isEffectCurIndex) {

+ 2 - 0
src/views/exercise_questions/data/dialogue.js

@@ -109,6 +109,7 @@ export function getDialogueData() {
     description: '', // 描述
     option_list: [], // 选项列表
     file_id_list: [], // 文件 id 列表
+    reference_answer: '', // 参考答案
     answer: { score: 1, score_type: scoreTypeList[0].value, answer_list: [] }, // 答案
     // 题型属性
     property: {
@@ -118,6 +119,7 @@ export function getDialogueData() {
       score: 1, // 分值
       is_enable_description: switchOption[1].value, // 描述
       is_enable_voice_answer: switchOption[0].value, // 语音作答
+      is_enable_reference_answer: switchOption[0].value, // 是否开启参考答案
       score_type: scoreTypeList[0].value, // 分值类型
       role_number: 2, // 角色数 2 - 5
       role_list: [getRole(0), getRole(1)], // 角色列表

+ 1 - 0
src/views/exercise_questions/data/fill.js

@@ -19,6 +19,7 @@ export const fillData = {
   description: '', // 描述
   article: '', // 文章
   model_essay: [], // 文章解析后的数据
+  reference_answer: '', // 参考答案
   answer: { score: 1, score_type: scoreTypeList[0].value, answer_list: [] }, // 答案
   // 题型属性
   property: {

+ 5 - 0
src/views/exercise_questions/preview/DialoguePreview.vue

@@ -84,6 +84,11 @@
         </div>
       </div>
     </div>
+
+    <div v-if="isEnable(data.property.is_enable_reference_answer) && isShowRightAnswer" class="reference-box">
+      <h5 class="reference-title">参考答案</h5>
+      <span class="reference-answer rich-text" v-html="sanitizeHTML(data.reference_answer)"></span>
+    </div>
   </div>
 </template>
 

+ 5 - 0
src/views/exercise_questions/preview/FillPreview.vue

@@ -42,6 +42,11 @@
         </template>
       </p>
     </div>
+
+    <div v-if="!isEnable(data.property.is_enable_word_select_fill) && isShowRightAnswer" class="reference-box">
+      <h5 class="reference-title">参考答案</h5>
+      <span class="reference-answer rich-text" v-html="sanitizeHTML(data.reference_answer)"></span>
+    </div>
   </div>
 </template>