Browse Source

注释、视频交互等多语言

natasha 3 days ago
parent
commit
9cee08c8cd

+ 22 - 1
src/views/book/courseware/create/components/question/image_text/ImageText.vue

@@ -186,6 +186,13 @@
           </li>
         </ul>
       </template>
+      <el-button @click="handleMultilingual">多语言</el-button>
+      <MultilingualFill
+        :visible.sync="multilingualVisible"
+        :text="multilingualText"
+        :translations="data.multilingual"
+        @SubmitTranslation="handleMultilingualTranslation"
+      />
     </template>
   </ModuleBase>
 </template>
@@ -195,12 +202,14 @@ import ModuleMixin from '../../common/ModuleMixin';
 import UploadFile from '../../base/common/UploadFile.vue';
 import { getImageTextData } from '@/views/book/courseware/data/imageText';
 import SelectUpload from '@/views/book/courseware/create/components/common/SelectUpload.vue';
+import MultilingualFill from '@/views/book/components/MultilingualFill.vue';
+
 import { GetFileURLMap } from '@/api/app';
 import { fileToBase64Text, prepareTranscribe, getWordTime } from '@/api/article';
 
 export default {
   name: 'ImageTextPage',
-  components: { UploadFile, SelectUpload },
+  components: { UploadFile, SelectUpload, MultilingualFill },
   mixins: [ModuleMixin],
   data() {
     return {
@@ -218,6 +227,8 @@ export default {
       isText: true, // 框选是文本还是输入框
       inputActiveIndex: null, // 当前编辑输入框热区索引
       loading: false,
+      multilingualVisible: false,
+      multilingualText: '',
     };
   },
   watch: {
@@ -379,6 +390,16 @@ export default {
           this.loading = false;
         });
     },
+    handleMultilingual() {
+      this.multilingualText = '';
+      this.data.text_list.forEach((item) => {
+        this.multilingualText += item.text ? '<p>' + item.text + '</p>' : '<p>&nbsp;</p>';
+      });
+      this.multilingualVisible = true;
+    },
+    handleMultilingualTranslation(multilingual) {
+      this.data.multilingual = multilingual;
+    },
   },
 };
 </script>

+ 1 - 1
src/views/book/courseware/create/components/question/new_word/NewWord.vue

