lsc 1 年之前
父节点
当前提交
9d5872c4b3

+ 1 - 1
dist/index.html

@@ -32,7 +32,7 @@
       width: 100%;
       background: #e6eaf0;
       font-family: '黑体';
-    }</style><link href=./static/css/app.100060ff2a0824aab44652c7b967bf2b.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.571c38d63f24b1ae9e16.js></script><script type=text/javascript src=./static/js/vendor.ee476e38463461edca63.js></script><script type=text/javascript src=./static/js/app.5e61a734a246f8feb33a.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.c27d3f1477f2ea059d35cc06a6143c18.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.571c38d63f24b1ae9e16.js></script><script type=text/javascript src=./static/js/vendor.ee476e38463461edca63.js></script><script type=text/javascript src=./static/js/app.dca88a2e8602212c6a79.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/app.100060ff2a0824aab44652c7b967bf2b.css


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/app.100060ff2a0824aab44652c7b967bf2b.css.map


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/app.c27d3f1477f2ea059d35cc06a6143c18.css


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/app.c27d3f1477f2ea059d35cc06a6143c18.css.map


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/app.dca88a2e8602212c6a79.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/app.dca88a2e8602212c6a79.js.map


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/manifest.571c38d63f24b1ae9e16.js.map


+ 225 - 52
src/components/pages/aiAddCourse/addCourse.vue

@@ -1244,7 +1244,7 @@
                         v-model="item.task" />
                       <div class="outline_btn">
                         <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                              <button class="c_pub_button_confirm2" style="margin: 0px 0px 0px 5px;" @contextmenu.prevent="openAiDialog(1, 'aiOutlineDetail', index)" @click="openAiDialog(2, 'aiOutlineDetail', index)">{{ item.taskDetail2 ? "重新生成大纲" : "生成大纲"}}</button>
+                              <button class="c_pub_button_confirm2" style="margin: 0px 0px 0px 5px;" @contextmenu.prevent="openAiDialog(1, 'aiOutlineDetail2', index)" @click="openAiDialog(2, 'aiOutlineDetail2', index)">{{ item.taskDetail2 ? "重新生成任务" : "生成任务"}}</button>
                         </el-tooltip>
                         <button class="c_pub_button_confirm2" style="margin: 0px 0px 0px 5px;" @click="addTaskBorder2(1, index)">在上面加入一个任务</button>
                         <button class="c_pub_button_confirm2" style="margin: 0px 0px 0px 5px;" @click="addTaskBorder2(2, index)">在下面加入一个任务</button>
@@ -4730,20 +4730,34 @@
                             }">
                               <div v-if="itemTask.eList && itemTask.eList.length" class="elist_input">
                                 <div v-for="(eItem, eIndex) in itemTask.eList" :key="eIndex" class="elist_input_box">
-                                  <span>评价维度:</span>
-                                  <!-- <el-tooltip effect="dark" :content="itemTask.eList[eIndex].value || '填写评价维度'" placement="top" popper-class="text_tooltip2"> -->
-                                  <input type="input" v-model="itemTask.eList[eIndex].value" placeholder="填写评价维度" />
-                                  <!-- </el-tooltip> -->
-                                  <!-- <span>评星等级:</span>
-                                  <el-rate v-model="itemTask.eList[eIndex].score" @change="setEListStar()"
-                                    disabled></el-rate> -->
-                                  <div class="remove" @click="
-                                    deletEList(
-                                      unitIndex,
-                                      itemTaskIndex,
-                                      eIndex
-                                    )
-                                    "></div>
+                                  <div class="elist_inptu_text">
+                                    <span>目标:</span>
+                                    <input type="input" v-model="itemTask.eList[eIndex].target" placeholder="填写目标"  style="width: 200px;"/>
+                                    <el-switch
+                                      style="margin-left: auto;"
+                                      v-model="itemTask.eList[eIndex].isai"
+                                      active-text="人工评分"
+                                      inactive-text="AI评分"
+                                      active-value="2"
+                                      inactive-value="1">
+                                    </el-switch>
+                                  </div>
+                                  <div class="elist_inptu_text">
+                                    <span>评价维度:</span>
+                                    <!-- <el-tooltip effect="dark" :content="itemTask.eList[eIndex].value || '填写评价维度'" placement="top" popper-class="text_tooltip2"> -->
+                                    <input type="input" v-model="itemTask.eList[eIndex].value" placeholder="填写评价维度" />
+                                    <!-- </el-tooltip> -->
+                                    <!-- <span>评星等级:</span>
+                                    <el-rate v-model="itemTask.eList[eIndex].score" @change="setEListStar()"
+                                      disabled></el-rate> -->
+                                    <div class="remove" @click="
+                                      deletEList(
+                                        unitIndex,
+                                        itemTaskIndex,
+                                        eIndex
+                                      )
+                                      "></div>
+                                  </div>
                                   <div class="elist_inptu_text">
                                     <span>维度描述:</span>
                                     <!-- <el-tooltip effect="dark" :content="itemTask.eList[eIndex].detail || '填写维度描述'" placement="top" popper-class="text_tooltip2"> -->
