Sfoglia il codice sorgente

Merge branch 'beta' of https://git.cocorobo.cn/CocoRoboLabs/pbl-teacher-table into beta

SanHQin 7 mesi fa
parent
commit
155ed6f762

+ 1 - 1
dist/index.html

@@ -32,7 +32,7 @@
       width: 100%;
       background: #e6eaf0;
       font-family: '黑体';
-    }</style><link href=./static/css/app.433863ab3c18a76b5c517d53d6b1e9df.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.35dfb1d95a63059f336f.js></script><script type=text/javascript src=./static/js/app.c947dbf06879bd3aaaca.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.f96475d6b90b7bcf401e65f2267d50b8.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.99ecd68f0ea1b548f2f6.js></script><script type=text/javascript src=./static/js/app.cff08c147350b8d00ab5.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.f96475d6b90b7bcf401e65f2267d50b8.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.f96475d6b90b7bcf401e65f2267d50b8.css.map


BIN
dist/static/img/bg1.e5fea9e.png


BIN
dist/static/img/character1.992e755.png


BIN
dist/static/img/character2.70b6c42.png


BIN
dist/static/img/character3.0756447.png


BIN
dist/static/img/character4.77b292f.png


BIN
dist/static/img/character5.2222e2e.png


BIN
dist/static/img/character6.530bea0.png


BIN
dist/static/img/classImage.70b0985.png


BIN
dist/static/img/defaultAvatar.762b260.png


BIN
dist/static/img/hello.68de2a9.gif


BIN
dist/static/img/taskSuccess.e03beb8.png


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.cff08c147350b8d00ab5.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.cff08c147350b8d00ab5.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/manifest.571c38d63f24b1ae9e16.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/vendor.99ecd68f0ea1b548f2f6.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/vendor.99ecd68f0ea1b548f2f6.js.map


BIN
src/assets/icon/new/u_op2.png


+ 306 - 110
src/components/pages/aiAddCourse/addCourse.vue

@@ -1991,7 +1991,7 @@
                 <!-- <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="basic_box" ref="unitBox">
+                <div class="basic_box" ref="unitBox" @scroll="taskScroll">
                   <div v-if="false" style="
                       display: flex;
                       flex-direction: row;
@@ -5055,14 +5055,15 @@
                                     <!-- <span>核心素养:</span> -->
                                     <input type="input" v-model="itemTask.eList[eIndex].target" placeholder="填写目标"  style="width: calc(100% - 280px);"/>
                                     <el-switch
+                                      @change="forceUpdate"
                                       class="rateSwitch"
                                       style="margin-left: auto;"
                                       v-model="itemTask.eList[eIndex].isai"
                                       active-color="#0061FF"
-                                      active-text="人工评分"
-                                      inactive-text="AI评分"
-                                      active-value="2"
-                                      inactive-value="1">
+                                      active-text="AI评分"
+                                      inactive-text=""
+                                      active-value="1"
+                                      inactive-value="2">
                                     </el-switch>
                                   </div>
                                   <div class="elist_inptu_text" v-show="false">
