Browse Source

Merge branch 'master' of http://60.205.254.193:3000/GCLS/GCLS_Page_Exercise

dusenyao 1 year ago
parent
commit
f96e83d573

+ 6 - 1
src/views/exercise_questions/create/components/exercises/ChineseQuestion.vue

@@ -23,9 +23,10 @@
             <el-input v-model="item.content" :placeholder="'输入汉字或词汇'" @blur="handleChineseStrokes(item, i)" />
             <el-input
               v-model="item.pinyin"
-              :placeholder="'拼音间用空格隔开'"
+              :placeholder="'拼音间用空格隔开,如: ni3 hao3'"
               @blur="handleSplitPy(item)"
               @change="changePinyin(item)"
+              style="min-width: 240px"
             />
             <UploadAudio
               v-if="data.other.audio_generation_method === 'upload'"
@@ -387,6 +388,10 @@ export default {
       margin-top: 0;
     }
 
+    :deep .upload-audio {
+      width: 160px;
+    }
+
     :deep .file-name {
       width: 205px;
       overflow: hidden;

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

@@ -28,6 +28,13 @@
               @blur="handleItemAnswer(item)"
               @change="changePinyin(item)"
             />
+            <el-input
+              v-model="matically_pinyin_str[item.mark]"
+              :placeholder="'拼音预览'"
+              :readonly="true"
+              style="width: 200px"
+            />
+
             <UploadAudio
               v-if="data.other.audio_generation_method === 'upload'"
               :key="item.audio_file_id || i"
@@ -167,6 +174,7 @@ export default {
       toneTypeList,
       data: JSON.parse(JSON.stringify(ChooseToneData)),
       matically_pinyin_obj: {}, // 存放转成声调的拼音
+      matically_pinyin_str: {}, // 存放转成声调的字符串
       res_arr: [],
       loading_list: [
         {
@@ -191,6 +199,7 @@ export default {
           };
           this.loading_list.push(obj);
         }
+        this.handleChangeType();
       },
       deep: true,
       immediate: true,
@@ -258,6 +267,12 @@ export default {
         )
         .filter((item) => item.length > 0)
         .join(',');
+      this.matically_pinyin_str[mark] = this.res_arr
+        .map((item) =>
+          item.map(({ number, con }) => (number && con ? addTone(Number(number), con) : number || con || '')),
+        )
+        .filter((item) => item.length > 0)
+        .join(' ');
     },
     handleValue(valItem) {
       let numList = [];
@@ -291,6 +306,7 @@ export default {
       let content_preview = '';
       this.res_arr = [];
       this.$set(this.matically_pinyin_obj, item.mark, []);
+      this.$set(this.matically_pinyin_str, item.mark, '');
       content_arr.forEach((items, index) => {
         let items_trim = items.trim();
         if (items_trim) {

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

@@ -23,7 +23,7 @@
               <RichText
                 v-model="item.content"
                 class="repeat-richtext"
-                placeholder="输入内容"
+                placeholder="拼音间用空格隔开,如: ni3 hao3"
                 :inline="true"
                 @handleRichTextBlur="handleRichTextBlur"
               />

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

@@ -220,6 +220,7 @@ export default {
   .option-content {
     min-width: 110px;
     max-width: 110px;
+    word-break: break-word;
   }
 }
 

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

@@ -31,7 +31,7 @@
             <div class="item-right">
               <div class="item-rich">
                 <label class="">图片信息</label>
-                <RichText v-model="item.picture_info" placeholder="输入图片信息" />
+                <RichText v-model="item.picture_info" :fontSize="12" placeholder="输入图片信息" />
               </div>
               <div v-if="isEnable(data.property.is_enable_reference_answer)" class="item-rich">
                 <label class="">参考答案</label>
@@ -262,6 +262,10 @@ export default {
         line-height: 32px;
         color: #4e5969;
       }
+
+      :deep .rich-wrapper {
+        flex: 1;
+      }
     }
   }
 

+ 5 - 1
src/views/exercise_questions/create/components/exercises/WordCardQuestion.vue

@@ -34,7 +34,11 @@
                   :placeholder="'输入汉字或词汇'"
                   @blur="handleChineseStrokes(item, i)"
                 />
-                <el-input v-model="item.pinyin" :placeholder="'拼音间用空格隔开'" @change="changePinyin(item)" />
+                <el-input
+                  v-model="item.pinyin"
+                  :placeholder="'拼音间用空格隔开,如: ni3 hao3'"
+                  @change="changePinyin(item)"
+                />
                 <UploadAudio
                   v-if="data.other.audio_generation_method === 'upload'"
                   :key="item.audio_file_id || i"

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

@@ -21,7 +21,7 @@
             <el-input v-model="item.content" :placeholder="'输入汉字或词汇'" />
             <el-input
               v-model="item.pinyin"
-              :placeholder="'拼音间用空格隔开'"
+              :placeholder="'拼音间用空格隔开,如: ni3 hao3'"
               @blur="handleSplitPy(item)"
               @change="changePinyin(item)"
             />

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

@@ -27,12 +27,8 @@
             </div>
             <div class="item-right">
               <div class="item-rich">
-                <label class="">图片标题</label>
-                <RichText v-model="item.picture_title" placeholder="输入图片标题" />
-              </div>
-              <div class="item-rich">
                 <label class="">图片信息</label>
-                <RichText v-model="item.picture_info" placeholder="输入图片信息" />
+                <RichText v-model="item.picture_info" :fontSize="12" placeholder="输入图片信息" />
               </div>
             </div>
           </div>
@@ -267,6 +263,10 @@ export default {
         line-height: 32px;
         color: #4e5969;
       }
+
+      :deep .rich-wrapper {
+        flex: 1;
+      }
     }
   }
 }

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

@@ -277,13 +277,9 @@ export default {
               arr.push(null);
             });
           }
