lsc 9 月之前
父节点
当前提交
a9c43e2f94

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


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


+ 249 - 26
src/components/pages/aiAddCourse/addCourse.vue

@@ -2403,9 +2403,21 @@
                 </div>
               </div>
               <div class="rb_c_box_right">
-                <!-- <div class="rb_c_box_btn">
-                  <button class="c_pub_button_add pub_btn_paste_img" @click="pasteTask" v-if="steps == 3">智能粘贴</button>
-                </div> -->
+                <div class="rb_c_box_btn" style="justify-content: flex-end">
+                  <!-- <button class="c_pub_button_add pub_btn_paste_img" @click="pasteTask" v-if="steps == 3">智能粘贴</button> -->
+                  <button class="c_pub_button_return pub_btn_last_img"
+                    v-if="steps > 1 && steps != 5 && istemplate != 1" @click="lastSteps" style="background: #dbdbdb">
+                    {{ steps == 4 ? "返回课程" : "上一步" }}
+                  </button>
+                  <button class="c_pub_button_confirm" v-if="steps < 4 && istemplate != 1" @click="nextSteps" :class="{
+                    pub_btn_next_img: steps != 3,
+                    pub_btn_finish_img: steps == 3,
+                  }">
+                    {{ steps == 3 ? "确认上传" : "下一步" }}
+                  </button>
+                  <button class="c_pub_button_confirm" style="margin: 0 0 0 20px;" @click="openAiDialog2(2, 'aiTask3','all'), addCourseBehavior('courseBehavior', `点击学历案-重新生成所有任务按钮`)">重新生成所有任务</button>
+                  <button class="c_pub_button_confirm" style="margin: 0 0 0 20px;" @click="allEvaCan(), addCourseBehavior('courseBehavior', `点击学历案-一键生成所有评价按钮`)" v-if="panTaskElist() == 0 && panEvaCont() == 0">一键生成所有评价</button>
+                </div>
                 <div class="basic_box" ref="unitBox" @scroll="taskScroll">
                   <div v-if="false" style="
                       display: flex;
@@ -2808,7 +2820,6 @@
                                 @contextmenu.prevent="openAiDialog2(1, 'aiTask3',itemTaskIndex), addCourseBehavior('courseBehavior', `右键学历案-任务${itemTaskIndex + 1}-重新生成任务按钮`)"
                                 @click="openAiDialog2(2, 'aiTask3',itemTaskIndex), addCourseBehavior('courseBehavior', `点击学历案-任务${itemTaskIndex + 1}-重新生成任务按钮`)">重新生成任务</button>
                             </el-tooltip>
-                            <button v-if="itemTaskIndex == 0" class="c_pub_button_confirm" style="margin: 0 0 0 20px;" @click="openAiDialog2(2, 'aiTask3','all'), addCourseBehavior('courseBehavior', `点击学历案-重新生成所有任务按钮`)">重新生成所有任务</button>
                            </div>
                             <!-- <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
                               <button class="c_pub_button_confirm" style="margin: 0 0 0 20px;"
@@ -5427,7 +5438,7 @@
                       </button>
                     </div>
                   </div>
-                  <div class="info_btnBox3">
+                  <div class="info_btnBox3" v-show="istemplate == 1">
                     <button class="c_pub_button_return pub_btn_return_img" v-if="steps == 1" @click="
                       goTo(
                         '/course?userid=' +
@@ -7816,6 +7827,23 @@ export default {
         return count;
       };
     },