@@ -7347,6 +7348,7 @@ export default {
       isTeacherTextCancelSource: null,
       isTargetCancelSource1: null,
       isTargetCancelSource2: null,
+      fileidArray: []
     };
   },
   directives: {
@@ -8108,6 +8110,9 @@ export default {
       this.$refs.stepBox.scrollTop = 0;
     },
     nextSteps(clickType, ttype) {
+      if(!this.time()){
+        return
+      }
       // if (this.cidType == 1) {
       if (this.steps == 1) {
         if (this.courseName != "") {
@@ -8501,7 +8506,7 @@ export default {
         return true;
       } else {
         let time = new Date().getTime();
-        if (time - this.now > 3000) {
+        if (time - this.now > 1000) {
           this.now = time;
           return true;
         } else {
@@ -14520,9 +14525,10 @@ export default {
           value: "",
           detail: "",
           score: 5,
+          isai: "1",
         })
         : (this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList = [
-          { value: "", detail: "", score: 5 },
+          { value: "", detail: "", score: 5,isai: "1", },
         ]);
       this.$forceUpdate();
     },
@@ -14605,6 +14611,10 @@ export default {
         });
     },
     updateEvaJson(array) {
+      array = array.filter((item) => {
+        item.isai = "1"
+        return item;
+      });
       this.unitJson[this.evaIndex].chapterInfo[0].taskJson[
         this.evatIndex
       ].eList = array;
@@ -14834,6 +14844,19 @@ export default {
       // }
       this.$forceUpdate();
     },
+    taskScroll(){
+      // document.querySelectorAll(".taskBorder")[i].offsetTop - 100
+      const sections = document.querySelectorAll('.taskBorder');
+      const scrollPosition = document.querySelector('.basic_box').scrollTop;
+
+      sections.forEach((section, index) => {
+        const offsetTop = section.offsetTop;
+        const offsetHeight = section.offsetHeight;
+        if (scrollPosition >= (offsetTop -100) && scrollPosition < (offsetTop -100) + offsetHeight) {
+          this.isClickColor = index +1;
+        }
+      });
+    },
     taskOpen(i, stageIndex) {
       if (this.unitJson[stageIndex].chapterInfo[0].taskJson[i].toolOpen) {
         this.unitJson[stageIndex].chapterInfo[0].taskJson[i].toolOpen = false;
@@ -16900,14 +16923,26 @@ ${this.courseText && this.aiCallBack == 2 ? '注意,优化原有的<参考内
         _this.textLoading = false
         _this.ttextLoading = false
         _this.isTextCancelToken = null
+        if(error && error.message != 'Request canceled by the user.'){
+          _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        }
         console.log(error);
       });
       await _this.aiGetgetAiContent(_uuid)
     },
     aiGetgetAiContent(_uid) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      this.isTextCancelSource = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      try {
+        // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        this.isTextCancelSource = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/ 
+      } catch(error){
+        console.log('EventSource error:', error);
+        this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        this.textLoading = false
+        this.ttextLoading = false
+        this.isTextCancelToken = null
+        return;
+      }
       let _allText = "";
       let _mdText = "";
       let _iindex = 0
@@ -16915,7 +16950,7 @@ ${this.courseText && this.aiCallBack == 2 ? '注意,优化原有的<参考内
         let _eData = JSON.parse(_e.data).content;
         if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
           //对话已经完成
-          _mdText = _mdText.replace("_", "");
+          _mdText = _mdText.replace("_", "").replace(/【[^】]*source[^】]*】/g, '').replaceAll("<br>", "");
           this.isTextCancelSource.close();
           this.isTextCancelSource = null;
           this.courseText = _mdText;
@@ -16952,7 +16987,7 @@ ${this.courseText && this.aiCallBack == 2 ? '注意,优化原有的<参考内
       this.isTextCancelSource.onerror = function(event) {
         // 处理错误,可以尝试重新连接
         console.log('EventSource error:', event);
-        _this.$message.error("网络错误")
+        _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
         _this.textLoading = false
         _this.ttextLoading = false
         _this.isTextCancelToken = null
@@ -18078,6 +18113,10 @@ ${this.courseText && this.aiCallBack == 2 ? '注意,优化原有的<参考内
             for (var i = 0; i < tArray.length; i++) {
               let _task = tArray[i]
               _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail = _task.detail
+              _task.elist = _task.elist.filter(el=>{
+                el.isai = "1"
+                return el
+              })
               _this.unitJson[0].chapterInfo[0].taskJson[i].eList = _task.elist
               _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose = []
               if (_task.toolChoose.length) {
@@ -18342,6 +18381,10 @@ ${this.courseText && this.aiCallBack == 2 ? '注意,优化原有的<参考内
             // for (var i = 0; i < tArray.length; i++) {
               let _task = tArray
               _this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail = _task.detail
+              _task.elist = _task.elist.filter(el=>{
+                el.isai = 1
+                return el
+              })
               _this.unitJson[0].chapterInfo[0].taskJson[index].eList = _task.elist
               _this.unitJson[0].chapterInfo[0].taskJson[index].chapterData = []
               if(!_task.toolChoose || (_task.detail && _task.detail.length < 20) || !_task.detail){
@@ -18681,6 +18724,10 @@ ${this.courseText && this.aiCallBack == 2 ? '注意,优化原有的<参考内
               _this.aiGet322(messages, index)
               return;
             }
+            _task.elist = _task.elist.filter(el=>{
+              el.isai = "1"
+              return el
+            })
             _this.unitJson[0].chapterInfo[0].taskJson[index].eList = _task.elist
             // _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
             _this.$forceUpdate();
@@ -19473,14 +19520,27 @@ ${msg}
         _this.taskDetailLoading.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
         _this.ttaskDetailLoading.splice(_this.ttaskDetailLoading.indexOf(_tindex), 1)
         _this.isOutlineTaskCancelToken[index] = null
+        if(error && error.message != 'Request canceled by the user.'){
+          _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        }
         console.log(error);
       });
       await _this.aiDetailgetAiContent(_uuid, _tindex, _tindex2)
     },
     aiDetailgetAiContent(_uid, loading, _tindex2) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      this.isOutlineTaskCancelSource[_tindex2] = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      try {
+        // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        this.isOutlineTaskCancelSource[_tindex2] = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      } catch(error){
+        console.log('EventSource error:', error);
+        this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        this.taskDetailLoading.splice(this.taskDetailLoading.indexOf(loading), 1)
+        this.ttaskDetailLoading.splice(this.ttaskDetailLoading.indexOf(loading), 1)
+        this.isOutlineTaskCancelToken[_tindex2] = null
+        return;
+      }
+      
       let _allText = "";
       let _mdText = "";
       let _iindex = 0
@@ -19488,7 +19548,7 @@ ${msg}
         let _eData = JSON.parse(_e.data).content;
         if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
           //对话已经完成
-          _mdText = _mdText.replace("_", "");
+          _mdText = _mdText.replace("_", "").replace(/【[^】]*source[^】]*】/g, '').replaceAll("<br>", "");
           this.isOutlineTaskCancelSource[_tindex2].close();
           this.isOutlineTaskCancelSource[_tindex2] = null;
           this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 = _mdText;
@@ -19525,7 +19585,7 @@ ${msg}
       this.isOutlineTaskCancelSource[_tindex2].onerror = function(event) {
         // 处理错误,可以尝试重新连接
         console.log('EventSource error:', event);
-        _this.$message.error("网络错误")
+        _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
         _this.taskDetailLoading.splice(this.taskDetailLoading.indexOf(loading), 1)
         _this.ttaskDetailLoading.splice(this.ttaskDetailLoading.indexOf(loading), 1)
         _this.isOutlineTaskCancelToken[_tindex2] = null
@@ -19659,6 +19719,9 @@ ${target ? '课程目标:' + target.replaceAll('#','').replaceAll('*','').repl
         _this.taskDetailLoading.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
         _this.ttaskDetailLoading.splice(_this.ttaskDetailLoading.indexOf(_tindex), 1)
         _this.isOutlineTaskCancelToken[index] = null
+        if(error && error.message != 'Request canceled by the user.'){
+          _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        }
         console.log(error);
       });
       await _this.aiOutlineDetailgetAiContent(_uuid, _tindex, _tindex2)
@@ -19797,14 +19860,27 @@ ${taskArray.length ? '其他任务大纲内容' + taskArray.join(',') : ''}
         _this.taskDetailLoading.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
         _this.ttaskDetailLoading.splice(_this.ttaskDetailLoading.indexOf(_tindex), 1)
         _this.isOutlineTaskCancelToken[index] = null
+        if(error && error.message != 'Request canceled by the user.'){
+          _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        }
         console.log(error);
       });
       await _this.aiOutlineDetailgetAiContent(_uuid, _tindex, _tindex2)
     },
     aiOutlineDetailgetAiContent(_uid, loading, _tindex2) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      this.isOutlineTaskCancelSource[_tindex2] = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      try {
+        // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        this.isOutlineTaskCancelSource[_tindex2] = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      } catch(error) {
+        console.log('EventSource error:', error);
+        this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        this.taskDetailLoading.splice(this.taskDetailLoading.indexOf(loading), 1)
+        this.ttaskDetailLoading.splice(this.ttaskDetailLoading.indexOf(loading), 1)
+        this.isOutlineTaskCancelToken[_tindex2] = null
+        return;
+      }
+      
       let _allText = "";
       let _mdText = "";
       let _iindex = 0
@@ -19812,7 +19888,7 @@ ${taskArray.length ? '其他任务大纲内容' + taskArray.join(',') : ''}
         let _eData = JSON.parse(_e.data).content;
         if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
           //对话已经完成
-          _mdText = _mdText.replace("_", "");
+          _mdText = _mdText.replace("_", "").replace(/【[^】]*source[^】]*】/g, '').replaceAll("<br>", "");
           this.isOutlineTaskCancelSource[_tindex2].close();
           this.isOutlineTaskCancelSource[_tindex2] = null;
           this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 = _mdText;
@@ -19854,7 +19930,7 @@ ${taskArray.length ? '其他任务大纲内容' + taskArray.join(',') : ''}
       this.isOutlineTaskCancelSource[_tindex2].onerror = function(event) {
         // 处理错误,可以尝试重新连接
         console.log('EventSource error:', event);
-        _this.$message.error("网络错误")
+        _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
         _this.taskDetailLoading.splice(this.taskDetailLoading.indexOf(loading), 1)
         _this.ttaskDetailLoading.splice(this.ttaskDetailLoading.indexOf(loading), 1)
         _this.isOutlineTaskCancelToken[_tindex2] = null
@@ -19964,14 +20040,27 @@ ${_this.aiCallBack.taskDetail}
       }).catch(function (error) {
         _this.taskDetailLoading2.splice(_this.taskDetailLoading2.indexOf(_tindex), 1)
         _this.ttaskDetailLoading2.splice(_this.ttaskDetailLoading2.indexOf(_tindex), 1)
+        if(error && error.message != 'Request canceled by the user.'){
+          _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        }
         console.log(error);
       });
       await _this.aiDetail2getAiContent(_uuid, _tindex, _tindex2)
     },
     aiDetail2getAiContent(_uid, loading, _tindex2) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      let _source;
+      try {
+        // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      } catch(error) {
+        console.log('EventSource error:', error);
+        this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        this.taskDetailLoading2.splice(this.taskDetailLoading2.indexOf(loading), 1)
+        this.ttaskDetailLoading2.splice(this.ttaskDetailLoading2.indexOf(loading), 1)
+        return;
+      }
+    
       let _allText = "";
       let _mdText = "";
       let _iindex = 0
@@ -19979,7 +20068,7 @@ ${_this.aiCallBack.taskDetail}
         let _eData = JSON.parse(_e.data).content;
         if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
           //对话已经完成
-          _mdText = _mdText.replace("_", "");
+          _mdText = _mdText.replace("_", "").replace(/【[^】]*source[^】]*】/g, '').replaceAll("<br>", "");
           _source.close();
           this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail = _mdText;
           this.taskDetailLoading2.splice(this.taskDetailLoading2.indexOf(loading), 1)
@@ -20013,7 +20102,7 @@ ${_this.aiCallBack.taskDetail}
       _source.onerror = function(event) {
         // 处理错误,可以尝试重新连接
         console.log('EventSource error:', event);
-        _this.$message.error("网络错误")
+        _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
         _this.taskDetailLoading2.splice(this.taskDetailLoading2.indexOf(loading), 1)
         _this.ttaskDetailLoading2.splice(this.ttaskDetailLoading2.indexOf(loading), 1)
         _source.close();
@@ -20122,14 +20211,27 @@ ${msg} 输出格式和内容要求参考#格式与要求
       }).catch(function (error) {
         _this.taskDetailLoading3.splice(_this.taskDetailLoading3.indexOf(_tindex), 1)
         _this.ttaskDetailLoading3.splice(_this.ttaskDetailLoading3.indexOf(_tindex), 1)
+        if(error && error.message != 'Request canceled by the user.'){
+          _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        }
         console.log(error);
       });
       await _this.aiDetail3getAiContent(_uuid, _tindex, _tindex2, _tindex3)
     },
     aiDetail3getAiContent(_uid, loading, _tindex2, _tindex3) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      let _source;
+      try {
+        // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      } catch(error) {
+        console.log('EventSource error:', event);
+        this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        this.taskDetailLoading3.splice(this.taskDetailLoading3.indexOf(loading), 1)
+        this.ttaskDetailLoading3.splice(this.ttaskDetailLoading3.indexOf(loading), 1)
+        return;
+      }
+      
       let _allText = "";
       let _mdText = "";
       let _iindex = 0
@@ -20137,7 +20239,7 @@ ${msg} 输出格式和内容要求参考#格式与要求
         let _eData = JSON.parse(_e.data).content;
         if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
           //对话已经完成
-          _mdText = _mdText.replace("_", "");
+          _mdText = _mdText.replace("_", "").replace(/【[^】]*source[^】]*】/g, '').replaceAll("<br>", "");
           _source.close();
           this.unitJson[0].chapterInfo[0].taskJson[_tindex2].toolChoose[_tindex3].toolDetail = _mdText;
           this.taskDetailLoading3.splice(this.taskDetailLoading3.indexOf(loading), 1)
@@ -20172,7 +20274,7 @@ ${msg} 输出格式和内容要求参考#格式与要求
       _source.onerror = function(event) {
         // 处理错误,可以尝试重新连接
         console.log('EventSource error:', event);
-        _this.$message.error("网络错误")
+        _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
         _this.taskDetailLoading3.splice(this.taskDetailLoading3.indexOf(loading), 1)
         _this.ttaskDetailLoading3.splice(this.ttaskDetailLoading3.indexOf(loading), 1)
         _source.close();
@@ -20322,7 +20424,12 @@ ${msg} 优化核心素养、目标、评价标准,输出格式和内容要求
               try {
                 let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
                 let match = data.message.match(regex);
-                _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList = JSON.parse(match[0]);
+                let elist = JSON.parse(match[0])
+                elist = elist.filter(el=>{
+                  el.isai = 1
+                  return el
+                })
+                _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList = elist;
 
                 // var message = data.message;
                 // var jsonStart = message.indexOf("```json") + 7; // `+ 7` 是为了跳过 ```json
@@ -20347,6 +20454,9 @@ ${msg} 优化核心素养、目标、评价标准,输出格式和内容要求
         _this.taskDetailLoading4.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
       }).catch(function (error) {
         _this.taskDetailLoading4.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
+        if(error && error.message != 'Request canceled by the user.'){
+          _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        }
         console.log(error);
       });
     },
@@ -20468,14 +20578,27 @@ ${_text2}`
       }).catch(function (error) {
         _this.taskDetailLoading5.splice(_this.taskDetailLoading5.indexOf(_tindex), 1)
         _this.ttaskDetailLoading5.splice(_this.ttaskDetailLoading5.indexOf(_tindex), 1)
+        if(error && error.message != 'Request canceled by the user.'){
+          _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        }
         console.log(error);
       });
       await _this.aiDetail5getAiContent(_uuid, _tindex, _tindex2)
     },
     aiDetail5getAiContent(_uid, loading, _tindex2) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      let _source;
+      try {
+        // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      } catch(error){
+        console.log('EventSource error:', error);
+        this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
+        this.ttaskDetailLoading5.splice(this.ttaskDetailLoading5.indexOf(loading), 1)
+        return;
+      }
+      
       let _allText = "";
       let _mdText = "";
       let _iindex = 0
@@ -20483,7 +20606,7 @@ ${_text2}`
         let _eData = JSON.parse(_e.data).content;
         if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
           //对话已经完成
-          _mdText = _mdText.replace("_", "");
+          _mdText = _mdText.replace("_", "").replace(/【[^】]*source[^】]*】/g, '').replaceAll("<br>", "");
           _source.close();
           this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 = _mdText;
           this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
@@ -20519,11 +20642,11 @@ ${_text2}`
       let _this = this
       _source.onerror = function(event) {
           // 处理错误,可以尝试重新连接
-          console.log('EventSource error:', event);
-          _this.$message.error("网络错误")
-          _this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
-          _this.ttaskDetailLoading5.splice(this.ttaskDetailLoading5.indexOf(loading), 1)
-          _source.close();
+        console.log('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) {
@@ -20646,14 +20769,27 @@ ${(_this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || _this.templatei
       }).catch(function (error) {
         _this.taskDetailLoading5.splice(_this.taskDetailLoading5.indexOf(_tindex), 1)
         _this.ttaskDetailLoading5.splice(_this.ttaskDetailLoading5.indexOf(_tindex), 1)
+        if(error && error.message != 'Request canceled by the user.'){
+          _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        }
         console.log(error);
       });
       await _this.aiDetail52getAiContent(_uuid, _tindex, _tindex2)
     },
     aiDetail52getAiContent(_uid, loading, _tindex2) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      let _source;
+      try {
+        // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      } catch(error) {
+        console.log('EventSource error:', error);
+        this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
+        this.ttaskDetailLoading5.splice(this.ttaskDetailLoading5.indexOf(loading), 1)
+        return;
+      }
+      
       let _allText = "";
       let _mdText = "";
       this.allTextArray[_tindex2] = ""
@@ -20663,7 +20799,7 @@ ${(_this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || _this.templatei
         let _eData = JSON.parse(_e.data).content;
         if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
           //对话已经完成
-          _mdText = _mdText.replace("_", "");
+          _mdText = _mdText.replace("_", "").replace(/【[^】]*source[^】]*】/g, '').replaceAll("<br>", "");
           _source.close();
           this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 = _mdText;
           this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
@@ -20699,7 +20835,7 @@ ${(_this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || _this.templatei
       _source.onerror = function(event) {
         // 处理错误,可以尝试重新连接
         console.log('EventSource error:', event);
-        _this.$message.error("网络错误")
+        _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
         _this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
         _this.ttaskDetailLoading5.splice(this.ttaskDetailLoading5.indexOf(loading), 1)
         _source.close();
@@ -20710,7 +20846,7 @@ ${(_this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || _this.templatei
       let _eData = JSON.parse(_e.data).content;
       if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
         //对话已经完成
-        this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 = this.allTextArray[_tindex2].replace("_", "");
+        this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 = this.allTextArray[_tindex2].replace("_", "").replace(/【[^】]*source[^】]*】/g, '').replaceAll("<br>", "");
         _source.close();
         this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
         this.ttaskDetailLoading5.splice(this.ttaskDetailLoading5.indexOf(loading), 1)
@@ -20860,14 +20996,27 @@ ${this.aitype == 'aiCpote4' ? '## 目标层\n'+this.cpote['cpote3'] : ''}`
         _this.cpoteLoading[_index] = false
         _this.cpotetLoading[_index] = false
         callback ? callback() : ''
+        if(error && error.message != 'Request canceled by the user.'){
+          _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        }
         console.log(error);
       });
       await _this.aiCpotegetAiContent(_uuid, _index, callback)
     },
     aiCpotegetAiContent(_uid, loading, callback) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      let _source;
