SanHQin 1 week ago
parent
commit
f6d2daf380

+ 125 - 89
src/components/pages/classroomObservation/components/analysis.vue

@@ -45,16 +45,16 @@
         <div
           class="a_h_r_more"
           slot="reference"
-					v-if="!isDrag"
+          v-if="!isDrag"
           @click.stop="visible = !visible"
         >
           <img src="@/assets/icon/classroomObservation/moreIcon.svg" alt="" />
         </div>
 
-				<div class="a_h_r_scBtn" v-if="isDrag">
-					<span class="a_h_r_cancel" @click.stop="dragCancel()">取消</span>
-					<span class="a_h_r_submit" @click.stop="dragSubmit()">完成</span>
-				</div>
+        <div class="a_h_r_scBtn" v-if="isDrag">
+          <span class="a_h_r_cancel" @click.stop="dragCancel()">取消</span>
+          <span class="a_h_r_submit" @click.stop="dragSubmit()">完成</span>
+        </div>
 
         <div
           class="a_h_r_boxList"
@@ -94,10 +94,30 @@
 
             添加模块
           </div>
-					<div @click="moveAnalysis()" v-if="tid">
-						<svg t="1727591669869" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4289" width="200" height="200"><path d="M514.64 511m-84.76 0a84.76 84.76 0 1 0 169.52 0 84.76 84.76 0 1 0-169.52 0Z" fill="#000000" p-id="4290"></path><path d="M661.36 190.85L548.54 78a47.85 47.85 0 0 0-32-14c-1.21-0.09-2.43-0.15-3.66-0.15A48.95 48.95 0 0 0 478.58 78L365.77 190.85a48 48 0 0 0 0 67.88 48 48 0 0 0 67.88 0l31.21-31.21v115.22a48 48 0 0 0 48 48 48 48 0 0 0 48-48V226.11l32.61 32.62a48 48 0 0 0 67.89 0 48 48 0 0 0 0-67.88zM364.23 832.86l112.82 112.81a47.82 47.82 0 0 0 32 14c1.21 0.09 2.43 0.15 3.66 0.15A48.9 48.9 0 0 0 547 945.67l112.83-112.81a48 48 0 0 0 0-67.88 48 48 0 0 0-67.89 0l-31.21 31.2V681a48 48 0 0 0-48-48 48 48 0 0 0-48 48v116.59L432.12 765a48 48 0 0 0-67.89 0 48 48 0 0 0 0 67.86zM831.12 663.76L943.93 551a47.86 47.86 0 0 0 14-32c0.09-1.21 0.15-2.43 0.15-3.67A48.86 48.86 0 0 0 943.93 481L831.12 368.17a48 48 0 0 0-67.89 0 48 48 0 0 0 0 67.88l31.21 31.21H679.23a48 48 0 0 0-48 48 48 48 0 0 0 48 48h116.62l-32.62 32.62a48 48 0 0 0 0 67.88 48 48 0 0 0 67.89 0zM187.88 366.64L75.06 479.45a47.82 47.82 0 0 0-14 32c-0.1 1.21-0.16 2.43-0.16 3.67a48.86 48.86 0 0 0 14.17 34.27l112.81 112.84a48 48 0 0 0 67.88 0 48 48 0 0 0 0-67.88l-31.21-31.21h115.21a48 48 0 0 0 48-48 48 48 0 0 0-48-48H223.14l32.62-32.62a48 48 0 0 0 0-67.88 48 48 0 0 0-67.88 0z" fill="#000000" p-id="4291"></path></svg>
-						移动模块
-					</div>
+          <div @click="moveAnalysis()" v-if="tid">
+            <svg
+              t="1727591669869"
+              class="icon"
+              viewBox="0 0 1024 1024"
+              version="1.1"
+              xmlns="http://www.w3.org/2000/svg"
+              p-id="4289"
+              width="200"
+              height="200"
+            >
+              <path
+                d="M514.64 511m-84.76 0a84.76 84.76 0 1 0 169.52 0 84.76 84.76 0 1 0-169.52 0Z"
+                fill="#000000"
+                p-id="4290"
+              ></path>
+              <path
+                d="M661.36 190.85L548.54 78a47.85 47.85 0 0 0-32-14c-1.21-0.09-2.43-0.15-3.66-0.15A48.95 48.95 0 0 0 478.58 78L365.77 190.85a48 48 0 0 0 0 67.88 48 48 0 0 0 67.88 0l31.21-31.21v115.22a48 48 0 0 0 48 48 48 48 0 0 0 48-48V226.11l32.61 32.62a48 48 0 0 0 67.89 0 48 48 0 0 0 0-67.88zM364.23 832.86l112.82 112.81a47.82 47.82 0 0 0 32 14c1.21 0.09 2.43 0.15 3.66 0.15A48.9 48.9 0 0 0 547 945.67l112.83-112.81a48 48 0 0 0 0-67.88 48 48 0 0 0-67.89 0l-31.21 31.2V681a48 48 0 0 0-48-48 48 48 0 0 0-48 48v116.59L432.12 765a48 48 0 0 0-67.89 0 48 48 0 0 0 0 67.86zM831.12 663.76L943.93 551a47.86 47.86 0 0 0 14-32c0.09-1.21 0.15-2.43 0.15-3.67A48.86 48.86 0 0 0 943.93 481L831.12 368.17a48 48 0 0 0-67.89 0 48 48 0 0 0 0 67.88l31.21 31.21H679.23a48 48 0 0 0-48 48 48 48 0 0 0 48 48h116.62l-32.62 32.62a48 48 0 0 0 0 67.88 48 48 0 0 0 67.89 0zM187.88 366.64L75.06 479.45a47.82 47.82 0 0 0-14 32c-0.1 1.21-0.16 2.43-0.16 3.67a48.86 48.86 0 0 0 14.17 34.27l112.81 112.84a48 48 0 0 0 67.88 0 48 48 0 0 0 0-67.88l-31.21-31.21h115.21a48 48 0 0 0 48-48 48 48 0 0 0-48-48H223.14l32.62-32.62a48 48 0 0 0 0-67.88 48 48 0 0 0-67.88 0z"
+                fill="#000000"
+                p-id="4291"
+              ></path>
+            </svg>
+            移动模块
+          </div>
           <div @click="addNewAnalysisGroup(0)">
             <svg
               t="1727073223211"