@@ -4957,7 +4971,7 @@
         <aiTips ttitle="基础资料" title="生成目标" :detail="aiJson.aiTarget2" pan="aiTarget2" @setAiJson="setAiJson"  v-if="!yiKeTemplateArray.includes(templateid)"/>
         <aiTips ttitle="基础资料" title="生成大纲按钮" :detail="aiJson.aiOutline" pan="aiOutline" @setAiJson="setAiJson" v-if="templateid != '61c628b9-3d96-11ef-b873-005056b86db5' && templateid != '4480d65a-1e48-11ef-bee5-005056b86db5' && templateid != 'cf5722a4-401b-11ef-b873-005056b86dc3'"/>
         <aiTips ttitle="课程大纲" title="大纲任务生成" :detail="aiJson.aiOutlineTask" pan="aiOutlineTask" @setAiJson="setAiJson" v-if="templateid == '61c628b9-3d96-11ef-b873-005056b86db5'"/>
-        <aiTips ttitle="课程大纲" title="大纲描述生成(重新生成大纲)" :detail="aiJson.aiOutlineDetail" pan="aiOutlineDetail" @setAiJson="setAiJson"/>
+        <aiTips ttitle="课程大纲" title="大纲描述生成(重新生成任务)" :detail="aiJson.aiOutlineDetail2" pan="aiOutlineDetail2" @setAiJson="setAiJson"/>
         <aiTips ttitle="课程大纲" title="大纲描述优化" :detail="aiJson.aiDetail1" pan="aiDetail1" @setAiJson="setAiJson"  v-if="templateid != '4480d65a-1e48-11ef-bee5-005056b86db5' || templateid == 'cf5722a4-401b-11ef-b873-005056b86dc3'"/>
         <aiTips ttitle="cpote" title="概念群" :detail="aiJson.cpote1" pan="cpote1" @setAiJson="setAiJson"  v-if="templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' || templateid == 'cf5722a4-401b-11ef-b873-005056b86dc3'"/>
         <aiTips ttitle="cpote" title="问题链" :detail="aiJson.cpote2" pan="cpote2" @setAiJson="setAiJson"  v-if="templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' || templateid == 'cf5722a4-401b-11ef-b873-005056b86dc3'"/>
@@ -7625,6 +7639,24 @@ export default {
             return;
           }
 