+      try {
+        // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      } catch(error){
+        console.log('EventSource error:', error);
+        this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        this.cpoteLoading[loading] = false
+        this.cpotetLoading[loading] = false
+        return;
+      }
+      
       let _allText = "";
       let _mdText = "";
       let _iindex = 0
@@ -20875,7 +21024,7 @@ ${this.aitype == 'aiCpote4' ? '## 目标层\n'+this.cpote['cpote3'] : ''}`
         let _eData = JSON.parse(_e.data).content;
         if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
           //对话已经完成
-          _mdText = _mdText.replace("_", "");
+          _mdText = _mdText.replace("_", "").replace(/【[^】]*source[^】]*】/g, '').replaceAll("<br>", "");
           _source.close();
           this.cpote[loading] = _mdText;
           this.cpoteLoading[loading] = false
@@ -20911,7 +21060,7 @@ ${this.aitype == 'aiCpote4' ? '## 目标层\n'+this.cpote['cpote3'] : ''}`
       _source.onerror = function(event) {
         // 处理错误,可以尝试重新连接
         console.log('EventSource error:', event);
-        _this.$message.error("网络错误")
+        _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
         _this.cpoteLoading[loading] = false
         _this.cpotetLoading[loading] = false
         _source.close();
@@ -21040,14 +21189,27 @@ ${this.teacherCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参
         _this.teacherTextLoading = false
         _this.tteacherTextLoading = false
         _this.isTeacherTextCancelToken = null
+        if(error && error.message != 'Request canceled by the user.'){
+          _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        }
         console.log(error);
       });
       await _this.aiteacherTextDetailgetAiContent(_uuid)
     },
     aiteacherTextDetailgetAiContent(_uid) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      this.isTeacherTextCancelSource = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      try {
+        // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        this.isTeacherTextCancelSource = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      } catch(error) {
+        console.log('EventSource error:', event);
+        this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        this.teacherTextLoading = false
+        this.tteacherTextLoading = false
+        this.isTeacherTextCancelToken = null
+        return;
+      }
+      
       let _allText = "";
       let _mdText = "";
       let _iindex = 0