@@ -245,7 +265,7 @@
             下移
           </div>
 
-          <div @click="deleteAnalysisGroup()" v-if="maxIndex!==0">
+          <div @click="deleteAnalysisGroup()" v-if="maxIndex !== 0">
             <svg
               width="20"
               height="20"
@@ -284,8 +304,6 @@
             </svg>
             删除分析
           </div>
-
-					
         </div>
         <!-- </el-popover> -->
         <!-- <div class="a-h-r-btn" @click.stop="addTemplate">
@@ -296,15 +314,20 @@
     </div>
     <div class="a-main" v-show="showItem || isDrag">
       <template v-for="(item, index) in analysisItemList">
-				<div class="a_m_dragBox" ref="dragBoxRefTop" :type="`${type}_${index}_${item.tIndex}_0`" v-if="isDrag && index===0"></div>
+        <div
+          class="a_m_dragBox"
+          ref="dragBoxRefTop"
+          :type="`${type}_${index}_${item.tIndex}_0`"
+          v-if="isDrag && index === 0"
+        ></div>
         <analysisItem
           ref="analysisItemRef"
           v-if="
-              ![
-                converter('S-T分析:课堂时间分配'),
-                converter('S-T分析:师生互动分析'),
-                converter('S-T分析:教学模式分析')
-              ].includes(converter(item.jsonData.name)) &&
+            ![
+              converter('S-T分析:课堂时间分配'),
+              converter('S-T分析:师生互动分析'),
+              converter('S-T分析:教学模式分析')
+            ].includes(converter(item.jsonData.name)) &&
               !['bfe844b1-7a45-11ef-9b30-005056b86db5'].includes(
                 item.jsonData.mId
               )
