SanHQin 7 달 전
부모
커밋
2902dfce1a

+ 1 - 1
dist/index.html

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

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


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


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


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


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


+ 12 - 0
src/assets/icon/appStore/collect_icon.svg

@@ -0,0 +1,12 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_979_7372)">
+<path d="M8.0851 0.390411C12.2643 0.470411 15.4697 3.63745 15.4806 7.73601C15.4915 11.9459 12.3971 15.184 8.12798 15.2192C3.93822 15.2538 0.711662 12.0947 0.692462 7.82337C0.673902 3.63553 3.9027 0.473931 8.0851 0.390411Z" fill="#FFF3D0"/>
+<path d="M4.91328 11.9315C5.0384 11.1238 5.10335 10.3891 5.27967 9.68257C5.38367 9.26593 5.27135 9.02081 4.99455 8.75521C4.56287 8.34145 4.152 7.90497 3.73568 7.47489C3.48864 7.21985 3.19392 6.95073 3.32064 6.56161C3.46496 6.11809 3.87488 6.00961 4.29856 5.95137C4.8352 5.87777 5.36768 5.76993 5.90496 5.70401C6.33056 5.65185 6.56096 5.44289 6.71424 5.03393C6.93343 4.45089 7.21024 3.88513 7.51104 3.33857C7.87936 2.66881 8.43808 2.66273 8.8128 3.32001C9.0816 3.79105 9.36639 4.27489 9.50815 4.79073C9.71359 5.53793 10.2234 5.72577 10.8867 5.78753C11.3446 5.83009 11.8051 5.88865 12.2544 5.98561C13.0637 6.16065 13.3424 6.84545 12.7046 7.31809C11.1107 8.50017 10.7798 9.92865 11.3872 11.7514C11.5974 12.3821 10.8662 12.8947 10.3181 12.4899C8.85472 11.4086 7.496 11.3565 6.02911 12.4826C5.51295 12.8797 4.91872 12.4739 4.91328 11.9315Z" fill="#FFCB01"/>
+<path d="M7.57921 6.44574C7.70881 6.45438 7.87713 6.41982 7.92993 6.56766C8.00417 6.77438 7.82593 6.86846 7.67521 6.89726C7.10337 7.00702 6.76513 7.32574 6.68353 7.9091C6.66369 8.05118 6.58145 8.19614 6.43777 8.18142C6.24545 8.16158 6.21441 7.98398 6.21121 7.81054C6.19905 7.18014 6.93441 6.44382 7.57921 6.44574Z" fill="white"/>
+</g>
+<defs>
+<clipPath id="clip0_979_7372">
+<rect width="16" height="16" fill="white"/>
+</clipPath>
+</defs>
+</svg>

+ 4 - 0
src/assets/icon/appStore/find_icon.svg

