Ver Fonte

描述改为提示 并改为富文本

natasha há 1 ano atrás
pai
commit
9482a8b838
30 ficheiros alterados com 117 adições e 106 exclusões
  1. 4 8
      src/views/exercise_questions/create/components/exercises/ChineseQuestion.vue
  2. 4 8
      src/views/exercise_questions/create/components/exercises/ChooseToneQuestion.vue
  3. 4 8
      src/views/exercise_questions/create/components/exercises/EssayQuestion.vue
  4. 4 8
      src/views/exercise_questions/create/components/exercises/RepeatQuestion.vue
  5. 4 8
      src/views/exercise_questions/create/components/exercises/ReplaceAnswerQuestion.vue
  6. 4 8
      src/views/exercise_questions/create/components/exercises/SortQuestion.vue
  7. 4 8
      src/views/exercise_questions/create/components/exercises/TalkPictureQuestion.vue
  8. 4 8
      src/views/exercise_questions/create/components/exercises/WordCardQuestion.vue
  9. 2 1
      src/views/exercise_questions/data/answerQuestion.js
  10. 3 2
      src/views/exercise_questions/data/chinese.js
  11. 3 2
      src/views/exercise_questions/data/chooseTone.js
  12. 2 1
      src/views/exercise_questions/data/essayQuestion.js
  13. 3 2
      src/views/exercise_questions/data/repeat.js
  14. 3 2
      src/views/exercise_questions/data/replaceAnswer.js
  15. 2 1
      src/views/exercise_questions/data/sort.js
  16. 2 1
      src/views/exercise_questions/data/talkPicture.js
  17. 3 2
      src/views/exercise_questions/data/wordCard.js
  18. 3 2
      src/views/exercise_questions/data/write.js
  19. 2 1
      src/views/exercise_questions/data/writePicture.js
  20. 1 1
      src/views/exercise_questions/preview/AnswerQuestionPreview.vue
  21. 5 1
      src/views/exercise_questions/preview/ChinesePreview.vue
  22. 5 1
      src/views/exercise_questions/preview/ChooseTonePreview.vue
  23. 6 2
      src/views/exercise_questions/preview/EssayQuestionPreview.vue
  24. 6 2
      src/views/exercise_questions/preview/RepeatPreview.vue
  25. 5 1
      src/views/exercise_questions/preview/ReplaceAnswerPreview.vue
  26. 7 3
      src/views/exercise_questions/preview/SortPreview.vue
  27. 7 3
      src/views/exercise_questions/preview/TalkPictruePreview.vue
  28. 5 1
      src/views/exercise_questions/preview/WordCardPreview.vue
  29. 5 5
      src/views/exercise_questions/preview/WritePictruePreview.vue
  30. 5 5
      src/views/exercise_questions/preview/WritePreview.vue

+ 4 - 8
src/views/exercise_questions/create/components/exercises/ChineseQuestion.vue

@@ -3,14 +3,10 @@
     <template #content>
       <div class="stem">
         <RichText v-model="data.stem" placeholder="输入题干" />
-
-        <el-input
-          v-show="isEnable(data.property.is_enable_description)"
+        <RichText
+          v-if="isEnable(data.property.is_enable_description)"
           v-model="data.description"
-          rows="3"
-          resize="none"
-          type="textarea"
-          placeholder="输入描述"
+          placeholder="输入提示"
         />
       </div>
 
@@ -93,7 +89,7 @@
             {{ label }}
           </el-radio>
         </el-form-item>
-        <el-form-item label="描述">
+        <el-form-item label="提示">
           <el-radio
             v-for="{ value, label } in switchOption"
             :key="value"

+ 4 - 8
src/views/exercise_questions/create/components/exercises/ChooseToneQuestion.vue

@@ -3,14 +3,10 @@
     <template #content>
       <div class="stem">
         <RichText v-model="data.stem" placeholder="输入题干" />
-
-        <el-input
-          v-show="isEnable(data.property.is_enable_description)"
+        <RichText
+          v-if="isEnable(data.property.is_enable_description)"
           v-model="data.description"