@@ -315,15 +338,15 @@
           :key="item.id + item.Type + '-' + index"
           :data="item"
           :tid="tid"
-					:dialogTagList="dialogTagList"
+          :dialogTagList="dialogTagList"
           :fileId="fileId"
           :index="index"
           :showBrief="showBrief"
-					:isDrag="isDrag"
+          :isDrag="isDrag"
           @delItem="delItem"
           @editItem="editItem"
           @saveItem="saveItem"
-					@moveAnalysis="moveAnalysisSubmit"
+          @moveAnalysis="moveAnalysisSubmit"
         />
         <analysisSpecialItem
           v-if="
@@ -342,21 +365,31 @@
           :key="item.id + item.Type + '-' + index"
           :data="item"
           :tid="tid"
-					:dialogTagList="dialogTagList"
+          :dialogTagList="dialogTagList"
           :fileId="fileId"
           :index="index"
-					:isDrag="isDrag"
+          :isDrag="isDrag"
           :showBrief="showBrief"
           @delItem="delItem"
           @editItem="editItem"
           @saveItem="saveItem"
-					@moveAnalysis="moveAnalysisSubmit"
+          @moveAnalysis="moveAnalysisSubmit"
         />
-				<div class="a_m_dragBox" ref="dragBoxRefBottom" :type="`${type}_${index}_${item.tIndex}_1`" v-if="isDrag"></div>
+        <div
+          class="a_m_dragBox"
+          ref="dragBoxRefBottom"
+          :type="`${type}_${index}_${item.tIndex}_1`"
+          v-if="isDrag"
+        ></div>
       </template>
       <div class="a_m_empty" v-if="analysisItemList.length == 0">
         <span v-if="!isDrag">暂无模块...</span>
-				<div class="a_m_dragBox" ref="dragBoxRefBottom" :type="`${type}_0_0_2`" v-if="isDrag"></div>
+        <div
+          class="a_m_dragBox"
+          ref="dragBoxRefBottom"
+          :type="`${type}_0_0_2`"
+          v-if="isDrag"
+        ></div>
       </div>
     </div>
     <editNameDialog ref="editNameDialogRef" @success="editNameSuccess" />
@@ -451,14 +484,16 @@ export default {
       type: Number,
       default: 0
     },