@@ -0,0 +1,4 @@
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M10 1.66666C14.6023 1.66666 18.3334 5.3977 18.3334 9.99999C18.3334 14.6023 14.6023 18.3333 10 18.3333C5.39773 18.3333 1.66669 14.6023 1.66669 9.99999C1.66669 5.3977 5.39773 1.66666 10 1.66666ZM10 2.91666C6.08794 2.91666 2.91669 6.08791 2.91669 9.99999C2.91669 13.9121 6.08794 17.0833 10 17.0833C13.9121 17.0833 17.0834 13.9121 17.0834 9.99999C17.0834 6.08791 13.9121 2.91666 10 2.91666ZM12.9134 6.0202C13.0622 5.96659 13.2231 5.95643 13.3775 5.99092C13.5319 6.02541 13.6732 6.10311 13.7851 6.21495C13.8969 6.32679 13.9746 6.46815 14.0091 6.62251C14.0436 6.77687 14.0334 6.93785 13.9798 7.08666L12.454 11.325C12.3605 11.5847 12.2108 11.8205 12.0156 12.0157C11.8204 12.2108 11.5845 12.3605 11.3248 12.4539L7.08669 13.9798C6.93788 14.0334 6.7769 14.0435 6.62254 14.0091C6.46818 13.9746 6.32682 13.8969 6.21498 13.785C6.10314 13.6732 6.02544 13.5318 5.99095 13.3775C5.95646 13.2231 5.96662 13.0621 6.02023 12.9133L7.54606 8.67499C7.63958 8.4153 7.78927 8.17946 7.98446 7.98431C8.17965 7.78915 8.41552 7.6395 8.67523 7.54603L12.9134 6.0202ZM12.5038 7.49624L9.09856 8.72207C9.01197 8.75323 8.93332 8.80314 8.86824 8.86821C8.80317 8.93329 8.75327 9.01194 8.7221 9.09853L7.49627 12.5037L10.9015 11.2779C10.9881 11.2467 11.0667 11.1968 11.1318 11.1318C11.1969 11.0667 11.2468 10.988 11.2779 10.9014L12.5038 7.49624Z" fill="black"/>
+<path d="M13.0827 6.49062L13.0828 6.49059C13.1423 6.46914 13.2067 6.46508 13.2685 6.47888C13.3302 6.49267 13.3868 6.52375 13.4315 6.56849C13.4762 6.61322 13.5073 6.66977 13.5211 6.73151C13.5349 6.79325 13.5308 6.85765 13.5094 6.91717L13.5094 6.91728L11.9835 11.1556C11.915 11.346 11.8052 11.519 11.662 11.6621C11.5189 11.8052 11.3459 11.9149 11.1555 11.9835L11.1554 11.9835L6.9173 13.5093L6.9172 13.5094C6.85768 13.5308 6.79328 13.5349 6.73154 13.5211C6.6698 13.5073 6.61325 13.4762 6.56852 13.4315C6.52378 13.3867 6.4927 13.3302 6.47891 13.2684C6.46511 13.2067 6.46917 13.1423 6.49062 13.0828L6.49066 13.0827L8.01647 8.84438C8.01648 8.84436 8.01648 8.84435 8.01649 8.84434C8.08507 8.65392 8.19484 8.48098 8.33797 8.33788C8.48111 8.19476 8.65408 8.08502 8.84453 8.01648L8.84458 8.01646L13.0827 6.49062Z" stroke="#0354D7"/>
+</svg>

+ 5 - 0
src/assets/icon/appStore/history_icon.svg

@@ -0,0 +1,5 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M7.99998 12.6667C5.43331 12.6667 3.33331 10.5667 3.33331 8.00004C3.33331 5.43337 5.43331 3.33337 7.99998 3.33337C10.5666 3.33337 12.6666 5.43337 12.6666 8.00004C12.6666 10.5667 10.5666 12.6667 7.99998 12.6667Z" fill="#B6EAFF"/>
+<path d="M7.99998 2.00004C11.3 2.00004 14 4.70004 14 8.00004C14 11.3 11.3 14 7.99998 14C4.69998 14 1.99998 11.3 1.99998 8.00004C1.99998 4.70004 4.69998 2.00004 7.99998 2.00004ZM7.99998 1.33337C4.33331 1.33337 1.33331 4.33337 1.33331 8.00004C1.33331 11.6667 4.33331 14.6667 7.99998 14.6667C11.6666 14.6667 14.6666 11.6667 14.6666 8.00004C14.6666 4.33337 11.6666 1.33337 7.99998 1.33337Z" fill="#1FB6FF"/>
+<path d="M11 10.5334L8.33335 7.86671V3.66671C8.33335 3.50004 8.16669 3.33337 8.00002 3.33337C7.83335 3.33337 7.66669 3.50004 7.66669 3.66671V8.00004C7.66669 8.10004 7.70002 8.16671 7.76669 8.23337L10.5 10.9667C10.6334 11.1 10.8334 11.1 10.9667 10.9667C11.1 10.8334 11.1334 10.6667 11 10.5334Z" fill="#1FB6FF"/>
+</svg>