-          rows="3"
-          resize="none"
-          type="textarea"
-          placeholder="输入描述"
+          placeholder="输入提示"
         />
       </div>
 
@@ -73,7 +69,7 @@
             {{ label }}
           </el-radio>
         </el-form-item>
-        <el-form-item label="描述">
+        <el-form-item label="提示">
           <el-radio
             v-for="{ value, label } in switchOption"
             :key="value"

+ 4 - 8
src/views/exercise_questions/create/components/exercises/EssayQuestion.vue

@@ -3,14 +3,10 @@
     <template #content>
       <div class="stem">
         <RichText v-model="data.stem" placeholder="输入题干" />
-
-        <el-input
-          v-show="isEnable(data.property.is_enable_description)"
+        <RichText
+          v-if="isEnable(data.property.is_enable_description)"
           v-model="data.description"
-          rows="3"
-          resize="none"
-          type="textarea"
-          placeholder="输入描述"
+          placeholder="输入提示"
         />
         <el-input
           v-if="isEnable(data.property.is_enable_reference_answer)"
@@ -37,7 +33,7 @@
             {{ label }}
           </el-radio>
         </el-form-item>
-        <el-form-item label="描述">
+        <el-form-item label="提示">
           <el-radio
             v-for="{ value, label } in switchOption"
             :key="value"

+ 4 - 8
src/views/exercise_questions/create/components/exercises/RepeatQuestion.vue

@@ -4,14 +4,10 @@
     <template #content>
       <div class="stem">
         <RichText v-model="data.stem" placeholder="输入题干" />
-
-        <el-input
-          v-show="isEnable(data.property.is_enable_description)"
+        <RichText
+          v-if="isEnable(data.property.is_enable_description)"
           v-model="data.description"
-          rows="3"
-          resize="none"
-          type="textarea"
-          placeholder="输入描述"
+          placeholder="输入提示"
         />
       </div>
 
@@ -71,7 +67,7 @@
             {{ label }}
           </el-radio>
         </el-form-item>
-        <el-form-item label="描述">
+        <el-form-item label="提示">
           <el-radio
             v-for="{ value, label } in switchOption"
             :key="value"

+ 4 - 8
src/views/exercise_questions/create/components/exercises/ReplaceAnswerQuestion.vue

@@ -4,14 +4,10 @@
     <template #content>
       <div class="stem">
         <RichText v-model="data.stem" placeholder="输入题干" />
-
-        <el-input
-          v-show="isEnable(data.property.is_enable_description)"
+        <RichText
+          v-if="isEnable(data.property.is_enable_description)"
           v-model="data.description"
-          rows="3"
-          resize="none"
-          type="textarea"
-          placeholder="输入描述"
+          placeholder="输入提示"
         />
       </div>
 
@@ -41,7 +37,7 @@
             {{ label }}
           </el-radio>
         </el-form-item>
-        <el-form-item label="描述">
+        <el-form-item label="提示">
           <el-radio
             v-for="{ value, label } in switchOption"
             :key="value"

+ 4 - 8
src/views/exercise_questions/create/components/exercises/SortQuestion.vue

@@ -4,14 +4,10 @@
     <template #content>
       <div class="stem">
         <RichText v-model="data.stem" placeholder="输入题干" />
-
-        <el-input
-          v-show="isEnable(data.property.is_enable_description)"
+        <RichText
+          v-if="isEnable(data.property.is_enable_description)"
           v-model="data.description"
-          rows="3"
-          resize="none"
-          type="textarea"
-          placeholder="输入描述"
+          placeholder="输入提示"
         />
       </div>
 
@@ -48,7 +44,7 @@
             {{ label }}
           </el-radio>
         </el-form-item>
-        <el-form-item label="描述">
+        <el-form-item label="提示">
           <el-radio
             v-for="{ value, label } in switchOption"
             :key="value"

+ 4 - 8
src/views/exercise_questions/create/components/exercises/TalkPictureQuestion.vue