-		isDrag:{
-			type:Boolean,
-			default:false
-		},
-		dialogTagList:{
-			type:Array,
-			default:()=>{return []}
-		},
+    isDrag: {
+      type: Boolean,
+      default: false
+    },
+    dialogTagList: {
+      type: Array,
+      default: () => {
+        return [];
+      }
+    }
   },
   components: {
     analysisItem,
@@ -470,7 +505,7 @@ export default {
       return function(word) {
         return converter2(word);
       };
-    },
+    }
   },
   data() {
     return {
@@ -515,9 +550,11 @@ export default {
     getReport(id) {
       if (!id) {
         this.$nextTick(() => {
-          this.$refs.analysisItemRef.forEach(i => {
-            i.editBtn(false);
-          });
+          if (this.$refs.analysisItemRef) {
+            this.$refs.analysisItemRef.forEach(i => {
+              i.editBtn(false);
+            });
+          }
         });
       } else {
         this.$nextTick(() => {
@@ -590,20 +627,20 @@ export default {
       if (!this.tid) return this.$message.error("请新建课堂,或选择历史课堂");
       this.$emit("setTheLocation", { value: this.type, type: type });
     },
-		moveAnalysis(){
-			this.visible = false;
-			this.$parent.isDrag = true;
-		},
-		dragSubmit(){
-			this.visible = false;
-			this.$parent.moveAnalysisSubmit()
-		},
-		moveAnalysisSubmit(data){
-			this.$emit('moveAnalysis',data)
-		},
-		dragCancel(){
-			this.$parent.moveAnalysisCancel()
-		}
+    moveAnalysis() {
+      this.visible = false;
+      this.$parent.isDrag = true;
+    },
+    dragSubmit() {
+      this.visible = false;
+      this.$parent.moveAnalysisSubmit();
+    },
+    moveAnalysisSubmit(data) {
+      this.$emit("moveAnalysis", data);
+    },
+    dragCancel() {
+      this.$parent.moveAnalysisCancel();
+    }
   }
 };
 </script>
@@ -1029,52 +1066,51 @@ export default {
   margin-bottom: 0;
 }
 
-.a_m_dragBox{
-	width: 100%;
-	height: 40px;
-	border-radius: 3px;
-	box-sizing: border-box;
-	margin-bottom: 10px;
-	border: 1px dashed rgba(54, 129, 252, 1);
-	background-color: #F8F9FA;
-	transition: .3s;
-	cursor: pointer;
+.a_m_dragBox {
+  width: 100%;
+  height: 40px;
+  border-radius: 3px;
+  box-sizing: border-box;
+  margin-bottom: 10px;
+  border: 1px dashed rgba(54, 129, 252, 1);
+  background-color: #f8f9fa;
+  transition: 0.3s;
+  cursor: pointer;
 }
 
-.a_h_r_scBtn{
-	height: 100%;
-	padding: 0 10px 0;
-	display: flex;
-	justify-content: center;
-	align-items: center;
+.a_h_r_scBtn {
+  height: 100%;
+  padding: 0 10px 0;
+  display: flex;
+  justify-content: center;
+  align-items: center;
 }
 
-.a_h_r_scBtn>.a_h_r_submit{
-	padding: 5px 10px;
-	background-color: rgba(54, 129, 252, 1);
-	border-radius: 3px;
-	color: #fff;
-	cursor: pointer;
-	font-size: 14px;
+.a_h_r_scBtn > .a_h_r_submit {
+  padding: 5px 10px;
+  background-color: rgba(54, 129, 252, 1);
+  border-radius: 3px;
+  color: #fff;
+  cursor: pointer;
+  font-size: 14px;
 }
 
-.a_h_r_submit>a_h_r_submit:hover{
-	background-color: rgb(19, 106, 247);
+.a_h_r_submit > a_h_r_submit:hover {
+  background-color: rgb(19, 106, 247);
 }
 
-.a_h_r_scBtn>.a_h_r_cancel{
-	padding: 5px 10px;
-	background-color: #fff;
-	border-radius: 3px;
-	color: black;
-	cursor: pointer;
-	border: solid 1px #e7e7e7;
-	font-size: 14px;
-	margin-right: 10px;
+.a_h_r_scBtn > .a_h_r_cancel {
+  padding: 5px 10px;
+  background-color: #fff;
+  border-radius: 3px;
+  color: black;
+  cursor: pointer;
+  border: solid 1px #e7e7e7;
+  font-size: 14px;
+  margin-right: 10px;
 }
 
-.a_h_r_submit>.a_h_r_cancel:hover{
-	background-color: #e0d9d9;
+.a_h_r_submit > .a_h_r_cancel:hover {
+  background-color: #e0d9d9;
 }
-
 </style>

+ 9 - 0
src/components/pages/classroomObservation/components/analysisItem.vue

@@ -418,6 +418,7 @@ export default {
           userId: this.userId,
           file_ids: this.fileId ? [this.fileId] : "",
           model: "gpt-4o-2024-08-06"
+          // model: "gpt-4o-mini"
         };
 
         // 👇
@@ -482,6 +483,14 @@ export default {
             }
             this.changeShowIndex(1);
             this.loading = false;
+            this.$nextTick(() => {
+              if (
+                this.data.jsonData.echartsType &&
+                ["1", "2", "3"].includes(this.data.jsonData.echartsType)
+              ) {
+                this.editEcharts();
+              }
+            });
           })
           .catch(err => {
             this.loadNum = 2;

+ 9 - 0
src/components/pages/classroomObservation/components/analysisSpecialItem.vue

@@ -811,6 +811,10 @@ CH:${_CH}
           }
           this.changeShowIndex(1);
           this.loading = false;
+					this.$nextTick(()=>{
+
+						this.editEcharts(true);
+						})
         })
         .catch(err => {
           this.loadNum = 2;
@@ -1021,6 +1025,7 @@ CH:${_CH}
           userId: this.userId,
           file_ids: this.fileId ? [this.fileId] : "",
           model: "gpt-4o-2024-08-06"
+					// model: "gpt-4o-mini"
         };
 
         // 👇
@@ -1083,6 +1088,10 @@ CH:${_CH}
             }
             this.changeShowIndex(1);
             this.loading = false;
+						this.$nextTick(()=>{
+							
+							this.editEcharts(true);
+						})
           })
           .catch(err => {
             this.loadNum = 2;

+ 8 - 7
src/components/pages/classroomObservation/components/chatArea.vue

@@ -168,13 +168,7 @@
                   >
                 </div>
               </div>
-              <div
-                class="ca-b-o-h-l-btn"
-                @click.stop="uploadRecording()"
-                v-loading="uploadFileLoading"
-              >
-                <div class="ca-b-o-h-b-l-text">上传文件</div>
-              </div>
+        
             </template>
             <template v-if="recorderProvider === 'shengyang'">
               <div class="ca-b-o-h-l-btn">
@@ -239,6 +233,13 @@
                 </div>
               </div>
             </template>
+						<div
+                class="ca-b-o-h-l-btn"
+                @click.stop="uploadRecording()"
+                v-loading="uploadFileLoading"
+              >
+                <div class="ca-b-o-h-b-l-text">上传文件</div>
+              </div>
           </div>
           <div class="ca-b-o-h-right">
             <div class="ca-b-o-h-r-radio">

+ 10 - 10
src/components/pages/classroomObservation/components/echartsSpectrogram.vue

@@ -71,16 +71,16 @@ export default {
       });
 
       // 绘制红色垂直线(指定位置)
-      ctx.strokeStyle = "red";
-      ctx.lineWidth = 2;
-
-      this.data.breakpoint.forEach(i => {
-        const breakpointPo = parseFloat((i / (sum / canvasWidth2)).toFixed(2));
-        ctx.beginPath();
-        ctx.moveTo(breakpointPo, 10);
-        ctx.lineTo(breakpointPo, canvasHeight - 70);
-        ctx.stroke();
-      });
+      // ctx.strokeStyle = "red";
+      // ctx.lineWidth = 2;
+
+      // this.data.breakpoint.forEach(i => {
+      //   const breakpointPo = parseFloat((i / (sum / canvasWidth2)).toFixed(2));
+      //   ctx.beginPath();
+      //   ctx.moveTo(breakpointPo, 10);
+      //   ctx.lineTo(breakpointPo, canvasHeight - 70);
+      //   ctx.stroke();
+      // });
 
       let interval = parseFloat((this.step / (sum / canvasWidth2)).toFixed(2));
       //绘制竖线

+ 7 - 6
src/components/pages/classroomObservation/components/messageArea.vue

@@ -372,7 +372,7 @@ export default {
               // } else if (_result.Type == 2) {
               //   this.$refs.analysis2[0].getReport(_result.id);
               // }
-              this.$refs[`analysis_${_result.Type}`][0].getReport(_result.id);
+							this.$refs[`analysis_${_result.Type}`][0].getReport(_result.id);
               this.$message.success("添加成功");
               resolve();
             } else {
@@ -964,8 +964,7 @@ export default {
       });
       let _empty = this.dataList.filter(
         i =>
-          i.jsonData.content != "" &&
-          converter(i.jsonData.name) != converter("词频词汇分析")
+          i.jsonData.content != "" && converter(i.jsonData.name) != converter("词频词汇分析")
       );
 
       // return console.log(_empty)
@@ -978,6 +977,7 @@ export default {
         })
           .then(() => {
             this.dialogTagList.forEach(i => {
+							console.log(this.$refs[`analysis_${i.value}`][0])
               this.$refs[`analysis_${i.value}`][0].getReport();
             });
             // this.$refs["analysis0"][0].getReport();
@@ -991,9 +991,10 @@ export default {
             console.log("取消生成报告");
           });
       } else {
-        this.$refs["analysis0"][0].getReport();
-        this.$refs["analysis1"][0].getReport();
-        this.$refs["analysis2"][0].getReport();
+				this.dialogTagList.forEach(i => {
+					console.log(this.$refs[`analysis_${i.value}`][0])
+          this.$refs[`analysis_${i.value}`][0].getReport();
+        });
         this.$message.success("一键分析成功");
       }
     },

+ 59 - 24
src/components/pages/classroomObservation/index.vue

@@ -48,6 +48,26 @@
             </el-option>
           </el-select>
         </span>
+        <el-tooltip class="item" effect="light" content="添加课堂"  placement="top">
+          <span class="co_h2_add" @click="addNewCourse()">
+            <svg
+              t="1730428938505"
+              class="icon"
+              viewBox="0 0 1024 1024"
+              version="1.1"
+              xmlns="http://www.w3.org/2000/svg"
+              p-id="4271"
+              width="200"
+              height="200"
+            >
+              <path
+                d="M61.44 122.92096A122.83904 122.83904 0 0 1 184.32 0h532.48a40.96 40.96 0 0 1 28.95872 12.00128l204.8 204.8A40.96 40.96 0 0 1 962.56 245.76v655.5648c0 67.74784-55.11168 122.6752-122.88 122.6752H184.32a122.88 122.88 0 0 1-122.88-122.92096V122.92096z m819.2 139.79648L699.84256 81.92H184.29952C161.64864 81.92 143.36 100.22912 143.36 122.92096v778.15808A40.96 40.96 0 0 0 184.32 942.08h655.36c22.56896 0 40.96-18.30912 40.96-40.7552V262.71744zM307.2 512a40.96 40.96 0 0 1 40.7552-40.96h328.0896c22.50752 0 40.7552 18.18624 40.7552 40.96a40.96 40.96 0 0 1-40.7552 40.96H347.9552A40.7552 40.7552 0 0 1 307.2 512z m204.8-204.8a40.96 40.96 0 0 1 40.96 40.7552v328.0896c0 22.50752-18.18624 40.7552-40.96 40.7552a40.96 40.96 0 0 1-40.96-40.7552V347.9552c0-22.50752 18.18624-40.7552 40.96-40.7552z"
+                fill="#707070"
+                p-id="4272"
+              ></path>
+            </svg>
+          </span>
+        </el-tooltip>
         <!-- <div
 					class="co_h2_l_del"
 					@click.stop="delCourse()"
@@ -226,25 +246,25 @@ export default {
         0: "一",
         1: "二",
         2: "三",
-				3: '四',
-				4: '五',
-				5: '六',
-				6: '七',
-				7:'八',
-				8:'九',
-				9:'十',
-				10:'十一',
-				11:'十二',
-				12:'十三',
-				13:'十四',
-				14:'十五',
-				15:'十六',
-				16:'十七',
-				17:'十八',
-				18:'十九',
-				19:'二十',
-    	},
-		}
+        3: "四",
+        4: "五",
+        5: "六",
+        6: "七",
+        7: "八",
+        8: "九",
+        9: "十",
+        10: "十一",
+        11: "十二",
+        12: "十三",
+        13: "十四",
+        14: "十五",
+        15: "十六",
+        16: "十七",
+        17: "十八",
+        18: "十九",
+        19: "二十"
+      }
+    };
   },
   methods: {
     //切换了课堂
@@ -569,10 +589,12 @@ export default {
             }
 
             if (i2.jsonData.CH && i2.jsonData.RT) {
-              tagHtml += `<div style="width:100vw;text-align:center;"><img style="margin:auto" src="${await this.getEChartsechartsRTCHImage({
-                RT: i2.jsonData.RT,
-                CH: i2.jsonData.CH
-              })}"/></div>`;
+              tagHtml += `<div style="width:100vw;text-align:center;"><img style="margin:auto" src="${await this.getEChartsechartsRTCHImage(
+                {
+                  RT: i2.jsonData.RT,
+                  CH: i2.jsonData.CH
+                }
+              )}"/></div>`;
             }
 
             let _content = md.render(i2.jsonData.content);
@@ -808,7 +830,7 @@ export default {
           img.src = require("../../../assets/icon/classroomObservation/rt-ch_echarts.png");
           img.onload = () => {
             ctx.drawImage(img, 25, 25, 250, 250);
-						ctx.fillStyle = fontColor;
+            ctx.fillStyle = fontColor;
             ctx.beginPath();
             ctx.arc(
               250 * parseFloat(data.RT) + 25,
@@ -1325,6 +1347,19 @@ export default {
   cursor: pointer;
   background-size: 100% 100%;
 }
+
+.co_h2_add {
+  width: 20px;
+  height: 20px;
+  cursor: pointer;
+	margin-left: 20px;
+}
+
+.co_h2_add > svg {
+  width: 100%;
+  height: 100%;
+  fill: #707070;
+}
 .co-h2-l-hr {
   width: 2px;
   height: 20px;

+ 16 - 7
src/components/pages/test/check/aiBoxRight.vue

@@ -324,7 +324,7 @@
       </div>
 
       <div v-if="!faloading && isVoice"></div>
-      <div class="c_pub_button_confirm" v-if="faloading" @click="stopSend">
+      <div class="c_pub_button_confirm" v-if="faloading && stopTalkToken" @click="stopSend">
         终止
       </div>
     </div>
@@ -491,7 +491,8 @@ export default {
       answerArray: [],
       fileId: [],
       fileList: [],
-			copyWorksArray:null
+			copyWorksArray:null,
+			stopTalkToken:false,
     };
   },
   watch: {
@@ -969,13 +970,15 @@ export default {
             messages: [],
             file: this.fileList ? this.fileList : []
           };
+					this.stopTalkToken = this.ajax.setCancelSource()
           this.$nextTick(() => {
             this.$refs.chatDialog.scrollTop = this.$refs.chatDialog.scrollHeight;
           });
           this.courseText = "";
+					this.saveUid = _uuid;
           this.ajax
             // .post("https://gpt4.cocorobo.cn/ai_agent_park_chat_new", params)
-            .post("https://gpt4.cocorobo.cn/csvaimessage", params)
+            .post("https://gpt4.cocorobo.cn/csvaimessage", params,this.stopTalkToken)
             .then(res => {
               // if (
               //   converter(res.data.FunctionResponse.result) ==
@@ -984,25 +987,26 @@ export default {
               // } else {
               //   this.$message.warning(res.data.FunctionResponse.result);
               // }
-              console.log(res);
               let data = res.data.FunctionResponse;
-              console.log(data);
               const md = new MarkdownIt();
               const text = md.render(data);
               this.array.find(i => i.uid == _uuid).aiContent = text;
               this.array.find(i => i.uid == _uuid).isalltext = true;
               this.array.find(i => i.uid == _uuid).isShowSynchronization = true;
               this.array.find(i => i.uid == _uuid).loading = false;
+							this.stopTalkToken = null;
+							this.faloading = false;
               this.$nextTick(() => {
                 this.$refs.chatDialog.scrollTop = this.$refs.chatDialog.scrollHeight;
               });
               if (this.courseId) {
                 this.insertChat(_uuid);
-								this.saveUid = _uuid;
               }
             })
             .catch(err => {
               console.log(err);
+							this.faloading = false;
+							this.stopTalkToken = null;
             });
           // this.getAtAuContent(_uuid);
           // this.saveUid = _uuid;
@@ -1433,7 +1437,12 @@ export default {
         this.faloading = false;
         this.fasource = null;
         this.insertChat(this.saveUid);
-      }
+      }else if(this.stopTalkToken){
+				this.stopTalkToken.cancel("Request canceled by the user.");
+				this.array = this.array.filter(i => i.uid !== this.saveUid);
+				this.stopTalkToken = null;
+				this.faloading = false;
+			}
     },
     changeVoice(flag) {
       this.isVoice = flag;