+          item.imgArr = arr;
           if (this.isJudgingRightWrong) {
-            item.imgArr =
-              this.answer.answer_list[index] && this.answer.answer_list[index].strokes_content_list
-                ? this.answer.answer_list[index].strokes_content_list
-                : arr;
-          } else {
-            item.imgArr = arr;
+            item.imgArr = this.answer.answer_list.find((items) => items.mark === item.mark)?.strokes_content_list;
           }
         }
         let obj = {

+ 27 - 11
src/views/exercise_questions/preview/WordCardPreview.vue

@@ -27,6 +27,20 @@
       <div class="words-right">
         <template v-for="(item, index) in option_list">
           <div v-if="index === active_index" :key="index" class="strock-box">
+            <div
+              v-if="item.audio_file_id"
+              class="pinyin-box"
+              :style="{
+                width:
+                  item.hz_strokes_list && item.hz_strokes_list.length < 6
+                    ? 96 * item.hz_strokes_list.length + 'px'
+                    : '576px',
+              }"
+            >
+              <div class="pinyin-inner">
+                <AudioPlay v-if="item.audio_file_id" :file-id="item.audio_file_id" theme-color="white" />
+              </div>
+            </div>
             <div v-if="item.hz_strokes_list && item.hz_strokes_list.length > 0" class="strock-left">
               <div v-for="(items, indexs) in item.hz_strokes_list" :key="indexs + '_' + index">
                 <span class="pinyin">{{
@@ -41,9 +55,6 @@
                   :class="['strock-chinese', indexs !== item.hz_strokes_list.length - 1 ? 'border-right-none' : '']"
                 />
               </div>
-              <div v-if="item.audio_file_id" class="pinyin-box">
-                <AudioPlay v-if="item.audio_file_id" :file-id="item.audio_file_id" theme-color="white" />
-              </div>
             </div>
           </div>
         </template>
@@ -235,14 +246,19 @@ export default {
 
   .pinyin-box {
     display: flex;
-    gap: 4px;
-    align-items: center;
-    width: max-content;
-    height: 36px;
-    padding: 4px 8px;
-    margin-left: 16px;
-    background: rgba(47, 111, 236, 100%);
-    border-radius: 40px;
+    justify-content: center;
+
+    .pinyin-inner {
+      display: flex;
+      gap: 4px;
+      align-items: center;
+      width: max-content;
+      height: 36px;
+      padding: 4px 8px;
+      margin-bottom: 16px;
+      background: rgba(47, 111, 236, 100%);
+      border-radius: 40px;
+    }
 
     :deep .audio-play {
       width: auto;

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

@@ -169,13 +169,9 @@ export default {
           arr.push(null);
           item.pinyin_arr.push(obj);
         });
+        item.imgArr = arr;
         if (this.isJudgingRightWrong) {
-          item.imgArr =
-            this.answer.answer_list[index] && this.answer.answer_list[index].strokes_content_list
-              ? this.answer.answer_list[index].strokes_content_list
-              : arr;
-        } else {
-          item.imgArr = arr;
+          item.imgArr = this.answer.answer_list.find((items) => items.mark === item.mark)?.strokes_content_list;
         }
 
         let obj = {

+ 7 - 20
src/views/exercise_questions/preview/WritePictruePreview.vue

@@ -19,10 +19,7 @@
           style="width: 370px; height: 238px"
           :src="pic_list[item.picture_file_id]"
           fit="contain"
-          :class="[active_index !== index ? 'not-active' : '']"
-          @click="active_index = index"
         />
-        <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>
@@ -39,7 +36,7 @@
         show-word-limit
         :readonly="disabled"
         @input="handleInput"
-        :autosize="{ minRows: 12 }"
+        :autosize="{ minRows: 5 }"
       />
     </div>
     <template v-if="isEnable(data.property.is_enable_upload_accessory)">
@@ -99,6 +96,7 @@ export default {
     },
   },
   created() {
+    console.log(this.data);
     // this.handleData();
   },
   methods: {
@@ -113,14 +111,11 @@ export default {
         });
       });
       if (!this.isJudgingRightWrong) {
-        this.data.option_list.forEach((item) => {
-          let obj = {
-            mark: item.mark,
-            text: '',
-            accessory_file_id: [], // 上传文件列表
-          };
-          this.answer.answer_list.push(obj);
-        });
+        let obj = {
+          text: '',
+          accessory_file_id: [], // 上传文件列表
+        };
+        this.answer.answer_list.push(obj);
       }
     },
     changeImg(index) {
@@ -162,14 +157,6 @@ export default {
     width: 100%;
     overflow: auto;
 
-    .el-image {
-      cursor: pointer;
-
-      &.not-active {
-        opacity: 0.2;
-      }
-    }
-
     .pic-title {
       margin: 8px 0 4px;
       font-size: 12px;

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

@@ -22,7 +22,7 @@
       show-word-limit
       :readonly="disabled"
       @input="handleInput"
-      :autosize="{ minRows: 3 }"
+      :autosize="{ minRows: 5 }"
     />
 
     <template v-if="isEnable(data.property.is_enable_upload_accessory)">