@@ -3,14 +3,10 @@
     <template #content>
       <div class="stem">
         <RichText v-model="data.stem" placeholder="输入题干" />
-
-        <el-input
-          v-show="isEnable(data.property.is_enable_description)"
+        <RichText
+          v-if="isEnable(data.property.is_enable_description)"
           v-model="data.description"
-          rows="3"
-          resize="none"
-          type="textarea"
-          placeholder="输入描述"
+          placeholder="输入提示"
         />
       </div>
 
@@ -60,7 +56,7 @@
             {{ label }}
           </el-radio>
         </el-form-item>
-        <el-form-item label="描述">
+        <el-form-item label="提示">
           <el-radio
             v-for="{ value, label } in switchOption"
             :key="value"

+ 4 - 8
src/views/exercise_questions/create/components/exercises/WordCardQuestion.vue

@@ -3,14 +3,10 @@
     <template #content>
       <div class="stem">
         <RichText v-model="data.stem" placeholder="输入题干" />
-
-        <el-input
-          v-show="isEnable(data.property.is_enable_description)"
+        <RichText
+          v-if="isEnable(data.property.is_enable_description)"
           v-model="data.description"
-          rows="3"
-          resize="none"
-          type="textarea"
-          placeholder="输入描述"
+          placeholder="输入提示"
         />
       </div>
 
@@ -104,7 +100,7 @@
             {{ label }}
           </el-radio>
         </el-form-item>
-        <el-form-item label="描述">
+        <el-form-item label="提示">
           <el-radio
             v-for="{ value, label } in switchOption"
             :key="value"

+ 2 - 1
src/views/exercise_questions/data/answerQuestion.js

