Browse Source

feat(pptEasy): add unconfirmed tool page check before publishing course

新增了PPT上传发布前检查未确认工具页的逻辑,新增对应多语言文案,当幻灯片存在工具页内容时会弹出确认弹窗,支持忽略继续发布或返回修改
lsc 1 month ago
parent
commit
8e41185145
4 changed files with 60 additions and 3 deletions
  1. 45 0
      src/components/pages/pptEasy/addCourse3.vue
  2. 5 1
      src/lang/cn.json
  3. 5 1
      src/lang/en.json
  4. 5 1
      src/lang/hk.json

+ 45 - 0
src/components/pages/pptEasy/addCourse3.vue

@@ -1738,6 +1738,23 @@ export default {
       this.toastMessage = message;
       this.toastVisible = true;
     },
+    showToolsConfirmDialog() {
+      return new Promise((resolve) => {
+        this.confirmTitle = this.lang.ssUnconfirmedToolPage;
+        this.confirmMessage = this.lang.ssUnconfirmedToolPageTip;
+        this.confirmConfirmText = this.lang.ssIgnoreAndPublish;
+        this.confirmCancelText = this.lang.ssReturnModify;
+        this.confirmCallback = () => {
+          resolve(true);
+        };
+        this.confirmVisible = true;
+        const originalCancel = this.handleCancel;
+        this.handleCancel = () => {
+          this.handleCancel = originalCancel;
+          resolve(false);
+        };
+      });
+    },
     updateInputWidth() {
       // 创建一个隐藏的span元素来计算文字宽度
       const span = document.createElement('span');
@@ -1933,6 +1950,8 @@ export default {
       }
       const _pptData2 = JSON.parse(JSON.stringify(_pptData))
       const pptContent = []
+      let toolsArrayCont = []
+      let istoolsArray = false
       if (_pptData2.slides) {
         _pptData2.slides.forEach((slide, index) => {
           let slideContent = ''
@@ -1944,10 +1963,22 @@ export default {
                 return content.replace(/<[^>]*>/g, '')
               }).join(' ')
             }
+            toolsArrayCont = slide.elements.filter((element) => element.toolsArray && element.toolsArray.length > 0)
+            if (toolsArrayCont.length > 0) {
+              // 有内容就弹出弹窗
+              istoolsArray = true
+            }
           }
           pptContent.push(`第${index + 1}页: ${slideContent || '内容为空'}`)
         })
       }
+      if(istoolsArray){
+        const confirmed = await this.showToolsConfirmDialog();
+        if (!confirmed) {
+          this.uploadWorkLoading = false;
+          return;
+        }
+      }
       const contentDescription = pptContent.join('\n')
       // 用_pptData生成json文件,并生成File对象
       const pptJsonStr = JSON.stringify(_pptData, null, 2);
@@ -2053,6 +2084,8 @@ export default {
       }
       const _pptData2 = JSON.parse(JSON.stringify(_pptData))
       const pptContent = []
+      let toolsArrayCont = []
+      let istoolsArray = false
       if (_pptData2.slides) {
         _pptData2.slides.forEach((slide, index) => {
           let slideContent = ''
@@ -2064,10 +2097,22 @@ export default {
                 return content.replace(/<[^>]*>/g, '')
               }).join(' ')
             }
+            toolsArrayCont = slide.elements.filter((element) => element.toolsArray && element.toolsArray.length > 0)
+            if (toolsArrayCont.length > 0) {
+              // 有内容就弹出弹窗
+              istoolsArray = true
+            }
           }
           pptContent.push(`第${index + 1}页: ${slideContent || '内容为空'}`)
         })
       }
+      if(istoolsArray){
+        const confirmed = await this.showToolsConfirmDialog();
+        if (!confirmed) {
+          this.uploadWorkLoading = false;
+          return;
+        }
+      }
       const contentDescription = pptContent.join('\n')
       // 用_pptData生成json文件,并生成File对象
       const pptJsonStr = JSON.stringify(_pptData, null, 2);

+ 5 - 1
src/lang/cn.json

@@ -2058,5 +2058,9 @@
   "ssSyncImportClassInfo":"提示:如需同步导入班级信息,请于模板中的班级列,输入当前年级+班级名称作为学生班级(如六年级01班,兴趣班不支持新建学生)。",
   "ssNoSettingAnswer":"未设置正确答案",
   "allGrades": "全部年级",
-  "ssVoteTopic": "投票主题"
+  "ssVoteTopic": "投票主题",
+  "ssUnconfirmedToolPage": "存在未确认的工具页",
+  "ssUnconfirmedToolPageTip": "存在未确认的工具页,请完成后发布课程。",
+  "ssIgnoreAndPublish": "忽略并发布",
+  "ssReturnModify": "返回修改"
 }

+ 5 - 1
src/lang/en.json

@@ -2057,5 +2057,9 @@
   "ssNoSettingAnswer":"No correct answer set",
   "ssSyncImportClassInfo":"Tip: For importing class information, please enter the grade + class name in the [Class] column as the student class (e.g., 6th grade 01 class, interest classes do not support importing students).",
   "allGrades": "All Grades",
-  "ssVoteTopic": "Voting Theme"
+  "ssVoteTopic": "Voting Theme",
+  "ssUnconfirmedToolPage": "Unconfirmed Tool Page",
+  "ssUnconfirmedToolPageTip": "Unconfirmed tool page, please publish the course after completion.",
+  "ssIgnoreAndPublish": "Ignore and publish",
+  "ssReturnModify": "Return to modify"
 }

+ 5 - 1
src/lang/hk.json

@@ -2058,5 +2058,9 @@
   "ssNoSettingAnswer":"未設置正確答案",
   "ssSyncImportClassInfo":"提示:如需同步導入班級信息,請於模板中的班級列,輸入當前年級+班級名稱作為學生班級(如六年級01班,興趣班不支持導入學生)。",
   "allGrades": "全部年級",
-  "ssVoteTopic": "投票主題"
+  "ssVoteTopic": "投票主題",
+  "ssUnconfirmedToolPage": "存在未確認的工具頁", 
+  "ssUnconfirmedToolPageTip": "存在未確認的工具頁,請完成後發布課程。",
+  "ssIgnoreAndPublish": "忽略並發布",
+  "ssReturnModify": "返回修改"
 }