+ 32 - 8
src/components/pages/appStore/components/saveCard.vue

@@ -1,6 +1,9 @@
 <template>
   <div class="saveCard">
-    <span>{{ title }}</span>
+    <span>
+      <img v-if="icon" :src="icon">
+      {{ title }}
+    </span>
     <div class="s_box">
       <div v-for="(item,index) in data" :key="item.sid" @click="openAppUrl(item)" v-if="data.length>0 && item.id">
         <div>
@@ -59,6 +62,10 @@ export default {
 			type:Number,
 			default:0
 		},
+    icon:{
+      type:String,
+      default:''
+    }
   },
   data() {
     return {};
@@ -95,14 +102,24 @@ export default {
 .saveCard {
   width: 100%;
   height: auto;
-  margin-bottom: 20px;
+  margin-bottom: 10px;
   box-sizing: border-box;
   padding: 10px;
 }
 
 .saveCard > span {
-  font-size: 1.1em;
-  font-weight: bold;
+  font-size: 16px;
+  font-weight: 400;
+  display: flex;
+  color: #000000E5;
+  align-items: center;
+  margin-left: 10px;
+}
+
+.saveCard >span >img{
+  width: 22px;
+  height: 22px;
+  margin-right: 10px;
 }
 
 .s_box {
@@ -114,6 +131,7 @@ export default {
 .s_box>div{
 	width: 100%;
 	height: 30px;
+  margin-top: 10px;
 	margin-bottom: 15px;
 	display: flex;
 	align-items: center;
@@ -127,10 +145,13 @@ export default {
 }
 
 .s_box>div>div{
-	width: 30px;
-	height: 30px;
+	width: 22px;
+	height: 22px;
 	box-sizing: border-box;
-	padding: 5px;
+  border-radius: 50%;
+  overflow: hidden;
+  margin-right: 10px;
+  margin-left: 10px;
 }
 
 .s_box>div>div>svg{
@@ -145,10 +166,13 @@ export default {
 
 
 .s_box>div>span{
-	max-width: calc(100% - 30px);
+	max-width: calc(100% - 46px);
 	overflow: hidden;
 	text-overflow: ellipsis;
 	white-space: nowrap;
+  font-size: 16px;
+  font-weight: 400;
+  color: #000000E5;
 }
 
 .s_box>span{

+ 114 - 38
src/components/pages/appStore/views/appManagement.vue

@@ -1,13 +1,18 @@
 <template>
   <div class="appManagement">
     <div class="ac_left">
+      <div class="find">
+        <img src="../../../../assets/icon/appStore/find_icon.svg">
+        <span>发现</span>
+      </div>
       <saveCard
         title="最近使用"
         :data="recentUse"
+        :icon="require('../../../../assets/icon/appStore/history_icon.svg')"
         :type="1"
         @saveClick="openApp"
       />
-      <saveCard title="收藏" :data="collect" :type="0" @saveClick="openApp" />
+      <saveCard title="收藏"   :icon="require('../../../../assets/icon/appStore/collect_icon.svg')":data="collect" :type="0" @saveClick="openApp" />
     </div>
     <div class="ac_right">
       <div class="ac_header">
@@ -53,14 +58,14 @@
 
         </div> -->
         <el-button
-            type="primary"
-            size="small"
-            icon="el-icon-plus"
-            v-show="false"
-            style="position: absolute;right: 15px;"
-            @click="addApp"
-            >添加应用</el-button
-          >
+          type="primary"
+          size="small"
+          icon="el-icon-plus"
+          v-show="false"
+          style="position: absolute;right: 15px;"
+          @click="addApp"
+          >添加应用</el-button
+        >
         <div class="ac_h_banner" v-if="bannerObj">
           <img :src="bannerObj.poster" alt="banner图" />
         </div>
@@ -84,7 +89,7 @@
               v-model="selectJuri"
               placeholder="请选择显示范围"
               @change="changeSelectType"
-              style="width: 150px;margin-right: 10px;"
+              style="width: 120px;margin-right: 10px;"
             >
               <el-option
                 v-for="item in selectList"
@@ -97,7 +102,7 @@
               v-model="selectLabel"
               placeholder="请选择类型"
               @change="changeSelectType"
-              style="width: 120px;margin-right: 10px;"
+              style="width: 110px;margin-right: 10px;"
             >
               <el-option
                 v-for="item in labelSelect"
@@ -108,17 +113,23 @@
             </el-select>
             <el-input
               v-model="searchText"
-              style="width: 200px;"
+              style="width: 250px;margin-right: 10px;"
               placeholder="请输入应用名称"
               @keyup.enter.native="getData"
-              clearable
-            />
-            <el-button
+
+            >
+              <i
+                slot="suffix"
+                class="searchInputIcon el-icon-search"
+                @click="getData"
+              ></i>
+            </el-input>
+            <!-- <el-button
               type="primary"
               style="margin-left: 10px;"
               icon="el-icon-search"
               @click="getData"
-            ></el-button>
+            ></el-button> -->
             <el-button type="primary" @click="selectApp()">发布应用</el-button>
           </div>
         </div>
@@ -173,28 +184,43 @@
                       @click.stop="copyApp(item)"
                       v-if="item.json && item.json.copy === '1'"
                     >
-                      <img src="../../../../assets/icon/appStore/copy.svg" alt="">
+                      <img
+                        src="../../../../assets/icon/appStore/copy.svg"
+                        alt=""
+                      />
                       <span>复制</span>
                     </div>
                     <div
                       @click.stop="updateApp(item)"
                       v-if="item.userid === userId"
                     >
-                    <img src="../../../../assets/icon/appStore/edit.svg" alt="">
+                      <img
+                        src="../../../../assets/icon/appStore/edit.svg"
+                        alt=""
+                      />
                       <span>修改</span>
                     </div>
                     <div
                       @click.stop="delApp(item)"
                       v-if="item.userid === userId"
                     >
-                    <img src="../../../../assets/icon/appStore/del.svg" alt="">
+                      <img
+                        src="../../../../assets/icon/appStore/del.svg"
+                        alt=""
+                      />
                       <span>删除</span>
                     </div>
                   </div>
                   <svg
                     t="1732786015570"
                     @click.stop="updateCard(item.id)"
-                    :style="`transform: rotate(${editAppCard===item.id?'0deg':'90deg'});background-color:${editAppCard===item.id?'#F3F7FD':'#fff'}`"
+                    :style="
+                      `transform: rotate(${
+                        editAppCard === item.id ? '0deg' : '90deg'
+                      });background-color:${
+                        editAppCard === item.id ? '#F3F7FD' : '#fff'
+                      }`
+                    "
                     class="icon"
                     viewBox="0 0 1024 1024"
                     version="1.1"
@@ -480,12 +506,12 @@ export default {
       selectList: [
         { index: 3, label: "所有组织" },
         { index: 2, label: "组织内" },
-        { index: 1, label: "我的" },
+        { index: 1, label: "我的" }
         // { index: 98,label:"已发布"},
         // { index: 99,label:"未发布"},
       ],
       labelSelect: [
-        { value: "", label: "全部类型" },
+        { value: "", label: "所有类型" },
         { value: "agent", label: "智能体" },
         { value: "workflow", label: "工作流" }
       ],
@@ -935,8 +961,8 @@ export default {
               } else {
                 this.$message.error("删除失败");
               }
-              if(this.collect.findIndex(i=>i.id == item.id)!=-1){
-                this.getCollect()
+              if (this.collect.findIndex(i => i.id == item.id) != -1) {
+                this.getCollect();
               }
             })
             .catch(err => {
@@ -1095,7 +1121,7 @@ export default {
   margin: 0;
   overflow: auto;
   box-sizing: border-box;
-  padding: 20px;
+  /* padding: 20px; */
   display: flex;
   justify-content: space-between;
 }
@@ -1107,20 +1133,48 @@ export default {
   min-width: 150px;
   margin-right: 20px;
   height: 100%;
-  border-radius: 5px;
+  /* border-radius: 5px; */
   background-color: #fff;
-  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
+  /* box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1); */
   box-sizing: border-box;
   padding: 10px;
+  padding-left: 20px;
   overflow: auto;
 }
 
+.ac_left>.find{
+  width: 100%;
+  height: 45px;
+  background-color: #fff;
+  border-radius:10px ;
+  border: 1px solid #F3F7FD;
+  box-sizing: border-box;
+  padding: 0 20px;
+  display: flex;
+  align-items: center;
+  /* box-shadow: 2px 2px 4px 0px #1D39830A; */
+  box-shadow: 0px 0px 4px 2px #1D39830A;
+  margin-bottom: 10px;
+  font-weight: bold;
+  font-size: 16px;
+  color: #000000E5;
+}
+
+.ac_left>.find>img{
+  width: 22px;
+  height: 22px;
+  margin-right: 10px;
+}
+
 .ac_right {
   flex: 1;
   min-width: 800px;
   height: 100%;
-  overflow-y: hidden;
+  overflow: auto;
   display: flex;
+  padding-right: 10px;
+  padding-top: 10px;
+  box-sizing: border-box;
   flex-direction: column;
 }
 
@@ -1128,8 +1182,8 @@ export default {
   width: 100%;
   height: auto;
   border-radius: 5px;
-  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
-  background-color: #fff;
+  /* box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1); */
+  background-color: none;
 }
 
 .ac_h_top {
@@ -1182,7 +1236,8 @@ export default {
 
 .ac_h_banner {
   width: 100%;
-  height: clamp(100px, 20vh, 300px);
+  height: clamp(100px, 25vh, 350px);
+  /* height: 400px; */
   border-radius: 5px;
   overflow: hidden;
   box-sizing: border-box;
@@ -1204,6 +1259,7 @@ export default {
   display: flex;
   justify-content: space-between;
   align-items: center;
+  border-bottom: solid 1px #e7e7e7;
 }
 
 .ac_h_b_typeList {
@@ -1224,6 +1280,18 @@ export default {
 
 .ac_h_b_typeList_active {
   color: #007aff;
+  position: relative;
+}
+
+.ac_h_b_typeList_active::after {
+  content: "";
+  width: 80%;
+  height: 5px;
+  background-color: #007aff;
+  border-radius: 4px;
+  position: absolute;
+  top: 110%;
+  left: 10%;
 }
 
 .ac_h_b_selectList {
@@ -1235,11 +1303,9 @@ export default {
 
 .ac_content {
   width: 100%;
-  flex: 1;
   height: auto;
   margin-top: 10px;
-  overflow: auto;
-  min-height: 200px;
+  padding-bottom: 10px;
 }
 
 .ac_c_item {
@@ -1254,7 +1320,7 @@ export default {
   margin-bottom: 15px;
   float: left;
   border: solid 1px #e7e7e7;
-  transition: .2s;
+  transition: 0.2s;
 
   /* cursor: pointer; */
 }
@@ -1396,7 +1462,7 @@ export default {
   padding: 2.5px;
   /* transform: rotate(90deg); */
   cursor: pointer;
-  transition: .3s;
+  transition: 0.3s;
   border-radius: 4px;
 }
 
@@ -1410,7 +1476,7 @@ export default {
   background-color: #fff;
   /* box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1); */
   width: auto;
-  border: 1px solid #E7E7E7
+  border: 1px solid #e7e7e7;
 }
 
 .ac_c_i_t_p_box > div {
@@ -1428,7 +1494,7 @@ export default {
   box-sizing: border-box;
 }
 
-.ac_c_i_t_p_box > div>img{
+.ac_c_i_t_p_box > div > img {
   width: 18px;
   height: 18px;
   margin-right: 10px;
@@ -1549,6 +1615,16 @@ export default {
   color: #000;
 }
 
+.searchInputIcon {
+  width: 20px;
+  height: 20px;
+  position: relative;
+  top: 10px;
+  right: 5px;
+  font-size: 19px;
+  cursor: pointer;
+}
+
 /* .ac_c_i_top {
   width: 100%;
   height: 50px;

+ 158 - 11
src/components/pages/test/checkAi/aiLeader.vue

@@ -1,7 +1,11 @@
 <template>
   <div class="ai_body">
     <div class="ai_body_dialog" ref="chatDialog">
-      <div class="dialog_content" v-for="(item,index) in array" :key="item.uid">
+      <div
+        class="dialog_content"
+        v-for="(item, index) in array"
+        :key="item.uid"
+      >
         <div v-if="item.content" style="margin-left: auto;">
           <div class="content content2" v-html="item.content"></div>
           <div class="role">
@@ -35,12 +39,22 @@
             <span class="vditor-reset" v-html="item.aiContent"></span>
             <span class="createTime" v-text="item.createtime"></span>
 
-            <div style="width: 100%;margin-top: 10px;" v-if="item.echartList && item.echartList.length>0">
-              <el-button v-for="(item2,index2) in item.echartList" @click="choseEcharts(item,item2)" :key="index+'-'+index2" size="mini" class='echartBtn'>{{ item2.name }}</el-button>
+            <div
+              style="width: 100%;margin-top: 10px;"
+              v-if="item.echartList && item.echartList.length > 0"
+            >
+              <el-button
+                v-for="(item2, index2) in item.echartList"
+                @click="choseEcharts(item, item2)"
+                :key="index + '-' + index2"
+                size="mini"
+                class="echartBtn"
+                >{{ item2.name }}</el-button
+              >
             </div>
 
             <div class="eChartView" v-if="item.echartData">
-              <eChartTemplate :data="item.echartData" v-if="!item.loading"/>
+              <eChartTemplate :data="item.echartData" v-if="!item.loading" />
             </div>
             <div class="loadingDiv" v-if="item.loading">
               <span>小可努力生成中,请稍等片刻</span>
@@ -1482,6 +1496,138 @@ ${fileText}
         // this.saveUid = _uuid;
       }
     },
+    async addContent2() {
+      if (this.courseText.trim().length == 0) {
+        return this.$message.error("请输入内容");
+      } else if (this.fileList.length == 0) {
+        return this.$message.error("请选择表单");
+      }
+
+      let message = this.courseText;
+      if (this.courseText) {
+        let msg = ``;
+        if (this.answerArray.length) {
+          // msg += `
+          // ## 表单资料
+          // ${JSON.stringify(this.answerArray)}
+          // `;
+
+          // msg += `
+          // ## 要求
+          // 根据<参考资料>中的内容实现以下要求:${this.courseText}
+          // `;
+          msg += `## 要求
+根据上传文件中的内容实现以下要求:${this.courseText}`;
+          message = msg;
+        }
+
+        this.faloading = true;
+
+        let _uuid = uuidv4();
+        this.array.push({
+          role: "user",
+          content: `${this.courseText}`,
+          uid: _uuid,
+          AI: "AI",
+          aiContent: "",
+          oldContent: "",
+          isShowSynchronization: false,
+          filename: "",
+          index: this.array.length,
+          is_mind_map: false,
+          createtime: new Date().toLocaleString().replaceAll("/", "-"),
+          loading: true
+        });
+
+        let params = {
+          prompt: message,
+          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;
+        const curRequestController = new AbortController();
+        fetch("https://gpt4.cocorobo.cn/csvaimessagestream", {
+          method: "POST",
+          headers: {
+            "Content-Type": "application/json"
+          },
+          body: JSON.stringify(params),
+          signal: curRequestController.signal
+        })
+          .then(res => {
+            console.log("👉", res);
+            let reader = res.body.getReader();
+            let getStream = reader => {
+              return reader.read().then(result => {
+                if (result.done) {
+                  return;
+                }
+
+                //取出数据(二进制)
+                let chunk = result.value;
+                let _text = ``;
+                for (let i = 0; i < chunk.byteLength; i++) {
+                  _text += String.fromCharCode(chunk[i]);
+                }
+
+                let resultObj = JSON.parse(_text);
+
+                if (resultObj["actions"]) {
+                  let data = resultObj["actions"];
+                  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).loading = false;
+                  this.$nextTick(() => {
+                    this.$refs.chatDialog.scrollTop = this.$refs.chatDialog.scrollHeight;
+                  });;
+                } else if (resultObj["steps"]) {
+                  let data = resultObj["steps"];
+                  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).loading = false;
+                  this.$nextTick(() => {
+                    this.$refs.chatDialog.scrollTop = this.$refs.chatDialog.scrollHeight;
+                  });
+                } else if (resultObj["output"]) {
+                  let data = resultObj["output"];
+                  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.array.find(i => i.uid == _uuid).mdText = data;
+                  this.$forceUpdate();
+                  this.stopTalkToken = null;
+                  this.faloading = false;
+                  this.generateChart(this.array.find(i => i.uid == _uuid));
+                  this.$nextTick(() => {
+                    this.$refs.chatDialog.scrollTop = this.$refs.chatDialog.scrollHeight;
+                  });
+                  this.insertChat(_uuid);
+                }
+
+                // 递归下一个
+                return getStream(reader);
+              });
+            };
+            getStream(reader);
+          })
+          .catch(err => {
+            console.log(err);
+          });
+      }
+    },
     async getData() {
       return new Promise(resolve => {
         if (this.cid) {
@@ -2220,12 +2366,13 @@ ${_eChartsMsg}
           let _data = res.data.FunctionResponse.choices[0].message.content;
           _data = _data.replaceAll("```json", "").replaceAll("```", "");
 
-
           // const match = _data.match(/{[^{}]*"start"[\s\S]*?"end":\s*""[^{}]*}/);
           // let _result = JSON.parse(match[0]) || null;
           console.log("👉!!!!!!!!!!", _data);
           this.array.find(i => i.uid === item.uid).loading = false;
-          this.array.find(i=>i.uid===item.uid).echartList = JSON.parse(_data)
+          this.array.find(i => i.uid === item.uid).echartList = JSON.parse(
+            _data
+          );
           // console.log("👉",_result)
 
           // this.$forceUpdate();
@@ -2323,11 +2470,11 @@ ${_echartsType[type].text}
         return this.$message.error("未提取到表格内容");
       }
     },
-    choseEcharts(item1,item2){
-      this.array.find(i=>i.uid==item1.uid).loading = true;
-      this.array.find(i=>i.uid==item1.uid).echartData = item2.option;
+    choseEcharts(item1, item2) {
+      this.array.find(i => i.uid == item1.uid).loading = true;
+      this.array.find(i => i.uid == item1.uid).echartData = item2.option;
       setTimeout(() => {
-        this.array.find(i=>i.uid==item1.uid).loading = false;
+        this.array.find(i => i.uid == item1.uid).loading = false;
         this.$forceUpdate();
       }, 100);
     },
@@ -3537,7 +3684,7 @@ ${_echartsType[type].text}
   height: 300px;
 }
 
-.echartBtn{
+.echartBtn {
   border-color: #66b1ff;
   background: none;
   color: #66b1ff;

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