+    panEvaCont(){
+      return function () {
+        let count = 0;
+        for(var i = 0; i < this.unitJson.length; i++){
+          let _task = this.unitJson[i].chapterInfo[0].taskJson
+          for(var j = 0; j < _task.length; j++){
+            let tool = _task[j].toolChoose
+            for(var k = 0; k < tool.length; k++){
+              if(tool[k].eList && tool[k].eList.length){
+                count++
+              }
+            }
+          }
+        }
+        return count;
+      };
+    },
     dataCheckPan(){
       return function (fileid) {
         for(let i = 0; i < this.infoData.length; i++){
@@ -8308,6 +8336,24 @@ export default {
               return
             }
           }
+          let pan2 = 1
+          let taskJson = this.unitJson[0].chapterInfo[0].taskJson
+          for(var index = 0; index < taskJson.length; index++){
+            for (var j = 0; j < taskJson[index].toolChoose.length; j++) {
+              if(this.panTaskElist() == 0 && this.pjIndex.indexOf(taskJson[index].toolChoose[j].tool[0]) != -1){
+                if(this.$refs['evalist'+index+j][0].loading){
+                  this.$message({
+                    message: `请等待任务${index+1}回答完毕后再继续`,
+                    type: "warning"
+                  });
+                  pan2 = 2
+                }
+              }
+            }
+          }
+          if(pan2 == 2){
+            return
+          }
           if (this.cid == "" || this.cid == undefined) {
             if (this.courseName == "") {
               this.$message.error("请补充填写课程名称");
@@ -8764,6 +8810,24 @@ export default {
             return
           }
         }
+        let pan2 = 1
+        let taskJson = this.unitJson[0].chapterInfo[0].taskJson
+        for(var index = 0; index < taskJson.length; index++){
+          for (var j = 0; j < taskJson[index].toolChoose.length; j++) {
+            if(this.panTaskElist() == 0 && this.pjIndex.indexOf(taskJson[index].toolChoose[j].tool[0]) != -1){
+              if(this.$refs['evalist'+index+j][0].loading){
+                this.$message({
+                  message: `请等待任务${index+1}回答完毕后再继续`,
+                  type: "warning"
+                });
+                pan2 = 2
+              }
+            }
+          }
+        }
+        if(pan2 == 2){
+          return
+        }
         if (this.cid == "" || this.cid == undefined) {
           if (this.courseName == "") {
             this.$message.error("请补充填写课程名称");
@@ -9468,7 +9532,9 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail3.replaceAll('#',''
       // 创建文件流
 
       const file = new File([blob], dname, { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });
-      return file
+      // 执行下载
+      saveAs(file, dname);
+      // return file
     },
     async generateExport2(a, html, index) {
       return new Promise((resolve) => {
@@ -16747,6 +16813,46 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail3.replaceAll('#',''
           console.error(err);
         });
     },
+    allEvaCan(){
+      if (this.taskLoading.length) {
+        let _pan = 1
+        for(var k = 0; k < this.taskLoading.length; k++){
+          if(this.taskLoading[k]){
+            this.$message({
+              message: `请等待任务${k+1}回答完毕后再继续`,
+              type: "warning"
+            });
+            _pan = 2
+          }
+        }
+        if(_pan == 2){
+          return
+        }
+      }
+      if(this.taskGLoading.length){
+        let _pan = 1
+        for(var k = 0; k < this.taskGLoading.length; k++){
+          if(this.taskGLoading[k] && (this.taskGLoading[k][0] || this.taskGLoading[k][1] || this.taskGLoading[k][2])){
+            this.$message({
+              message: `请等待任务${k+1}回答完毕后再继续`,
+              type: "warning"
+            });
+            _pan = 2
+          }
+        }
+        if(_pan == 2){
+          return
+        }
+      }
+      let taskJson = this.unitJson[0].chapterInfo[0].taskJson
+      for(var index = 0; index < taskJson.length; index++){
+        for (var j = 0; j < taskJson[index].toolChoose.length; j++) {
+          if(this.panTaskElist() == 0 && this.pjIndex.indexOf(taskJson[index].toolChoose[j].tool[0]) != -1){
+            this.$refs['evalist'+index+j][0].openAiDialog('elist');
+          }
+        }
+      }
+    },
     setAiJson(pan,string,string2,string3){
       if(pan == 'aiTeacher2'){
         this.aiJson['teacherDetail2'] = string
@@ -16847,38 +16953,107 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail3.replaceAll('#',''
         this.openAiDialog(2, 'aitargetTextDetail',1)
       }, 500);
     },
+    async getUserName() {
+      let params = { uid: this.userid };
+      try {
+        let res = await this.ajax.get(
+          this.$store.state.api + "getUser",
+          params
+        );
+        return res.data[0][0].name;
+      } catch (err) {
+        console.error(err);
+      }
+    },
+    getCGN(type){
+      let sub = [] //学科
+      let mclass = [] //年纪
+      let theme = []
+      if (this.courseTypeId.length) {
+        for (var i = 0; i < this.courseTypeId.length; i++) {
+          let _sid = this.courseTypeId[i]
+          for (var j = 0; j < this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'].length; j++) {
+            if (_sid == this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
+              sub.push(this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
+            }
+          }
+          for (var j = 0; j < this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
+            if (_sid == this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
+              mclass.push(this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
+            }
+          }
+          for (var j = 0; j < this.CourseTypeJson['34629bcc-d02f-11ec-8c78-005056b86db5'].length; j++) {
+            if (_sid == this.CourseTypeJson['34629bcc-d02f-11ec-8c78-005056b86db5'][j].id) {
+              theme.push(this.CourseTypeJson['34629bcc-d02f-11ec-8c78-005056b86db5'][j].name)
+            }
+          }
+        }
+        if(type == 1){
+          return sub.join(",")
+        }else if(type == 2){
+          return mclass.join(",")
+        }else if(type == 3){
+          return theme.join(",")
+        }
+      }
+    },
     async exportTeachPlan(){
       this.loading = true
       const zip = new JSZip();
       let md = new MarkdownIt();
+      let courseText = this.courseText ? this.courseText : this.teacherCourseText
+      let target = this.targetCourseText2 ? this.targetCourseText2 : this.targetcoursetext
+      let String = ''
+      String += `<h1 style="text-align: center;">${this.courseName}</h1>`
+      String += `<h2>课程基本信息</h2>`
+      String += `<div><strong>设计者:</strong><span>${await this.getUserName()}</span></div>`
+      String += `<div><strong>年级:</strong><span></span>${this.getCGN(2)}</div>`
+      String += `<div><strong>主题:</strong><span></span>${this.getCGN(3)}</div>`
+      String += `<div><strong>学科:</strong><span></span>${this.getCGN(1)}</div>`
+      if(courseText){
+        String += `<h2>课程概况</h2>`
+        String += md.render(courseText)
+      }
+      if(target){
+        String += `<h2>课程目标</h2>`
+        String += md.render(target)
+      }
+      
+      String += `<h2>课程教案</h2>`
       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 name = _task.task+'-教案'
         let _html =  _task.taskDetail3 ? md.render(_task.taskDetail3) : ''
         if(!this.cid || !this.unitJson[0].chapterInfo[0].taskJson[i].chapterData.length){
           await this.generate(name, _html, i)
         }
-        let file = await this.generateExport(name, _html, i)
+        String += `<h3>任务${i+1}</h3>`
+        String += `<h4>${_task.task}</h4>`
+        String += _html
+        // let file = await this.generateExport(name, _html, i)
 
-        zip.file(`${name}.docx`, file, { binary: true })
+        // zip.file(`${name}.docx`, file, { binary: true })
       }
-      zip.generateAsync({ type: "blob" }).then((content) => {
-        // 生成二进制流
-        saveAs(
-          content,
-          this.courseName + "-" + "教案.zip"
-        ); // 利用file-saver保存文件  自定义文件名
-        setTimeout(() => {
+      await this.generateExport(this.courseName, String, i)
+      setTimeout(() => {
           this.loading = false
-          // if(!this.cid){
-          //   this.addWork(3)
-          // }else{
-          //   this.updateWork();
-          //   this.steps = 4;
-          // }
-        }, 2000);
-      });
-  
+      }, 2000);
+      // zip.generateAsync({ type: "blob" }).then((content) => {
+      //   // 生成二进制流
+      //   saveAs(
+      //     content,
+      //     this.courseName + "-" + "教案.zip"
+      //   ); // 利用file-saver保存文件  自定义文件名
+      //   setTimeout(() => {
+      //     this.loading = false
+      //     // if(!this.cid){
+      //     //   this.addWork(3)
+      //     // }else{
+      //     //   this.updateWork();
+      //     //   this.steps = 4;
+      //     // }
+      //   }, 2000);
+      // });
 
     },
     clickGenTT2(){
@@ -16963,6 +17138,54 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail3.replaceAll('#',''
       this.interSetting = false
     },
     openAiDialog2(clickType, type, callback, index, tindex){
+      if (this.taskLoading.length) {
+        let _pan = 1
+        for(var k = 0; k < this.taskLoading.length; k++){
+          if(this.taskLoading[k]){
+            this.$message({
+              message: `请等待任务${k+1}回答完毕后再继续`,
+              type: "warning"
+            });
+            _pan = 2
+          }
+        }
+        if(_pan == 2){
+          return
+        }
+      }
+      if(this.taskGLoading.length){
+        let _pan = 1
+        for(var k = 0; k < this.taskGLoading.length; k++){
+          if(this.taskGLoading[k] && (this.taskGLoading[k][0] || this.taskGLoading[k][1] || this.taskGLoading[k][2])){
+            this.$message({
+              message: `请等待任务${k+1}回答完毕后再继续`,
+              type: "warning"
+            });
+            _pan = 2
+          }
+        }
+        if(_pan == 2){
+          return
+        }
+      }
+      let pan2 = 1
+      let taskJson = this.unitJson[0].chapterInfo[0].taskJson
+      for(var index = 0; index < taskJson.length; index++){
+        for (var j = 0; j < taskJson[index].toolChoose.length; j++) {
+          if(this.panTaskElist() == 0 && this.pjIndex.indexOf(taskJson[index].toolChoose[j].tool[0]) != -1){
+            if(this.$refs['evalist'+index+j][0].loading){
+              this.$message({
+                message: `请等待任务${index+1}回答完毕后再继续`,
+                type: "warning"
+              });
+              pan2 = 2
+            }
+          }
+        }
+      }
+      if(pan2 == 2){
+        return
+      }
       this.$confirm("重新生成会影响已生成内容,确定重新生成吗?", "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
@@ -28178,7 +28401,7 @@ ol {
 .rb_c_box_right>.basic_box {
   /* background: #fff; */
   border-radius: 0;
-  height: calc(100% - 0px);
+  height: calc(100% - 50px);
   overflow: auto;
   padding: 0;
 }

+ 1 - 1
src/components/pages/aiAddCourse/aiBox.vue

@@ -390,7 +390,7 @@ export default {
         });
         let params = JSON.stringify({
           // model: "gpt-3.5-turbo",
-          // model: 'gpt-4o-2024-08-06',
+          // model: 'gpt-4o-mini',
           model: 'qwen-plus',
           temperature: 0,
           max_tokens: 4096,

+ 2 - 2
src/components/pages/aiAddCourse/aiBoxRight.vue

@@ -844,7 +844,7 @@ ${message}`;
               session_name: `${this.courseId}-addCourseA`,
               uid: _uid,
               file_ids: [],
-              // model: "gpt-4o-2024-08-06"
+              // model: "gpt-4o-mini"
               model: "qwen-plus"
             };
 
@@ -921,7 +921,7 @@ ${i.content}`
           });
           let params = JSON.stringify({
             // model: "gpt-3.5-turbo",
-            // model: "gpt-4o-2024-08-06",
+            // model: "gpt-4o-mini",
             model: "qwen-plus",
             temperature: 0,
             max_tokens: 4096,

+ 2 - 2
src/components/pages/aiAddCourse/aiCreateDialog copy.vue

@@ -981,7 +981,7 @@ ${_this.outline.replaceAll('#', '').replaceAll('*', '').replaceAll('-', '').repl
                 session_name: uuidv4(),
                 userId: this.userid,
                 file_ids: fileid.length ? [...fileid] : "",
-                model: 'gpt-4o-2024-08-06',
+                model: 'gpt-4o-mini',
             };
             _this.loading = true;
             this.ajax
@@ -1114,7 +1114,7 @@ ${mclass.length ? "面向年级:" + mclass.join(",") : ""}
                 userId: _this.userid,
                 uid: _uid,
                 file_ids: fileid.length ? [...fileid] : "",
-                model: 'gpt-4o-2024-08-06',
+                model: 'gpt-4o-mini',
             };
             _this.loading = true;
             _this.tloading = true;

+ 2 - 2
src/components/pages/aiAddCourse/aiCreateDialog.vue

@@ -1005,7 +1005,7 @@ ${_this.outline.replaceAll('#', '').replaceAll('*', '').replaceAll('-', '').repl
                 session_name: uuidv4(),
                 userId: this.userid,
                 file_ids: fileid.length ? [...fileid] : "",
-                model: 'gpt-4o-2024-08-06',
+                model: 'gpt-4o-mini',
             };
             _this.loading = true;
             this.ajax
@@ -1138,7 +1138,7 @@ ${mclass.length ? "面向年级:" + mclass.join(",") : ""}
                 userId: _this.userid,
                 uid: _uid,
                 file_ids: fileid.length ? [...fileid] : "",
-                model: 'gpt-4o-2024-08-06',
+                model: 'gpt-4o-mini',
             };
             _this.loading = true;
             _this.tloading = true;

+ 2 - 2
src/components/pages/aiAddCourse/aiCreateVideoDialog copy.vue

@@ -246,7 +246,7 @@ export default {
                 session_name: uuidv4(),
                 userId: _this.userid,
                 file_ids: [],
-                model: 'gpt-4o-2024-08-06',
+                model: 'gpt-4o-mini',
             }
             _this.ajax
                 .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
@@ -294,7 +294,7 @@ export default {
 [{aid:""},{aid:""}]
 `
             let parm = {
-              model: 'gpt-4o-2024-08-06',
+              model: 'gpt-4o-mini',
               temperature: 0,
               max_tokens: 4096,
               top_p: 1,

+ 2 - 2
src/components/pages/aiAddCourse/aiCreateVideoDialogHK.vue

@@ -256,7 +256,7 @@ export default {
                 session_name: uuidv4(),
                 userId: _this.userid,
                 file_ids: [],
-                model: 'gpt-4o-2024-08-06',
+                model: 'gpt-4o-mini',
             }
             _this.ajax
                 .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
@@ -311,7 +311,7 @@ export default {
 [{id:""},{id:""}]
 `
             let parm = {
-              model: 'gpt-4o-2024-08-06',
+              model: 'gpt-4o-mini',
               temperature: 0,
               max_tokens: 4096,
               top_p: 1,

+ 25 - 16
src/components/pages/aiAddCourse/evaList.vue

@@ -204,6 +204,10 @@ export default {
             return lang
         },
         openAiDialog(type, index) {
+            if(this.loading){
+                this.$message.error(`生成中,请等待生成完毕后再继续`)
+                return
+            }
             if (type == 'elist') {
                 this.aiElist();
                 if(type == 1){
@@ -242,20 +246,24 @@ Language: ${this.getLang()}
 【电子白板】用于个性化表达、自主设计类创意活动,系统支持概念图库,主要用于绘制概念图、梳理关键词/事件/问题之间的关系;或支持学生自由绘制一些方案设计图。
 【作业提交】支持各类文件格式的上传与显示,如png等图片格式、pptx、docx、txt、md等。
 【选择题】用于教师检查学生对知识的掌握和理解,参考指标为题目的正确率。
-【排序】通过设置卡片内容及正确顺序,用于教师使用排序类题目检查学生对知识的掌握和理解,参考指标为题目的正确率。
+【排序】通过设置卡片内容及正确顺序,用于教师使用排序类题目检查学生对知识的掌握和理解,参考指标为题目的正确率。
 【选择匹配】通过上传题目图片与设置正确回答,用于教师使用选择匹配(连线)检查学生对知识的掌握和理解,参考指标为题目的正确率。
+选择题、排序、选择匹配工具是客观题,学生答题后会产生正确率。
+
+上传的文件中包含了若干个学科的国家课程标准。你要学习文件中特定章节的内容:高中(高一至高三)课程标准中的“学科核心素养与课程目标”章节,义务教育阶段(一年级至九年级)课程标准中的“课程目标”章节。这些章节详细阐述了该学科的“核心素养”和“目标”。“学科核心素养”指学生应具备的,能够适应终身发展和社会发展需要的必备品格和关键能力。“目标”指课程本身要实现的具体目标和意图。它规定了某一教育阶段的学生通过课程学习以后,在发展品德、智力、体质等方面期望实现的程度,它是确定课程内容、教学目标和教学方法的基础。注意:每个学科的“核心素养”有专业用词,一般会作为文件中的小标题出现,不能随意编写,不能随意生成。举例:义务教育阶段语文学科的核心素养为“文化自信”“语言运用”“思维能力”“审美创造”;义务教育阶段数学学科的核心素养为“会用数学的眼光观察现实世界”“会用数学的思维思考现实世界”“会用数学的语言表达现实世界”。
 
-你要学习上传的文件。你只需要学习文件中“课程目标”一级标题下的内容,其中包含了该学科的“核心素养”和“目标”。“学科核心素养”指学生应具备的,能够适应终身发展和社会发展需要的必备品格和关键能力。“目标”指课程本身要实现的具体目标和意图。它规定了某一教育阶段的学生通过课程学习以后,在发展品德、智力、体质等方面期望实现的程度,它是确定课程内容、教学目标和教学方法的基础。
-当选择多个学科时,上传的文件中会有《跨学科素养参考资料》,跨学科素养能力指具有跨文化一致性的、能够跨越一系列情境长期存在和发挥作用的、个体用于应对和解决日常工作和生活中遇到的各种复杂挑战和需求的能力;例如“个人社会责任”“任务规划”“自我管理”“承担风险”等。
-你要理解学科核心素养和学科目标之间的关系。你生成的评价标准可以被理解为课程目标
+当选择多个学科时,上传的文件中会有《跨学科素养(参考)》,跨学科素养能力指具有跨文化一致性的、能够跨越一系列情境长期存在和发挥作用的、个体用于应对和解决日常工作和生活中遇到的各种复杂挑战和需求的能力。例如“合作能力”“认知能力”“创新能力”等
+
+你要理解学科核心素养和学科目标之间的关系。你生成的评价标准可以被当作课程目标,评价标准要与学科的核心素养或者跨学科素养匹配
 
 #目标#
-你需要完成以下五个步骤:
-1.你要结合<任务描述:${taskDetail}><工具名称:${tool}>和<工具描述:${toolDetail}>生成适合当前作业的评价标准。评价标准用于评估学生的能力。
-2.你要严格检索和匹配上传文件的核心素养和课程目标内容。你要先将评价标准对应到课程目标中,然后检索上传的文件中的“核心素养”与评价标准进行匹配。所有的核心素养信息必须以上传文件的内容为依据,不可以使用其他的默认信息或者模版!每个评价标准必须与文件中明确的核心素养对应。避免使用文件中未出现的任何术语,不允许输出范例内容!。
-3.只有当上传的文件包含多个学科的课程标准时,允许你检索《跨学科素养参考资料》。你需要先检索学科的课程标准,如果你判断当前的评价标准无法对应具体学科的核心素养,可以检索《跨学科素养参考资料》,找到最合适的并输出。
-4.你要根据第一步生成的评价标准制定每一条标准的六级评价细则,这个评价细则将用于对学生能力的打分。
-5.只输出json格式的内容,其他的不要输出!不要输出范例内容!
+你需要完成以下六个步骤:
+1.检索并学习上传文件的指定章节(高中(高一至高三)课程标准中的“学科核心素养与课程目标”章节,义务教育阶段(一年级至九年级)课程标准中的“课程目标”章节,《跨学科素养(参考)》文件),提取学科的核心素养并学习学科目标。
+2.你要参考第一步学习的学科目标,结合<任务描述:${taskDetail}><工具名称:${tool}>和<工具描述:${toolDetail}>生成适合当前作业的评价标准。评价标准用于评估学生的能力。
+3.你要精准地将评价标准匹配上传文件的核心素养和课程目标内容。第二步的评价标准是根据课程目标生成的,你要将这些评价标准与第一步提取的学科核心素养一一匹配。注意:所有的核心素养信息必须以上传文件的内容为依据,不可以使用其他的默认信息或者模版!避免使用上传文件中未出现的素养。
+4.只有当上传的文件包含《跨学科素养(参考)》时,执行该步骤。如果生成的评价标准难以与具体某个学科(如“语文”“英语”“劳动”)的国家课程标准匹配时,你可以将评价标准匹配该文件中提到的跨学科素养,如“合作能力”“认知能力”“创新能力”等。
+5.你要根据第一步生成的评价标准制定每一条标准的六级评价细则,这个评价细则将用于对学生能力的打分。
+6.你要将第2步到第5步生成的内容整理成json格式,参考json格式范例。
 
 #风格#
 专业的教育教学用语,简练易懂,逻辑性强。
@@ -267,16 +275,17 @@ Language: ${this.getLang()}
 教师
 
 #输出要求#
-1.评价标准的个数为3个,最多不能超过5个。每一个评价标准不能超过30字。生成的评价标准只能和当前的工具描述相关。选择题、排序、选择匹配工具只生成1个评价标准。输出内容和格式要求参考#评价标准范例#。注意!输出内容不能复制范例内容。注意!不要出现#评价标准错误范例#中的情况。
-2.每1个评价标准只对应1个关联度最高的核心素养。学科核心素养输出参考#核心素养输出范例#。注意!1个评价标准不能对应多个核心素养。不允许出现上传文件中没有的核心素养。严格按照上传文件中检索到的核心素养输出。每个评价标准必须与文件中明确的核心素养对应。避免使用文件中未出现的任何术语。不要出现#核心素养错误范例#中的情况,不允许输出范例内容!。
-3.具体的评价细则分为6级——0星,1星,2星,3星,4星,5星。输出格式参考#评价细则范例#。
-4.参考#json格式范例#,将内容整理成json格式。**之间的内容为json格式中的代码。以*[*开头,以*]*结尾。每一条评价标准、核心素养以及评价细则以*{*开头,以*}*结尾。核心素养前有*"core":*。评价标准前有*"std":*。评价细则前有*"rule":*。具体内容放在""之间。格式如下:
+1.评价标准的个数为3个。每一个评价标准不能超过30字。生成的评价标准要适用于当前工具,要适合教师用线上平台对学生作业进行评估打分。输出内容和格式要求参考#评价标准范例#。注意!输出内容不能复制范例内容。注意!不要出现#评价标准错误范例#中的情况。
+2.选择题、排序、选择匹配等客观题工具只生成1个评价标准,评价细则要说明学生答题正确率分别对应哪个等级。
+3.每1个评价标准只对应1个关联度最高的核心素养。学科核心素养输出参考#核心素养输出范例#。注意!1个评价标准不能对应多个核心素养。不允许出现上传文件中没有的核心素养。严格按照上传文件中检索到的核心素养输出。每个评价标准必须与文件中明确的核心素养对应。避免使用文件中未出现的任何术语。不要出现#核心素养错误范例#中的情况。
+4.具体的评价细则分为6级——0星,1星,2星,3星,4星,5星。输出格式参考#评价细则范例#。
+5.参考#json格式范例#,将内容整理成json格式。**之间的内容为json格式中的代码。以*[*开头,以*]*结尾。每一条评价标准、核心素养以及评价细则以*{*开头,以*}*结尾。核心素养前有*"core":*。评价标准前有*"std":*。评价细则前有*"rule":*。具体内容放在""之间。格式如下:
 [
     {"std":"评价标准","core":"核心素养(识别上传文件对应的学科)","rule":"评价细则"},
     {"std":"评价标准","core":"核心素养(识别上传文件对应的学科)","rule":"评价细则"},
     {"std":"评价标准","core":"核心素养(识别上传文件对应的学科)","rule":"评价细则"},
 ]
-5.只输出json格式的内容,其他的不要输出!不要输出范例内容!
+5.只输出json格式的内容,其他的不要输出
 
 #评价标准范例#
 学生能够准确描述红树林生态功能及动植物之间的关系。 
@@ -440,7 +449,7 @@ ${this.aiJson['aiRateRule']}
                 session_name: uuidv4(),
                 userId: this.userid,
                 file_ids: [],
-                model: 'gpt-4o-2024-08-06',
+                model: 'gpt-4o-mini',
                 temperature: this.mode == 3 ? 0.5 : 0.1,
             }
             this.ajax

+ 20 - 2
src/components/pages/aiAddCourse/jsmind2.vue

@@ -131,6 +131,7 @@ export default {
         setTimeout(() => {
           if (this.jm) {
             this.jm.show(this.mind);
+            this.resizeJm()
           } else {
             this.open_empty();
           }
@@ -179,12 +180,27 @@ export default {
         setTimeout(() => {
           if (this.jm) {
             this.jm.show(this.mind);
+            this.resizeJm()
           } else {
             this.open_empty();
           }
+
         }, 1000);
       }
     },
+    resizeJm(){
+      // let elements = document.getElementsByClassName("jsmind-inner")[0];
+      let elements2 = document.getElementsByClassName("jsmind_layout")[0];
+      
+      let sw = (elements2.offsetWidth / this.jm.view.size.w).toFixed(2)
+
+      elements2.style.height = `${this.jm.view.size.h * sw}px`
+      // elements.style.width = `${this.jm.view.size.w * sw}px`
+      console.log(sw)
+      this.jm.view.minZoom = sw; // 
+      this.jm.view.setZoom(this.jm.view.minZoom); // 应用最小缩放级别
+      this.jm.view.show(); // 重绘思维导图以应用缩放变化
+    },
     setMindData(json) {
       let data = {
         meta: {
@@ -305,6 +321,7 @@ export default {
       this.$forceUpdate();
       setTimeout(()=>{
         this.jm.show(this.mind);
+        this.resizeJm()
       },1000)
     },
     // 获取层级数 i
@@ -506,8 +523,8 @@ export default {
   display: flex;
   flex-direction: column;
   /* width: 700px; */
-  height: calc(100%);
-  /* height: 500px; */
+  /* height: calc(100%); */
+  height: 500px;
   /* margin: 15px 5px 0 0; */
   /* background: #fff; */
   overflow: hidden;
@@ -562,6 +579,7 @@ export default {
 .jsmind_layout .jsmind_container {
   /* flex: 1 1 auto; */
   height: 100%;
+  /* height: 500px; */
 }
 
 .jsmind_layout>>>.jsmind-inner {

+ 1 - 1
src/components/pages/classroomObservation/components/analysisItem.vue

@@ -407,7 +407,7 @@ export default {
           session_name: uuidv4(),
           userId: this.userId,
           file_ids: this.fileId ? [this.fileId] : "",
-          model: "gpt-4o-2024-08-06"
+          model: "gpt-4o-mini"
         };
 
         // 👇

+ 2 - 2
src/components/pages/classroomObservation/components/analysisSpecialItem.vue

@@ -788,7 +788,7 @@ CH:${_CH}
         session_name: uuidv4(),
         userId: this.userId,
         file_ids: "",
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
 
       this.ajax
@@ -1020,7 +1020,7 @@ CH:${_CH}
           session_name: uuidv4(),
           userId: this.userId,
           file_ids: this.fileId ? [this.fileId] : "",
-          model: "gpt-4o-2024-08-06"
+          model: "gpt-4o-mini"
         };
 
         // 👇

+ 1 - 1
src/components/pages/classroomObservation/components/baseMessage.vue

@@ -661,7 +661,7 @@ ${this.data.editorBarData?this.data.editorBarData.content:""}
 					uid: _uuid,
 					mind_map_question: "",
 					stream: false,
-					model: "gpt-4o-2024-08-06",
+					model: "gpt-4o-mini",
 				};
 				this.ajax
 					.post("https://gpt4.cocorobo.cn/chat", params)

+ 3 - 3
src/components/pages/classroomObservation/components/chatArea.vue

@@ -964,7 +964,7 @@ export default {
             session_name: `${this.tid}-classroomObservation`,
             uid: _uid,
             file_ids: this.fileId ? [this.fileId] : [],
-            model: "gpt-4o-2024-08-06"
+            model: "gpt-4o-mini"
           };
           this.ajax
             .post("https://gpt4.cocorobo.cn/ai_agent_park_chat_new", params)
@@ -1013,7 +1013,7 @@ export default {
         // })
         _historyMessage.push({ role: "user", content: _text });
         let params = JSON.stringify({
-          model: "gpt-4o-2024-08-06",
+          model: "gpt-4o-mini",
           temperature: 0,
           max_tokens: 4096,
           top_p: 1,
@@ -1400,7 +1400,7 @@ ${JSON.stringify(_list)}
           session_name: _uuid,
           // uid: _uuid,
           file_ids: [],
-          model: "gpt-4o-2024-08-06"
+          model: "gpt-4o-mini"
         };
 
         this.ajax

+ 4 - 4
src/components/pages/components/exportDataDialog.vue

@@ -271,8 +271,8 @@ import "jsmind/style/jsmind.css";
 import jsMind from "jsmind/js/jsmind.js";
 window.jsMind = jsMind;
 
-require("jsmind/js/jsmind.draggable.js");
-require("jsmind/js/jsmind.screenshot.js");
+// require("jsmind/js/jsmind.draggable.js");
+// require("jsmind/js/jsmind.screenshot.js");
 export default {
   props: [
     "multipleSelection",
@@ -802,7 +802,7 @@ export default {
         session_name: uuidv4(),
         userId: this.userid,
         file_ids: "",
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
       return new Promise((resolve, reject) => {
         this.ajax
@@ -1036,7 +1036,7 @@ export default {
         session_name: uuidv4(),
         userId: this.userid,
         file_ids: "",
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
       this.ajax
         .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", params)

+ 1 - 1
src/components/pages/pocAi/index.vue

@@ -356,7 +356,7 @@ export default {
         session_name: `${_uuid}-pocAi-md`,
         uid: _uuid,
         file_ids: this.fileList[this.showFileIndex]?[this.fileList[this.showFileIndex].fileId]:[],
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
 
 			this.ajax

+ 1 - 1
src/components/pages/pocAiClassroom/chatArea.vue

@@ -632,7 +632,7 @@ export default {
         session_name: `${_uuid}-pocAi-md`,
         uid: _uuid,
         file_ids: [],
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
 
       this.ajax

+ 1 - 1
src/components/pages/pocAiClassroom/doTask.vue

@@ -1489,7 +1489,7 @@ ${taskMsg}
           session_name: uuidv4(),
           // uid: _uuid,
           file_ids: [],
-          model: 'gpt-4o-2024-08-06'
+          model: 'gpt-4o-mini'
         }
 
         this.ajax.post("https://gpt4.cocorobo.cn/ai_agent_park_chat", params).then(res => {

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

@@ -294,7 +294,7 @@ Instruction: Based on the context, follow "Format example", write content
           session_name: uuidv4(),
           userId: this.userId,
           file_ids: [fileId],
-          model: "gpt-4o-2024-08-06"
+          model: "gpt-4o-mini"
         };
         this.ajax
           // .post("https://gpt4.cocorobo.cn/chat", params)

+ 3 - 3
src/components/pages/test/check/aiBoxRight.vue

@@ -798,7 +798,7 @@ export default {
               session_name: `${this.courseId}-${this.userid}-test`,
               uid: _uid,
               file_ids: this.fileId ? this.fileId : [],
-              // model: "gpt-4o-2024-08-06"
+              // model: "gpt-4o-mini"
               model: "qwen-plus"
             };
 
@@ -862,7 +862,7 @@ export default {
           // });
           // let params = JSON.stringify({
           //   // model: "gpt-3.5-turbo",
-          //   // model: "gpt-4o-2024-08-06",
+          //   // model: "gpt-4o-mini",
           //   model: "qwen-plus",
           //   temperature: 0,
           //   max_tokens: 4096,
@@ -897,7 +897,7 @@ export default {
             session_name: `${this.courseId}-${this.userid}-test`,
             uid: _uuid,
             file_ids: this.fileId ? this.fileId : [],
-            model: "gpt-4o-2024-08-06"
+            model: "gpt-4o-mini"
           };
           this.$nextTick(() => {
             this.$refs.chatDialog.scrollTop = this.$refs.chatDialog.scrollHeight;

+ 1 - 2
src/components/tools/jsmind.vue

@@ -4,8 +4,7 @@
     <div class="noMind" v-if="mindV">
       <img src="../../assets/nominddata.png" alt />
     </div>
-    <el-button @click="zoomIn" size="medium" :disabled="isZoomIn">放大</el-button>
-      <el-button @click="zoomOut" size="medium" :disabled="isZoomOut" class="pad">缩小</el-button>
+
     <!-- <div class="jsmind_toolbar" v-if="showBar">
       <el-upload
         class="pad"

+ 2 - 2
src/components/tools/jsmind2.vue

@@ -378,8 +378,8 @@ export default {
   display: flex;
   flex-direction: column;
   /* width: 700px; */
-  height: calc(100%);
-  /* height: 500px; */
+  /* height: calc(100%); */
+  height: 500px;
   /* margin: 15px 5px 0 0; */
   background: #fff;
   overflow: hidden;

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