Browse Source

替换练习、听写题添加参考答案

natasha 1 year ago
parent
commit
f6b5d67d69

+ 20 - 0
src/views/exercise_questions/create/components/exercises/ReplaceAnswerQuestion.vue

@@ -21,6 +21,12 @@
           </li>
         </ul>
       </div>
+      <RichText
+        v-if="isEnable(data.property.is_enable_reference_answer)"
+        v-model="data.reference_answer"
+        :font-size="14"
+        placeholder="输入参考答案"
+      />
     </template>
 
     <template #property>
@@ -53,6 +59,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"
@@ -177,6 +193,10 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+.content {
+  margin-bottom: 8px;
+}
+
 .repeat-option {
   :deep .upload-wrapper {
     margin-top: 0;

+ 16 - 0
src/views/exercise_questions/create/components/exercises/WordDictationQuestion.vue

@@ -63,6 +63,12 @@
           <SvgIcon icon-class="add-circle" size="14" /> <span>增加汉字</span>
         </span>
       </div>
+      <RichText
+        v-if="isEnable(data.property.is_enable_reference_answer)"
+        v-model="data.reference_answer"
+        :font-size="14"
+        placeholder="输入参考答案"
+      />
     </template>
 
     <template #property>
@@ -95,6 +101,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"

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

@@ -18,12 +18,14 @@ export const replaceAnswerData = {
   option_list: [getOption(), getOption(), getOption(), getOption()], // 选项
   file_id_list: [], // 文件 id 列表
   answer: { score: 1, score_type: scoreTypeList[0].value }, // 答案
+  reference_answer: '', // 参考答案
   // 题型属性
   property: {
     stem_type: stemTypeList[1].value, // 题干类型
     question_number: '1', // 题号
     stem_question_number_font_size: fontSizeList[6], // 题干题号
     is_enable_description: switchOption[1].value, // 描述
+    is_enable_reference_answer: switchOption[0].value, // 是否开启参考答案
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型
     row_count: 4,

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

@@ -42,12 +42,14 @@ export const wordDictationData = {
   answer: { score: 1, score_type: scoreTypeList[0].value }, // 答案
   option_list: [getOption(), getOption(), getOption()], // 选项
   file_id_list: [],
+  reference_answer: '', // 参考答案
   // 题型属性
   property: {
     stem_type: stemTypeList[1].value, // 题干类型
     question_number: '1', // 题号
     stem_question_number_font_size: fontSizeList[6], // 题干题号
     is_enable_description: switchOption[1].value, // 描述
+    is_enable_reference_answer: switchOption[0].value, // 是否开启参考答案
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型
   },

+ 21 - 0
src/views/exercise_questions/preview/ReplaceAnswerPreview.vue

@@ -36,6 +36,10 @@
       </div>
       <SoundRecordPreview :wav-blob.sync="answer.answer_list[0].audio_file_id" :disabled="disabled" position="center" />
     </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>
 
@@ -217,5 +221,22 @@ export default {
     width: 280px;
     margin-left: 80px;
   }
+
+  .reference-box {
+    padding: 12px;
+    background: #f9f8f9;
+
+    .reference-title {
+      margin: 0 0 10px;
+      font-size: 14px;
+      font-weight: 400;
+      line-height: 32px;
+      color: #4e5969;
+    }
+
+    :deep p {
+      margin: 0;
+    }
+  }
 }
 </style>

+ 21 - 0
src/views/exercise_questions/preview/WordDictationPreview.vue

@@ -41,6 +41,10 @@
         </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 v-if="if_free_show" class="practiceBox practice-box-strock">
       <FreewriteLettle
         ref="freePaint"
@@ -425,5 +429,22 @@ export default {
       padding-top: 0;
     }
   }
+
+  .reference-box {
+    padding: 12px;
+    background: #f9f8f9;
+
+    .reference-title {
+      margin: 0 0 10px;
+      font-size: 14px;
+      font-weight: 400;
+      line-height: 32px;
+      color: #4e5969;
+    }
+
+    :deep p {
+      margin: 0;
+    }
+  }
 }
 </style>