lsc 7 months ago
parent
commit
22f66cea47

+ 147 - 28
src/components/pages/aiAddCourse/addCourse.vue

@@ -403,7 +403,7 @@
                           )
                           " />
                       </button>
-                      <button class="c_pub_button_add" @click="clickGenTT">
+                      <button class="c_pub_button_add" @click="clickGenTT" v-if="templateid != '4480d65a-1e48-11ef-bee5-005056b86db5' && templateid != 'cf5722a4-401b-11ef-b873-005056b86dc3'">
                         一键智能总结生成
                       </button>
                     </div>
@@ -560,7 +560,7 @@
                 </div>
               </div>
             </div>
-            <div class="whiteBg" :style="{ minHeight: targetTextLoading ? '250px' : 'auto'}" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-loading="targetTextLoading" element-loading-text="小可正在努力生成中,请稍等..." v-if="(!yiKeTemplateArray.includes(templateid)) && isuseT">
+            <div class="whiteBg" :style="{ minHeight: targetTextLoading ? '250px' : 'auto'}" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-loading="targetTextLoading" element-loading-text="小可正在努力生成中,请稍等..." v-if="(!yiKeTemplateArray.includes(templateid)) && isuseT && templateid != '4480d65a-1e48-11ef-bee5-005056b86db5' && templateid != 'cf5722a4-401b-11ef-b873-005056b86dc3'">
               <div class="c_pub_button_confirm stopBtn" v-if="targetTextLoading && isTargetCancelToken1" @click="cancelAjax('target1')">停止</div>
               <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
                 <div class="c_info_title">
@@ -897,7 +897,7 @@
                       @contextmenu.prevent="openAiDialog(1, 'aiDetail',1)"
                       @click="openAiDialog(2, 'aiDetail',1)">AI优化</button>
                   </el-tooltip>
-                  <button class="c_pub_button_confirm" @click="clickGenTT2" style="margin: 0 0 0 5px;">生成概况和目标</button>
+                  <button class="c_pub_button_confirm" @click="clickGenTT2" style="margin: 0 0 0 5px;" v-if="templateid != '4480d65a-1e48-11ef-bee5-005056b86db5' && templateid != 'cf5722a4-401b-11ef-b873-005056b86dc3'">生成概况和目标</button>
                 </div>
                 <div style="width: 100%; padding: 0px 20px; box-sizing: border-box">
                   <div style="width: calc(100%);" class='op_task_box'>
@@ -920,7 +920,7 @@
                 </div>
               </div>
             </div>
-            <div class="whiteBg" :style="{ minHeight: targetTextLoading2 ? '250px' : 'auto'}" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-loading="targetTextLoading2" element-loading-text="小可正在努力生成中,请稍等..." v-if="(!isuseT && (!yiKeTemplateArray.includes(templateid))) || (isuseT && (!yiKeTemplateArray.includes(templateid)) && courseTextBool)">
+            <div class="whiteBg" :style="{ minHeight: targetTextLoading2 ? '250px' : 'auto'}" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-loading="targetTextLoading2" element-loading-text="小可正在努力生成中,请稍等..." v-if="((!isuseT && (!yiKeTemplateArray.includes(templateid))) || (isuseT && (!yiKeTemplateArray.includes(templateid)) && courseTextBool)) && templateid != '4480d65a-1e48-11ef-bee5-005056b86db5' && templateid != 'cf5722a4-401b-11ef-b873-005056b86dc3'">
                 <div class="c_pub_button_confirm stopBtn" v-if="targetTextLoading2 && isTargetCancelToken2" @click="cancelAjax('target2')">停止</div>
                 <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
                 <div class="c_info_title" style="flex-wrap: wrap; position:relative;margin:0 20px;">
@@ -1601,9 +1601,12 @@
               <button class="c_pub_button_return pub_btn_last_img" v-if="steps > 1 && steps != 5" @click="lastSteps">
                 {{ steps == 4 ? "返回课程" : "上一步" }}
               </button>
-              <button class="c_pub_button_confirm" v-if="isuseT && !isOutline && !courseTextBool && (!yiKeTemplateArray.includes(templateid))" @click="clickGenTT2">
+              <button class="c_pub_button_confirm" v-if="isuseT && !isOutline && !courseTextBool && (!yiKeTemplateArray.includes(templateid)) && templateid != '4480d65a-1e48-11ef-bee5-005056b86db5' && templateid != 'cf5722a4-401b-11ef-b873-005056b86dc3'" @click="clickGenTT2">
                 {{isuseT ? "重新生成概况和目标" : "生成概况和目标"}}
               </button>