@@ -1,4 +1,4 @@
-import { questionNumberTypeList, scoreTypeList, switchOption } from './common';
+import { stemTypeList, questionNumberTypeList, scoreTypeList, switchOption } from './common';
 
 // 口语表达数据模板
 export const answerQuestionData = {
@@ -11,6 +11,7 @@ export const answerQuestionData = {
   }, // 答案
   // 题型属性
   property: {
+    stem_type: stemTypeList[1].value, // 题干类型
     question_number: '1', // 题号
     is_enable_reference_answer: switchOption[0].value, // 是否开启参考答案
     score: 1, // 分值

+ 3 - 2
src/views/exercise_questions/data/chinese.js

@@ -1,4 +1,4 @@
-import { scoreTypeList, questionNumberTypeList, optionTypeList } from './common';
+import { stemTypeList, scoreTypeList, questionNumberTypeList, optionTypeList, switchOption } from './common';
 import { getRandomNumber } from '@/utils/index';
 
 export function getOption(content = '') {
@@ -47,8 +47,9 @@ export const chineseData = {
   file_id_list: [],
   // 题型属性
   property: {
+    stem_type: stemTypeList[1].value, // 题干类型
     question_number: '1', // 题号
-    is_enable_description: 'false', // 描述
+    is_enable_description: switchOption[1].value, // 描述
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型
     learn_type: learnTypeList[0].value,

+ 3 - 2
src/views/exercise_questions/data/chooseTone.js

@@ -1,4 +1,4 @@
-import { questionNumberTypeList, scoreTypeList, optionTypeList } from './common';
+import { stemTypeList, questionNumberTypeList, scoreTypeList, optionTypeList, switchOption } from './common';
 import { getRandomNumber } from '@/utils/index';
 
 export function getOption(content = '') {
@@ -49,8 +49,9 @@ export const ChooseToneData = {
   answer: { score: 1, score_type: scoreTypeList[0].value, answer_list: [] }, // 答案
   // 题型属性
   property: {
+    stem_type: stemTypeList[1].value, // 题干类型
     question_number: '1', // 题号
-    is_enable_description: 'false', // 描述
+    is_enable_description: switchOption[1].value, // 描述
     answer_mode: toneTypeList[0].value, // 音调类型
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型

+ 2 - 1
src/views/exercise_questions/data/essayQuestion.js

@@ -1,4 +1,4 @@
-import { questionNumberTypeList, scoreTypeList, switchOption } from './common';
+import { stemTypeList, questionNumberTypeList, scoreTypeList, switchOption } from './common';
 
 // 问答题数据模板
 export const essayQuestionData = {
@@ -13,6 +13,7 @@ export const essayQuestionData = {
   }, // 答案
   // 题型属性
   property: {
+    stem_type: stemTypeList[1].value, // 题干类型
     question_number: '1', // 题号
     is_enable_description: switchOption[0].value, // 描述
     is_enable_reference_answer: switchOption[0].value, // 是否开启参考答案

+ 3 - 2
src/views/exercise_questions/data/repeat.js

@@ -1,4 +1,4 @@
-import { optionTypeList, scoreTypeList, questionNumberTypeList } from './common';
+import { optionTypeList, stemTypeList, scoreTypeList, questionNumberTypeList, switchOption } from './common';
 import { getRandomNumber } from '@/utils/index';
 
 export function getOption(content = '') {
@@ -35,8 +35,9 @@ export const repeatData = {
   answer: { score: 1, score_type: scoreTypeList[0].value }, // 答案
   // 题型属性
   property: {
+    stem_type: stemTypeList[1].value, // 题干类型
     question_number: '1', // 题号
-    is_enable_description: 'false', // 描述
+    is_enable_description: switchOption[0].value, // 描述
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型
   },

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

@@ -1,4 +1,4 @@
-import { scoreTypeList, questionNumberTypeList } from './common';
+import { stemTypeList, scoreTypeList, questionNumberTypeList, switchOption } from './common';
 import { getRandomNumber } from '@/utils/index';
 
 export function getOption(content = '') {
@@ -20,8 +20,9 @@ export const replaceAnswerData = {
   answer: { score: 1, score_type: scoreTypeList[0].value }, // 答案
   // 题型属性
   property: {
+    stem_type: stemTypeList[1].value, // 题干类型
     question_number: '1', // 题号
-    is_enable_description: 'false', // 描述
+    is_enable_description: switchOption[1].value, // 描述
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型
     row_count: 4,

+ 2 - 1
src/views/exercise_questions/data/sort.js

@@ -1,4 +1,4 @@
-import { scoreTypeList, questionNumberTypeList, switchOption } from './common';
+import { stemTypeList, scoreTypeList, questionNumberTypeList, switchOption } from './common';
 import { getRandomNumber } from '@/utils/index';
 
 export function getOption(content = '') {
@@ -21,6 +21,7 @@ export function getSortDataTemplate() {
     answer: { answer_list, score: 1, score_type: scoreTypeList[0].value }, // 答案
     // 题型属性
     property: {
+      stem_type: stemTypeList[1].value, // 题干类型
       question_number: '1', // 题号
       is_enable_description: switchOption[1].value, // 描述
       score: 1, // 分值

+ 2 - 1
src/views/exercise_questions/data/talkPicture.js

@@ -1,4 +1,4 @@
-import { scoreTypeList, questionNumberTypeList, switchOption } from './common';
+import { stemTypeList, scoreTypeList, questionNumberTypeList, switchOption } from './common';
 import { getRandomNumber } from '@/utils/index';
 export function getOption() {
   return { picture_info: '', reference_answer: '', picture_file_id: '', mark: getRandomNumber() };
@@ -13,6 +13,7 @@ export const talkPictrueData = {
   answer: { score: 1, score_type: scoreTypeList[0].value }, // 答案
   // 题型属性
   property: {
+    stem_type: stemTypeList[1].value, // 题干类型
     question_number: '1', // 题号
     score: 1, // 分值
     is_enable_description: switchOption[1].value, // 描述

+ 3 - 2
src/views/exercise_questions/data/wordCard.js

@@ -1,4 +1,4 @@
-import { scoreTypeList, questionNumberTypeList, optionTypeList } from './common';
+import { stemTypeList, scoreTypeList, questionNumberTypeList, optionTypeList, switchOption } from './common';
 import { getRandomNumber } from '@/utils/index';
 
 export function getOption(content = '') {
@@ -42,8 +42,9 @@ export const wordCardData = {
   file_id_list: [],
   // 题型属性
   property: {
+    stem_type: stemTypeList[1].value, // 题干类型
     question_number: '1', // 题号
-    is_enable_description: 'false', // 描述
+    is_enable_description: switchOption[1].value, // 描述
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型
   },

+ 3 - 2
src/views/exercise_questions/data/write.js

@@ -1,4 +1,4 @@
-import { optionTypeList, scoreTypeList, questionNumberTypeList } from './common';
+import { optionTypeList, stemTypeList, scoreTypeList, questionNumberTypeList, switchOption } from './common';
 // 数据模板
 export const writeData = {
   type: 'write', // 题型
@@ -11,8 +11,9 @@ export const writeData = {
   answer: { score: 1, score_type: scoreTypeList[0].value }, // 答案
   // 题型属性
   property: {
+    stem_type: stemTypeList[1].value, // 题干类型
     question_number: '1', // 题号
-    is_enable_description: 'false', // 描述
+    is_enable_description: switchOption[1].value, // 描述
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型
     word_num: 50, // 字数

+ 2 - 1
src/views/exercise_questions/data/writePicture.js

@@ -1,4 +1,4 @@
-import { scoreTypeList, questionNumberTypeList, switchOption } from './common';
+import { stemTypeList, scoreTypeList, questionNumberTypeList, switchOption } from './common';
 import { getRandomNumber } from '@/utils/index';
 export function getOption() {
   return {
@@ -19,6 +19,7 @@ export const writePictrueData = {
   answer: { score: 1, score_type: scoreTypeList[0].value }, // 答案
   // 题型属性
   property: {
+    stem_type: stemTypeList[1].value, // 题干类型
     question_number: '1', // 题号
     score: 1, // 分值
     is_enable_description: switchOption[1].value, // 描述

+ 1 - 1
src/views/exercise_questions/preview/AnswerQuestionPreview.vue

@@ -8,7 +8,7 @@
     <SoundRecordPreview :wav-blob.sync="answer.answer_list[0].audio_file_id" :disabled="disabled" position="center" />
     <div v-if="isEnable(data.property.is_enable_reference_answer) && isShowRightAnswer" class="reference-box">
       <h5 class="reference-title">参考答案</h5>
-      <span class="reference-answer" v-html="sanitizeHTML(data.reference_answer)"></span>
+      <span class="reference-answer rich-text" v-html="sanitizeHTML(data.reference_answer)"></span>
     </div>
   </div>
 </template>

+ 5 - 1
src/views/exercise_questions/preview/ChinesePreview.vue

@@ -5,7 +5,11 @@
       <span class="question-number">{{ 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>
+    <div
+      v-if="isEnable(data.property.is_enable_description)"
+      class="description rich-text"
+      v-html="sanitizeHTML(data.description)"
+    ></div>
 
     <!-- 笔画学习 -->
     <div :class="['words-box', 'words-box-' + data.property.learn_type]">

+ 5 - 1
src/views/exercise_questions/preview/ChooseTonePreview.vue

@@ -5,7 +5,11 @@
       <span class="question-number">{{ 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>
+    <div
+      v-if="isEnable(data.property.is_enable_description)"
+      class="description rich-text"
+      v-html="sanitizeHTML(data.description)"
+    ></div>
     <div class="option-list">
       <li v-for="(item, i) in data.option_list" :key="i" :class="['option-item']">
         <span>{{ computeOptionMethods[data.option_number_show_mode](i) }} </span>

+ 6 - 2
src/views/exercise_questions/preview/EssayQuestionPreview.vue

@@ -5,7 +5,11 @@
       <span class="question-number">{{ 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>
+    <div
+      v-if="isEnable(data.property.is_enable_description)"
+      class="description rich-text"
+      v-html="sanitizeHTML(data.description)"
+    ></div>
 
     <el-input
       v-model="answer.answer_list[0].text"
@@ -31,7 +35,7 @@
     />
     <div v-if="isEnable(data.property.is_enable_reference_answer) && isShowRightAnswer" class="reference-box">
       <h5 class="reference-title">参考答案</h5>
-      <span class="reference-answer" v-html="sanitizeHTML(data.reference_answer)"></span>
+      <span class="reference-answer rich-text" v-html="sanitizeHTML(data.reference_answer)"></span>
     </div>
   </div>
 </template>

+ 6 - 2
src/views/exercise_questions/preview/RepeatPreview.vue

@@ -5,7 +5,11 @@
       <span class="question-number">{{ 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>
+    <div
+      v-if="isEnable(data.property.is_enable_description)"
+      class="description rich-text"
+      v-html="sanitizeHTML(data.description)"
+    ></div>
     <div class="option-list">
       <li v-for="(item, i) in answer.answer_list" :key="i" :class="['option-item']">
         <span>{{ computeOptionMethods[data.option_number_show_mode](i) }} </span>
@@ -15,7 +19,7 @@
         />
         <div
           v-if="sanitizeHTML(data.option_list[i].content)"
-          class="option-content"
+          class="option-content rich-text"
           v-html="sanitizeHTML(data.option_list[i].content)"
         ></div>
         <div class="sound-box">

+ 5 - 1
src/views/exercise_questions/preview/ReplaceAnswerPreview.vue

@@ -5,7 +5,11 @@
       <span class="question-number">{{ 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>
+    <div
+      v-if="isEnable(data.property.is_enable_description)"
+      class="description rich-text"
+      v-html="sanitizeHTML(data.description)"
+    ></div>
     <div class="option-list">
       <div v-for="(item, i) in option_list" :key="i" :class="['option-item']">
         <template v-if="item.length > 1">

+ 7 - 3
src/views/exercise_questions/preview/SortPreview.vue

@@ -5,7 +5,11 @@
       <span class="question-number">{{ 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>
+    <div
+      v-if="isEnable(data.property.is_enable_description)"
+      class="description rich-text"
+      v-html="sanitizeHTML(data.description)"
+    ></div>
     <draggable
       v-model="move_list"
       animation="300"
@@ -34,7 +38,7 @@
             :size="20"
             icon-class="draggable"
           /> -->
-          <span class="drag-content" v-html="sanitizeHTML(itemNode.content)"></span>
+          <span class="drag-content rich-text" v-html="sanitizeHTML(itemNode.content)"></span>
           <!-- <SvgIcon
             v-if="data.property.layout_type === 'horizontal'"
             class="drag-icon"
@@ -65,7 +69,7 @@
               click_index_list.indexOf(indexNode) > -1 ? 'drag-item-active' : '',
             ]"
           >
-            <span class="drag-content" v-html="sanitizeHTML(itemNode.content)"></span>
+            <span class="drag-content rich-text" v-html="sanitizeHTML(itemNode.content)"></span>
           </div>
         </transition-group>
       </draggable>

+ 7 - 3
src/views/exercise_questions/preview/TalkPictruePreview.vue

@@ -5,7 +5,11 @@
       <span class="question-number">{{ 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>
+    <div
+      v-if="isEnable(data.property.is_enable_description)"
+      class="description rich-text"
+      v-html="sanitizeHTML(data.description)"
+    ></div>
     <div class="content">
       <div v-for="(item, index) in data.option_list" :key="index" class="content-item">
         <el-image
@@ -14,7 +18,7 @@
           :src="pic_list[item.picture_file_id]"
           fit="contain"
         />
-        <p class="pic-info" v-html="sanitizeHTML(item.picture_info)"></p>
+        <p class="pic-info rich-text" v-html="sanitizeHTML(item.picture_info)"></p>
         <!-- 语音作答 -->
         <div v-if="isEnable(data.property.is_enable_voice_answer) && answer.answer_list[index]" class="sound-box">
           <SoundRecordPreview
@@ -26,7 +30,7 @@
 
         <div v-if="isEnable(data.property.is_enable_reference_answer) && isShowRightAnswer" class="reference-box">
           <h5 class="reference-title">参考答案</h5>
-          <span class="reference-answer" v-html="sanitizeHTML(item.reference_answer)"></span>
+          <span class="reference-answer rich-text" v-html="sanitizeHTML(item.reference_answer)"></span>
         </div>
       </div>
     </div>

+ 5 - 1
src/views/exercise_questions/preview/WordCardPreview.vue

@@ -5,7 +5,11 @@
       <span class="question-number">{{ 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>
+    <div
+      v-if="isEnable(data.property.is_enable_description)"
+      class="description rich-text"
+      v-html="sanitizeHTML(data.description)"
+    ></div>
 
     <!-- 笔画学习 -->
     <div :class="['words-box']">

+ 5 - 5
src/views/exercise_questions/preview/WritePictruePreview.vue

@@ -5,10 +5,10 @@
       <span class="question-number">{{ data.property.question_number }}.</span>
       <span v-html="sanitizeHTML(data.stem)"></span>
     </div>
-    <div class="article-content" v-html="sanitizeHTML(data.article)"></div>
+    <div class="article-content rich-text" v-html="sanitizeHTML(data.article)"></div>
     <div
       v-if="isEnable(data.property.is_enable_description)"
-      class="description"
+      class="description rich-text"
       v-html="sanitizeHTML(data.description)"
     ></div>
     <div class="content">
@@ -21,8 +21,8 @@
           :class="[active_index !== index ? 'not-active' : '']"
           @click="active_index = index"
         />
-        <h3 class="pic-title" v-html="sanitizeHTML(item.picture_title)"></h3>
-        <p class="pic-info" v-html="sanitizeHTML(item.picture_info)"></p>
+        <h3 class="pic-title rich-text" v-html="sanitizeHTML(item.picture_title)"></h3>
+        <p class="pic-info rich-text" v-html="sanitizeHTML(item.picture_info)"></p>
       </div>
     </div>
 
@@ -61,7 +61,7 @@
           >{{ show_sample_text ? '隐藏范文' : '查看范文' }}</span
         ></el-divider
       >
-      <div v-if="show_sample_text" class="article-content" v-html="sanitizeHTML(data.sample_text)"></div>
+      <div v-if="show_sample_text" class="article-content rich-text" v-html="sanitizeHTML(data.sample_text)"></div>
     </template>
   </div>
 </template>

+ 5 - 5
src/views/exercise_questions/preview/WritePreview.vue

@@ -5,10 +5,10 @@
       <span class="question-number">{{ data.property.question_number }}.</span>
       <span v-html="sanitizeHTML(data.stem)"></span>
     </div>
-    <div class="article-content" v-html="sanitizeHTML(data.article)"></div>
+    <div class="article-content rich-text" v-html="sanitizeHTML(data.article)"></div>
     <div
       v-if="isEnable(data.property.is_enable_description)"
-      class="description"
+      class="description rich-text"
       v-html="sanitizeHTML(data.description)"
     ></div>
     <el-input
@@ -18,8 +18,8 @@
       placeholder="请输入内容"
       :maxlength="data.property.word_num"
       show-word-limit
-      @input="handleInput"
       :readonly="disabled"
+      @input="handleInput"
     />
 
     <template v-if="isEnable(data.property.is_enable_upload_accessory)">
@@ -30,9 +30,9 @@
         :upload-type="'*'"
         :file-id-list="answer.answer_list[0].accessory_file_id_list"
         upload-title="上传附件:"
+        :disabled="disabled"
         @upload="handleUpload"
         @deleteFile="handleDelete"
-        :disabled="disabled"
       />
     </template>
     <template v-if="isEnable(data.property.is_enable_sample_text) && isShowRightAnswer">
@@ -43,7 +43,7 @@
           >{{ show_sample_text ? '隐藏范文' : '查看范文' }}</span
         ></el-divider
       >
-      <div v-if="show_sample_text" class="article-content" v-html="sanitizeHTML(data.sample_text)"></div>
+      <div v-if="show_sample_text" class="article-content rich-text" v-html="sanitizeHTML(data.sample_text)"></div>
     </template>
   </div>
 </template>