@@ -710,7 +710,7 @@ export default {
       this.$set(this.data, 'lrc_arr', []);
     },
     handleMultilingual() {
-      this.multilingualText = this.data.title_con + '\n';
+      this.multilingualText = this.data.title_con;
       this.data.new_word_list.forEach((item) => {
         this.multilingualText += '<p>' + item.new_word + '</p>';
         this.multilingualText += item.cixing ? item.cixing : '<p>&nbsp;</p>';

+ 22 - 1
src/views/book/courseware/create/components/question/notes/Notes.vue

@@ -51,22 +51,32 @@
         </el-table-column>
       </el-table>
       <el-button icon="el-icon-plus" style="margin: 24px 0" @click="addElement">增加一个</el-button>
+      <el-button @click="handleMultilingual">多语言</el-button>
+      <MultilingualFill
+        :visible.sync="multilingualVisible"
+        :text="multilingualText"
+        :translations="data.multilingual"
+        @SubmitTranslation="handleMultilingualTranslation"
+      />
     </template>
   </ModuleBase>
 </template>
 
 <script>
 import ModuleMixin from '../../common/ModuleMixin';
+import MultilingualFill from '@/views/book/components/MultilingualFill.vue';
 
 import { getNotesData, getOption } from '@/views/book/courseware/data/notes';
 
 export default {
   name: 'NotesPage',
-  components: {},
+  components: { MultilingualFill },
   mixins: [ModuleMixin],
   data() {
     return {
       data: getNotesData(),
+      multilingualVisible: false,
+      multilingualText: '',
     };
   },
   watch: {
@@ -106,6 +116,17 @@ export default {
     handleBlurCon() {
       this.handleMindMap();
     },
+    handleMultilingual() {
+      this.multilingualText = this.data.title_con;
+      this.data.option.forEach((item) => {
+        this.multilingualText += item.con ? item.con : '<p>&nbsp;</p>';
+        this.multilingualText += item.note ? item.note : '<p>&nbsp;</p>';
+      });
+      this.multilingualVisible = true;
+    },
+    handleMultilingualTranslation(multilingual) {
+      this.data.multilingual = multilingual;
+    },
   },
 };
 </script>

+ 24 - 1
src/views/book/courseware/create/components/question/table/Table.vue

@@ -83,6 +83,7 @@
       </div>
       <p class="tips">在需要作答的单元格内输入三个以上下划线“___”</p>
       <el-button @click="identifyText">识别</el-button>
+      <el-button @click="handleMultilingual">多语言</el-button>
       <template v-if="isEnable(data.has_identify)">
         <p class="tips">在需要作答的单元格内录入标准答案,多个填空答案用换行录入,同一个填空有多个答案用斜线“/”隔开</p>
         <div class="option-list">
@@ -93,6 +94,12 @@
           </div>
         </div>
       </template>
+      <MultilingualFill
+        :visible.sync="multilingualVisible"
+        :text="multilingualText"
+        :translations="data.multilingual"
+        @SubmitTranslation="handleMultilingualTranslation"
+      />
     </template>
   </ModuleBase>
 </template>
@@ -100,6 +107,8 @@
 <script>
 import { isEnable } from '@/views/book/courseware/data/common';
 import ModuleMixin from '../../common/ModuleMixin';
+import MultilingualFill from '@/views/book/components/MultilingualFill.vue';
+
 import { getRandomNumber } from '@/utils';
 
 import {
@@ -112,7 +121,7 @@ import {
 
 export default {
   name: 'Table',
-  components: {},
+  components: { MultilingualFill },
   mixins: [ModuleMixin],
   data() {
     return {
@@ -120,6 +129,8 @@ export default {
       data: getTableData(),
       tableTypeList,
       fontFamilyList,
+      multilingualVisible: false,
+      multilingualText: '',
     };
   },
   watch: {
@@ -254,6 +265,18 @@ export default {
     handleBlurCon() {
       this.handleMindMap();
     },
+    handleMultilingual() {
+      this.multilingualText = '';
+      this.data.option_list.forEach((item) => {
+        item.forEach((items) => {
+          this.multilingualText += items.content ? '<p>' + items.content + '</p>' : '<p>&nbsp;</p>';
+        });
+      });
+      this.multilingualVisible = true;
+    },
+    handleMultilingualTranslation(multilingual) {
+      this.data.multilingual = multilingual;
+    },
   },
 };
 </script>

+ 23 - 2
src/views/book/courseware/create/components/question/video_interaction/VideoInteraction.vue

@@ -19,6 +19,7 @@
       <div class="interaction-box" v-if="data.video_list.length > 0">
         <video id="interaction-video" :src="data.video_list[0].file_url" width="100%" height="400" controls></video>
         <el-button type="primary" size="small" @click="handlePause">暂停视频上传文件</el-button>
+        <el-button @click="handleMultilingual">多语言</el-button>
         <ul v-if="data.file_info_list.length > 0" class="file-list">
           <li v-for="(file, i) in data.file_info_list" :key="i">
             <div class="file-name">
@@ -61,6 +62,12 @@
           <el-button :loading="loading" type="primary" @click="submitAdd">确 定</el-button>
         </footer>
       </el-dialog>
+      <MultilingualFill
+        :visible.sync="multilingualVisible"
+        :text="multilingualText"
+        :translations="data.multilingual"
+        @SubmitTranslation="handleMultilingualTranslation"
+      />
     </template>
   </ModuleBase>
 </template>
@@ -68,12 +75,14 @@
 <script>
 import ModuleMixin from '../../common/ModuleMixin';
 import UploadFile from '../../base/common/UploadFile.vue';
+import MultilingualFill from '@/views/book/components/MultilingualFill.vue';
+
 import { getVideoInteractionData } from '@/views/book/courseware/data/videoInteraction';
 import { GetFileURLMap } from '@/api/app';
 
 export default {
   name: 'VideoInteractionPage',
-  components: { UploadFile },
+  components: { UploadFile, MultilingualFill },
   mixins: [ModuleMixin],
   data() {
     return {
@@ -87,6 +96,8 @@ export default {
       file_id_list: [],
       loading: false,
       currentTime: 0,
+      multilingualVisible: false,
+      multilingualText: '',
     };
   },
   watch: {
@@ -121,7 +132,7 @@ export default {
     handleMindMap() {
       // 思维导图数据
       let node_list = [];
-      this.data.file_list.forEach((item) => {
+      this.data.file_info_list.forEach((item) => {
         node_list.push({
           name: item.file_name,
           id: Math.random().toString(36).substring(2, 12),
@@ -171,6 +182,16 @@ export default {
         })
         .catch(() => {});
     },
+    handleMultilingual() {
+      this.multilingualText = '';
+      this.data.file_info_list.forEach((item) => {
+        this.multilingualText += '<p>' + (item.file_name ? item.file_name : item.name) + '</p>';
+      });
+      this.multilingualVisible = true;
+    },
+    handleMultilingualTranslation(multilingual) {
+      this.data.multilingual = multilingual;
+    },
   },
 };
 </script>