Bladeren bron

增加思维导图结构数据:题干 描述 图片 音频 视频

zq 2 dagen geleden
bovenliggende
commit
0f0745f166

+ 13 - 0
src/views/book/courseware/create/components/base/audio/Audio.vue

@@ -43,6 +43,19 @@ export default {
       this.data.file_list = file_list;
       this.data.file_id_list = file_id_list;
       this.data.file_info_list = file_info_list;
+      this.handlerMindMap();
+    },
+    // 思维导图
+    handlerMindMap() {
+      this.$set(this.data.mind_map, 'node_list', [
+        {
+          name: '音频',
+          node_list:
+            this.data.file_list?.map((file) => ({
+              name: file.file_name === undefined ? '' : file.file_name,
+            })) ?? [],
+        },
+      ]);
     },
   },
 };

+ 1 - 1
src/views/book/courseware/create/components/base/common/UploadFile.vue

@@ -35,7 +35,7 @@
             v-if="file.progress > 0 && file.progress < 100"
             type="circle"
             :percentage="file.progress"
-            width="20"
+            :width="20"
             color="#2A5AF6"
             stroke-linecap="butt"
             :show-text="false"

+ 21 - 0
src/views/book/courseware/create/components/base/describe/Describe.vue

@@ -28,6 +28,7 @@ import { isEnable } from '@/views/book/courseware/data/common';
 import ModuleMixin from '../../common/ModuleMixin';
 import RichText from '@/components/RichText.vue';
 import PinyinText from '@/components/PinyinText.vue';
+import DOMPurify from 'dompurify';
 
 export default {
   name: 'DescribePage',
@@ -54,6 +55,10 @@ export default {
       },
       deep: true,
     },
+    'data.content': {
+      handler: 'handlerMindMap',
+      deep: true,
+    },
   },
   methods: {
     showSetting() {
@@ -88,6 +93,22 @@ export default {
       });
       this.data.paragraph_list[i][j][k].pinyin = tonePinyin;
     },
+    // 思维导图
+    handlerMindMap() {
+      this.$set(this.data.mind_map, 'node_list', [
+        {
+          name: `题干:${this.sanitizeHTML(this.data.content)}`,
+        },
+      ]);
+    },
+    /**
+     * 过滤 html,防止 xss 攻击
+     * @param {string} html 需要过滤的html
+     * @returns {string} 过滤后的html
+     */
+    sanitizeHTML(html) {
+      return DOMPurify.sanitize(html, { ALLOWED_TAGS: [] });
+    },
   },
 };
 </script>

+ 13 - 0
src/views/book/courseware/create/components/base/picture/Picture.vue

@@ -43,6 +43,19 @@ export default {
       this.data.file_list = file_list;
       this.data.file_id_list = file_id_list;
       this.data.file_info_list = file_info_list;
+      this.handlerMindMap();
+    },
+    // 思维导图
+    handlerMindMap() {
+      this.$set(this.data.mind_map, 'node_list', [
+        {
+          name: '图片',
+          node_list:
+            this.data.file_list?.map((file) => ({
+              name: file.file_name === undefined ? '' : file.file_name,
+            })) ?? [],
+        },
+      ]);
     },
   },
 };

+ 22 - 0
src/views/book/courseware/create/components/base/stem/Stem.vue

@@ -28,6 +28,7 @@ import { isEnable } from '@/views/book/courseware/data/common';
 import ModuleMixin from '../../common/ModuleMixin';
 import RichText from '@/components/RichText.vue';
 import PinyinText from '@/components/PinyinText.vue';
+import DOMPurify from 'dompurify';
 
 export default {
   name: 'StemPage',
@@ -54,6 +55,10 @@ export default {
       },
       deep: true,
     },
+    'data.content': {
+      handler: 'handlerMindMap',
+      deep: true,
+    },
   },
   methods: {
     showSetting() {
@@ -89,6 +94,23 @@ export default {
       });
       this.data.paragraph_list[i][j][k].pinyin = tonePinyin;
     },
+    // 思维导图
+    handlerMindMap() {
+      this.$set(this.data.mind_map, 'node_list', [
+        {
+          name: `描述:${this.sanitizeHTML(this.data.content)}`,
+        },
+      ]);
+      // console.log(this.data.mind_map);
+    },
+    /**
+     * 过滤 html,防止 xss 攻击
+     * @param {string} html 需要过滤的html
+     * @returns {string} 过滤后的html
+     */
+    sanitizeHTML(html) {
+      return DOMPurify.sanitize(html, { ALLOWED_TAGS: [] });
+    },
   },
 };
 </script>

+ 13 - 0
src/views/book/courseware/create/components/base/video/Video.vue

@@ -43,6 +43,19 @@ export default {
       this.data.file_list = file_list;
       this.data.file_id_list = file_id_list;
       this.data.file_info_list = file_info_list;
+      this.handlerMindMap();
+    },
+    // 思维导图
+    handlerMindMap() {
+      this.$set(this.data.mind_map, 'node_list', [
+        {
+          name: '视频',
+          node_list:
+            this.data.file_list?.map((file) => ({
+              name: file.file_name === undefined ? '' : file.file_name,
+            })) ?? [],
+        },
+      ]);
     },
   },
 };

+ 3 - 0
src/views/book/courseware/data/audio.js

@@ -30,5 +30,8 @@ export function getAudioData() {
     file_id_list: [], // 文件 id['20032-121212', '20032-121216']
     // 内容中包含的文件列表,
     file_list: [],
+    mind_map: {
+      node_list: [{ name: '音频' }],
+    },
   };
 }

+ 3 - 0
src/views/book/courseware/data/describe.js

@@ -32,5 +32,8 @@ export function getDescribeData() {
       pinyin_proofread_word_list: [],
     },
     property: getDescribeProperty(),
+    mind_map: {
+      node_list: [{ name: '描述' }],
+    },
   };
 }

+ 3 - 0
src/views/book/courseware/data/picture.js

@@ -30,5 +30,8 @@ export function getPictureData() {
     file_id_list: [], // 文件 id['20032-121212', '20032-121216']
     // 内容中包含的文件列表,
     file_list: [],
+    mind_map: {
+      node_list: [{ name: '图片' }],
+    },
   };
 }

+ 3 - 0
src/views/book/courseware/data/stem.js

@@ -32,5 +32,8 @@ export function getStemData() {
       pinyin_proofread_word_list: [],
     },
     property: getStemProperty(),
+    mind_map: {
+      node_list: [{ name: '题干' }],
+    },
   };
 }

+ 3 - 0
src/views/book/courseware/data/video.js

@@ -28,5 +28,8 @@ export function getVideoData() {
     file_id_list: [], // 文件 id['20032-121212', '20032-121216']
     // 内容中包含的文件列表,
     file_list: [],
+    mind_map: {
+      node_list: [{ name: '视频' }],
+    },
   };
 }