+              <button class="c_pub_button_confirm" v-else-if="isuseT && !isOutline && !courseTextBool && (!yiKeTemplateArray.includes(templateid))" @click="clickGenTT2">
+                {{isuseT ? "重新生成概况" : "生成概况"}}
+              </button>
               <!-- ((isuseT || courseTextBool) && (!yiKeTemplateArray.includes(templateid))) &&  -->
               <el-tooltip effect="light" content="右键单击可配置提示词" placement="top"  v-if="steps < 4">
                 <button class="c_pub_button_confirm" @click="nextSteps(2)"
@@ -2387,6 +2390,11 @@
                                 @contextmenu.prevent="openAiDialog2(1, 'aiTask3',itemTaskIndex)"
                                 @click="openAiDialog2(2, 'aiTask3',itemTaskIndex)">重新生成任务</button>
                             </el-tooltip>
+                            <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
+                              <button class="c_pub_button_confirm" style="margin: 0 0 0 20px;"
+                                @contextmenu.prevent="openAiDialog2(1, 'aiTask3','all')"
+                                @click="openAiDialog2(2, 'aiTask3','all')">重新生成任务</button>
+                            </el-tooltip>
                           </div>
                         </div>
                         <!-- padding: 20px; -->
@@ -8810,19 +8818,19 @@ export default {
       this.loading = true
       let md = new MarkdownIt();
       if(this.courseState == 4){
-        if(index == 0 || index){
-          let _task = this.unitJson[0].chapterInfo[0].taskJson[index]
+        // if(index == 0 || index){
+        //   let _task = this.unitJson[0].chapterInfo[0].taskJson[index]
+        //   let name = _task.task+'-教案'
+        //   let _html =  _task.taskDetail3 ? md.render(_task.taskDetail3) : ''
+        //   await this.generate(name, _html, 0)
+        // }else {
+        for(var i = 0; i < this.unitJson[0].chapterInfo[0].taskJson.length; i++){
+          let _task = this.unitJson[0].chapterInfo[0].taskJson[i]
           let name = _task.task+'-教案'
           let _html =  _task.taskDetail3 ? md.render(_task.taskDetail3) : ''
           await this.generate(name, _html, 0)
-        }else {
-          for(var i = 0; i < this.unitJson[0].chapterInfo[0].taskJson.length; i++){
-            let _task = this.unitJson[0].chapterInfo[0].taskJson[i]
-            let name = _task.task+'-教案'
-            let _html =  _task.taskDetail3 ? md.render(_task.taskDetail3) : ''
-            await this.generate(name, _html, 0)
-          }
         }
+        // }
       }else if(this.courseState == 5){
         if(index == 0 || index){
           let _task = this.unitJson[0].chapterInfo[0].taskJson[index]
@@ -15844,10 +15852,13 @@ export default {
         return;
       }
       this.openAiDialog(2, 'aiDetail',1)
-      setTimeout(() => {
-        // this.openAiDialog(2, 'aitargetTextDetail2',1)
-        this.openAiDialog(2, 'aitargetTextDetail3',1)
-      }, 500);
+      if(this.templateid != '4480d65a-1e48-11ef-bee5-005056b86db5' && this.templateid != 'cf5722a4-401b-11ef-b873-005056b86dc3'){
+        setTimeout(() => {
+          // this.openAiDialog(2, 'aitargetTextDetail2',1)
+          this.openAiDialog(2, 'aitargetTextDetail3',1)
+        }, 500);
+      }
+
       this.courseTextBool = true
     },
     openAiDialog2(clickType, type, callback, index, tindex){
@@ -16430,12 +16441,13 @@ ${msg}
 let message2 = `NOTICE
 Role: 你是一名教师,你正在使用一个在线学习平台来教授学生,你已经完成了教案,你现在需要将教案变为学生上课用的任务单(work sheet)。该在线学习平台为每个任务提供了资源区(视频,ppt,阅读资料将放在这里),多种互动工具(学生点击工具即可上传他们的作业或者回答,这些互动工具类似kahoot一样允许教师轻松收集,统计,追踪学生作业),以及和任务绑定的目标和评价系统。
 Language: Please use the same language as the user requirement, if the user speaks Chinese, the specific text of your answer should also be in Chinese.
-ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
+ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".作业提交工具只能出现一次。
 Instruction: Based on the context, follow "Format example", write content.
+注意:作业提交工具只能出现一次。
 
 # Context
 ## 要求
-${msg} 
+${msg2} 
  
 
 ## 参考资料
@@ -16455,8 +16467,12 @@ ${msg}
 工具名称:作业提交
 工具指引:同学们,当你们完成实验报告后,我们需要用PPT来汇报项目成果。PPT是一种强大的工具,能帮助我们将复杂的信息以直观、有趣的方式展示出来。首先,打开PPT工具,新建一个演示文稿,并设置好基本结构,如标题页、实验背景、实验方法、数据分析、结论与建议等。接着,可以通过选择合适的主题和背景,美化幻灯片,插入图片、图标和图表,让PPT更生动。记住要保持文字简洁、突出重点,并为每张幻灯片添加适当的动画效果。制作完成后,多次练习你的演讲,确保表达清晰自然。最后,保存并分享你的PPT,准备好精彩的展示吧!期待看到你们的优秀成果,有问题随时来问我哦!
 
+注意:作业提交工具只能出现一次。
+
 # Format example
-{"toolChoose":[{"tool":"工具名","detail":"工具描述"},{"tool":"工具名","detail":"工具描述"}]}`
+{"toolChoose":[{"tool":"工具名","detail":"工具描述"},{"tool":"工具名","detail":"工具描述"}]}
+
+注意:作业提交工具只能出现一次。`
 
 let message3 = `NOTICE
 Role: 你是一名教师,你正在使用一个在线学习平台来教授学生,你已经完成了教案,你现在需要将教案变为学生上课用的任务单(work sheet)。该在线学习平台为每个任务提供了资源区(视频,ppt,阅读资料将放在这里),多种互动工具(学生点击工具即可上传他们的作业或者回答,这些互动工具类似kahoot一样允许教师轻松收集,统计,追踪学生作业),以及和任务绑定的目标和评价系统。
@@ -16466,7 +16482,7 @@ Instruction: Based on the context, follow "Format example", write content.
 
 # Context
 ## 要求
-${msg} 
+${msg3} 
  
 
 ## 参考资料
@@ -16519,12 +16535,13 @@ ${msg}
 let message2 = `NOTICE
 Role: 你是一名教师,你正在使用一个在线学习平台来教授学生,你已经完成了教案,你现在需要将教案变为学生上课用的任务单(work sheet)。该在线学习平台为每个任务提供了资源区(视频,ppt,阅读资料将放在这里),多种互动工具(学生点击工具即可上传他们的作业或者回答,这些互动工具类似kahoot一样允许教师轻松收集,统计,追踪学生作业),以及和任务绑定的目标和评价系统。
 Language: Please use the same language as the user requirement, if the user speaks Chinese, the specific text of your answer should also be in Chinese.
-ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
+ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".作业提交工具只能出现一次。
 Instruction: Based on the context, follow "Format example", write content.
+注意:作业提交工具只能出现一次。
 
 # Context
 ## 要求
-${msg} 
+${msg2} 
  
 
 ## 参考资料
@@ -16544,8 +16561,12 @@ ${msg}
 工具名称:作业提交
 工具指引:同学们,当你们完成实验报告后,我们需要用PPT来汇报项目成果。PPT是一种强大的工具,能帮助我们将复杂的信息以直观、有趣的方式展示出来。首先,打开PPT工具,新建一个演示文稿,并设置好基本结构,如标题页、实验背景、实验方法、数据分析、结论与建议等。接着,可以通过选择合适的主题和背景,美化幻灯片,插入图片、图标和图表,让PPT更生动。记住要保持文字简洁、突出重点,并为每张幻灯片添加适当的动画效果。制作完成后,多次练习你的演讲,确保表达清晰自然。最后,保存并分享你的PPT,准备好精彩的展示吧!期待看到你们的优秀成果,有问题随时来问我哦!
 
+注意:作业提交工具只能出现一次。
+
 # Format example
-{"toolChoose":[{"tool":"工具名","detail":"工具描述"},{"tool":"工具名","detail":"工具描述"}]}`
+{"toolChoose":[{"tool":"工具名","detail":"工具描述"},{"tool":"工具名","detail":"工具描述"}]}
+
+注意:作业提交工具只能出现一次。`
 
 let message3 = `NOTICE
 Role: 你是一名教师,你正在使用一个在线学习平台来教授学生,你已经完成了教案,你现在需要将教案变为学生上课用的任务单(work sheet)。该在线学习平台为每个任务提供了资源区(视频,ppt,阅读资料将放在这里),多种互动工具(学生点击工具即可上传他们的作业或者回答,这些互动工具类似kahoot一样允许教师轻松收集,统计,追踪学生作业),以及和任务绑定的目标和评价系统。
@@ -16555,7 +16576,7 @@ Instruction: Based on the context, follow "Format example", write content.
 
 # Context
 ## 要求
-${msg} 
+${msg3} 
  
 
 ## 参考资料
@@ -16940,6 +16961,16 @@ ${this.courseText && this.aiCallBack == 2 ? '注意,优化原有的<参考内
         }
         // this.$forceUpdate();
       };
+      this.isTextCancelSource.onerror = function(event) {
+        // 处理错误,可以尝试重新连接
+        console.error('EventSource error:', event);
+        this.$message.error("网络错误")
+        this.textLoading = false
+        this.ttextLoading = false
+        this.isTextCancelToken = null
+        this.isTextCancelSource.close();
+        this.isTextCancelSource = null;
+      };
     },
     numberToChinese(number) {
       const chineseNum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
@@ -19499,9 +19530,18 @@ ${msg}
           this.taskDetailLoading.splice(this.taskDetailLoading.indexOf(loading), 1)
           // 处理流数据
         }
-        
         // this.$forceUpdate();
       };
+      this.isOutlineTaskCancelSource[_tindex2].onerror = function(event) {
+        // 处理错误,可以尝试重新连接
+        console.error('EventSource error:', event);
+        this.$message.error("网络错误")
+        this.taskDetailLoading.splice(this.taskDetailLoading.indexOf(loading), 1)
+        this.ttaskDetailLoading.splice(this.ttaskDetailLoading.indexOf(loading), 1)
+        this.isOutlineTaskCancelToken[_tindex2] = null
+        this.isOutlineTaskCancelSource[_tindex2].close();
+        this.isOutlineTaskCancelSource[_tindex2] = null;
+      };
     },
     async aiOutlineDetail(msg, index) {
       let _this = this
@@ -19817,9 +19857,18 @@ ${taskArray.length ? '其他任务大纲内容' + taskArray.join(',') : ''}
           }
           // 处理流数据
         }
