소스 검색

笔记和反馈中的图片等比缩小

zq 1 일 전
부모
커밋
6a15fff055
3개의 변경된 파일39개의 추가작업 그리고 7개의 파일을 삭제
  1. 1 0
      src/courseware_preview/index.vue
  2. 11 2
      src/views/book/courseware/preview/CoursewarePreview.vue
  3. 27 5
      src/web_preview/index.vue

+ 1 - 0
src/courseware_preview/index.vue

@@ -51,6 +51,7 @@
             :show-remark="false"
             :project="project"
             :component-remark-obj="remark_list_obj"
+            :enable-text-selection="false"
             @computeScroll="computeScroll"
             @editNote="handEditNote"
             @saveCollect="saveCollect"

+ 11 - 2
src/views/book/courseware/preview/CoursewarePreview.vue

@@ -75,9 +75,9 @@
       <span class="line"></span>
       <span class="button" @click="setCollect"><SvgIcon icon-class="sidebar-collect" size="14" /> 收藏 </span>
       <span class="line"></span>
-      <span class="button" @click="setTranslate"> <SvgIcon icon-class="sidebar-translate" size="14" />翻译</span>
+      <span class="button" @click="setTranslate"> <SvgIcon icon-class="sidebar-translate" size="14" /> 翻译</span>
       <span class="line"></span>
-      <span class="button" @click="setFeedback"> <SvgIcon icon-class="sidebar-feedback" size="14" />意见反馈</span>
+      <span class="button" @click="setFeedback"> <SvgIcon icon-class="sidebar-feedback" size="14" /> 用户反馈</span>
     </div>
   </div>
 </template>
@@ -139,6 +139,11 @@ export default {
       type: Object,
       default: () => ({}),
     },
+    // 是否启用选中文本工具
+    enableTextSelection: {
+      type: Boolean,
+      default: true,
+    },
   },
   data() {
     return {
@@ -569,6 +574,10 @@ export default {
     },
     // 处理选中文本
     handleTextSelection() {
+      // 如果禁用了文本选择工具栏,直接返回
+      if (!this.enableTextSelection) {
+        return;
+      }
       this.showToolbar = false;
       // 延迟处理,确保选择已完成
       setTimeout(() => {

+ 27 - 5
src/web_preview/index.vue

@@ -484,7 +484,7 @@ export default {
       { icon: 'note', title: '笔记', handle: 'getNote', param: { type: '12' } },
       { icon: 'translate', title: '多语言', handle: 'openTranslate', param: { type: '21' } },
       { icon: 'setting', title: '设置', handle: 'openSetting', param: { type: 6 } },
-      { icon: 'feedback', title: '意见反馈', handle: 'getFeedback', param: { type: 22 } },
+      { icon: 'feedback', title: '用户反馈', handle: 'getFeedback', param: { type: 22 } },
     ];
 
     const book_id = getLocalStore('book_id') || '';
@@ -536,10 +536,10 @@ export default {
         5: '文本资源',
         6: '设置',
         11: '收藏列表',
-        12: '笔记列表1',
+        12: '笔记列表',
         13: '搜索结果',
         21: '多语言',
-        22: '意见反馈',
+        22: '用户反馈',
       },
       sidebarIconList,
       twoSidebarList: [],
@@ -1222,6 +1222,28 @@ export default {
     },
 
     /**
+     * 为HTML内容中的图片添加最大宽度限制
+     * @param {string} html - HTML字符串
+     * @returns {string} - 处理后的HTML字符串
+     */
+    addImageMaxWidth(html) {
+      if (!html) return html;
+
+      const regex = /<img([^>]*)>/gi;
+      return html.replace(regex, (match, attributes) => {
+        if (attributes.includes('style=')) {
+          return match.replace(/style=["']([^"']*)["']/i, (styleMatch, styleValue) => {
+            if (styleValue.includes('max-width')) {
+              return styleMatch;
+            }
+            return `style="${styleValue}; max-width: 200px;"`;
+          });
+        }
+        return `<img${attributes} style="max-width: 200px;">`;
+      });
+    },
+
+    /**
      * 获取笔记列表
      * @param {Object} params - 参数对象
      */
@@ -1240,7 +1262,7 @@ export default {
                 startIndex: n.startIndex,
                 endIndex: n.endIndex,
                 text: n.text,
-                note: n.note,
+                note: this.addImageMaxWidth(n.note),
               };
               this.allNoteList.push(obj);
             }
@@ -1420,7 +1442,7 @@ export default {
                 startIndex: n.startIndex,
                 endIndex: n.endIndex,
                 text: n.text,
-                feedBack: n.feedBack,
+                feedBack: this.addImageMaxWidth(n.feedBack),
               };
               this.allFeedbackList.push(obj);
             }