Quellcode durchsuchen

客观题、主观题增加解析字段

dusenyao vor 1 Jahr
Ursprung
Commit
04cc7e612c
57 geänderte Dateien mit 454 neuen und 25 gelöschten Zeilen
  1. 1 1
      src/styles/common.scss
  2. 20 2
      src/styles/mixin.scss
  3. 8 0
      src/views/exercise_questions/create/components/common/QuestionBase.vue
  4. 16 0
      src/views/exercise_questions/create/components/exercises/AnswerQuestion.vue
  5. 15 0
      src/views/exercise_questions/create/components/exercises/ChooseToneQuestion.vue
  6. 15 0
      src/views/exercise_questions/create/components/exercises/DialogueQuestion.vue
  7. 16 0
      src/views/exercise_questions/create/components/exercises/EssayQuestion.vue
  8. 15 0
      src/views/exercise_questions/create/components/exercises/FillQuestion.vue
  9. 15 0
      src/views/exercise_questions/create/components/exercises/JudgeQuestion.vue
  10. 20 4
      src/views/exercise_questions/create/components/exercises/ListenFillQuestion.vue
  11. 16 0
      src/views/exercise_questions/create/components/exercises/ListenJudgeQuestion.vue
  12. 15 0
      src/views/exercise_questions/create/components/exercises/ListenSelectQuestion.vue
  13. 15 0
      src/views/exercise_questions/create/components/exercises/MatchingQuestion.vue
  14. 17 0
      src/views/exercise_questions/create/components/exercises/ReplaceAnswerQuestion.vue
  15. 15 0
      src/views/exercise_questions/create/components/exercises/SelectQuestion.vue
  16. 15 0
      src/views/exercise_questions/create/components/exercises/SortQuestion.vue
  17. 16 0
      src/views/exercise_questions/create/components/exercises/TableFillQuestion.vue
  18. 15 1
      src/views/exercise_questions/create/components/exercises/TalkPictureQuestion.vue
  19. 16 1
      src/views/exercise_questions/create/components/exercises/WordDictationQuestion.vue
  20. 16 3
      src/views/exercise_questions/create/components/exercises/WritePictureQuestion.vue
  21. 15 0
      src/views/exercise_questions/create/components/exercises/WriteQuestion.vue
  22. 2 0
      src/views/exercise_questions/data/answerQuestion.js
  23. 3 1
      src/views/exercise_questions/data/chooseTone.js
  24. 2 0
      src/views/exercise_questions/data/dialogue.js
  25. 2 0
      src/views/exercise_questions/data/essayQuestion.js
  26. 2 0
      src/views/exercise_questions/data/fill.js
  27. 2 0
      src/views/exercise_questions/data/judge.js
  28. 2 0
      src/views/exercise_questions/data/listenFill.js
  29. 2 0
      src/views/exercise_questions/data/listenJudge.js
  30. 2 0
      src/views/exercise_questions/data/listenSelect.js
  31. 2 0
      src/views/exercise_questions/data/matching.js
  32. 2 0
      src/views/exercise_questions/data/replaceAnswer.js
  33. 2 0
      src/views/exercise_questions/data/select.js
  34. 2 0
      src/views/exercise_questions/data/sort.js
  35. 2 0
      src/views/exercise_questions/data/tableFill.js
  36. 8 1
      src/views/exercise_questions/data/talkPicture.js
  37. 2 0
      src/views/exercise_questions/data/wordDictation.js
  38. 2 0
      src/views/exercise_questions/data/write.js
  39. 2 0
      src/views/exercise_questions/data/writePicture.js
  40. 6 1
      src/views/exercise_questions/preview/AnswerQuestionPreview.vue
  41. 5 0
      src/views/exercise_questions/preview/ChooseTonePreview.vue
  42. 5 0
      src/views/exercise_questions/preview/DialoguePreview.vue
  43. 6 1
      src/views/exercise_questions/preview/EssayQuestionPreview.vue
  44. 5 0
      src/views/exercise_questions/preview/FillPreview.vue
  45. 6 1
      src/views/exercise_questions/preview/JudgePreview.vue
  46. 5 0
      src/views/exercise_questions/preview/ListenFillPreview.vue
  47. 5 0
      src/views/exercise_questions/preview/ListenJudgePreview.vue
  48. 5 0
      src/views/exercise_questions/preview/ListenSelectPreview.vue
  49. 5 0
      src/views/exercise_questions/preview/MatchingPreview.vue
  50. 6 1
      src/views/exercise_questions/preview/ReplaceAnswerPreview.vue
  51. 5 0
      src/views/exercise_questions/preview/SelectPreview.vue
  52. 6 1
      src/views/exercise_questions/preview/SortPreview.vue
  53. 5 0
      src/views/exercise_questions/preview/TableFillPreview.vue
  54. 6 2
      src/views/exercise_questions/preview/TalkPictruePreview.vue
  55. 7 3
      src/views/exercise_questions/preview/WordDictationPreview.vue
  56. 6 1
      src/views/exercise_questions/preview/WritePictruePreview.vue
  57. 5 0
      src/views/exercise_questions/preview/WritePreview.vue

+ 1 - 1
src/styles/common.scss

@@ -60,7 +60,7 @@
   font-size: 14px;
   font-weight: 400;
   line-height: 22px;
