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

fix(Student): 改进作业提交时的错误处理和用户提示

添加对HTML页面提交时的用户提示信息
增强iframe截图失败时的错误处理和提示
捕获并处理iframe内部元素获取异常
在提交失败时显示具体错误信息
lsc 4 недель назад
Родитель
Сommit
f1bab49b4d
1 измененных файлов с 17 добавлено и 7 удалено
  1. 17 7
      src/views/Student/index.vue

+ 17 - 7
src/views/Student/index.vue

@@ -1852,7 +1852,7 @@ const handleHomeworkSubmit = async () => {
         }
       }
       else if (slides.value[slideIndex.value].elements.some((element: any) => element.isHTML)) {
-        // message.warning('当前页面暂不支持作业提交')
+        message.info('尝试截图当前页面并提交ISHTML')
         console.log('尝试截图当前页面并提交')
         // return
         try {
@@ -2065,6 +2065,7 @@ const handleHomeworkSubmit = async () => {
         }
       }
       else {
+        message.info('尝试截图当前页面并提交')
         const screenSlides = document.querySelectorAll('.viewer-canvas .screen-slide')
         let iframeElement: HTMLIFrameElement | null = null
 
@@ -2077,6 +2078,7 @@ const handleHomeworkSubmit = async () => {
           iframeElement = screenSlides[slideIndex.value].querySelector('iframe') as HTMLIFrameElement
         }
         else {
+          message.error('未能获取到iframe元素,无法截图')
           throw new Error('未能获取到iframe元素,无法截图')
         }
 
@@ -2088,11 +2090,12 @@ const handleHomeworkSubmit = async () => {
             iframeElement.contentWindow.document &&
             iframeElement.contentWindow.document.body
         ) {
-          isSubmitting.value = true
+          try {
+            isSubmitting.value = true
 
-          const _ajs = iframeElement.contentWindow.document.createElement('script')
-          _ajs.type = 'text/javascript'
-          _ajs.innerHTML =
+            const _ajs = iframeElement.contentWindow.document.createElement('script')
+            _ajs.type = 'text/javascript'
+            _ajs.innerHTML =
           'var _js = document.createElement("script");\n' +
           '_js.type="text/javascript";\n' +
           '_js.src="https://beta.cloud.cocorobo.cn/js/Common/html2canvas-pro.min.js";\n' +
@@ -2125,8 +2128,14 @@ const handleHomeworkSubmit = async () => {
           ' });\n' +
           '}\n' +
           'document.head.appendChild(_js);\n'
-          iframeElement.contentWindow.document.head.appendChild(_ajs)
-          return
+            iframeElement.contentWindow.document.head.appendChild(_ajs)
+            return
+          }
+          catch (error) {
+            message.error('获取iframe内部body元素失败,无法截图')
+            throw new Error('获取iframe内部body元素失败,无法截图')
+          }
+          
         }
         
         
@@ -2142,6 +2151,7 @@ const handleHomeworkSubmit = async () => {
   }
   catch (error) {
     console.error('作业提交过程中出错:', error)
+    message.error('作业提交过程中出错:' + error)
     message.error(lang.ssHwSubmitFail)
     isSubmitting.value = false
     addOp3(1, new Date().getTime(), { courseid: props.courseid, homeworkContent }, 'error')