+          let _pan2 = 1
+          for (var k = 0; k < this.unitJson[0].chapterInfo[0].taskJson.length; k++) {
+            if(!this.unitJson[0].chapterInfo[0].taskJson[k].taskDetail2){
+              _pan2 = 2
+              this.$message.error(`请完善任务${k+1}的课程大纲`)
+              break;
+            }
+            if(!this.unitJson[0].chapterInfo[0].taskJson[k].taskDetail3){
+              _pan2 = 2
+              this.$message.error(`请完善任务${k+1}的课程教案`)
+              break;
+            }
+          }
+
+          if(_pan2 == 2){
+            return;
+          }
+
           const functionA = () => {
             setTimeout(() => {
               this.loading = false
@@ -9603,7 +9635,7 @@ export default {
           ],
           isShowTools: false,
           askCount: 1,
-          isFold: 1, //任务收起状态
+          isFold: 0, //任务收起状态
           askTitle: "",
           askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
           checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -9629,7 +9661,7 @@ export default {
           ],
           isShowTools: false,
           askCount: 1,
-          isFold: 1, //任务收起状态
+          isFold: 0, //任务收起状态
           askTitle: "",
           askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
           checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -9650,7 +9682,8 @@ export default {
     },
     fold(i, e) {
       if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold == 0
+        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold == 0 ||
+        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold == 2
       ) {
         this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold = 1;
       } else {
@@ -10752,7 +10785,7 @@ export default {
             this.aiJson.aiTarget = this.aiJson.aiTarget ? this.aiJson.aiTarget : '从用户提供的教案资料中,提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
             this.aiJson.aiSearchFile = this.aiJson.aiSearchFile ? this.aiJson.aiSearchFile : '请根据<关键词>,从你的相应知识库去检索5个最相关的信息。'
             this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,从你的知识库去检索5个最相关的信息'
-            this.aiJson.aiOutlineDetail = this.aiJson.aiOutlineDetail ? this.aiJson.aiOutlineDetail : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
+            this.aiJson.aiOutlineDetail2 = this.aiJson.aiOutlineDetail2 ? this.aiJson.aiOutlineDetail2 : '请参考#参考资料,重新生成该任务,生成内容需包含任务名,任务设计,评价标准。注意,你绝对不能重复已有其他任务,也不要输出其他内容'
             if(this.templateid == '61c628b9-3d96-11ef-b873-005056b86db5'){
               this.aiJson.aiOutlineTask = this.aiJson.aiOutlineTask ? this.aiJson.aiOutlineTask : '请根据<课程名字>以及该课程的<课程简要描述>来为该课程生成100字以内的序列课程任务,序列任务要求彼此连结紧密且没有重复。'
               this.aiJson.aiOutlineDetail = this.aiJson.aiOutlineDetail ? this.aiJson.aiOutlineDetail : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
@@ -12737,7 +12770,7 @@ export default {
                 this.aiJson.aiTarget = this.aiJson.aiTarget ? this.aiJson.aiTarget : '从用户提供的教案资料中,提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
                 this.aiJson.aiSearchFile = this.aiJson.aiSearchFile ? this.aiJson.aiSearchFile : '请根据<关键词>,从你的相应知识库去检索5个最相关的信息。'
                 this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,从你的知识库去检索5个最相关的信息'
-                this.aiJson.aiOutlineDetail = this.aiJson.aiOutlineDetail ? this.aiJson.aiOutlineDetail : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
+                this.aiJson.aiOutlineDetail2 = this.aiJson.aiOutlineDetail2 ? this.aiJson.aiOutlineDetail2 : '请参考#参考资料,重新生成该任务,生成内容需包含任务名,任务设计,评价标准。注意,你绝对不能重复已有其他任务,也不要输出其他内容'
                 if(this.templateid == '61c628b9-3d96-11ef-b873-005056b86db5'){
                   this.aiJson.aiOutlineTask = this.aiJson.aiOutlineTask ? this.aiJson.aiOutlineTask : '请根据<课程名字>以及该课程的<课程简要描述>来为该课程生成100字以内的序列课程任务,序列任务要求彼此连结紧密且没有重复。'
                   this.aiJson.aiOutlineDetail = this.aiJson.aiOutlineDetail ? this.aiJson.aiOutlineDetail : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
@@ -12874,7 +12907,7 @@ export default {
                 this.aiJson.aiTarget = this.aiJson.aiTarget ? this.aiJson.aiTarget : '从用户提供的教案资料中,提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
                 this.aiJson.aiSearchFile = this.aiJson.aiSearchFile ? this.aiJson.aiSearchFile : '请根据<关键词>,从你的相应知识库去检索5个最相关的信息。'
                 this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,从你的知识库去检索5个最相关的信息'
-                this.aiJson.aiOutlineDetail = this.aiJson.aiOutlineDetail ? this.aiJson.aiOutlineDetail : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
+                this.aiJson.aiOutlineDetail2 = this.aiJson.aiOutlineDetail2 ? this.aiJson.aiOutlineDetail2 : '请参考#参考资料,重新生成该任务,生成内容需包含任务名,任务设计,评价标准。注意,你绝对不能重复已有其他任务,也不要输出其他内容'
                 if(this.templateid == '61c628b9-3d96-11ef-b873-005056b86db5'){
                   this.aiJson.aiOutlineTask = this.aiJson.aiOutlineTask ? this.aiJson.aiOutlineTask : '请根据<课程名字>以及该课程的<课程简要描述>来为该课程生成100字以内的序列课程任务,序列任务要求彼此连结紧密且没有重复。'
                   this.aiJson.aiOutlineDetail = this.aiJson.aiOutlineDetail ? this.aiJson.aiOutlineDetail : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
@@ -14947,7 +14980,7 @@ export default {
         // this.aiText = `请根据${this.courseText}设计一个名为${this.courseName}的${sub.length ? sub.join(",") + "学科的" : ""},面向${this.getListClassC(this.checkboxList2)}的项目式学习课程设计序列教学活动(需要每个任务都需要至少50个token的详细描述),每个教学活动的活动设计(可以直接使用文件内容)以及每个教学活动的评价量规(学生能做到...)。`
         this.aiText = this.aiJson.aiOutlineTask
         this.aiText2 = this.aiJson.aiOutlineDetail
-      } else if (type == "aiOutlineDetail") {
+      } else if (type == "aiOutlineDetail2") {
         if (this.ttaskDetailLoading.indexOf('task-' + callback) !== -1) {
           this.$message({
             message: "请回答完毕后再次发送",
@@ -14962,7 +14995,7 @@ export default {
 
         this.aitype = type
         this.aiCallBack = callback
-        this.aiText = this.aiJson.aiOutlineDetail
+        this.aiText = this.aiJson.aiOutlineDetail2
       } else if (type == "aiTask") {
         this.aitype = "aiTask"
         var _text = ""
@@ -15054,6 +15087,7 @@ export default {
           });
           return;
         }
+
         this.aitype = "teacherDetail"
         // this.aiText = `请根据${callback}\n重新设计该教案。其中包括但不仅限于该任务的教学目标,教学过程,师生研讨,拓展,学生任务单,相关知识点的练习或Qui以及答案等。`
         this.aiText = this.aiJson.teacherDetail
@@ -15067,6 +15101,11 @@ export default {
           });
           return;
         }
+        if(!this.unitJson[0].chapterInfo[0].taskJson[index].task){
+          this.$message.error('请输入任务名称')
+          return;
+        }
+
         this.aitype = "teacherDetail2"
         // this.aiText = `请根据${callback}\n重新设计该教案。其中包括但不仅限于该任务的教学目标,教学过程,师生研讨,拓展,学生任务单,相关知识点的练习或Qui以及答案等。`
         this.aiText = this.aiJson.teacherDetail2 ? this.aiJson.teacherDetail2 : '请根据<任务名>、<任务描述>,<课程简要描述>,为该任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),相关知识点的讲解,练习(练习需要包含示例答案)。'
@@ -15222,7 +15261,7 @@ ${target ? '课程目标:' + target.replaceAll('#','').replaceAll('*','').repl
 detail输出不要输出成json,文本或者markdown都可以
 
 # Format example
-[{"task": "任务名称1","detail": "${txt}"},{"task": "任务名称2","detail": "${txt}"}]`
+[{"task": "任务名称","detail": "${txt}"},{"task": "任务名称","detail": "${txt}"},{"task": "任务名称","detail": "${txt}"},{"task": "任务名称","detail": "${txt}"}]`
 
         this.aiGet2(message, () => {
           this.loading = false
@@ -15257,8 +15296,8 @@ ${target ? '课程目标:' + target.replaceAll('#','').replaceAll('*','').repl
           this.loading = false
           this.isOutline = true
         })
-      } else if (this.aitype == "aiOutlineDetail") {
-        this.aiOutlineDetail(this.aiJson.aiOutlineDetail, this.aiCallBack)
+      } else if (this.aitype == "aiOutlineDetail2") {
+        this.aiOutlineDetail2(this.aiJson.aiOutlineDetail2, this.aiCallBack)
       } else if (this.aitype == "aiTask") {
         var _text = ""
         for (var i = 0; i < this.unitJson[0].chapterInfo[0].taskJson.length; i++) {
@@ -15397,7 +15436,7 @@ ${(this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || this.templateid
 ${(this.templateid != "4480d65a-1e48-11ef-bee5-005056b86db5") ? '## 参考上下文\n'+'课程目标:'+target.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
 
 ## Format example
-[{"task": "任务名称1","detail": "教案输出为文本或markdown格式就行"},{"task": "任务名称2","detail": "教案输出为文本或markdown格式就行"}]`
+[{"task": "任务名称","detail": "教案输出为文本或markdown格式就行"},{"task": "任务名称","detail": "教案输出为文本或markdown格式就行"},{"task": "任务名称","detail": "教案输出为文本或markdown格式就行"},{"task": "任务名称","detail": "教案输出为文本或markdown格式就行"}]`
         this.aiGet4(message, () => {
           this.loading = false
           this.isOutline2 = true
@@ -15759,7 +15798,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
       //         ],
       //         isShowTools: false,
       //         askCount: 1,
-      //         isFold: 2,
+      //         isFold: 0,
       //         askTitle: "",
       //         askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
       //         checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -15870,7 +15909,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
                   _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail2 = _task.detail
                 }else {
                   _this.unitJson[0].chapterInfo[0].taskJson.push({
-                    task: _task.task,
+                    task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
                     taskDetail: "",
                     taskDetail2: _task.detail,
                     taskDetail3: "",
@@ -15888,7 +15927,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
                     ],
                     isShowTools: false,
                     askCount: 1,
-                    isFold: 2,
+                    isFold: 0,
                     askTitle: "",
                     askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
                     checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -15903,7 +15942,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
               for (var i = 0; i < dArray.length; i++) {
                 let _task = dArray[i]
                 _this.unitJson[0].chapterInfo[0].taskJson.push({
-                  task: _task.task,
+                  task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
                   taskDetail: "",
                   taskDetail2: _task.detail,
                   taskDetail3: "",
@@ -15921,7 +15960,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
                   ],
                   isShowTools: false,
                   askCount: 1,
-                  isFold: 2,
+                  isFold: 0,
                   askTitle: "",
                   askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
                   checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -16023,7 +16062,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
       //         ],
       //         isShowTools: false,
       //         askCount: 1,
-      //         isFold: 2,
+      //         isFold: 0,
       //         askTitle: "",
       //         askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
       //         checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -16134,7 +16173,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
                   // _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail2 = _task.detail
                 }else {
                   _this.unitJson[0].chapterInfo[0].taskJson.push({
-                    task: _task.task,
+                    task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
                     taskDetail: "",
                     taskDetail2: "",
                     taskDetail3: "",
@@ -16152,7 +16191,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
                     ],
                     isShowTools: false,
                     askCount: 1,
-                    isFold: 2,
+                    isFold: 0,
                     askTitle: "",
                     askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
                     checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -16167,7 +16206,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
               for (var i = 0; i < dArray.length; i++) {
                 let _task = dArray[i]
                 _this.unitJson[0].chapterInfo[0].taskJson.push({
-                  task: _task.task,
+                  task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
                   taskDetail: "",
                   taskDetail2: "",
                   taskDetail3: "",
@@ -16185,7 +16224,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
                   ],
                   isShowTools: false,
                   askCount: 1,
-                  isFold: 2,
+                  isFold: 0,
                   askTitle: "",
                   askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
                   checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -16278,7 +16317,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
       //         ],
       //         isShowTools: false,
       //         askCount: 1,
-      //         isFold: 2,
+      //         isFold: 0,
       //         askTitle: "",
       //         askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
       //         checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -16389,7 +16428,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
                   // _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail2 = _task.detail
                 }else {
                   _this.unitJson[0].chapterInfo[0].taskJson.push({
-                    task: _task.task,
+                    task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
                     taskDetail: "",
                     taskDetail2: "",
                     taskDetail3: "",
@@ -16407,7 +16446,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
                     ],
                     isShowTools: false,
                     askCount: 1,
-                    isFold: 2,
+                    isFold: 0,
                     askTitle: "",
                     askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
                     checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -16422,7 +16461,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
               for (var i = 0; i < dArray.length; i++) {
                 let _task = dArray[i]
                 _this.unitJson[0].chapterInfo[0].taskJson.push({
-                  task: _task.task,
+                  task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
                   taskDetail: "",
                   taskDetail2: "",
                   taskDetail3: "",
@@ -16440,7 +16479,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
                   ],
                   isShowTools: false,
                   askCount: 1,
-                  isFold: 2,
+                  isFold: 0,
                   askTitle: "",
                   askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
                   checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -16946,6 +16985,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
               _this.unitJson[0].chapterInfo[0].taskJson[index].chapterData = []
               if(!_task.toolChoose || (_task.detail && _task.detail.length < 20) || !_task.detail){
                 console.log("error_________________JSON不对重新生成");
+                _this.$message.error('哎呀,网络波动了...小可正在为您重新生成中...')
                 _this.aiGet32(messages, index)
                 return;
               }
@@ -17409,7 +17449,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[_this.taskCount].taskDetail3.replace
       //           ],
       //           isShowTools: false,
       //           askCount: 1,
-      //           isFold: 2,
+      //           isFold: 0,
       //           askTitle: "",
       //           askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
       //           checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -17444,7 +17484,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[_this.taskCount].taskDetail3.replace
       //             ],
       //             isShowTools: false,
       //             askCount: 1,
-      //             isFold: 2,
+      //             isFold: 0,
       //             askTitle: "",
       //             askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
       //             checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -17509,6 +17549,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[_this.taskCount].taskDetail3.replace
                   // dArray = JSON.parse(jsonString);
               } catch (error) {
                 _this.aiGet4(messages, callback)
+                _this.$message.error('哎呀,网络波动了...小可正在为您重新生成中...')
                 console.log("error_________________" + error);
                 return;
                 console.log("error_________________" + error);
@@ -17530,7 +17571,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[_this.taskCount].taskDetail3.replace
                       _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail3 = _task.detail
                     }else {
                       _this.unitJson[0].chapterInfo[0].taskJson.push({
-                        task: _task.task,
+                        task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
                         taskDetail: "",
                         taskDetail2: "",
                         taskDetail3: _task.detail,
@@ -17548,7 +17589,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[_this.taskCount].taskDetail3.replace
                         ],
                         isShowTools: false,
                         askCount: 1,
-                        isFold: 2,
+                        isFold: 0,
                         askTitle: "",
                         askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
                         checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -17562,7 +17603,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[_this.taskCount].taskDetail3.replace
                   for (var i = 0; i < dArray.length; i++) {
                     let _task = dArray[i]
                     _this.unitJson[0].chapterInfo[0].taskJson.push({
-                      task: _task.task,
+                      task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
                       taskDetail: "",
                       taskDetail2: "",
                       taskDetail3: _task.detail,
@@ -17580,7 +17621,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[_this.taskCount].taskDetail3.replace
                       ],
                       isShowTools: false,
                       askCount: 1,
-                      isFold: 2,
+                      isFold: 0,
                       askTitle: "",
                       askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
                       checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -17598,7 +17639,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[_this.taskCount].taskDetail3.replace
                     _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail3 = _task.detail
                   }else {
                     _this.unitJson[0].chapterInfo[0].taskJson[i] = {
-                      task: _task.task,
+                      task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
                       taskDetail: "",
                       taskDetail2: "",
                       taskDetail3: _task.detail,
@@ -17616,7 +17657,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[_this.taskCount].taskDetail3.replace
                       ],
                       isShowTools: false,
                       askCount: 1,
-                      isFold: 2,
+                      isFold: 0,
                       askTitle: "",
                       askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
                       checkJson: [{ checkCount: [], checkPerent: [] }],
@@ -17628,6 +17669,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[_this.taskCount].taskDetail3.replace
                 _this.$forceUpdate();
               }
             } catch (error) {
+              _this.$message.error('哎呀,网络波动了...小可正在为您重新生成中...')
               _this.aiGet4(messages, callback)
               console.log("error_________________" + error);
               return;
@@ -17845,6 +17887,133 @@ ${target ? '课程目标:' + target.replaceAll('#','').replaceAll('*','').repl
 评价标准:评价标准。 内容不要以markdown形式出现,只需要口语化的形式
 `
 
+// -------- #补充参考资料和
+// ## 补充参考资料
+// - 补充资料:${url.join(",")}
+// - 补充描述:${_this.courseText2}
+      _this.taskDetailLoading.push(_tindex)
+      _this.ttaskDetailLoading.push(_tindex)
+      let _uuid = uuidv4();
+      // let params = JSON.stringify({
+      //   // "model": "Chat",
+      //   model: 'gpt-3.5-turbo',
+      //   temperature: 0,
+      //   max_tokens: 4096,
+      //   top_p: 1,
+      //   frequency_penalty: 0,
+      //   presence_penalty: 0,
+      //   messages: [{
+      //     content: messages,
+      //     role: 'user'
+      //   }],
+      //   uid: _uuid,
+      //   mind_map_question: "",
+      // })
+      let params = {
+        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
+        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
+        session_name: _uuid,
+        userId: _this.userid,
+        uid: _uuid,
+        file_ids: fileid.length ? [...fileid] : '',
+      }
+      // let params = JSON.stringify({
+      //     message: {
+      //         anthropic_version: "bedrock-2023-05-31",
+      //         max_tokens: 4096,
+      //         temperature: 0,
+      //         top_p: 1,
+      //         messages:  [{
+      //             "role": "user",
+      //             "content": messages
+      //         }] , 
+      //     },
+      //     uid: _uuid,
+      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
+      // });
+      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
+      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
+      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
+        console.log(response);
+        // let data = response.data.FunctionResponse
+        // if (data.choices && data.choices.length && data.choices[0].message) {
+        //   console.log(data.choices[0].message.content);
+        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 = data.choices[0].message.content
+        //   _this.$forceUpdate()
+        // }
+
+        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
+          _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].isTask2 = false
+        } else {
+          _this.$message.warning(response.data.FunctionResponse.result);
+        }
+
+        // _this.taskDetailLoading.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
+      }).catch(function (error) {
+        _this.taskDetailLoading.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
+        _this.ttaskDetailLoading.splice(_this.ttaskDetailLoading.indexOf(_tindex), 1)
+        console.log(error);
+      });
+      await _this.aiOutlineDetailgetAiContent(_uuid, _tindex, _tindex2)
+    },
+    async aiOutlineDetail2(msg, index) {
+      let _this = this
+      const _tindex = 'task-' + index
+      const _tindex2 = index
+
+      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
+      if (_this.infoData.length) {
+        for (var i = 0; i < _this.infoData.length; i++) {
+          if(_this.infoData[i].fileid){
+            fileid.push(_this.infoData[i].fileid)
+          }else {
+            let _fileid = await _this.createFileid(_this.infoData[i].url)
+            if(_fileid){
+              _this.infoData[i].fileid = _fileid
+              _this.$forceUpdate();
+              fileid.push(_fileid)
+            }
+          }
+        }
+      }
+
+      let url = []
+      if (this.infoData.length) {
+        for (var i = 0; i < this.infoData.length; i++) {
+          url.push(this.infoData[i].url)
+        }
+      }
+      let target = _this.targetCourseText2 ? _this.targetCourseText2 : _this.targetcoursetext
+      let taskArray = []
+      for (var k = 0; k < this.unitJson[0].chapterInfo[0].taskJson.length; k++) {
+          // _text += `任务名称:${this.unitJson[0].chapterInfo[0].taskJson[i].task}`
+          if(k != index){
+            taskArray.push(this.unitJson[0].chapterInfo[0].taskJson[k].task)
+          }
+        }
+      let messages = `NOTICE
+Role: 你是创建课程的老师,内容不要以markdown形式出现,只需要口语化的形式。
+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".
+Instruction: Based on the context, follow "Format example", write content.
+
+#Context
+## 要求
+${msg}
+
+## 参考信息
+课程名字:${_this.courseName}
+任务名称:${_this.aiCallBack.task ? _this.aiCallBack.task : _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].task}
+${_this.courseText ? '课程简要描述:' + _this.courseText : ''}
+${target ? '课程目标:' + target.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
+${taskArray.length ? '其他任务大纲名字:' + taskArray.join(',') : ''}
+
+# Format example
+教学目标:教学目标。
+任务设计:任务设计。
+评价标准:评价标准。 内容不要以markdown形式出现,只需要口语化的形式
+`
+
 // -------- #补充参考资料和
 // ## 补充参考资料
 // - 补充资料:${url.join(",")}
@@ -17928,6 +18097,9 @@ ${target ? '课程目标:' + target.replaceAll('#','').replaceAll('*','').repl
           _mdText = _mdText.replace("_", "");
           _source.close();
           this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 = _mdText;
+          if(!this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 && this.isOutline2){
+            this.aiDetail52(this.aiJson['teacherDetail2'], _tindex2)
+          }
           this.taskDetailLoading.splice(this.taskDetailLoading.indexOf(loading), 1)
           this.ttaskDetailLoading.splice(this.ttaskDetailLoading.indexOf(loading), 1)
           return;
@@ -18642,6 +18814,7 @@ ${(_this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || _this.templatei
         // }
         // _this.taskDetailLoading2.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
         if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
+          _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].isTask3 = false
         } else {
           _this.$message.warning(response.data.FunctionResponse.result);
         }
@@ -19437,7 +19610,7 @@ ${this.targetCourseText && this.aiCallback == 2 ? '注意,优化原有的<参
       //         ],
       //         isShowTools: false,
       //         askCount: 1,
-      //         isFold: 2,
+      //         isFold: 0,
       //         askTitle: "",
       //         askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
       //         checkJson: [{ checkCount: [], checkPerent: [] }],

部分文件因为文件数量过多而无法显示