-  color: #4e5969;
+  color: $font-light-color;
 }
 
 .round {

+ 20 - 2
src/styles/mixin.scss

@@ -68,20 +68,38 @@
   // 参考答案
   .reference-box {
     padding: 12px;
-    background: #f9f8f9;
+    background: $content-color;
 
     .reference-title {
       margin: 0 0 10px;
       font-size: 14px;
       font-weight: 400;
       line-height: 32px;
-      color: #4e5969;
+      color: $font-light-color;
     }
 
     .reference-answer {
       white-space: pre-wrap;
     }
   }
+
+  // 解析
+  .analysis {
+    padding: 12px;
+    background: $content-color;
+
+    &-title {
+      display: block;
+      font-size: 14px;
+      font-weight: 400;
+      line-height: 32px;
+      color: $font-light-color;
+    }
+
+    &-content {
+      @include rich-text(14pt);
+    }
+  }
 }
 
 // 列表

+ 8 - 0
src/views/exercise_questions/create/components/common/QuestionBase.vue

@@ -118,6 +118,14 @@ export default {
           cursor: pointer;
         }
       }
+
+      .analysis {
+        &-title {
+          margin: 8px 0;
+          font-size: 14px;
+          color: $font-light-color;
+        }
+      }
     }
 
     .property {

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

@@ -12,6 +12,11 @@
           <span class="reference-title">参考答案:</span>
           <el-input v-model="data.reference_answer" type="textarea" rows="3" placeholder="输入参考答案" />
         </template>
+
+        <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+          <div class="analysis-title">解析:</div>
+          <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+        </div>
       </div>
     </template>
 
@@ -59,6 +64,17 @@
           </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_analysis"
+            :label="value"
+          >
+            {{ label }}
+          </el-radio>
+        </el-form-item>
+
         <el-form-item label="分值">
           <el-radio
             v-for="{ value, label } in scoreTypeList"

+ 15 - 0
src/views/exercise_questions/create/components/exercises/ChooseToneQuestion.vue

@@ -71,6 +71,11 @@
           <SvgIcon icon-class="add-circle" size="14" /> <span>增加选项</span>
         </span>
       </div>
+
+      <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+        <div class="analysis-title">解析:</div>
+        <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+      </div>
     </template>
 
     <template #property>
@@ -108,6 +113,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_analysis"
+            :label="value"
+          >
+            {{ label }}
+          </el-radio>
+        </el-form-item>
         <el-form-item label="分值">
           <el-radio
             v-for="{ value, label } in scoreTypeList"

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

@@ -115,6 +115,11 @@
         <div class="reference-title">参考答案:</div>
         <el-input v-model="data.reference_answer" type="textarea" rows="3" placeholder="输入参考答案" />
       </div>
+
+      <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+        <div class="analysis-title">解析:</div>
+        <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+      </div>
     </template>
 
     <template #property>
@@ -157,6 +162,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_analysis"
+            :label="value"
+          >
+            {{ label }}
+          </el-radio>
+        </el-form-item>
         <el-form-item label="分值">
           <el-radio
             v-for="{ value, label } in scoreTypeList"

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

@@ -13,6 +13,11 @@
           <span class="reference-title">参考答案:</span>
           <el-input v-model="data.reference_answer" type="textarea" rows="3" placeholder="输入参考答案" />
         </template>
+
+        <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+          <div class="analysis-title">解析:</div>
+          <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+        </div>
       </div>
     </template>
 
@@ -57,6 +62,17 @@
           </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_analysis"
+            :label="value"
+          >
+            {{ label }}
+          </el-radio>
+        </el-form-item>
+
         <el-form-item label="分值">
           <el-radio
             v-for="{ value, label } in scoreTypeList"

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

@@ -56,6 +56,11 @@
             placeholder="输入参考答案"
           />
         </template>
+
+        <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+          <div class="analysis-title">解析:</div>
+          <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+        </div>
       </div>
     </template>
 
@@ -89,6 +94,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_analysis"
+            :label="value"
+          >
+            {{ label }}
+          </el-radio>
+        </el-form-item>
         <el-form-item label="选词填空">
           <el-radio
             v-for="{ value, label } in switchOption"

+ 15 - 0
src/views/exercise_questions/create/components/exercises/JudgeQuestion.vue

@@ -54,6 +54,11 @@
           <SvgIcon icon-class="add-circle" size="14" /> <span>增加选项</span>
         </span>
       </div>
+
+      <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+        <div class="analysis-title">解析:</div>
+        <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+      </div>
     </template>
 
     <template #property>
@@ -81,6 +86,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_analysis"
+            :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" />

+ 20 - 4
src/views/exercise_questions/create/components/exercises/ListenFillQuestion.vue

@@ -71,6 +71,11 @@
             placeholder="输入参考答案"
           />
         </template>
+
+        <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+          <div class="analysis-title">解析:</div>
+          <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+        </div>
       </div>
     </template>
 
@@ -106,6 +111,17 @@
           </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_analysis"
+            :label="value"
+          >
+            {{ label }}
+          </el-radio>
+        </el-form-item>
+
         <el-form-item label="选词填空">
           <el-radio
             v-for="{ value, label } in switchOption"
@@ -297,6 +313,10 @@ export default {
   }
 
   .correct-answer {
+    display: flex;
+    flex-wrap: wrap;
+    gap: 8px;
+
     .el-input {
       width: 180px;
 
@@ -305,10 +325,6 @@ export default {
         align-items: center;
         color: $text-color;
       }
-
-      + .el-input {
-        margin-left: 8px;
-      }
     }
   }
 

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

@@ -61,6 +61,11 @@
           <SvgIcon icon-class="add-circle" size="14" /> <span>增加选项</span>
         </span>
       </div>
+
+      <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+        <div class="analysis-title">解析:</div>
+        <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+      </div>
     </template>
 
     <template #property>
@@ -90,6 +95,17 @@
           </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_analysis"
+            :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" />

+ 15 - 0
src/views/exercise_questions/create/components/exercises/ListenSelectQuestion.vue

@@ -59,6 +59,11 @@
           <SvgIcon icon-class="add-circle" size="14" /> <span>增加选项</span>
         </span>
       </div>
+
+      <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+        <div class="analysis-title">解析:</div>
+        <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+      </div>
     </template>
 
     <template #property>
@@ -96,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_analysis"
+            :label="value"
+          >
+            {{ label }}
+          </el-radio>
+        </el-form-item>
         <el-form-item label="选项">
           <el-radio
             v-for="{ value, label } in selectTypeList"

+ 15 - 0
src/views/exercise_questions/create/components/exercises/MatchingQuestion.vue

@@ -36,6 +36,11 @@
           <SvgIcon icon-class="add-circle" size="14" /> <span>增加选项</span>
         </span>
       </div>
+
+      <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+        <div class="analysis-title">解析:</div>
+        <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+      </div>
     </template>
 
     <template #property>
@@ -73,6 +78,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_analysis"
+            :label="value"
+          >
+            {{ label }}
+          </el-radio>
+        </el-form-item>
         <el-form-item label="列数">
           <el-radio
             v-for="{ value, label } in columnNumberList"

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

@@ -25,6 +25,11 @@
         <span class="reference-title">参考答案:</span>
         <RichText v-model="data.reference_answer" :font-size="14" placeholder="输入参考答案" />
       </template>
+
+      <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+        <div class="analysis-title">解析:</div>
+        <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+      </div>
     </template>
 
     <template #property>
@@ -67,6 +72,18 @@
             {{ 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_analysis"
+            :label="value"
+          >
+            {{ label }}
+          </el-radio>
+        </el-form-item>
+
         <el-form-item label="分值">
           <el-radio
             v-for="{ value, label } in scoreTypeList"

+ 15 - 0
src/views/exercise_questions/create/components/exercises/SelectQuestion.vue

@@ -57,6 +57,11 @@
           <SvgIcon icon-class="add-circle" size="14" /> <span>增加选项</span>
         </span>
       </div>
+
+      <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+        <div class="analysis-title">解析:</div>
+        <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+      </div>
     </template>
 
     <template #property>
@@ -94,6 +99,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_analysis"
+            :label="value"
+          >
+            {{ label }}
+          </el-radio>
+        </el-form-item>
         <el-form-item label="选项">
           <el-radio
             v-for="{ value, label } in selectTypeList"

+ 15 - 0
src/views/exercise_questions/create/components/exercises/SortQuestion.vue

@@ -55,6 +55,11 @@
           <SvgIcon icon-class="add-circle" size="14" /> <span>添加句子</span>
         </span>
       </div>
+
+      <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+        <div class="analysis-title">解析:</div>
+        <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+      </div>
     </template>
 
     <template #property>
@@ -92,6 +97,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_analysis"
+            :label="value"
+          >
+            {{ label }}
+          </el-radio>
+        </el-form-item>
         <el-form-item label="排序">
           <el-radio
             v-for="{ value, label } in sortTypeList"

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

@@ -90,6 +90,11 @@
             </div>
           </div>
         </template>
+
+        <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+          <div class="analysis-title">解析:</div>
+          <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+        </div>
       </div>
     </template>
 
@@ -137,6 +142,17 @@
           </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_analysis"
+            :label="value"
+          >
+            {{ label }}
+          </el-radio>
+        </el-form-item>
+
         <el-form-item label="表头">
           <el-radio
             v-for="{ value, label } in switchOption"

+ 15 - 1
src/views/exercise_questions/create/components/exercises/TalkPictureQuestion.vue

@@ -31,12 +31,16 @@
             <div class="item-right">
               <div class="item-rich">
                 <label class="">图片信息</label>
-                <RichText v-model="item.picture_info" :fontSize="12" placeholder="输入图片信息" />
+                <RichText v-model="item.picture_info" :font-size="12" placeholder="输入图片信息" />
               </div>
               <div v-if="isEnable(data.property.is_enable_reference_answer)" class="item-rich">
                 <label class="">参考答案</label>
                 <RichText v-model="item.reference_answer" placeholder="输入参考答案" />
               </div>
+              <div v-if="isEnable(data.property.is_enable_analysis)" class="item-rich">
+                <label>解析</label>
+                <RichText v-model="data.analysis" :font-size="14" placeholder="输入解析" />
+              </div>
             </div>
           </template>
           <el-divider />
@@ -112,6 +116,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_analysis"
+            :label="value"
+          >
+            {{ label }}
+          </el-radio>
+        </el-form-item>
       </el-form>
     </template>
   </QuestionBase>

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

@@ -19,8 +19,8 @@
               {{ computedQuestionNumber(i, data.option_number_show_mode) }}
             </span>
             <el-input
-              v-loading="loading_list[i] ? loading_list[i].loadings : false"
               v-model="item.content"
+              v-loading="loading_list[i] ? loading_list[i].loadings : false"
               :placeholder="'输入汉字或词汇'"
               @blur="handleChineseStrokes(item, i)"
             />
@@ -65,6 +65,11 @@
           <SvgIcon icon-class="add-circle" size="14" /> <span>增加汉字</span>
         </span>
       </div>
+
+      <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+        <div class="analysis-title">解析:</div>
+        <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+      </div>
     </template>
 
     <template #property>
@@ -97,6 +102,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_analysis"
+            :label="value"
+          >
+            {{ label }}
+          </el-radio>
+        </el-form-item>
         <el-form-item label="分值">
           <el-radio
             v-for="{ value, label } in scoreTypeList"

+ 16 - 3
src/views/exercise_questions/create/components/exercises/WritePictureQuestion.vue

@@ -28,7 +28,7 @@
             <div class="item-right">
               <div class="item-rich">
                 <label class="">图片信息</label>
-                <RichText v-model="item.picture_info" :fontSize="12" placeholder="输入图片信息" />
+                <RichText v-model="item.picture_info" :font-size="12" placeholder="输入图片信息" />
               </div>
             </div>
           </div>
@@ -42,6 +42,11 @@
           <p class="tips">多篇范文之间使用分割线(---)</p>
         </template>
       </div>
+
+      <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+        <div class="analysis-title">解析:</div>
+        <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+      </div>
     </template>
 
     <template #property>
@@ -74,6 +79,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_analysis"
+            :label="value"
+          >
+            {{ label }}
+          </el-radio>
+        </el-form-item>
         <el-form-item label="分值">
           <el-radio
             v-for="{ value, label } in scoreTypeList"
@@ -147,8 +162,6 @@ export default {
       deep: true,
     },
   },
-  created() {},
-  mounted() {},
   methods: {
     // 初始化数据
     handleData() {

+ 15 - 0
src/views/exercise_questions/create/components/exercises/WriteQuestion.vue

@@ -18,6 +18,11 @@
           <p class="tips">多篇范文之间使用分割线(---)</p>
         </template>
       </div>
+
+      <div v-if="isEnable(data.property.is_enable_analysis)" class="analysis">
+        <div class="analysis-title">解析:</div>
+        <RichText v-model="data.analysis" :is-border="true" :font-size="14" placeholder="输入解析" />
+      </div>
     </template>
 
     <template #property>
@@ -50,6 +55,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_analysis"
+            :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/answerQuestion.js

@@ -6,6 +6,7 @@ export const answerQuestionData = {
   stem: '', // 题干
   description: '', // 描述
   reference_answer: '', // 参考答案
+  analysis: '', // 解析,富文本
   answer: {
     score: 1,
     score_type: scoreTypeList[0].value,
@@ -17,6 +18,7 @@ export const answerQuestionData = {
     stem_question_number_font_size: fontSizeList[6], // 题干题号
     is_enable_reference_answer: switchOption[0].value, // 是否开启参考答案
     is_enable_description: switchOption[1].value, // 描述
+    is_enable_analysis: switchOption[1].value, // 是否开启解析
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型
   },

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

@@ -57,11 +57,12 @@ export function analysisRecognitionChooseToneData(arr) {
   };
 }
 
-// 选择声调题数据模板
+// 听后辨调题数据模板
 export const ChooseToneData = {
   type: 'choose_tone', // 题型
   stem: '', // 题干
   description: '', // 描述
+  analysis: '', // 解析,富文本
   option_number_show_mode: optionTypeList[0].value, // 选项类型
   option_list: [getOption(), getOption(), getOption()], // 选项
   file_id_list: [],
@@ -73,6 +74,7 @@ export const ChooseToneData = {
     stem_question_number_font_size: fontSizeList[6], // 题干题号
     option_question_number_font_size: fontSizeList[5], // 选项题号
     is_enable_description: switchOption[1].value, // 描述
+    is_enable_analysis: switchOption[1].value, // 是否开启解析
     answer_mode: toneTypeList[0].value, // 音调类型
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型

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

@@ -82,6 +82,7 @@ export function getDialogueData() {
     type: 'dialogue', // 题型
     stem: '', // 题干
     description: '', // 描述
+    analysis: '', // 解析,富文本
     option_list: [], // 选项列表
     file_id_list: [], // 文件 id 列表
     reference_answer: '', // 参考答案
@@ -93,6 +94,7 @@ export function getDialogueData() {
       stem_question_number_font_size: fontSizeList[6], // 题干题号
       score: 1, // 分值
       is_enable_description: switchOption[1].value, // 描述
+      is_enable_analysis: switchOption[1].value, // 是否开启解析
       is_enable_voice_answer: switchOption[0].value, // 语音作答
       is_enable_reference_answer: switchOption[0].value, // 是否开启参考答案
       score_type: scoreTypeList[0].value, // 分值类型

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

@@ -5,6 +5,7 @@ export const essayQuestionData = {
   type: 'essay_question', // 题型
   stem: '', // 题干
   description: '', // 描述
+  analysis: '', // 解析,富文本
   reference_answer: '', // 参考答案
   file_id_list: [], // 文件 id 列表
   answer: {
@@ -17,6 +18,7 @@ export const essayQuestionData = {
     question_number: '1', // 题号
     stem_question_number_font_size: fontSizeList[6], // 题干题号
     is_enable_description: switchOption[1].value, // 描述
+    is_enable_analysis: switchOption[1].value, // 是否开启解析
     is_enable_reference_answer: switchOption[0].value, // 是否开启参考答案
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型

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

@@ -18,6 +18,7 @@ export const fillData = {
   word_select_fill: '', // 选词
   description: '', // 描述
   article: '', // 文章
+  analysis: '', // 解析,富文本
   model_essay: [], // 文章解析后的数据
   reference_answer: '', // 参考答案
   answer: { score: 1, score_type: scoreTypeList[0].value, answer_list: [] }, // 答案
@@ -28,6 +29,7 @@ export const fillData = {
     stem_question_number_font_size: fontSizeList[6], // 题干题号
     is_enable_word_select_fill: switchOption[0].value, // 选词填空
     is_enable_description: switchOption[1].value, // 描述
+    is_enable_analysis: switchOption[1].value, // 是否开启解析
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型
   },

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

@@ -41,6 +41,7 @@ export function getJudgeData() {
     type: 'judge', // 题型
     stem: '', // 题干
     description: '', // 提示
+    analysis: '', // 解析,富文本
     option_number_show_mode: optionTypeList[0].value, // 选项类型
     option_list: [getOption(), getOption(), getOption()], // 选项
     file_id_list: [], // 文件 id 列表
@@ -50,6 +51,7 @@ export function getJudgeData() {
       stem_type: stemTypeList[1].value, // 题干类型
       question_number: '1', // 题号
       is_enable_description: switchOption[1].value,
+      is_enable_analysis: switchOption[1].value, // 是否开启解析
       stem_question_number_font_size: fontSizeList[6], // 题干题号
       option_question_number_font_size: fontSizeList[5], // 选项题号
       option_type_list: [option_type_list[0].value, option_type_list[1].value], // 选项类型列表

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

@@ -17,6 +17,7 @@ export const listenFillData = {
   file_id_list: [], // 文件 id 列表
   word_select_fill: '', // 选词
   description: '', // 描述
+  analysis: '', // 解析,富文本
   article: '', // 文章
   model_essay: [], // 文章解析后的数据
   reference_answer: '', // 参考答案
@@ -29,6 +30,7 @@ export const listenFillData = {
     is_enable_listening: switchOption[0].value, // 是否听力
     is_enable_word_select_fill: switchOption[0].value, // 选词填空
     is_enable_description: switchOption[1].value, // 描述
+    is_enable_analysis: switchOption[1].value, // 是否开启解析
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型
   },

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

@@ -41,6 +41,7 @@ export function getListenJudgeData() {
     type: 'listen_judge', // 题型
     stem: '', // 题干
     description: '', // 描述
+    analysis: '', // 解析,富文本
     option_number_show_mode: optionTypeList[0].value, // 选项类型
     option_list: [getOption(), getOption(), getOption()], // 选项
     file_id_list: [], // 文件 id 列表
@@ -52,6 +53,7 @@ export function getListenJudgeData() {
       stem_question_number_font_size: fontSizeList[6], // 题干题号
       option_question_number_font_size: fontSizeList[5], // 选项题号
       is_enable_description: switchOption[1].value, // 描述
+      is_enable_analysis: switchOption[1].value, // 是否开启解析
       option_type_list: [option_type_list[0].value, option_type_list[1].value], // 选项类型列表
       is_enable_listening: switchOption[0].value, // 是否听力
       score: 1, // 分值

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

@@ -46,6 +46,7 @@ export function getListenSelectData() {
     stem: '', // 题干
     option_number_show_mode: optionTypeList[0].value, // 选项类型
     description: '', // 描述
+    analysis: '', // 解析,富文本
     option_list: [
       { content: '', mark: getRandomNumber() },
       { content: '', mark: getRandomNumber() },
@@ -60,6 +61,7 @@ export function getListenSelectData() {
       stem_question_number_font_size: fontSizeList[6], // 题干题号
       option_question_number_font_size: fontSizeList[5], // 选项题号
       is_enable_description: switchOption[1].value, // 描述
+      is_enable_analysis: switchOption[1].value, // 是否开启解析
       select_type: selectTypeList[0].value, // 选择类型
       is_enable_listening: switchOption[0].value, // 是否听力
       is_option_subdivision: switchOption[1].value, // 选项细分

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

@@ -66,6 +66,7 @@ export function getMatchingDataTemplate() {
     stem: '', // 题干
     option_number_show_mode: optionTypeList[1].value, // 选项类型
     description: '', // 描述
+    analysis: '', // 解析,富文本
     option_list, // 选项
     file_id_list: [], // 文件 id 列表
     answer: { answer_list, score: 1, score_type: scoreTypeList[0].value }, // 答案
@@ -77,6 +78,7 @@ export function getMatchingDataTemplate() {
       option_question_number_font_size: fontSizeList[5], // 选项题号
       column_number: columnNumberList[0].value, // 列数
       is_enable_description: switchOption[1].value, // 描述
+      is_enable_analysis: switchOption[1].value, // 是否开启解析
       score: 1, // 分值
       score_type: scoreTypeList[0].value, // 分值类型
     },

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

@@ -44,6 +44,7 @@ export const replaceAnswerData = {
   type: 'replace_answer', // 题型
   stem: '', // 题干
   description: '', // 描述
+  analysis: '', // 解析,富文本
   option_list: [getOption(), getOption(), getOption(), getOption()], // 选项
   file_id_list: [], // 文件 id 列表
   answer: { score: 1, score_type: scoreTypeList[0].value }, // 答案
@@ -55,6 +56,7 @@ export const replaceAnswerData = {
     stem_question_number_font_size: fontSizeList[6], // 题干题号
     is_enable_description: switchOption[1].value, // 描述
     is_enable_reference_answer: switchOption[0].value, // 是否开启参考答案
+    is_enable_analysis: switchOption[1].value, // 是否开启解析
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型
     row_count: 4,

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

@@ -44,6 +44,7 @@ export function getSelectData() {
     stem: '', // 题干
     option_number_show_mode: optionTypeList[0].value, // 选项类型
     description: '', // 描述
+    analysis: '', // 解析,富文本
     option_list: [
       { content: '', mark: getRandomNumber() },
       { content: '', mark: getRandomNumber() },
@@ -58,6 +59,7 @@ export function getSelectData() {
       stem_question_number_font_size: fontSizeList[6], // 题干题号
       option_question_number_font_size: fontSizeList[5], // 选项题号
       is_enable_description: switchOption[1].value, // 描述
+      is_enable_analysis: switchOption[1].value, // 是否开启解析
       select_type: selectTypeList[0].value, // 选择类型
       is_option_subdivision: switchOption[1].value, // 选项细分
       option_number: 2, // 选项数

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

@@ -63,6 +63,7 @@ export function getSortDataTemplate() {
     type: 'sort', // 题型
     stem: '', // 题干
     description: '', // 描述
+    analysis: '', // 解析,富文本
     option_list, // 选项
     file_id_list: [], // 文件 id 列表
     answer: { answer_list, score: 1, score_type: scoreTypeList[0].value }, // 答案
@@ -74,6 +75,7 @@ export function getSortDataTemplate() {
       stem_question_number_font_size: fontSizeList[6], // 题干题号
       option_question_number_font_size: fontSizeList[5], // 选项题号
       is_enable_description: switchOption[1].value, // 描述
+      is_enable_analysis: switchOption[1].value, // 是否开启解析
       score: 1, // 分值
       score_type: scoreTypeList[0].value, // 分值类型
       layout_type: sortTypeList[0].value,

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

@@ -80,6 +80,7 @@ export function getTableFillData() {
     type: 'table_fill', // 题型
     stem: '', // 题干
     description: '', // 描述
+    analysis: '', // 解析,富文本
     reference_answer: '', // 参考答案
     // 参考答案表头
     reference_answer_option_header_list: [
@@ -108,6 +109,7 @@ export function getTableFillData() {
       stem_question_number_font_size: fontSizeList[6], // 题干题号
       is_enable_table_header: switchOption[0].value, // 是否启用表头
       is_enable_description: switchOption[1].value, // 描述
+      is_enable_analysis: switchOption[1].value, // 是否开启解析
       is_enable_reference_answer: switchOption[0].value, // 参考答案
       score: 1, // 分值
       score_type: scoreTypeList[0].value, // 分值类型

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

@@ -8,7 +8,13 @@ import {
 } from './common';
 import { getRandomNumber } from '@/utils/index';
 export function getOption() {
-  return { picture_info: '', reference_answer: '', picture_file_id: '', mark: getRandomNumber() };
+  return {
+    picture_info: '',
+    reference_answer: '', // 参考答案
+    analysis: '', // 解析 富文本
+    picture_file_id: '',
+    mark: getRandomNumber(),
+  };
 }
 // 看图说话数据模板
 export const talkPictrueData = {
@@ -26,6 +32,7 @@ export const talkPictrueData = {
     stem_question_number_font_size: fontSizeList[6], // 题干题号
     score: 1, // 分值
     is_enable_description: switchOption[1].value, // 描述
+    is_enable_analysis: switchOption[1].value, // 是否开启解析
     is_enable_voice_answer: switchOption[0].value, // 语音作答
     is_enable_reference_answer: switchOption[0].value, // 参考答案
     score_type: scoreTypeList[0].value, // 分值类型

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

@@ -65,6 +65,7 @@ export const wordDictationData = {
   type: 'word_dictation', // 题型
   stem: '', // 题干
   description: '', // 描述
+  analysis: '', // 解析,富文本
   option_number_show_mode: optionTypeList[1].value, // 选项类型
   answer: { score: 1, score_type: scoreTypeList[0].value }, // 答案
   option_list: [getOption(), getOption(), getOption()], // 选项
@@ -75,6 +76,7 @@ export const wordDictationData = {
     question_number: '1', // 题号
     stem_question_number_font_size: fontSizeList[6], // 题干题号
     is_enable_description: switchOption[1].value, // 描述
+    is_enable_analysis: switchOption[1].value, // 是否开启解析
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型
   },

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

@@ -31,6 +31,7 @@ export const writeData = {
   stem: '', // 题干
   option_number_show_mode: optionTypeList[0].value, // 选项类型
   description: '', // 描述
+  analysis: '', // 解析,富文本
   sample_text: '', // 范文
   file_id_list: [], // 文件 id 列表
   answer: { score: 1, score_type: scoreTypeList[0].value }, // 答案
@@ -40,6 +41,7 @@ export const writeData = {
     question_number: '1', // 题号
     stem_question_number_font_size: fontSizeList[6], // 题干题号
     is_enable_description: switchOption[1].value, // 描述
+    is_enable_analysis: switchOption[1].value, // 是否开启解析
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型
     word_num: 50, // 字数

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

@@ -14,6 +14,7 @@ export const writePictrueData = {
   type: 'write_picture', // 题型
   stem: '', // 题干
   description: '',
+  analysis: '', // 解析,富文本
   sample_text: '',
   option_list: [], // 选项
   file_id_list: [],
@@ -25,6 +26,7 @@ export const writePictrueData = {
     stem_question_number_font_size: fontSizeList[6], // 题干题号
     score: 1, // 分值
     is_enable_description: switchOption[1].value, // 描述
+    is_enable_analysis: switchOption[1].value, // 是否开启解析
     score_type: scoreTypeList[0].value, // 分值类型
     word_num: 50, // 字数
     is_enable_sample_text: 'true', // 范文开启

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

@@ -17,6 +17,11 @@
       <h5 class="reference-title">参考答案</h5>
       <span class="reference-answer rich-text" v-html="sanitizeHTML(data.reference_answer)"></span>
     </div>
+
+    <div v-if="isEnable(data.property.is_enable_analysis) && isShowRightAnswer" class="analysis">
+      <span class="analysis-title">解析</span>
+      <div class="analysis-content" v-html="sanitizeHTML(data.analysis)"></div>
+    </div>
   </div>
 </template>
 
@@ -49,7 +54,7 @@ export default {
 
   .reference-box {
     padding: 12px;
-    background: #f9f8f9;
+    background: $content-color;
 
     .reference-title {
       margin: 0 0 10px;

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

@@ -107,6 +107,11 @@
         <img src="../../../assets/tips-icon.png" />
       </span>
     </div>
+
+    <div v-if="isEnable(data.property.is_enable_analysis) && isShowRightAnswer" class="analysis">
+      <span class="analysis-title">解析</span>
+      <div class="analysis-content" v-html="sanitizeHTML(data.analysis)"></div>
+    </div>
   </div>
 </template>
 

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

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

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

@@ -32,6 +32,11 @@
       <h5 class="reference-title">参考答案</h5>
       <span class="reference-answer rich-text" v-html="sanitizeHTML(data.reference_answer)"></span>
     </div>
+
+    <div v-if="isEnable(data.property.is_enable_analysis) && isShowRightAnswer" class="analysis">
+      <span class="analysis-title">解析</span>
+      <div class="analysis-content" v-html="sanitizeHTML(data.analysis)"></div>
+    </div>
   </div>
 </template>
 
@@ -116,7 +121,7 @@ export default {
 
   .reference-box {
     padding: 12px;
-    background: #f9f8f9;
+    background: $content-color;
 
     .reference-title {
       margin: 0 0 10px;

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

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

+ 6 - 1
src/views/exercise_questions/preview/JudgePreview.vue

@@ -47,6 +47,11 @@
         </div>
       </li>
     </ul>
+
+    <div v-if="isEnable(data.property.is_enable_analysis) && isShowRightAnswer" class="analysis">
+      <span class="analysis-title">解析</span>
+      <div class="analysis-content" v-html="sanitizeHTML(data.analysis)"></div>
+    </div>
   </div>
 </template>
 
@@ -99,7 +104,7 @@ export default {
       if (!this.isShowRightAnswer) return '';
       let selectOption = this.answer.answer_list.find((item) => item.mark === mark); // 查找是否已选中的选项
       // 是否是正确的选项类型
-      let isCorrectType = this.data.answer.answer_list.find((item) => item.mark === mark).option_type === option_type;
+      let isCorrectType = this.data.answer.answer_list.find((item) => item.mark === mark)?.option_type === option_type;
       if (!selectOption) {
         return isCorrectType ? 'answer-right' : '';
       }

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

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

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

@@ -53,6 +53,11 @@
         </div>
       </li>
     </ul>
+
+    <div v-if="isEnable(data.property.is_enable_analysis) && isShowRightAnswer" class="analysis">
+      <span class="analysis-title">解析</span>
+      <div class="analysis-content" v-html="sanitizeHTML(data.analysis)"></div>
+    </div>
   </div>
 </template>
 

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

@@ -56,6 +56,11 @@
         <span class="content rich-text" v-html="sanitizeHTML(content)"></span>
       </li>
     </ul>
+
+    <div v-if="isEnable(data.property.is_enable_analysis) && isShowRightAnswer" class="analysis">
+      <span class="analysis-title">解析</span>
+      <div class="analysis-content" v-html="sanitizeHTML(data.analysis)"></div>
+    </div>
   </div>
 </template>
 

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

@@ -42,6 +42,11 @@
         </li>
       </ul>
     </div>
+
+    <div v-if="isEnable(data.property.is_enable_analysis) && isShowRightAnswer" class="analysis">
+      <span class="analysis-title">解析</span>
+      <div class="analysis-content" v-html="sanitizeHTML(data.analysis)"></div>
+    </div>
   </div>
 </template>
 

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

@@ -40,6 +40,11 @@
       <h5 class="reference-title">参考答案</h5>
       <span class="reference-answer rich-text" v-html="sanitizeHTML(data.reference_answer)"></span>
     </div>
+
+    <div v-if="isEnable(data.property.is_enable_analysis) && isShowRightAnswer" class="analysis">
+      <span class="analysis-title">解析</span>
+      <div class="analysis-content" v-html="sanitizeHTML(data.analysis)"></div>
+    </div>
   </div>
 </template>
 
@@ -224,7 +229,7 @@ export default {
 
   .reference-box {
     padding: 12px;
-    background: #f9f8f9;
+    background: $content-color;
 
     .reference-title {
       margin: 0 0 10px;

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

@@ -53,6 +53,11 @@
         <span class="content rich-text" v-html="sanitizeHTML(content)"></span>
       </li>
     </ul>
+
+    <div v-if="isEnable(data.property.is_enable_analysis) && isShowRightAnswer" class="analysis">
+      <span class="analysis-title">解析</span>
+      <div class="analysis-content" v-html="sanitizeHTML(data.analysis)"></div>
+    </div>
   </div>
 </template>
 

+ 6 - 1
src/views/exercise_questions/preview/SortPreview.vue

@@ -92,6 +92,11 @@
         </div>
       </template>
     </template>
+
+    <div v-if="isEnable(data.property.is_enable_analysis) && isShowRightAnswer" class="analysis">
+      <span class="analysis-title">解析</span>
+      <div class="analysis-content" v-html="sanitizeHTML(data.analysis)"></div>
+    </div>
   </div>
 </template>
 
@@ -293,7 +298,7 @@ export default {
       // max-width: 800px;
       padding: 8px 16px;
       background: $content-color;
-      border: 1px solid #f9f8f9;
+      border: 1px solid $content-color;
       border-radius: 4px;
 
       :deep p {

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

@@ -98,6 +98,11 @@
         </div>
       </div>
     </div>
+
+    <div v-if="isEnable(data.property.is_enable_analysis) && isShowRightAnswer" class="analysis">
+      <span class="analysis-title">解析</span>
+      <div class="analysis-content" v-html="sanitizeHTML(data.analysis)"></div>
+    </div>
   </div>
 </template>
 

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

@@ -50,6 +50,10 @@
           <h5 class="reference-title">参考答案</h5>
           <span class="reference-answer rich-text" v-html="sanitizeHTML(item.reference_answer)"></span>
         </div>
+        <div v-if="isEnable(data.property.is_enable_analysis) && isShowRightAnswer" class="analysis">
+          <span class="analysis-title">解析</span>
+          <div class="analysis-content" v-html="sanitizeHTML(data.analysis)"></div>
+        </div>
       </div>
     </div>
   </div>
@@ -175,8 +179,8 @@ export default {
 
   .reference-box {
     padding: 12px;
-    margin-top: 8px;
-    background: #f9f8f9;
+    margin: 8px 0;
+    background: $content-color;
 
     .reference-title {
       margin: 0 0 10px;

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

@@ -23,7 +23,7 @@
           </div>
           <div class="words-dic-box">
             <div v-for="(itemc, indexc) in item.imgArr" :key="indexc" class="words-dic-item">
-              <span class="pinyin" v-if="item.pinyin_arr[indexc]">{{ item.pinyin_arr[indexc].pinyin_item }}</span>
+              <span v-if="item.pinyin_arr[indexc]" class="pinyin">{{ item.pinyin_arr[indexc].pinyin_item }}</span>
               <div
                 :class="['strockplay-newWord']"
                 @click="freeWrite(itemc ? JSON.parse(itemc) : itemc, index, indexc, item.mark)"
@@ -52,7 +52,7 @@
             <div class="words-dic-box">
               <template v-if="item.hz_strokes_list && item.hz_strokes_list.length > 0">
                 <div v-for="(items, indexs) in item.hz_strokes_list" :key="indexs + '_' + index" class="words-dic-item">
-                  <span class="pinyin" v-if="item.pinyin_arr[indexs]">{{ item.pinyin_arr[indexs].pinyin_item }}</span>
+                  <span v-if="item.pinyin_arr[indexs]" class="pinyin">{{ item.pinyin_arr[indexs].pinyin_item }}</span>
                   <Strockplayredline
                     v-if="items"
                     :play-storkes="true"
@@ -68,6 +68,10 @@
         </div>
       </div>
     </div>
+    <div v-if="isEnable(data.property.is_enable_analysis) && isShowRightAnswer" class="analysis">
+      <span class="analysis-title">解析</span>
+      <div class="analysis-content" v-html="sanitizeHTML(data.analysis)"></div>
+    </div>
     <div v-if="if_free_show" class="practiceBox practice-box-strock">
       <FreewriteLettle
         ref="freePaint"
@@ -459,7 +463,7 @@ export default {
 
   .reference-box {
     padding: 12px;
-    background: #f9f8f9;
+    background: $content-color;
 
     .reference-title {
       margin: 0 0 10px;

+ 6 - 1
src/views/exercise_questions/preview/WritePictruePreview.vue

@@ -69,6 +69,11 @@
       >
       <div v-if="show_sample_text" class="article-content rich-text" v-html="sanitizeHTML(data.sample_text)"></div>
     </template>
+
+    <div v-if="isEnable(data.property.is_enable_analysis) && isShowRightAnswer" class="analysis">
+      <span class="analysis-title">解析</span>
+      <div class="analysis-content" v-html="sanitizeHTML(data.analysis)"></div>
+    </div>
   </div>
 </template>
 
@@ -189,7 +194,7 @@ export default {
 
   .reference-box {
     padding: 12px;
-    background: #f9f8f9;
+    background: $content-color;
 
     .reference-title {
       margin: 0 0 10px;

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

@@ -47,6 +47,11 @@
       >
       <div v-if="show_sample_text" class="article-content rich-text" v-html="sanitizeHTML(data.sample_text)"></div>
     </template>
+
+    <div v-if="isEnable(data.property.is_enable_analysis) && isShowRightAnswer" class="analysis">
+      <span class="analysis-title">解析</span>
+      <div class="analysis-content" v-html="sanitizeHTML(data.analysis)"></div>
+    </div>
   </div>
 </template>