@@ -21055,7 +21217,7 @@ ${this.teacherCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参
         let _eData = JSON.parse(_e.data).content;
         if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
           //对话已经完成
-          _mdText = _mdText.replace("_", "");
+          _mdText = _mdText.replace("_", "").replace(/【[^】]*source[^】]*】/g, '').replaceAll("<br>", "");
           this.isTeacherTextCancelSource.close();
           this.isTeacherTextCancelSource = null;
           this.teacherCourseText = _mdText;
@@ -21096,7 +21258,7 @@ ${this.teacherCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参
       this.isTeacherTextCancelSource.onerror = function(event) {
         // 处理错误,可以尝试重新连接
         console.log('EventSource error:', event);
-        _this.$message.error("网络错误")
+        _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
         _this.teacherTextLoading = false
         _this.tteacherTextLoading = false
         _this.isTeacherTextCancelToken = null
@@ -21228,14 +21390,27 @@ ${this.targetCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参
         _this.targetTextLoading = false
         _this.ttargetTextLoading = false
         _this.isTargetCancelToken1 = null
+        if(error && error.message != 'Request canceled by the user.'){
+          _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        }
         console.log(error);
       });
       await _this.aitargetTextDetailgetAiContent(_uuid)
     },
     aitargetTextDetailgetAiContent(_uid) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      this.isTargetCancelSource1 = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      try {
+        // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        this.isTargetCancelSource1 = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      } catch (error) {
+        console.log('EventSource error:', error);
+        this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        this.targetTextLoading = false
+        this.ttargetTextLoading = false
+        this.isTargetCancelToken1 = null
+        return;
+      }
+      
       let _allText = "";
       let _mdText = "";
       let _iindex = 0
@@ -21243,7 +21418,7 @@ ${this.targetCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参
         let _eData = JSON.parse(_e.data).content;
         if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
           //对话已经完成
-          _mdText = _mdText.replace("_", "");
+          _mdText = _mdText.replace("_", "").replace(/【[^】]*source[^】]*】/g, '').replaceAll("<br>", "");
           this.isTargetCancelSource1.close();
           this.isTargetCancelSource1 = null;
           this.targetCourseText = _mdText;
@@ -21284,7 +21459,7 @@ ${this.targetCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参
       this.isTargetCancelSource1.onerror = function(event) {
         // 处理错误,可以尝试重新连接
         console.log('EventSource error:', event);
-        _this.$message.error("网络错误")
+        _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
         _this.targetTextLoading = false
         _this.ttargetTextLoading = false
         _this.isTargetCancelToken1 = null
@@ -21420,55 +21595,53 @@ ${this.targetCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参
         _this.targetTextLoading2 = false
         _this.ttargetTextLoading2 = false
         _this.isTargetCancelToken2 = null
+        if(error && error.message != 'Request canceled by the user.'){
+          _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        }
         console.log(error);
       });
       await _this.aitargetTextDetail2getAiContent(_uuid)
     },
     importFileid(sub){
-      // file-SNthYVubrHGg4HjFcp3FPkZq 英语
-      // file-QOKhi8i84T8eR6DYhb9TaTlG 科学核心素养
-      // file-nkAUyRCEMncICGuFBC1WXnM1 科学素养内涵
-      // file-aQmfmgrwdrHa9sCTTZkjvK7Z 语文
-      // file-G1bRfSFnQaQtzA3c8dLshg0a 数学核心素养
-      // file-35koyXrFO2T4FsrQe4qXm0io 数学素养内涵
+      // file-SNthYVubrHGg4HjFcp3FPkZq 英语核心素养(总目标+学段目标)
+      // file-QOKhi8i84T8eR6DYhb9TaTlG 科学核心素养学段目标
+      // file-nkAUyRCEMncICGuFBC1WXnM1 科学核心素养内涵目标
+      // file-aQmfmgrwdrHa9sCTTZkjvK7Z 语文核心素养内涵目标
+      // file-G1bRfSFnQaQtzA3c8dLshg0a 数学学科核心素养学段目标
+      // file-35koyXrFO2T4FsrQe4qXm0io 数学学科核心素养内涵和总目标
       let _sub = converter(sub.join(","))
       let fileid = []
-      if(_sub.indexOf(converter('STEM')) != -1){
-        fileid.push('file-SNthYVubrHGg4HjFcp3FPkZq')
-        fileid.push('file-QOKhi8i84T8eR6DYhb9TaTlG')
-        fileid.push('file-nkAUyRCEMncICGuFBC1WXnM1')
-        fileid.push('file-aQmfmgrwdrHa9sCTTZkjvK7Z')
-        fileid.push('file-G1bRfSFnQaQtzA3c8dLshg0a')
-        fileid.push('file-35koyXrFO2T4FsrQe4qXm0io')
-      }
-      if(_sub.indexOf(converter('语文')) != -1){
-        if(fileid.indexOf('file-aQmfmgrwdrHa9sCTTZkjvK7Z') == -1){
-          fileid.push('file-aQmfmgrwdrHa9sCTTZkjvK7Z')
-        }
-      }
-      if(_sub.indexOf(converter('数学')) != -1){
-        if(fileid.indexOf('file-G1bRfSFnQaQtzA3c8dLshg0a') == -1){
-          fileid.push('file-G1bRfSFnQaQtzA3c8dLshg0a')
-        }
-        if(fileid.indexOf('file-35koyXrFO2T4FsrQe4qXm0io') == -1){
-          fileid.push('file-35koyXrFO2T4FsrQe4qXm0io')
-        }
-      }
-      if(_sub.indexOf(converter('英语')) != -1){
-        if(fileid.indexOf('file-SNthYVubrHGg4HjFcp3FPkZq') == -1){
-          fileid.push('file-SNthYVubrHGg4HjFcp3FPkZq')
-        }
-      }
-      if(_sub.indexOf(converter('科学')) != -1){
-        if(fileid.indexOf('file-QOKhi8i84T8eR6DYhb9TaTlG') == -1){
-          fileid.push('file-QOKhi8i84T8eR6DYhb9TaTlG')
-        }
-        if(fileid.indexOf('file-nkAUyRCEMncICGuFBC1WXnM1') == -1){
-          fileid.push('file-nkAUyRCEMncICGuFBC1WXnM1')
+      
+      for(var i = 0; i < this.fileidArray.length; i++){
+        if(_sub.indexOf(converter(this.fileidArray[i].name)) != -1){
+          if(fileid.indexOf(this.fileidArray[i].fileid) == -1){
+            fileid.push(this.fileidArray[i].fileid)
+          }
         }
       }
+
       return fileid
     },
+    selectFileid(){
+      let params = {
+        oid: this.oid,
+      };
+      this.ajax
+        .get(this.$store.state.api + "selectFileid", params)
+        .then((res) => {
+          this.fileidArray = res.data[0]
+          if(res.data[1].length){
+            this.fileidArray = res.data[1]
+          }
+          if(res.data[2].length){
+            this.fileidArray = res.data[2]
+          }
+
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
     async aitargetTextDetail22(msg,msg2) {
       let _this = this
       let fileid = [] 
@@ -21580,14 +21753,27 @@ ${this.targetCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参
         _this.targetTextLoading2 = false
         _this.ttargetTextLoading2 = false
         _this.isTargetCancelToken2 = null
+        if(error && error.message != 'Request canceled by the user.'){
+          _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        }
         console.log(error);
       });
       await _this.aitargetTextDetail2getAiContent(_uuid)
     },
     aitargetTextDetail2getAiContent(_uid) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      this.isTargetCancelSource2 = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      try {
+        // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        this.isTargetCancelSource2 = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+        // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
+      } catch(error) {
+        console.log('EventSource error:', error);
+        this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        this.targetTextLoading2 = false
+        this.ttargetTextLoading2 = false
+        this.isTargetCancelToken2 = null
+        return;
+      }
+      
       let _allText = "";
       let _mdText = "";
       let _iindex = 0
@@ -21595,7 +21781,7 @@ ${this.targetCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参
         let _eData = JSON.parse(_e.data).content;
         if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
           //对话已经完成
-          _mdText = _mdText.replace("_", "");
+          _mdText = _mdText.replace("_", "").replace(/【[^】]*source[^】]*】/g, '').replaceAll("<br>", "");
           this.isTargetCancelSource2.close();
           this.isTargetCancelSource2 = null;
           this.targetCourseText2 = _mdText;
@@ -21635,7 +21821,7 @@ ${this.targetCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参
       this.isTargetCancelSource2.onerror = function(event) {
         // 处理错误,可以尝试重新连接
         console.log('EventSource error:', event);
-        _this.$message.error("网络错误")
+        _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
         _this.targetTextLoading2 = false
         _this.ttargetTextLoading2 = false
         _this.isTargetCancelToken2 = null
@@ -21761,6 +21947,9 @@ ${this.targetCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参
         _this.targetTextLoading2 = false
         _this.ttargetTextLoading2 = false
         _this.isTargetCancelToken2 = null
+        if(error && error.message != 'Request canceled by the user.'){
+          _this.$message.error("哎呀,请求太多了,服务器忙不过来了,请稍等再重试")
+        }
         console.log(error);
       });
     },
@@ -22057,7 +22246,9 @@ ${msg}
             let dArray = []
             try {
               let regex2 = new RegExp("/([{,])(\w+):/g")
-              dArray = JSON.parse(data.message.replaceAll('```json','').replaceAll('```','').replaceAll('\'',"\"").replace(regex2, '$1"$2":'))
+              let regex3 = new RegExp('/(?<!")content(?!")/g')
+              // 
+              dArray = JSON.parse(data.message.replaceAll('```json','').replaceAll('```','').replaceAll('\'',"\"").replace(regex2, '$1"$2":').replace(regex3, '"content"'))
             } catch (error) {
                 // callback ? callback() : ''
                 console.log("error_________________" + error);
@@ -22069,7 +22260,9 @@ ${msg}
                 // callback ? callback() : ''
                 _this.$message.error("返回的数据格式错误,小可正在为您重新获取...")
                 console.log("error_________________" + error);
+                _this.isFileCancelToken = null;
                 _this.aiSearchFile(messages, callback)
+                return
               }
             }
             for(let i = 0; i < dArray.length; i++){
@@ -22138,6 +22331,7 @@ ${msg}
     next();
   },
   created() {
+    this.selectFileid();
     this.getStudent();
     this.getTeacher();
     this.getClass();
@@ -26498,12 +26692,11 @@ ol {
   color: #0061FF;
 }
 
-.rateSwitch >>> .el-switch__label--left{
+.rateSwitch >>> .el-switch__label--right{
   display: flex;
   align-items: center;
 }
-
-.rateSwitch >>> .el-switch__label--left::before{
+.rateSwitch >>> .el-switch__label--right::before{
   content: "";
   width: 14px;
   height: 14px;
@@ -26512,6 +26705,9 @@ ol {
   background-size: 100% 100%;
   display: block;
   margin-right: 7px;
+  background-image: url(../../../assets/icon/new/u_op2.png);
+}
+.rateSwitch >>> .el-switch__label--right.is-active::before{
   background-image: url(../../../assets/icon/new/u_op.png);
 }
 </style>

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

@@ -3355,11 +3355,11 @@ export default {
           // pdf.addImage(pageData, "JPEG", 10, 0, imgWidth - 20, imgHeight - 20);
           pdf.addImage(pageData, 'JPEG', 0, 0, contentWidth, contentHeight );
 
-          pdf.save(
-            this.allWorks.course + "-" + this.allWorks.sName + "学生作业集.pdf"
-          );
+          pdf.save( this.allWorks.course+'-作业集' + '-'+ this.allWorks.sName+'.pdf')
+
           this.worksLoading = false;
         })
+        
         .catch(err => {
           this.worksLoading = false;
           console.log(err);
@@ -3593,7 +3593,7 @@ export default {
           setTimeout(()=>{
             let scrollBody = document.querySelector(".zyBoxC").parentElement
             scrollBody.scrollTop = scrollBody.scrollTop - 70
-          }, 100);
+          }, 0);
           // function scrollToElement(elementA) {
           //   return new Promise((resolve) => {
           //     const observer = new IntersectionObserver((entries) => {

+ 56 - 92
src/components/pages/components/worksDetail2.vue

@@ -242,7 +242,7 @@
                 size="small"
                 v-else
                 @click="
-                  exportPdfSet(scope.row.id, scope.row.userid, 0, scope.$index,scope.row)
+                  exportPdfSet(scope.row.userid,scope.row)
                 "
                 >导出作业集</el-button
               > -->
@@ -1874,7 +1874,8 @@ export default {
       typeCheck: false,
       word2: require("../../../assets/icon/word2.png"),
       worksLoading:false,
-      cutTabNum:0
+      cutTabNum:0,
+      allWorkData:[]
     };
   },
   computed: {
@@ -2102,7 +2103,7 @@ export default {
         // if (leftHeight < pageHeight) {
         pdf.addImage(pageData, 'JPEG', 0, 0, contentWidth, contentHeight );
        
-        pdf.save( this.allWorks.course+'-'+ this.allWorks.sName+'学生作业集.pdf')
+        pdf.save( this.allWorks.course+'-作业集' + '-'+ this.allWorks.sName+'.pdf')
         this.worksLoading = false
     })
     .catch((err) => {
@@ -2944,9 +2945,7 @@ export default {
         });
     },
     // 按任务查看导出作业集
-    exportPdfSet(id, uid, type, index,con) {
-      this.scopeId1 = id;
-      this.studentId = uid;
+    exportPdfSet(uid, con) {
       let params = {
         uid: uid,
         cid: this.id,
@@ -2954,38 +2953,12 @@ export default {
       this.ajax
         .get(this.$store.state.api + "selectAllWorksDetail", params)
         .then((res) => {
-          var b = res.data[0].reduce((result, item) => {
-            const key = item.stage + "-" + item.task;
-            if (!result[key]) {
-              result[key] = item;
-            }
-            return result;
-          }, {});
-
-          // 将结果转换为数组形式
-          b = Object.values(b);
-          var c = b.sort(function (x, y) {
-            // 首先比较stage字段
-            if (x.stage !== y.stage) {
-              return parseInt(x.stage) - parseInt(y.stage);
-            }
-
-            // 如果stage字段相同,则比较task字段
-            return parseInt(x.task) - parseInt(y.task);
-          });
-          this.sInfo = c;      
-          var chapters = [],
-            eList = [],
-            _ooption = [],
-            _rate = [],
-            _rateList = [];
-            console.log('res.data',res.data);
-          var worksDetail = res.data[1];
           
-          var askInfo = res.data[3];
-          var answerInfo = res.data[4];
-          var pptInfo = res.data[5];
-          var chooseInfo = res.data[6];
+          var worksDetail = res.data[1]; 
+          var askInfo = res.data[3]; //问卷
+          var answerInfo = res.data[4]; //问答题
+          var pptInfo = res.data[5]; 
+          var chooseInfo = res.data[6]; //选择题
           var pjInfo = res.data[7]; //个人评价作业
           var xztkInfo = res.data[8]; //选择匹配作业
           var lccjInfo = res.data[9]; //排序作业
@@ -2993,8 +2966,48 @@ export default {
           var cocopiInfo = res.data[11]; //cocopi或源码编辑作业
           var wordInfo = res.data[12]; //文档作业
           var workEvaList = res.data[13];
-          var workJson = {};
-          let checkJson = {};
+
+          // this.allWorkData 
+          let AreaAllWork = [...res.data[1],...res.data[3],...res.data[4],...res.data[5],...res.data[6],...res.data[7],...res.data[8],...res.data[9],...res.data[10],...res.data[11],...res.data[12],...res.data[13]]
+          
+          
+          AreaAllWork.sort(function(a,b){
+            return a.stage-b.stage;//从小到大排序
+          })
+
+          let phaseList = JSON.parse(JSON.stringify(this.dyList))
+
+          phaseList.forEach(e=>{
+            e.stageData = []
+            AreaAllWork.forEach((k,index)=>{
+              if (k.stage == e.id) {
+                e.stage.push(k)
+              }
+            })
+          })
+
+          // phaseList.forEach(e=>{
+          //   e.taskList
+          //   e.stageData.forEach((k,index)=>{
+          //     if (k.stage == e.id) {
+          //       e.stage.push(k)
+          //     }
+          //   })
+          // })
+          // AreaAllWork.forEach((e,index)=>{
+          //     e.stage
+          // })
+
+          // let subset = []
+
+          
+
+          console.log('AreaAllWork',AreaAllWork);
+          
+
+          return
+
+
 
           for (var k = 0; k < res.data[0].length; k++) {
             this.allWorks = res.data[0][k];
@@ -4242,42 +4255,6 @@ export default {
             }
            
           }
-
-          //#region 
-          // for (var i = 0; i < pptInfo.length; i++) {
-          //   var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
-          //   if (
-          //     a.indexOf(
-          //       pptInfo[i].content
-          //         .split(".")
-          //         [pptInfo[i].content.split(".").length - 1].toLocaleUpperCase()
-          //     ) != -1
-          //   ) {
-          //     var a =
-          //       "https://view.officeapps.live.com/op/view.aspx?src=" +
-          //       pptInfo[i].content;
-          //     workJson.wpptInfo.push({
-          //       wpptInfo: a,
-          //       score: pptInfo[i].score
-          //         ? JSON.parse(pptInfo[i].score).wScore
-          //         : pptInfo[i].score,
-          //     });
-          //   } else if (
-          //     pptInfo[i].content
-          //       .split(".")
-          //       [
-          //         pptInfo[i].content.split(".").length - 1
-          //       ].toLocaleUpperCase() == "PDF"
-          //   ) {
-          //     workJson.wpptInfo.push({
-          //       wpptInfo: pptInfo[i].content,
-          //       score: pptInfo[i].score
-          //         ? JSON.parse(pptInfo[i].score).wScore
-          //         : pptInfo[i].score,
-          //     });
-          //   }
-          // }
-//#endregion
           for (var i = 0; i < answerInfo.length; i++) {
             if (answerInfo[i].stage == w.stage && answerInfo[i].task == w.task) {
               const element = answerInfo[i];
@@ -4552,20 +4529,6 @@ export default {
               _choose += `<div>${_div.innerHTML}</div>`;
             }
           }
-
-          // var _pj = "";
-          // if(workJson.pjInfo.length > 0){
-          //   var _pj = "<h3>个人评价<h3>";
-          //   for(var i = 0;i<workJson.pjInfo.length;i++){
-          //     var _div = document.createElement("div");
-          //     _div.innerHTML = `<h4>个人评价:${workJson.pjInfo[i].answer.eBzText}</h4> `;
-          //     _div.innerHTML += `<div>${workJson.pjInfo[i].radio}</div> `;
-          //     _choose += `<div>${_div.innerHTML}</div>`;
-          //   }
-          // }
-
-            //  console.log(workJson.lccjInfo)
-          
           var _lccjInfo = "";        
           if (workJson.lccjInfo.length>0) {
             if (workJson.lccjInfo[0].lccjInfo.length > 0) {
@@ -4645,7 +4608,7 @@ export default {
           setTimeout(()=>{
             let scrollBody = document.querySelector(".zyBoxC").parentElement
             scrollBody.scrollTop = scrollBody.scrollTop - 70
-          }, 100);
+          }, 0);
           // function scrollToElement(elementA) {
           //   return new Promise((resolve) => {
           //     const observer = new IntersectionObserver((entries) => {
@@ -4693,7 +4656,7 @@ export default {
         setTimeout(()=>{
           let scrollBody = document.querySelector(".zyBoxC").parentElement
           scrollBody.scrollTop = scrollBody.scrollTop - 70
-        }, 100);
+        }, 0);
         // function scrollToElement(elementA) {
         //     return new Promise((resolve) => {
         //       const observer = new IntersectionObserver((entries) => {
@@ -4745,7 +4708,7 @@ export default {
       // debugger
       // 生成报告
       const link = document.createElement("a");
-      let dname = w.course + "-"+ (this.dyList[w.stage].name ? this.dyList[w.stage].name : `阶段${w.stage+1}`) +"-" + (this.dyList[w.stage].taskList[w.task].name ? this.dyList[w.stage].taskList[w.task].name : `任务${w.task+1}`) + w.sName + ".html";
+      let dname = w.course + "-"+ (this.dyList[w.stage].name ? this.dyList[w.stage].name : `阶段${w.stage+1}`) +"-" + (this.dyList[w.stage].taskList[w.task].name ? this.dyList[w.stage].taskList[w.task].name : `任务${w.task+1}`) + '-' +w.sName + ".html";
       // link.download = "报告.html"; // 文件名
       console.log('dname',dname);
       
@@ -5349,6 +5312,7 @@ export default {
   font-size: 16px;
   color: #7c7c7c;
   width: 100%;
+  /* min-width: 1246px; */
   /* margin-bottom: 10px; */
   display: flex;
   justify-content: space-between;

+ 11 - 2
src/components/pages/test/add/addTest.vue

@@ -33,7 +33,7 @@
         <el-dialog title="发布表单" :visible.sync="dialogVisible" width="550px" @close="dialogVisible = false" class="eld">
             <setInfo :oid="oid" :org="org" :steps.sync="steps" :title.sync="title" :testType.sync="testType"
                 :see.sync="see" :cJson.sync="cJson" :typeid.sync="typeid" :brief.sync="brief" :juri.sync="juri"
-                :overDate.sync="overDate" :juriList.sync="juriList" :typeInfo.sync="typeInfo">
+                :overDate.sync="overDate" :juriList.sync="juriList" :typeInfo.sync="typeInfo" :origin="origin">
             </setInfo>
             <span slot="footer" class="dialog-footer">
                 <el-button type="primary" @click="updateWork(3)">发 布 </el-button>
@@ -72,10 +72,15 @@ export default {
             overDate: "",
             juriList: [],
             typeInfo: [],
-            dialogVisible: false
+            dialogVisible: false,
+            origin: ""
         }
     },
     watch: {
+        cid(newValue, oldValue){
+            let url = "https://beta.cloud.cocorobo.cn/#/testDetail?testid=" + newValue
+            this.origin = url
+        },
         steps(newValue, oldValue) {
             if (!this.title) {
                 this.$message.error("请补充填写课程名称");
@@ -397,6 +402,10 @@ export default {
         },
     },
     mounted() {
+        if(this.cid){
+            let url = "https://beta.cloud.cocorobo.cn/#/testDetail?testid=" + this.cid
+            this.origin = url
+        }
         this.getTypeInfo();
     },
 }

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

@@ -76,6 +76,25 @@
                                     </el-select>
                                 </div>
                             </div>
+
+                            <div class="url_box">
+                                <div class="title">
+                                    分享方式
+                                </div>
+                                <div class="url">
+                                    <el-tooltip :content="origin" placement="top" effect="dark">
+                                        <!-- content to trigger tooltip here -->
+                                        <span>{{ origin }}</span>
+                                    </el-tooltip>
+                                    <span @click="copy" :data-clipboard-text="copyText" class="tag-read">复制链接</span>
+                                </div>
+                            </div>
+                            <div class="qrcode_box">
+                                <div class="qrcode">
+                                    <span class="qrcodeUrl" ref="qrCodeUrl"></span>
+                                    <span @click="downQr">下载二维码</span>
+                                </div>
+                            </div>
                             <!-- <div class="whiteBg" style="border-radius: 0; margin-top: 0px">
                                 <div class="c_info_title" style="padding: 0 0 15px;margin: 0 auto 0 0;">表单描述</div>
                                 <div style="width: 100%;box-sizing: border-box;">
@@ -128,6 +147,8 @@
 <script>
 import manualCreate from './manualCreated.vue';
 import aiCreate from './aiCreate.vue';
+import Clipboard from "clipboard";
+import QRCode from "qrcodejs2";
 export default {
     components: {
         manualCreate,
@@ -172,6 +193,9 @@ export default {
         },
         typeInfo: {
             type: Array
+        },
+        origin: {
+            type: String
         }
     },
     data() {
@@ -203,6 +227,7 @@ export default {
             teaType: [],
             teacherArray:[],
             dialogTeacher: false,
+            copyText: "",
         }
     },
     computed: {
@@ -249,13 +274,18 @@ export default {
         teaType: {
             immediate: true,
             deep: true,
-            handler(newValue, oldValue) {
-                this.getTestWorkTeacherCount()
+            async handler(newValue, oldValue) {
+                if(newValue.length){
+                    await this.getTestWorkTeacherCount()
+                }
             },
         },
+        origin(){
+            this.setQr()
+        }
     },
     methods: {
-        getTestWorkTeacherCount(){
+        async getTestWorkTeacherCount(){
             let j3 = []
             if(this.teaType.length){
                 this.teaType.forEach(e => {
@@ -266,15 +296,15 @@ export default {
                 juri: j3.length ? j3.join(',') : "",
                 userid: this.$route.query.userid
             }]
-            this.ajax
-                .post(this.$store.state.api + "getTestWorkTeacherCount", params)
-                .then((res) => {
-                    this.teacherArray = res.data[0]
-                })
-                .catch((err) => {
-                    this.$message.error("网络不佳");
-                    console.error(err);
-                });
+
+            try {
+                let res = await this.ajax.post(this.$store.state.api + "getTestWorkTeacherCount", params)
+                this.teacherArray = res.data[0]
+            }catch (err) {
+                this.$message.error("网络不佳");
+                console.error(err);
+            }
+            console.log('11111111111')
         },
         Ochange() {
             this.$forceUpdate()
@@ -470,9 +500,45 @@ export default {
         },
         checkTeacher(){
             this.dialogTeacher = true
-        }
+        },
+        setQr() {
+            setTimeout(() => {
+                this.$refs.qrCodeUrl.innerHTML = "";
+                var qrcode = new QRCode(this.$refs.qrCodeUrl, {
+                    text: this.origin, // 需要转换为二维码的内容
+                    width: 100,
+                    height: 100,
+                    colorDark: "#000000",
+                    colorLight: "#ffffff",
+                    correctLevel: QRCode.CorrectLevel.H,
+                });
+            }, 500);
+        },
+        downQr() {
+
+            // 创建一个虚拟链接,并将 canvas 转换为图片文件
+            const link = document.createElement('a');
+            link.href = this.$refs.qrCodeUrl.querySelector('img').src;
+            link.download = 'qrcode.png';
+
+            // 模拟点击链接进行下载
+            link.click();
+        },
+        copy() {
+            this.copyText = this.origin;
+            var clipboard = new Clipboard(".tag-read");
+            clipboard.on("success", (e) => {
+                this.$message.success("复制成功");
+                console.log("复制成功");
+                clipboard.destroy(); // 释放内存
+            });
+            clipboard.on("error", (e) => {
+                console.log("不支持复制,该浏览器不支持自动复制");
+                clipboard.destroy(); // 释放内存
+            });
+        },
     },
-    mounted() {
+    async mounted() {
         this.courseTypeId = this.depthCopy(this.testType)
         this.courseName = this.depthCopy(this.title)
         this.isTeacherSee = this.depthCopy(this.see)
@@ -487,6 +553,9 @@ export default {
         // this.selectAllType();
         this.selectType();
         this.getClass2();
+        await this.getTestWorkTeacherCount()
+        console.log('getTestWorkTeacherCount')
+        this.setQr();
     }
 }
 </script>
@@ -806,4 +875,77 @@ export default {
 .people_name2>>>.el-checkbox__label {
     width: calc(100% - 130px);
 }
+
+
+.url_box {
+    margin-bottom: 20px;
+}
+
+.qrcode_box {
+    margin-bottom: 20px;
+}
+
+.url_box>.url {
+    width: 100%;
+    display: flex;
+    align-items: center;
+    border: 1px solid #e7e7e7;
+    border-radius: 4px;
+    height: 35px;
+    padding: 0 7px;
+    box-sizing: border-box;
+}
+
+.url_box>.url>span {
+    font-size: 16px;
+    color: #000000;
+}
+
+.url_box>.url>span:nth-child(1) {
+    width: 100%;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+
+.url_box>.url>span:nth-child(2) {
+    margin-left: auto;
+    border-left: 1px solid #e7e7e7;
+    padding-left: 7px;
+    cursor: pointer;
+    min-width: fit-content;
+}
+
+.url_box>.title,
+.qrcode_box>.title {
+    font-weight: bold;
+    font-size: 14px;
+    margin-bottom: 10px;
+    color:#000;
+}
+
+.qrcode_box>.qrcode {
+    padding: 7px;
+    border: 1px solid #e7e7e7;
+    width: fit-content;
+    border-radius: 4px;
+    display: flex;
+    align-items: flex-end;
+}
+
+.qrcode_box>.qrcode>span:nth-child(1) {
+    width: 100px;
+    display: block;
+    height: 100px;
+}
+
+.qrcode_box>.qrcode>span:nth-child(2) {
+    background: #f0f2f5;
+    padding: 7px 15px;
+    font-size: 16px;
+    border-radius: 4px;
+    cursor: pointer;
+    color: #000;
+    margin-left: 7px;
+}
 </style>

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

@@ -73,7 +73,7 @@
             </div>
             <div class="left"  v-if="isDesktop">
               <!-- <div style="margin-right: 10px;position: relative;" v-if="stype == 2 || stype == 3"> -->
-              <div style="margin-right: 10px;position: relative;">
+              <!-- <div style="margin-right: 10px;position: relative;">
                 <el-select v-model="TeachingValue" @change="searchCourse" placeholder="按教研室">
                   <el-option
                     label="全部"
@@ -86,7 +86,7 @@
                     :value="item.id">
                   </el-option>
                 </el-select>
-              </div>
+              </div> -->
               <div style="margin-right: 10px;position: relative;" v-if="stype == 2 || stype == 3">
                 <el-date-picker
                   v-model="SubmitTime"
@@ -639,7 +639,7 @@
             <div v-for="(i,index) in worksArray"  :key="i.id" class="isDesktopTable_content">
               <div class="isDTitle CutCss">
                 <div style="font-size: 16px;font-weight: 600;">{{ i.name }}</div>
-                <div :style="'font-size: 14px',i.cut?'color:rgba(54, 129, 252, 1)':'color: rgba(0, 0, 0, 0.6);'">{{ i.time }}</div>
+                <div :style="'font-size: 14px'+i.cut?'color:rgba(54, 129, 252, 1)':'color: rgba(0, 0, 0, 0.6);'">{{ i.time }}</div>
                 <div @click="i.cut=!i.cut">
                   <img v-if="!i.cut" src="../../../../assets/icon/fileIcon/downImg.png" alt="">
                   <img v-else src="../../../../assets/icon/fileIcon/upImg.png" alt="">

Some files were not shown because too many files changed in this diff