Просмотр исходного кода

调整选择声调数据结构

natasha 1 год назад
Родитель
Сommit
689f6e388c

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

@@ -115,7 +115,7 @@
           <el-radio
             v-for="{ value, label } in toneTypeList"
             :key="value"
-            v-model="data.property.tone_type"
+            v-model="data.property.answer_mode"
             :label="value"
             @change="handleChangeType"
           >
@@ -219,11 +219,11 @@ export default {
           } else if (items.indexOf('4') > -1) {
             indexs = items.indexOf('4');
           }
-          if (this.data.property.tone_type === 'select') {
+          if (this.data.property.answer_mode === 'select') {
             // 如果是选择声调 把声调放在拼音后面
             // select_item += `${items_yuan + items_trim.substring(indexs, indexs + 1)} `;
             select_item += `${items_trim.substring(indexs, indexs + 1)} `;
-          } else if (this.data.property.tone_type === 'dimension') {
+          } else if (this.data.property.answer_mode === 'label') {
             // 如果是标注声调 把声调放在对应字母后面
             select_item += `${items_trim} `;
           }
@@ -239,7 +239,7 @@ export default {
       } else {
         this.data.answer.answer_list[index].value = select_item.trim().split(' ');
       }
-      item.content_preview = content_preview.trim().split(' ');
+      item.content_view = content_preview.trim().split(' ');
     },
     // 改变类型
     handleChangeType() {

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

@@ -5,9 +5,8 @@ export function getOption(content = '') {
   return {
     content,
     mark: getRandomNumber(),
-    content_preview: [],
+    content_view: [],
     audio_file_id: '',
-    tone: '',
     audio_wav: '',
     audio_wav_time: 0,
   };
@@ -23,7 +22,7 @@ export const toneList = [
 
 export const toneTypeList = [
   { value: 'select', label: '选择声调' },
-  { value: 'dimension', label: '标注声调' },
+  { value: 'label', label: '标注声调' },
 ];
 
 export const audioGenerationMethodList = [
@@ -55,7 +54,7 @@ export const ChooseToneData = {
     stem_type: stemTypeList[0].value, // 题干类型
     question_number: 1, // 题号
     is_enable_description: false, // 描述
-    tone_type: toneTypeList[0].value, // 音调类型
+    answer_mode: toneTypeList[0].value, // 音调类型
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型
   },

+ 6 - 6
src/views/exercise_questions/preview/ChooseTonePreview.vue

@@ -12,7 +12,7 @@
         <span>{{ computeOptionMethods[data.option_number_show_mode](i) }}. </span>
         <AudioPlay v-if="item.audio_file_id" :file-id="item.audio_file_id" />
         <div class="option-content">
-          <template v-if="data.property.tone_type === 'select'">
+          <template v-if="data.property.answer_mode === 'select'">
             <span
               v-for="(itemc, indexc) in con_preview[i].item_con"
               :key="indexc"
@@ -42,10 +42,10 @@
           :key="j"
           :class="[
             'tone',
-            data.property.tone_type === 'select' &&
+            data.property.answer_mode === 'select' &&
             con_preview[i].user_answer[con_preview[i].item_active_index].select_tone === value
               ? 'active'
-              : data.property.tone_type === 'dimension' &&
+              : data.property.answer_mode === 'label' &&
                 con_preview[i].user_answer[con_preview[i].item_active_index].select_tone === value &&
                 con_preview[i].user_answer[con_preview[i].item_active_index].select_letter === active_letter &&
                 select_item_index === i
@@ -104,9 +104,9 @@ export default {
   },
   methods: {
     chooseTone(item, value, i) {
-      if (!this.active_letter && this.data.property.tone_type === 'dimension') return;
+      if (!this.active_letter && this.data.property.answer_mode === 'label') return;
       item.user_answer[item.item_active_index].select_tone = value;
-      if (this.data.property.tone_type === 'dimension') {
+      if (this.data.property.answer_mode === 'label') {
         item.user_answer[item.item_active_index].select_letter = this.active_letter;
         this.active_index_str = `${i}-${item.item_active_index}-${this.active_letter_index}`;
         this.handleReplaceTone(this.active_letter + value);
@@ -130,7 +130,7 @@ export default {
     handleData() {
       this.con_preview = [];
       this.data.option_list.forEach((item) => {
-        let con_arr = item.content_preview;
+        let con_arr = item.content_view;
         let user_answer = [];
         con_arr.forEach(() => {
           user_answer.push({

+ 24 - 2
src/views/exercise_questions/preview/WritePreview.vue

@@ -8,8 +8,14 @@
     <div v-html="sanitizeHTML(data.article)"></div>
     <div v-if="data.property.is_enable_description" class="description">{{ data.description }}</div>
     <template v-if="data.property.is_enable_model_essay">
-      <el-divider content-position="center"><span :class="[show_sample_text ? '' : '']">查看范文</span></el-divider>
-      <div v-html="sanitizeHTML(data.sample_text)"></div>
+      <el-divider content-position="center"
+        ><span
+          :class="['sample-text', show_sample_text ? 'sample-show' : 'sample-hide']"
+          @click="show_sample_text = !show_sample_text"
+          >{{ show_sample_text ? '隐藏范文' : '查看范文' }}</span
+        ></el-divider
+      >
+      <div v-if="show_sample_text" v-html="sanitizeHTML(data.sample_text)"></div>
     </template>
   </div>
 </template>
@@ -37,5 +43,21 @@ export default {
 
 .write-preview {
   @include preview;
+
+  .el-divider--horizontal {
+    margin: 12px 0;
+  }
+
+  .sample-text {
+    font-size: 14px;
+    font-weight: 400;
+    line-height: 30px;
+    color: #000;
+    cursor: pointer;
+
+    &.sample-show {
+      color: #306eff;
+    }
+  }
 }
 </style>