-        
         // this.$forceUpdate();
       };
+      this.isOutlineTaskCancelSource[_tindex2].onerror = function(event) {
+        // 处理错误,可以尝试重新连接
+        console.error('EventSource error:', event);
+        this.$message.error("网络错误")
+        this.taskDetailLoading.splice(this.taskDetailLoading.indexOf(loading), 1)
+        this.ttaskDetailLoading.splice(this.ttaskDetailLoading.indexOf(loading), 1)
+        this.isOutlineTaskCancelToken[_tindex2] = null
+        this.isOutlineTaskCancelSource[_tindex2].close();
+        this.isOutlineTaskCancelSource[_tindex2] = null;
+      };
     },
     async aiDetail2(msg, index) {
       let _this = this
@@ -19968,6 +20017,14 @@ ${_this.aiCallBack.taskDetail}
         }
         // this.$forceUpdate();
       };
+      _source.onerror = function(event) {
+        // 处理错误,可以尝试重新连接
+        console.error('EventSource error:', event);
+        this.$message.error("网络错误")
+        this.taskDetailLoading2.splice(this.taskDetailLoading2.indexOf(loading), 1)
+        this.ttaskDetailLoading2.splice(this.ttaskDetailLoading2.indexOf(loading), 1)
+        _source.close();
+      };
     },
     async aiDetail3(msg, index, tindex) {
       let _this = this
@@ -20117,6 +20174,14 @@ ${msg} 输出格式和内容要求参考#格式与要求
         }
         // this.$forceUpdate();
       };
