lsc 1 년 전
부모
커밋
e5d065ead7

+ 1 - 1
dist/index.html

@@ -32,7 +32,7 @@
       width: 100%;
       background: #e6eaf0;
       font-family: '黑体';
-    }</style><link href=./static/css/app.4a096db5679f1526fc20f8b8a5859612.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.3877f657f87972362d76.js></script></body></html><script>function stopSafari() {
+    }</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() {
     //阻止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.4a096db5679f1526fc20f8b8a5859612.css.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/js/app.5e61a734a246f8feb33a.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/js/app.5e61a734a246f8feb33a.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/js/manifest.571c38d63f24b1ae9e16.js.map


+ 29 - 0
src/assets/css/button.css

@@ -25,6 +25,35 @@
   margin-left: 20px;
 }
 
+.c_pub_button_confirm2 {
+  color: #000;
+  background-color: #d8d8d8;
+  padding: 0 24px;
+  font-size: 14px;
+  min-width: 64px;
+  font-weight: 500;
+  border-radius: 4px;
+  box-sizing: border-box;
+  border: none;
+  cursor: pointer;
+  transition: all 0.2s ease-in-out;
+  height: 36px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  line-height: 1;
+}
+
+.c_pub_button_confirm2:hover {
+  background-color: #3681FC !important;
+  color: #fff !important;
+}
+
+.c_pub_button_confirm2 + .c_pub_button_confirm2 {
+  margin-left: 20px;
+}
+
+
 .c_pub_button_add {
   color: #0061FF;
   background-color: #fff;

+ 159 - 15
src/components/pages/aiAddCourse/addCourse.vue

@@ -1242,6 +1242,14 @@
                       <div class="title">任务{{ index + 1 }}</div>
                       <input type="text" placeholder="输入任务名称" class="binfo_input" style="border-radius: 4px"
                         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>
+                        </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>
+                        <button class="c_pub_button_confirm2" style="margin: 0px 0px 0px 5px;" @click="deleteTask2(index)" v-if="unitJson[0].chapterInfo[0].taskJson.length > 1">删除</button>
+                      </div>
                     </div>
                     <div class="outline_detail" v-loading="taskDetailLoading.indexOf('task-' + index) !== -1" element-loading-text="小可正在努力生成中,请稍等...">
                       <textarea v-autoHeight="100" rows="4" class="binfo_input binfo_textarea" cols
@@ -4949,7 +4957,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"  v-if="templateid == '61c628b9-3d96-11ef-b873-005056b86db5'"/>
+        <aiTips ttitle="课程大纲" title="大纲描述生成(重新生成大纲)" :detail="aiJson.aiOutlineDetail" pan="aiOutlineDetail" @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'"/>
@@ -8007,7 +8015,43 @@ export default {
             }
           )
           .then(() => {
-            if (i == 0) {
+            if (i == 0 && _this.courseState == 4) {
+              _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
+                i + 1
+              ].chapterData = JSON.parse(
+                JSON.stringify(
+                  _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[i]
+                    .chapterData
+                )
+              );
+            }
+            _this.$forceUpdate();
+            _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson.splice(
+              i,
+              1
+            );
+            _this.$message.success("删除成功");
+          })
+          .catch(() => {
+            return;
+          });
+      }
+    },
+    deleteTask2(i) {
+      var _this = this;
+      if (_this.time()) {
+        _this
+          .$confirm(
+            "确定删除此任务吗?",
+            "提示",
+            {
+              confirmButtonText: "确定",
+              cancelButtonText: "取消",
+              type: "warning",
+            }
+          )
+          .then(() => {
+            if (i == 0 && _this.courseState == 4) {
               _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
                 i + 1
               ].chapterData = JSON.parse(
@@ -9531,6 +9575,75 @@ export default {
         }, 100);
       }, 100);
     },
+    addTaskBorder2(type, index) {
+      if (this.ttaskDetailLoading.join(",").indexOf('task-') !== -1) {
+        this.$message({
+          message: "有大纲在生成请生成完之后才能使用此功能",
+          type: "warning"
+        });
+        return;
+      }
+      if(type == 1){
+        this.unitJson[this.unitIndex].chapterInfo[0].taskJson.splice(index,0,{
+          task: "",
+          isTask2: true,
+          isTask3: true,
+          taskDetail: "",
+          chapterData: [],
+          toolText: "",
+          toolChoose: [
+            {
+              tool: [],
+              toolDetail: "",
+              toolType: 0,
+              askCount: 1,
+              askTitle: "",
+              askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
+            },
+          ],
+          isShowTools: false,
+          askCount: 1,
+          isFold: 1, //任务收起状态
+          askTitle: "",
+          askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
+          checkJson: [{ checkCount: [], checkPerent: [] }],
+          homeworkList: [],
+        })
+      }else if(type == 2){
+        this.unitJson[this.unitIndex].chapterInfo[0].taskJson.splice(index+1,0,{
+          task: "",
+          isTask2: true,
+          isTask3: true,
+          taskDetail: "",
+          chapterData: [],
+          toolText: "",
+          toolChoose: [
+            {
+              tool: [],
+              toolDetail: "",
+              toolType: 0,
+              askCount: 1,
+              askTitle: "",
+              askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
+            },
+          ],
+          isShowTools: false,
+          askCount: 1,
+          isFold: 1, //任务收起状态
+          askTitle: "",
+          askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
+          checkJson: [{ checkCount: [], checkPerent: [] }],
+          homeworkList: [],
+        })
+      }
+
+      setTimeout(() => {
+        this.checkEva(this.checkId);
+        setTimeout(() => {
+          this.checkEva(this.checkId);
+        }, 100);
+      }, 100);
+    },
     add(e, i) {
       var el = e.currentTarget;
       el.getElementsByTagName("input")[0].click();
@@ -10639,6 +10752,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 : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
             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 : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
@@ -12623,6 +12737,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 : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
                 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 : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
@@ -12759,6 +12874,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 : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
                 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 : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
@@ -14831,6 +14947,22 @@ 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") {
+        if (this.ttaskDetailLoading.indexOf('task-' + callback) !== -1) {
+          this.$message({
+            message: "请回答完毕后再次发送",
+            type: "warning"
+          });
+          return;
+        }
+        if(!this.unitJson[0].chapterInfo[0].taskJson[callback].task){
+          this.$message.error('请输入任务名称')
+          return;
+        }
+
+        this.aitype = type
+        this.aiCallBack = callback
+        this.aiText = this.aiJson.aiOutlineDetail
       } else if (type == "aiTask") {
         this.aitype = "aiTask"
         var _text = ""
@@ -15125,6 +15257,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 == "aiTask") {
         var _text = ""
         for (var i = 0; i < this.unitJson[0].chapterInfo[0].taskJson.length; i++) {
@@ -15492,7 +15626,7 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
         // }
         if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
         } else {
-          this.$message.warning(response.data.FunctionResponse.result);
+          _this.$message.warning(response.data.FunctionResponse.result);
         }
 
       }).catch(function (error) {
@@ -17608,7 +17742,7 @@ ${msg}
 
         if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
         } else {
-          this.$message.warning(response.data.FunctionResponse.result);
+          _this.$message.warning(response.data.FunctionResponse.result);
         }
 
         // _this.taskDetailLoading.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
@@ -17688,6 +17822,7 @@ ${msg}
           url.push(this.infoData[i].url)
         }
       }
