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

feat(学生作业): 添加截图失败的多语言提示和错误处理

在作业提交功能中增加对截图失败情况的多语言提示,包括iframe元素获取失败、html2canvas失败等场景
lsc 1 месяц назад
Родитель
Сommit
8d598cc099
4 измененных файлов с 34 добавлено и 13 удалено
  1. 10 10
      src/views/Student/index.vue
  2. 8 1
      src/views/lang/cn.json
  3. 8 1
      src/views/lang/en.json
  4. 8 1
      src/views/lang/hk.json

+ 10 - 10
src/views/Student/index.vue

@@ -1852,8 +1852,8 @@ const handleHomeworkSubmit = async () => {
         }
       }
       else if (slides.value[slideIndex.value].elements.some((element: any) => element.isHTML)) {
-        message.info('尝试截图当前页面并提交ISHTML')
-        console.log('尝试截图当前页面并提交')
+        message.info(lang.ssTryingScreenshot)
+        console.log('尝试截图当前页面并提交ISHTML')
         // return
         try {
           // 尝试使用html2canvas,对iframe支持更好
@@ -1871,7 +1871,7 @@ const handleHomeworkSubmit = async () => {
             iframeElement = screenSlides[slideIndex.value].querySelector('iframe') as HTMLIFrameElement
           }
           else {
-            message.error('未能获取到iframe元素,无法截图')
+            message.error(lang.ssFailedGetIframe)
             throw new Error('未能获取到iframe元素,无法截图')
           }
 
@@ -1899,7 +1899,7 @@ const handleHomeworkSubmit = async () => {
             iframeBody = iframeElement.contentWindow.document.body as HTMLElement
           }
           else {
-            message.error('未能获取到iframe的body元素,无法截图')
+            message.error(lang.ssFailedGetIframeBody)
             throw new Error('未能获取到iframe的body元素,无法截图')
           }
 
@@ -1933,7 +1933,7 @@ const handleHomeworkSubmit = async () => {
           }
           catch (html2canvasError) {
             console.log('html2canvas失败,尝试html-to-image:', html2canvasError)
-            message.error('html2canvas失败,尝试html-to-image:' + html2canvasError)
+            message.error(lang.ssHtml2canvasFailed + html2canvasError)
             
             try {
               // 回退到html-to-image
@@ -1952,7 +1952,7 @@ const handleHomeworkSubmit = async () => {
             }
             catch (htmlToImageError) {
               console.log('html-to-image也失败了,使用canvas绘制方案:', htmlToImageError)
-              message.error('to-image也失败了,使用canvas绘制方案:' + htmlToImageError)
+              message.error(lang.ssHtmlToImageFailed + htmlToImageError)
               message.error(lang.ssShotFail)
               return
               /*
@@ -2058,14 +2058,14 @@ const handleHomeworkSubmit = async () => {
           })
         }
         catch (error) {
-          message.error('截图提交失败:' + error)
+          message.error(lang.ssScreenshotSubmitFailed + error)
           console.error('截图提交失败:', error)
           isSubmitting.value = false
           message.error(lang.ssShotFail)
         }
       }
       else {
-        message.info('尝试截图当前页面并提交')
+        // message.info('尝试截图当前页面并提交')
         const screenSlides = document.querySelectorAll('.viewer-canvas .screen-slide')
         let iframeElement: HTMLIFrameElement | null = null
 
@@ -2078,7 +2078,7 @@ const handleHomeworkSubmit = async () => {
           iframeElement = screenSlides[slideIndex.value].querySelector('iframe') as HTMLIFrameElement
         }
         else {
-          message.error('未能获取到iframe元素,无法截图')
+          message.error(lang.ssFailedGetIframe)
           throw new Error('未能获取到iframe元素,无法截图')
         }
 
@@ -2132,7 +2132,7 @@ const handleHomeworkSubmit = async () => {
             return
           }
           catch (error) {
-            message.error('获取iframe内部body元素失败,无法截图')
+            message.error(lang.ssFailedGetIframeBodyElement)
             throw new Error('获取iframe内部body元素失败,无法截图')
           }
           

+ 8 - 1
src/views/lang/cn.json

@@ -670,5 +670,12 @@
   "ssExportCompleted": "导出完成",
   "ssParsingFile": "正在解析 ",
   "ssParsingCompleted": "解析完成,已生成课件",
-  "ssComplete": "完成"
+  "ssComplete": "完成",
+  "ssTryingScreenshot": "尝试截图当前页面并提交",
+  "ssFailedGetIframe": "未能获取到iframe元素,无法截图",
+  "ssFailedGetIframeBody": "未能获取到iframe的body元素,无法截图",
+  "ssHtml2canvasFailed": "html2canvas失败,尝试html-to-image:",
+  "ssHtmlToImageFailed": "to-image也失败了,使用canvas绘制方案:",
+  "ssScreenshotSubmitFailed": "截图提交失败:",
+  "ssFailedGetIframeBodyElement": "获取iframe内部body元素失败,无法截图"
 }

+ 8 - 1
src/views/lang/en.json

@@ -670,5 +670,12 @@
   "ssExportCompleted": "Export Completed",
   "ssParsingFile": "Parsing ",
   "ssParsingCompleted": "Parsing completed, courseware generated",
-  "ssComplete": "Complete"
+  "ssComplete": "Complete",
+  "ssTryingScreenshot": "Trying to screenshot the current page and submit",
+  "ssFailedGetIframe": "Failed to get iframe element, cannot screenshot",
+  "ssFailedGetIframeBody": "Failed to get iframe body element, cannot screenshot",
+  "ssHtml2canvasFailed": "html2canvas failed, trying html-to-image:",
+  "ssHtmlToImageFailed": "html-to-image also failed, using canvas drawing scheme:",
+  "ssScreenshotSubmitFailed": "Screenshot submission failed:",
+  "ssFailedGetIframeBodyElement": "Failed to get iframe internal body element, cannot screenshot"
 }

+ 8 - 1
src/views/lang/hk.json

@@ -670,5 +670,12 @@
   "ssExportCompleted": "匯出完成",
   "ssParsingFile": "正在解析 ",
   "ssParsingCompleted": "解析完成,已生成課件",
-  "ssComplete": "完成"
+  "ssComplete": "完成",
+  "ssTryingScreenshot": "嘗試截圖當前頁面並提交",
+  "ssFailedGetIframe": "未能獲取到iframe元素,無法截圖",
+  "ssFailedGetIframeBody": "未能獲取到iframe的body元素,無法截圖",
+  "ssHtml2canvasFailed": "html2canvas失敗,嘗試html-to-image:",
+  "ssHtmlToImageFailed": "to-image也失敗了,使用canvas繪製方案:",
+  "ssScreenshotSubmitFailed": "截圖提交失敗:",
+  "ssFailedGetIframeBodyElement": "獲取iframe內部body元素失敗,無法截圖"
 }