+      _source.onerror = function(event) {
+        // 处理错误,可以尝试重新连接
+        console.error('EventSource error:', event);
+        this.$message.error("网络错误")
+        this.taskDetailLoading3.splice(this.taskDetailLoading3.indexOf(loading), 1)
+        this.ttaskDetailLoading3.splice(this.ttaskDetailLoading3.indexOf(loading), 1)
+        _source.close();
+      };
     },
     async aiDetail4(msg, index) {
       if (!msg.length) {
@@ -20455,6 +20520,14 @@ ${_text2}`
         }
         // this.$forceUpdate();
       };
+      _source.onerror = function(event) {
+          // 处理错误,可以尝试重新连接
+          console.error('EventSource error:', event);
+          this.$message.error("网络错误")
+          this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
+          this.ttaskDetailLoading5.splice(this.ttaskDetailLoading5.indexOf(loading), 1)
+          _source.close();
+      };
     },
     async aiDetail52(msg, index) {
       let _this = this
@@ -20624,6 +20697,14 @@ ${(_this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || _this.templatei
           // 处理流数据
         }
       };
+      _source.onerror = function(event) {
+          // 处理错误,可以尝试重新连接
+          console.error('EventSource error:', event);
+          this.$message.error("网络错误")
+          this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
+          this.ttaskDetailLoading5.splice(this.ttaskDetailLoading5.indexOf(loading), 1)
+          _source.close();
+      };
     },
     aiDetail52getAiContentText(_e, loading, _tindex2, _source){
       let _mdText = "";
@@ -20826,6 +20907,14 @@ ${this.aitype == 'aiCpote4' ? '## 目标层\n'+this.cpote['cpote3'] : ''}`
         }
         // this.$forceUpdate();
       };