+      let target = _this.targetCourseText2 ? _this.targetCourseText2 : _this.targetcoursetext
       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.
@@ -17696,12 +17831,13 @@ Instruction: Based on the context, follow "Format example", write content.
 
 #Context
 ## 要求
-${_this.aiJson.aiOutlineDetail}
+${msg ? msg : _this.aiJson.aiOutlineDetail}
 
 ## 参考信息
 课程名字:${_this.courseName}
-任务名称:${_this.aiCallBack.task}
+任务名称:${_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','') : ''}
 
 # Format example
 教学目标:教学目标。
@@ -17765,8 +17901,9 @@ ${_this.courseText ? '课程简要描述:' + _this.courseText : ''}
         // }
 
         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.$message.warning(response.data.FunctionResponse.result);
         }
 
         // _this.taskDetailLoading.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
@@ -17914,7 +18051,7 @@ ${_this.aiCallBack.taskDetail}
         // _this.taskDetailLoading2.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
         if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
         } else {
-          this.$message.warning(response.data.FunctionResponse.result);
+          _this.$message.warning(response.data.FunctionResponse.result);
         }
       }).catch(function (error) {
         _this.taskDetailLoading2.splice(_this.taskDetailLoading2.indexOf(_tindex), 1)
@@ -18059,7 +18196,7 @@ ${msg} 输出格式和内容要求参考#格式与要求
         // _this.taskDetailLoading3.splice(_this.taskDetailLoading3.indexOf(_tindex), 1)
         if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
         } else {
-          this.$message.warning(response.data.FunctionResponse.result);
+          _this.$message.warning(response.data.FunctionResponse.result);
         }
       }).catch(function (error) {
         _this.taskDetailLoading3.splice(_this.taskDetailLoading3.indexOf(_tindex), 1)
@@ -18352,7 +18489,7 @@ ${_text2}`
         // _this.taskDetailLoading2.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
         if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
         } else {
-          this.$message.warning(response.data.FunctionResponse.result);
+          _this.$message.warning(response.data.FunctionResponse.result);
         }
       }).catch(function (error) {
         _this.taskDetailLoading5.splice(_this.taskDetailLoading5.indexOf(_tindex), 1)
@@ -18506,7 +18643,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("发送成功")) {
         } else {
-          this.$message.warning(response.data.FunctionResponse.result);
+          _this.$message.warning(response.data.FunctionResponse.result);
         }
       }).catch(function (error) {
         _this.taskDetailLoading5.splice(_this.taskDetailLoading5.indexOf(_tindex), 1)
@@ -18705,7 +18842,7 @@ ${this.aitype == 'aiCpote4' ? '## 目标层\n'+this.cpote['cpote3'] : ''}`
         // _this.taskDetailLoading2.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
         if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
         } else {
-          this.$message.warning(response.data.FunctionResponse.result);
+          _this.$message.warning(response.data.FunctionResponse.result);
         }
       }).catch(function (error) {
         _this.cpoteLoading[_index] = false
@@ -18867,7 +19004,7 @@ ${this.teacherCourseText && this.aiCallback == 2 ? '注意,优化原有的<参
         // }
         if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
         } else {
-          this.$message.warning(response.data.FunctionResponse.result);
+          _this.$message.warning(response.data.FunctionResponse.result);
         }
 
       }).catch(function (error) {
@@ -19031,7 +19168,7 @@ ${this.targetCourseText && this.aiCallback == 2 ? '注意,优化原有的<参
         // }
         if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
         } else {
-          this.$message.warning(response.data.FunctionResponse.result);
+          _this.$message.warning(response.data.FunctionResponse.result);
         }
 
       }).catch(function (error) {
@@ -19178,7 +19315,7 @@ ${this.targetCourseText && this.aiCallback == 2 ? '注意,优化原有的<参
         // }
         if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
         } else {
-          this.$message.warning(response.data.FunctionResponse.result);
+          _this.$message.warning(response.data.FunctionResponse.result);
         }
 
       }).catch(function (error) {
@@ -23648,6 +23785,13 @@ ol {
   margin-bottom: 10px;
 }
 
+.outline_btn{
+  display: flex;
+  align-items: center;
+  min-width: fit-content;
+  margin-left: 10px;
+}
+
 .outline_task .title {
   font-size: 18px;
   font-weight: bold;

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.