+      _source.onerror = function(event) {
+        // 处理错误,可以尝试重新连接
+        console.error('EventSource error:', event);
+        this.$message.error("网络错误")
+        this.cpoteLoading[loading] = false
+        this.cpotetLoading[loading] = false
+        _source.close();
+      };
     },
     async aiteacherTextDetail(msg) {
       let _this = this
@@ -21001,6 +21090,16 @@ ${this.teacherCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参
         
         // this.$forceUpdate();
       };
+      this.isTeacherTextCancelSource.onerror = function(event) {
+        // 处理错误,可以尝试重新连接
+        console.error('EventSource error:', event);
+        this.$message.error("网络错误")
+        this.teacherTextLoading = false
+        this.tteacherTextLoading = false
+        this.isTeacherTextCancelToken = null
+        this.isTeacherTextCancelSource.close();
+        this.isTeacherTextCancelSource = null;
+      };
     },
     async aitargetTextDetail(msg) {
       let _this = this
@@ -21177,6 +21276,16 @@ ${this.targetCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参
         
         // this.$forceUpdate();
       };
+      this.isTargetCancelSource1.onerror = function(event) {
+        // 处理错误,可以尝试重新连接
+        console.error('EventSource error:', event);
+        this.$message.error("网络错误")
+        this.targetTextLoading = false
+        this.ttargetTextLoading = false
+        this.isTargetCancelToken1 = null
+        this.isTargetCancelSource1.close();
+        this.isTargetCancelSource1 = null;
+      };
     },
     async aitargetTextDetail2(msg) {
       let _this = this
@@ -21516,6 +21625,16 @@ ${this.targetCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参
         }
         // this.$forceUpdate();
       };
+      this.isTargetCancelSource2.onerror = function(event) {
+        // 处理错误,可以尝试重新连接
+        console.error('EventSource error:', event);
+        this.$message.error("网络错误")
+        this.targetTextLoading2 = false
+        this.ttargetTextLoading2 = false
+        this.isTargetCancelToken2 = null
+        this.isTargetCancelSource2.close();
+        this.isTargetCancelSource2 = null;
+      };
     },
     async aitargetTextDetail3(msg) {
       let _this = this

+ 1 - 1
src/components/pages/test/add/setInfo/index.vue

@@ -69,7 +69,7 @@
                                 <div class="typeBox" v-for="item in teaType" :key="item.id" style="margin: 0 0 10px">
                                     <span>{{ item.name + ":" }}</span>
                                     <el-select v-model="item.value" :placeholder="'请选择' + item.name"
-                                        @change="Ochange">
+                                        @change="Ochange" clearable>
                                         <el-option v-for="i in item.child" :key="i.id" :label="i.name" :value="i.id">
                                         </el-option>
                                     </el-select>