Explorar o código

Merge branch 'beta' into HK

lsc hai 10 meses
pai
achega
cc3786f145
Modificáronse 40 ficheiros con 1123 adicións e 722 borrados
  1. 7 2
      dist/index.html
  2. 1 0
      dist/static/css/app.724f966eca2e6ab59dc6cd598cce502e.css
  3. 0 0
      dist/static/css/app.724f966eca2e6ab59dc6cd598cce502e.css.map
  4. 1 0
      dist/static/css/app.c9c154a8df973e6f73895ea18902efd2.css
  5. BIN=BIN
      dist/static/img/aiAvatar.9613d71.png
  6. 0 0
      dist/static/js/app.d511815466c30e50ea07.js
  7. 1 0
      dist/static/js/app.d511815466c30e50ea07.js.map
  8. 0 0
      dist/static/js/app.e25cc57f1f9634d76d84.js.map
  9. 0 0
      dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map
  10. 3 3
      index.html
  11. BIN=BIN
      src/assets/icon/course/aiAvatar.png
  12. BIN=BIN
      src/assets/icon/course/role.png
  13. BIN=BIN
      src/assets/icon/newIcons/chevronUp.png
  14. BIN=BIN
      src/assets/icon/newIcons/launch.png
  15. 27 14
      src/components/EnglishVoice2/component/right.vue
  16. 1 1
      src/components/GM/studyStudentGM.vue
  17. 2 2
      src/components/checkEnglishVoice/component/right.vue
  18. 147 47
      src/components/classRoomHelper/component/dialogArea.vue
  19. 628 500
      src/components/classRoomHelper/component/searchArea.vue
  20. 44 19
      src/components/classRoomHelper/component/taskArea.vue
  21. 17 5
      src/components/components/onlineWrite.vue
  22. 8 6
      src/components/courseDetail.vue
  23. 2 2
      src/components/easy/studyStudent.vue
  24. 19 6
      src/components/easy2/commpont/onlineWrite.vue
  25. 2 2
      src/components/easy2/studyStudent jiu.vue
  26. 25 3
      src/components/easy2/studyStudent.vue
  27. 19 6
      src/components/easy3/commpont/onlineWrite.vue
  28. 2 2
      src/components/easy3/studyStudent jiu.vue
  29. 3 3
      src/components/easy3/studyStudent.vue
  30. 2 2
      src/components/noTerminal/studyStudent.vue
  31. 1 1
      src/components/study.vue
  32. 3 3
      src/components/studyStudent.vue
  33. 107 68
      src/components/studyStudentXin.vue
  34. 19 6
      src/components/trainCourse/easy2/commpont/onlineWrite.vue
  35. 3 3
      src/components/trainCourse/easy2/studyStudent.vue
  36. 19 6
      src/components/trainCourse/easy3/commpont/onlineWrite.vue
  37. 3 3
      src/components/trainCourse/easy3/studyStudent.vue
  38. 3 3
      src/components/trainCourse/studyStudent.vue
  39. 2 2
      src/components/横板极简和任务模式/easy2/studyStudent.vue
  40. 2 2
      src/components/横板极简和任务模式/easy3/studyStudent.vue

+ 7 - 2
dist/index.html

@@ -1,10 +1,10 @@
-<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>pbl-student</title><style>@charset "utf-8";
+<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>pbl-student</title><style>/* @charset "utf-8";
      @font-face {
         font-family: 'Source Han Sans SC';
         src: url('./static/SourceHanSans-Regular.otf') format('truetype');
         font-weight: normal;
         font-style: normal;
-      }
+      } */
     div::-webkit-scrollbar {
       /*滚动条整体样式*/
       width: 6px;
@@ -26,8 +26,13 @@
     }
     html,
     body{
+<<<<<<< HEAD
       font-family: 'Source Han Sans SC', sans-serif;
     }</style><link href=./static/css/app.c9c154a8df973e6f73895ea18902efd2.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.db8aabf79454924ff575.js></script><script type=text/javascript src=./static/js/app.e25cc57f1f9634d76d84.js></script></body></html><script>function stopSafari() {
+=======
+      font-family: '黑体';
+    }</style><link href=./static/css/app.724f966eca2e6ab59dc6cd598cce502e.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.9ee7cb8cb3c0161956b8.js></script><script type=text/javascript src=./static/js/app.d511815466c30e50ea07.js></script></body></html><script>function stopSafari() {
+>>>>>>> beta
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
dist/static/css/app.724f966eca2e6ab59dc6cd598cce502e.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/css/app.724f966eca2e6ab59dc6cd598cce502e.css.map


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
dist/static/css/app.c9c154a8df973e6f73895ea18902efd2.css


BIN=BIN
dist/static/img/aiAvatar.9613d71.png


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/app.d511815466c30e50ea07.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
dist/static/js/app.d511815466c30e50ea07.js.map


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/app.e25cc57f1f9634d76d84.js.map


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


+ 3 - 3
index.html

@@ -6,13 +6,13 @@
   <meta name="viewport" content="width=device-width,initial-scale=1.0">
   <title>pbl-student</title>
   <style>
-     @charset "utf-8";
+     /* @charset "utf-8";
      @font-face {
         font-family: 'Source Han Sans SC';
         src: url('./static/SourceHanSans-Regular.otf') format('truetype');
         font-weight: normal;
         font-style: normal;
-      }
+      } */
     div::-webkit-scrollbar {
       /*滚动条整体样式*/
       width: 6px;
@@ -34,7 +34,7 @@
     }
     html,
     body{
-      font-family: 'Source Han Sans SC', sans-serif;
+      font-family: '黑体';
     }
   </style>
 </head>

BIN=BIN
src/assets/icon/course/aiAvatar.png


BIN=BIN
src/assets/icon/course/role.png


BIN=BIN
src/assets/icon/newIcons/chevronUp.png


BIN=BIN
src/assets/icon/newIcons/launch.png


+ 27 - 14
src/components/EnglishVoice2/component/right.vue

@@ -61,7 +61,8 @@
           <span>/</span>
           <span>{{ checkJson.length }}</span>
         </div>
-        <div class="audio_index_next" :class="{ disabled: checkType == (checkJson.length - 1) }" @click="checkIndex('1')">
+        <div class="audio_index_next" :class="{ disabled: checkType == (checkJson.length - 1) }"
+          @click="checkIndex('1')">
           <img src="../../../assets/icon/englishVoice/coin.png" alt="">
         </div>
       </div>
@@ -520,27 +521,39 @@ export default {
     },
     answerCode(msg) {
       var _this = this;
-      _this.ajax.post('https://gpt4.cocorobo.cn/assistants_completion_response', {
-        uid: _this.id,
-        message: msg,
-      }).then(function (response) {
-        console.log(response);
+      if (msg) {
+        _this.ajax.post('https://gpt4.cocorobo.cn/assistants_completion_response', {
+          uid: _this.id,
+          message: msg,
+        }).then(function (response) {
+          console.log(response);
+          _this.answerArray.push(
+            {
+              isY: false,
+              content: response.data.FunctionResponse,
+              name: _this.answerArray[0].name,
+              img: _this.answerArray[0].img
+            }
+          )
+          console.log(_this.answerArray);
+          _this.$forceUpdate()
+          _this.isloading = false
+          _this.$emit('setWork', _this.answerArray, _this.checkType)
+        }).catch(function (error) {
+          _this.isloading = false
+          console.log(error);
+        });
+      } else {
         _this.answerArray.push(
           {
             isY: false,
-            content: response.data.FunctionResponse,
+            content: "抱歉,您刚刚没有成功录入内容,请再说一遍!",
             name: _this.answerArray[0].name,
             img: _this.answerArray[0].img
           }
         )
-        console.log(_this.answerArray);
-        _this.$forceUpdate()
         _this.isloading = false
-        _this.$emit('setWork', _this.answerArray, _this.checkType)
-      }).catch(function (error) {
-        _this.isloading = false
-        console.log(error);
-      });
+      }
     },
     guid() {
       var _num,

+ 1 - 1
src/components/GM/studyStudentGM.vue

@@ -4162,7 +4162,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPG",
         "TIF",
         "PCX",

+ 2 - 2
src/components/checkEnglishVoice/component/right.vue

@@ -38,8 +38,8 @@
       <div v-if="LuAudioUrl" class="audio_b">
         <mini-audio :audio-source="LuAudioUrl" class="audio_class"></mini-audio>
       </div>
-      <div v-else>
-        未上传录音
+      <div v-else-if="cjson.type !== 'createRole'">
+        未上传录音1
       </div>
       <!-- <div v-if="LuAudioUrl" class="audio_rerecord" @click="restart()">
         <span>录音</span>

+ 147 - 47
src/components/classRoomHelper/component/dialogArea.vue

@@ -1,5 +1,5 @@
 <template>
-	<div class="dialog" v-loading="loading">
+	<div class="dialog">
 		<div v-show="cardType == 0">
 			<div class="d_top" ref="chatRef">
 				<div class="d_t_chat" v-for="(item,index) in chatList" :key="index">
@@ -18,7 +18,7 @@
 							<span>Ai</span>
 						</div>
 						<div class="d_t_c_a_right">
-							<div class="d_t_c_a_r_content">{{ item.content }}</div>
+							<div class="d_t_c_a_r_content"  v-loading="loading && index==chatList.length-1">{{ item.content }}</div>
 							<div class="d_t_c_a_r_time">{{item.time}}</div>
 						</div>
 						
@@ -28,12 +28,15 @@
 			</div>
 			<div class="d_bottom">
 				<div class="d_b_btnArea">
-					<div class="d_b_ba-item" @click.stop="choiceRole()">选择角色</div>
+					<div class="d_b_ba-item" @click.stop="choiceRole()">
+					<img style="width: 20px;" src="../../../assets/icon/course/role.png" alt="">
+					选择角色
+				</div>
 				</div>
 				<div class="d_b_inputArea">
 					<div class="d_b_tape" @click="goTape()"></div>
 					<div class="d_b_input">
-						<el-input class="d_b_i_left" v-model="text"></el-input>
+						<el-input :disabled="loading" @keyup.enter.native="send()" class="d_b_i_left" v-model="text"></el-input>
 						<div class="d_b_i_right" @click="sendFile()">
 							<span></span>
 						</div>
@@ -51,7 +54,30 @@
 					<span>您希望以下哪个角色回答您的问题,请选择:</span>
 				</div>
 
-				<div class="filterSubjects">
+				<div class="characterBlock" v-for="(item,index) in roleList" :key="item.id" @click.stop="roleType=index">
+					<div class="imgLeft">
+						<div class="img">
+							<img style="width: 100%;height: 100%;" :src="item.avatar">
+						</div>
+					</div>
+					<div class="txtRight">
+						<div class="bir">{{ item.bir }}</div>
+						<div :style="{color: '#fff',display: roleType ==index?'block':'none'  }">已选择</div>
+						<!-- <span></span> -->
+					</div>
+				</div>
+				<div class="characterBlock" @click="addCharacter">
+					<div class="imgLeft">
+						<div class="img2">
+							<img style="width: 100%;height: 100%;" src="https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/basil_add-outline1715564539170.png">
+						</div>
+					</div>
+					<div class="txtRight">
+						<div style="color: #fff;margin-left: 5px;">添加新角色</div>
+					</div>
+				</div>
+
+				<!-- <div class="filterSubjects">
 					<div class="fs_title">筛选科目</div>
 					<div class="fs_box">
 						<div :class="['fs_b_item',subjectsType==index?'fs_b_itemActive':'']" v-for="(item,index) in subjectsList" :key="index" @click="subjectsType = index">{{ item }}</div>
@@ -66,7 +92,7 @@
 							<span>{{ item.name }}</span>
 						</div>
 					</div>
-				</div>
+				</div> -->
 			</div>
 			<div class="choiceBottom">
 				<el-button class="cb_btn" size="mini" @click="noChangeRole()">取消</el-button>
@@ -77,7 +103,6 @@
 </template>
 
 <script>
-
 	export default {
 		data(){
 			return{
@@ -90,31 +115,31 @@
 				rightRole:-1,
 				loading:false,
 				roleList:[
-					{id:0,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"爱因斯坦"},
-					{id:1,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"居里夫人"},
-					{id:2,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"达尔文"},
-					{id:3,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"莱昂纳多·达芬奇"},
-					{id:4,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"列文虎克"},
-					{id:5,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"詹姆斯·瓦特"},
-					{id:6,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"瑞秋·卡森"},
-					{id:7,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"尼古拉·特斯拉"},
-					{id:8,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"约翰·穆尔"},
-					{id:9,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"艾萨克·牛顿"},
-					{id:10,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"伽利略"},
-					{id:11,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"格雷戈尔·孟德尔"},
-					{id:12,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"张衡"},
-					{id:13,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"李时珍"},
-					{id:14,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"钱学森"},
-					{id:15,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"阿基米德"},
-					{id:16,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"霍金"},
-					{id:17,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"蔡伦"},
-					{id:18,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"詹姆斯·瓦特"},
-					{id:19,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"路易·巴斯德"},
-					{id:20,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"阿尔弗雷德·诺贝尔"},
-					{id:21,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"詹姆斯·麦克斯韦"},
-					{id:22,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"亚历山大·格拉汉姆·贝尔"},
-					{id:23,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"约翰内斯·开普勒"},
-					{id:24,avatar:"https://s3-alpha-sig.figma.com/img/edf4/a076/6980e6682bffa46d7dccf1943078b28b?Expires=1714348800&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ppnPgM5vfEhmTH0glBj2H87xy1~zcxDJL7kBleHEj9mcTfuWyaluOrliVzv0WGmzlt3369hW8DqXURghZbzkvI70f7as0CTEQ~bmx1sEp6hHOzLTQrIj0BYiL7~XzQOCuhqivkiqCHfblA6Yt0Cv-yRZPIy5fu7Vgj-BKR5KxeMcy8Z1gboNX2Z9YXgpI5-AzAGr08-GEcNNIDjzcjS0aNQEF2ABILwmHd1uCx5elaasfklclJSASgPDrOCdsXGzlFk28dLNYtyR~mZ9OGRdBfIwtqg-bhKvsqTtDczm6xZUXudo41s65HNqMfnJlVCDIwDiZcEDFyZ9m1TX38f08w__",name:"安德烈·安培"},
+					{id:0,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"爱因斯坦",bir:'我是爱因斯坦'},
+					{id:1,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"居里夫人",bir:'我是居里夫人'},
+					{id:2,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"达尔文",bir:'我是达尔文'},
+					// {id:3,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"莱昂纳多·达芬奇"},
+					// {id:4,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"列文虎克"},
+					// {id:5,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"詹姆斯·瓦特"},
+					// {id:6,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"瑞秋·卡森"},
+					// {id:7,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"尼古拉·特斯拉"},
+					// {id:8,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"约翰·穆尔"},
+					// {id:9,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"艾萨克·牛顿"},
+					// {id:10,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"伽利略"},
+					// {id:11,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"格雷戈尔·孟德尔"},
+					// {id:12,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"张衡"},
+					// {id:13,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"李时珍"},
+					// {id:14,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"钱学森"},
+					// {id:15,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"阿基米德"},
+					// {id:16,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"霍金"},
+					// {id:17,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"蔡伦"},
+					// {id:18,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"詹姆斯·瓦特"},
+					// {id:19,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"路易·巴斯德"},
+					// {id:20,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"阿尔弗雷德·诺贝尔"},
+					// {id:21,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"詹姆斯·麦克斯韦"},
+					// {id:22,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"亚历山大·格拉汉姆·贝尔"},
+					// {id:23,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"约翰内斯·开普勒"},
+					// {id:24,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"安德烈·安培"},
 				],
 				chatList:[
 					{
@@ -126,23 +151,39 @@
 			}
 		},
 		methods: {
+			addCharacter(){
+				this.$message.info("点击了添加新角色")
+			},
 			choiceRole(){
+				if(this.loading)return this.$message.info("请稍等")
 				this.cardType = 1;
 			},
 			sendFile(){
+				if(this.loading)return this.$message.info("请稍等")
 				this.$message.info("点击了附件")
 			},
 			goTape(){
+				if(this.loading)return this.$message.info("请稍等")
 				this.$message.info(`点击了语音`)
 			},
 			send(){
+				if (this.loading) return this.$message.info("请稍等");
+				if(this.text.trim().length==0)return this.$message.info("请输入内容")
 				this.loading = true;
 				this.chatList.push({
 					role:"user",
 					content:this.text,
 					time:new Date().toLocaleString().replace(/\//ig,'-')
 				})
-
+				
+				this.chatList.push({
+					role:"ai",
+					content:"",//这里需要调用接口
+					time:new Date().toLocaleString().replace(/\//ig,'-')
+				})
+				this.$nextTick(() => {
+				  	this.$refs.chatRef.scrollTop = this.$refs.chatRef.scrollHeight;
+					});;
 				setTimeout(()=>{
 					let aiContent="对不起,这个问题我回答不了。"
 					switch(this.text){
@@ -171,16 +212,21 @@
 								break;
 						}
 					}
-					this.chatList.push({
-						role:"ai",
-						content:aiContent,//这里需要调用接口
-						time:new Date().toLocaleString().replace(/\//ig,'-')
-					})
+					// this.chatList.push({
+					// 	role:"ai",
+					// 	content:aiContent,//这里需要调用接口
+					// 	time:new Date().toLocaleString().replace(/\//ig,'-')
+					// })
+					this.chatList[this.chatList.length - 1].content = aiContent;
+          this.chatList[
+            this.chatList.length - 1
+          ].time = new Date().toLocaleString().replace(/\//gi, "-");
+					this.loading = false;
 					this.$nextTick(() => {
 				  	this.$refs.chatRef.scrollTop = this.$refs.chatRef.scrollHeight;
-					});;
+					});
 					this.text = "";
-					this.loading = false;
+					
 				},5000)
 				// this.chatList.push({
 				// 	role:"user",
@@ -201,6 +247,11 @@
 				this.rightSubjects = this.subjectsType;
 				this.rightRole = this.roleType;
 				this.chatList = [];
+				this.chatList.push({
+					role:"ai",
+					content:"",//这里需要调用接口
+					time:new Date().toLocaleString().replace(/\//ig,'-')
+				})
 				setTimeout(()=>{
 					let aiContent = "你好";
 					switch(this.rightRole){
@@ -280,11 +331,10 @@
 							aiContent = "你好,我是安培,电磁学的先驱之一,提出了电流的磁效应。"
 							break;
 					}
-					this.chatList.push({
-						role:"ai",
-						content:aiContent,//这里需要调用接口
-						time:new Date().toLocaleString().replace(/\//ig,'-')
-					})
+					this.chatList[this.chatList.length - 1].content = aiContent;
+          this.chatList[
+            this.chatList.length - 1
+          ].time = new Date().toLocaleString().replace(/\//gi, "-");
 					this.loading = false;
 				},2000)
 
@@ -310,6 +360,53 @@
 	height: 100%;
 }
 
+.characterBlock{
+	display: flex;
+	background: rgba(54, 169, 252, 1);
+	width: 80%;
+	height: 80px;
+	margin: 0 auto;
+	border-radius: 10px;
+	margin-bottom: 15px;
+	cursor: pointer;
+}
+.characterBlock > .imgLeft{
+	width: 100px;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+}
+.characterBlock > .imgLeft > .img{
+	width: 60px;
+	height: 60px;
+	overflow: hidden;
+	border-radius: 50%;	
+}
+.characterBlock > .imgLeft > .img2{
+	width: 70px;
+	height: 70px;
+	overflow: hidden;
+	border-radius: 50%;	
+}
+.characterBlock > .txtRight{
+	flex: 1;
+	display: flex;
+	justify-content: flex-start;
+	align-items: center;
+}
+.characterBlock > .txtRight > .bir{
+	width: 150px;
+	height: 35px;
+	display: flex;
+	align-items: center;
+	background-color: #fff;
+	border-radius: 10px;
+	box-sizing: border-box;
+	padding: 5px 10px;
+	box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
+	margin-right: 10px;
+}
+
 .d_top{
 	width: 100%;
 	height: calc(100% - 90px);
@@ -565,6 +662,7 @@
 .choiceRoleHeader{
 	width: 100%;
 	margin: 10px;
+	margin-bottom: 20px;
 }
 
 .choiceRoleHeader>div{
@@ -594,8 +692,9 @@
 	height: 35px;
 	font-size: 14px;
 	box-sizing: border-box;
-	padding: 0 10px;
+	padding: 0 9px;
 	background-color: #F3F7FD;
+	border: solid 1px #F3F7FD;
 	border-radius: 5px;
 	margin-right:8px;
 	margin-bottom: 8px;
@@ -635,7 +734,8 @@
 	margin: 5px;
 	cursor: pointer;
 	box-sizing: border-box;
-	padding: 0 5px;
+	padding: 0 4px;
+	border: solid 1px #F0F2F5;
 }
 
 .r_b_itemActive{

+ 628 - 500
src/components/classRoomHelper/component/searchArea.vue

@@ -1,146 +1,233 @@
 <template>
-	<div class="search" v-loading="loading">
-			<div class="s_top" ref="chatRef">
-				<div class="s_t_chat">
-					<div class="s_t_c_ai">
-						<div class="s_t_c_a_left">
-							<span>Ai</span>
-						</div>
-						<div class="s_t_c_a_right">
-							<div class="s_t_c_a_r_content2">
-								<div class="s_t_c_a_r_c_title">
-									<img :src="require('../../../assets/icon/course/idea.png')">
-									<span>猜你想搜:</span>
-								</div>
-								<div class="s_t_c_a_r_c_item" @click="sendAiIdea('不同国家的垃圾分类标准和方法?')">1.垃圾分类标准:不同国家的垃圾分类标准和方法?</div>
-								<div class="s_t_c_a_r_c_item" @click="sendAiIdea('可回收垃圾的处理流程和再利用方法?')">2.可回收垃圾处理:可回收垃圾的处理流程和再利用方法?</div>
-								<div class="s_t_c_a_r_c_item" @click="sendAiIdea('有害垃圾对环境和人体健康的潜在影响?')">3.有害垃圾的影响:有害垃圾对环境和人体健康的潜在影响?</div>
-							</div>
-							<div class="s_t_c_a_r_time">{{ new Date().toLocaleString().replace(/\//ig,'-') }}</div>
-						</div>
-					</div>
-				</div>
-				<div class="s_t_chat" v-for="(item,index) in chatList" :key="index">
-					<div class="s_t_c_user" v-if="item.role =='user'">
-						<div class="s_t_c_u_left">
-							<div class="s_t_c_u_l_content">{{item.content}}</div>
-							<div class="s_t_c_u_l_time">{{item.time}}</div>
-						</div>
-						<div class="s_t_c_u_right">
-							<span>我</span>
-						</div>
-					</div>
-
-					<div class="s_t_c_ai" v-if="item.role =='ai'">
-						<div class="s_t_c_a_left">
-							<span>Ai</span>
-						</div>
-						<div class="s_t_c_a_right">
-							<div class="s_t_c_a_r_content" v-if="item.type==0">{{ item.content }}</div>
-							<div class="s_t_c_a_r_contentImage" v-if="item.type==1">
-								<span>为你找到以下图片</span>
-								<!-- <el-image 
+  <div class="search">
+    <div class="s_top" ref="chatRef">
+      <div class="s_t_chat">
+        <div class="s_t_c_ai">
+          <div class="s_t_c_a_left">
+            <span>Ai</span>
+          </div>
+          <div class="s_t_c_a_right">
+            <div class="s_t_c_a_r_content2">
+              <div class="s_t_c_a_r_c_title">
+                <img :src="require('../../../assets/icon/course/idea.png')" />
+                <span>猜你想搜:</span>
+              </div>
+              <div
+                class="s_t_c_a_r_c_item"
+                v-for="(item, index) in wantSearch"
+                :key="index"
+                @click="sendAiIdea(item.label)"
+              >
+                {{ index + 1 }}.{{ item.title }}:{{ item.label }}
+              </div>
+            </div>
+            <div class="s_t_c_a_r_time">
+              {{ new Date().toLocaleString().replace(/\//gi, "-") }}
+            </div>
+          </div>
+        </div>
+      </div>
+      <div
+        class="s_t_chat"
+        v-for="(item, index) in chatList"
+        :key="index"
+      >
+        <div class="s_t_c_user" v-if="item.role == 'user'">
+          <div class="s_t_c_u_left">
+            <div class="s_t_c_u_l_content">{{ item.content }}</div>
+            <div class="s_t_c_u_l_time">{{ item.time }}</div>
+          </div>
+          <div class="s_t_c_u_right">
+            <span>我</span>
+          </div>
+        </div>
+
+        <div class="s_t_c_ai" v-if="item.role == 'ai'">
+          <div class="aiCopy">
+            <img style="width: 30px;" src="https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%A4%8D%E5%88%B6%E5%9B%BE%E6%A0%871715569581741.png" alt="">
+          </div>
+          <div class="s_t_c_a_left">
+            <span>Ai</span>
+          </div>
+          <div class="s_t_c_a_right">
+            <div
+              class="s_t_c_a_r_content"
+              v-loading="loading && index == chatList.length - 1"
+              v-if="item.type == 0"
+            >{{ item.content }}
+            </div>
+            <div
+              class="s_t_c_a_r_contentImage"
+              v-loading="loading && index == chatList.length - 1"
+              v-if="item.type == 1"
+            >
+              <span style="margin-bottom: 10px;">为您找到以下图片:</span>
+              <!-- <el-image 
   							  style="width: 45%;height: 125px;margin: 1% 1.5%;"
   							  v-for="(item,index) in item.content"
 									:key="index"
 									:src="item"
   							  :preview-src-list="item">
   							</el-image> -->
-								<img v-for="(item,index) in item.content" @click.stop="$hevueImgPreview(item)" :key="index" :src="item">
-							</div>
-							<div class="s_t_c_a_r_time">{{item.time}}</div>
-						</div>
-						
-					</div>
-				</div>
-				
-			</div>
-			<div class="s_bottom">
-				<div class="s_b_btnArea">
-					<!-- <div class="s_b_ba-item" @click.stop="choiceRole()">选择角色</div> -->
-					<div class="s_b_ba-item">
-						<el-checkbox style="display: flex;"  v-model="imageCheck">图片</el-checkbox>
-					</div>
-					<div class="s_b_ba-item">
-						<el-checkbox style="display: flex;" v-model="videoCheck">视频</el-checkbox>
-					</div>
-				</div>
-				<div class="s_b_inputArea">
-					<div class="s_b_tape" @click="goTape()"></div>
-					<div class="s_b_input">
-						<el-input class="s_b_i_left" v-model="text"></el-input>
-						<div class="s_b_i_right" @click="sendFile()">
-							<span></span>
-						</div>
-					</div>
-					<div class="s_b_btn" @click="send()">
-						<span></span>
-					</div>
-				</div>
-			</div>
-	</div>
+              <img
+                v-for="(item, index) in item.content"
+                @click.stop="$hevueImgPreview(item)"
+                :key="index"
+                :src="item"
+              />
+              <div class="imgNumberBlock">
+                <div class="imgNumber" v-for="(i,index) in imgNumList" :key="index+'b'">
+                  {{ i }}
+                </div>
+                <div  class="imgNumber" style="background: none;">
+                  <img style="width: 36px;height: 30px;" src="https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame%20131715569413607.png" alt="">
+                </div>
+              </div>
+            </div>
+            <div class="s_t_c_a_r_time">{{ item.time }}</div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="s_bottom">
+      <!-- <div class="s_b_ba-item" @click.stop="choiceRole()">选择角色</div> -->
+
+      <!-- <div class="s_b_btnArea">
+        <div class="s_b_ba-item">
+          <el-checkbox
+            :disabled="loading"
+            style="display: flex;"
+            v-model="imageCheck"
+            >图片</el-checkbox
+          >
+        </div>
+        <div class="s_b_ba-item">
+          <el-checkbox
+            :disabled="loading"
+            style="display: flex;"
+            v-model="videoCheck"
+            >视频</el-checkbox
+          >
+        </div>
+      </div> -->
+      <div class="s_b_inputArea">
+        <div class="s_b_tape" @click="goTape()"></div>
+        <div class="s_b_input">
+          <el-input
+            :disabled="loading"
+						@keyup.enter.native="send()"
+            class="s_b_i_left"
+            v-model="text"
+          ></el-input>
+          <div class="s_b_i_right" @click="sendFile()">
+            <span></span>
+          </div>
+        </div>
+        <div class="s_b_btn" @click="send()">
+          <span></span>
+        </div>
+      </div>
+    </div>
+  </div>
 </template>
 
 <script>
-	export default {
-		data(){
-			return{
-				text:"",
-				loading:false,
-				imageCheck:false,
-				videoCheck:false,
-				chatList:[
-				{
-						role:"ai",
-						content:`您好,有什么可以帮助您的吗?`,
-						time:new Date().toLocaleString().replace(/\//ig,'-'),
-						type:0,
-					},
-// 					{
-// 						role:"user",
-// 						content:"正十三边形的每个角是多少度?",
-// 						time:"2023-11-11 11:10:11"
-// 					},
-// 					{
-// 						role:"ai",
-// 						content:`小朋友们,你们知道正十三边形吗?就像我们班有13个好朋友站成一个圈圈一样。如果我们想知道每个人转身看向下一个人需要转多少度,我们可以这样想:首先,所有朋友手拉手围成的圈圈是360度,对吧?但是,我们不能直接算每个人转身的角度,因为那是外面的角度,我们要算里面的角度,就像每个人转身时脚尖指向圈心的角度。
-// 我们先用一个小技巧,算出所有内角加起来是多少度。方法是:(13-2)乘以180度,得到1980度。这是因为,想象成一个多边形,它可以分成11个三角形,每个三角形的角度和是180度。
-// 然后,我们把1980度平分给13个角,就是每个角的度数了。算一算,1980除以13等于152度。所以,正十三边形的每个角是152度。就像每个人转身看下一个朋友,每个人需要转152度一样。`,
-// 						time:"2023-11-11 11:10:11"
-// 					},
-				],
-			}
-		},
-		methods: {
-			choiceRole(){
-				this.cardType = 1;
-			},
-			sendFile(){
-				this.$message.info("点击了附件")
-			},
-			goTape(){
-				this.$message.info(`点击了语音`)
-			},
-			send(){
-				this.loading = true;
-				setTimeout(()=>{
-
-					this.chatList.push({
-						role:"user",
-						content:this.text,
-						time:new Date().toLocaleString().replace(/\//ig,'-')
-					})
-
-					let aiContent="对不起,这个问题我回答不了。"
-					let type = 0;
-
-					switch(this.text){
-						case "帮我查找几张常见的不同类型的垃圾图片":
-							aiContent = ['https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8721713253471000.png','https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8731713253488299.png','https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8741713253506303.png','https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8751713253523152.png'];
-							type = 1;
-							break;
-						case "帮我查找一些B站的视频,介绍垃圾如何处理":
-							aiContent = `当然,以下是关于垃圾处理的一些B站视频链接:
+export default {
+  data() {
+    return {
+      text: "",
+      loading: false,
+      imageCheck: false,
+      videoCheck: false,
+      imgNumList:[
+        'U1','U2','U3','U4'
+      ],
+      wantSearch: [
+        {
+          index: 1,
+          title: "垃圾分类标准",
+          label: "不同国家的垃圾分类标准和方法?"
+        },
+        {
+          index: 2,
+          title: "可回收垃圾处理",
+          label: "可回收垃圾的处理流程和再利用方法?"
+        },
+        {
+          index: 3,
+          title: "有害垃圾的影响",
+          label: "有害垃圾对环境和人体健康的潜在影响?"
+        }
+      ],
+      chatList: [
+        {
+          role: "ai",
+          content: `您好,有什么可以帮助您的吗?`,
+          time: new Date().toLocaleString().replace(/\//gi, "-"),
+          type: 0
+        }
+        // 					{
+        // 						role:"user",
+        // 						content:"正十三边形的每个角是多少度?",
+        // 						time:"2023-11-11 11:10:11"
+        // 					},
+        // 					{
+        // 						role:"ai",
+        // 						content:`小朋友们,你们知道正十三边形吗?就像我们班有13个好朋友站成一个圈圈一样。如果我们想知道每个人转身看向下一个人需要转多少度,我们可以这样想:首先,所有朋友手拉手围成的圈圈是360度,对吧?但是,我们不能直接算每个人转身的角度,因为那是外面的角度,我们要算里面的角度,就像每个人转身时脚尖指向圈心的角度。
+        // 我们先用一个小技巧,算出所有内角加起来是多少度。方法是:(13-2)乘以180度,得到1980度。这是因为,想象成一个多边形,它可以分成11个三角形,每个三角形的角度和是180度。
+        // 然后,我们把1980度平分给13个角,就是每个角的度数了。算一算,1980除以13等于152度。所以,正十三边形的每个角是152度。就像每个人转身看下一个朋友,每个人需要转152度一样。`,
+        // 						time:"2023-11-11 11:10:11"
+        // 					},
+      ]
+    };
+  },
+  methods: {
+    choiceRole() {
+      this.cardType = 1;
+    },
+    sendFile() {
+			if (this.loading) return this.$message.info("请稍等");
+      this.$message.info("点击了附件");
+    },
+    goTape() {
+			if (this.loading) return this.$message.info("请稍等");
+      this.$message.info(`点击了语音`);
+    },
+    send() {
+      if (this.loading) return this.$message.info("请稍等");
+			if(this.text.trim().length==0)return this.$message.info("请输入内容")
+      this.loading = true;
+      this.chatList.push({
+        role: "user",
+        content: this.text,
+        time: new Date().toLocaleString().replace(/\//gi, "-")
+      });
+			
+      this.chatList.push({
+        role: "ai",
+        content: "",
+        type: 0,
+        time: new Date().toLocaleString().replace(/\//gi, "-")
+      });
+      this.$nextTick(() => {
+        this.$refs.chatRef.scrollTop = this.$refs.chatRef.scrollHeight;
+      });
+      setTimeout(() => {
+        let aiContent = "对不起,这个问题我回答不了。";
+        let type = 0;
+
+        switch (this.text) {
+          case "帮我查找几张常见的不同类型的垃圾图片":
+            aiContent = [
+              "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8721713253471000.png",
+              "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8731713253488299.png",
+              "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8741713253506303.png",
+              "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8751713253523152.png"
+            ];
+            type = 1;
+            break;
+          case "帮我查找一些B站的视频,介绍垃圾如何处理":
+            aiContent = `当然,以下是关于垃圾处理的一些B站视频链接:
 1.【科普短视频】垃圾会被怎么处理? - 这个视频通过简短的内容向观众展示垃圾处理的过程。
 https://www.bilibili.com/video/BV1UD4y1U71a
 
@@ -149,19 +236,19 @@ https://www.bilibili.com/video/BV1bt41157wH
  
 3.【环保短片】震撼环保公益短片《致我们的地球》- 这部短片通过震撼的画面和内容,强调了环保问题的重要性。
 https://www.bilibili.com/video/BV1ZD4y1U7H7/ `;
-							type = 0;
-							break;
-						case "不同国家的垃圾分类标准和方法?":
-							aiContent=`好的,我们来聊聊不同国家是怎么分类垃圾的。垃圾分类就像是帮助垃圾找到它们正确的家,这样我们的环境才能更干净,地球也会更健康。
+            type = 0;
+            break;
+          case "不同国家的垃圾分类标准和方法?":
+            aiContent = `好的,我们来聊聊不同国家是怎么分类垃圾的。垃圾分类就像是帮助垃圾找到它们正确的家,这样我们的环境才能更干净,地球也会更健康。
 •日本:日本的垃圾分类做得非常细致。他们不仅仅是分可回收和不可回收,而是将垃圾分成很多种类,比如瓶子、罐头、纸张、塑料等等。在日本,居民需要按照当地的规定把垃圾分类好,然后放在特定的垃圾袋里,在指定的时间拿出去扔。如果分类错了,垃圾收集者可能不会带走垃圾哦。
 •德国:德国也非常重视垃圾分类。他们有一种叫做“绿点”的系统,很多包装上都有一个绿色的点。这意味着制造商已经支付了回收费用。德国人会把纸、塑料、玻璃和金属分开收集。他们甚至有专门的容器来收集旧衣服和鞋子。
 •美国:美国的垃圾分类方法比较简单,通常分为可回收物、有机物和其他垃圾。可回收物包括纸张、塑料、玻璃和金属等。有些城市还有专门的食物垃圾桶,用来收集厨余垃圾,这些可以被转化为肥料或者生产能源。
 •瑞典:瑞典几乎可以回收利用所有的垃圾。他们非常擅长把垃圾变成资源,比如将燃烧垃圾产生的热能用来供暖和供电。瑞典人也会把垃圾分类成多种类,确保每种垃圾都能找到最合适的处理方式。
-通过这些例子,我们可以看到,虽然不同国家的垃圾分类方法和标准不一样,但他们都有一个共同的目标,那就是保护我们的环境,让地球变得更美好。所以,我们每个人在日常生活中也要努力做好垃圾分类,为保护地球出一份力!`
-							type = 0;
-							break;
-						case "可回收垃圾的处理流程和再利用方法?":
-							aiContent = `好的,我们来聊聊可回收垃圾的处理流程和再利用方法,就像是给垃圾进行一次神奇的变身之旅。
+通过这些例子,我们可以看到,虽然不同国家的垃圾分类方法和标准不一样,但他们都有一个共同的目标,那就是保护我们的环境,让地球变得更美好。所以,我们每个人在日常生活中也要努力做好垃圾分类,为保护地球出一份力!`;
+            type = 0;
+            break;
+          case "可回收垃圾的处理流程和再利用方法?":
+            aiContent = `好的,我们来聊聊可回收垃圾的处理流程和再利用方法,就像是给垃圾进行一次神奇的变身之旅。
 首先,可回收垃圾是指那些可以被再次利用的垃圾,比如塑料瓶、纸张、玻璃瓶和金属罐头盒等。这些垃圾如果被正确处理,就可以变成新的东西,而不是被扔掉占用地球的空间。
 第一步:收集和分类
 想象一下,你在家里帮忙把不同的垃圾放在不同的垃圾桶里。比如,把塑料瓶放在一个桶里,把纸张放在另一个桶里。这样做的目的是为了让垃圾更容易被处理和回收。在学校或者社区,也有专门的垃圾桶来收集这些可回收的材料。
@@ -173,26 +260,36 @@ https://www.bilibili.com/video/BV1ZD4y1U7H7/ `;
 这些被处理过的材料,比如碎纸或者塑料颗粒,会被送到不同的工厂,变成新的产品。例如,旧报纸可以被制成新的纸张或者纸板,塑料瓶可以变成塑料椅子或者玩具,玻璃瓶可以熔化后再制成新的玻璃制品。
 第五步:重新使用
 最后,这些新制成的物品会被送到商店,人们可以再次购买使用。这样一来,我们就完成了一次“垃圾变宝贝”的神奇旅程。
-通过这个流程,我们不仅节省了资源,减少了垃圾,还帮助保护了我们的环境。所以,下次当你要扔东西时,记得先想想这个东西能不能被回收,然后放到正确的垃圾桶里哦!这样你也成为了保护地球的小小英雄!`
-							type = 0;
-							break;
-						case "有害垃圾对环境和人体健康的潜在影响?":
-							type = 0;
-							break;
-					}
-
-					if(this.imageCheck){
-						aiContent = ['https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8721713253471000.png','https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8731713253488299.png','https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8741713253506303.png','https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8751713253523152.png'];
-						type = 1;
-						this.chatList.push({
-							role:"ai",
-							content:aiContent,
-							type:type,
-							time:new Date().toLocaleString().replace(/\//ig,'-')
-						})
-					}
-					if(this.videoCheck){
-						aiContent = `当然,以下是关于垃圾处理的一些B站视频链接:
+通过这个流程,我们不仅节省了资源,减少了垃圾,还帮助保护了我们的环境。所以,下次当你要扔东西时,记得先想想这个东西能不能被回收,然后放到正确的垃圾桶里哦!这样你也成为了保护地球的小小英雄!`;
+            type = 0;
+            break;
+          case "有害垃圾对环境和人体健康的潜在影响?":
+            type = 0;
+            break;
+        }
+
+        if (this.imageCheck) {
+          aiContent = [
+            "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8721713253471000.png",
+            "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8731713253488299.png",
+            "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8741713253506303.png",
+            "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%9B%BE%E7%89%8751713253523152.png"
+          ];
+          type = 1;
+          this.chatList[this.chatList.length - 1].content = aiContent;
+          this.chatList[this.chatList.length - 1].type = type;
+          this.chatList[
+            this.chatList.length - 1
+          ].time = new Date().toLocaleString().replace(/\//gi, "-");
+          // this.chatList.push({
+          // 	role:"ai",
+          // 	content:aiContent,
+          // 	type:type,
+          // 	time:new Date().toLocaleString().replace(/\//ig,'-')
+          // })
+        }
+        if (this.videoCheck) {
+          aiContent = `当然,以下是关于垃圾处理的一些B站视频链接:
 							1.【科普短视频】垃圾会被怎么处理? - 这个视频通过简短的内容向观众展示垃圾处理的过程。
 							https://www.bilibili.com/video/BV1UD4y1U71a
 
@@ -201,367 +298,398 @@ https://www.bilibili.com/video/BV1ZD4y1U7H7/ `;
 
 							3.【环保短片】震撼环保公益短片《致我们的地球》- 这部短片通过震撼的画面和内容,强调了环保问题的重要性。
 							https://www.bilibili.com/video/BV1ZD4y1U7H7/ `;
-							type = 0;
-							this.chatList.push({
-								role:"ai",
-								content:aiContent,
-								type:type,
-								time:new Date().toLocaleString().replace(/\//ig,'-')
-							})
-					}
-					if(!this.imageCheck&&!this.videoCheck){
-						this.chatList.push({
-							role:"ai",
-							content:aiContent,
-							type:type,
-							time:new Date().toLocaleString().replace(/\//ig,'-')
-						})
-					}
-
+          type = 0;
+          this.chatList[this.chatList.length - 1].content = aiContent;
+          this.chatList[this.chatList.length - 1].type = type;
+          this.chatList[
+            this.chatList.length - 1
+          ].time = new Date().toLocaleString().replace(/\//gi, "-");
+          // this.chatList.push({
+          // 	role:"ai",
+          // 	content:aiContent,
+          // 	type:type,
+          // 	time:new Date().toLocaleString().replace(/\//ig,'-')
+          // })
+        }
+        if (!this.imageCheck && !this.videoCheck) {
+					this.chatList[this.chatList.length-1].content = aiContent;
+					this.chatList[this.chatList.length-1].type = type;
+					this.chatList[this.chatList.length-1].time = new Date().toLocaleString().replace(/\//ig,'-');
 					this.text = "";
-					this.$nextTick(() => {
-					  this.$refs.chatRef.scrollTop = this.$refs.chatRef.scrollHeight;
-					});
-					this.loading = false;
-				},5000)
-				// this.chatList.push({
-				// 	role:"user",
-				// 	content:this.text,
-				// 	time:"2023-11-11 11:10:11"
-				// },{
-				// 	role:"ai",
-				// 	content:`小朋友,你真棒!`,//这里需要调用接口
-				// 	time:"2023-11-11 11:10:11"
-				// })
-				// this.text = "";
-				// // 元素滚动条触底
-				// this.$nextTick(() => {
-				//   this.$refs.chatRef.scrollTop = this.$refs.chatRef.scrollHeight;
-				// });
-			},
-			sendAiIdea(text){
-				this.text = text;
-				this.send();
-			},
-			sendImage(){
-				this.$message.info("发送图片")
-			},
-			sendVideo(){
-				this.$message.info("发送视频")
-			},
-		},
-	}
+          // this.chatList.push({
+          //   role: "ai",
+          //   content: aiContent,
+          //   type: type,
+          //   time: new Date().toLocaleString().replace(/\//gi, "-")
+          // });
+        }
+        this.$nextTick(() => {
+          this.$refs.chatRef.scrollTop = this.$refs.chatRef.scrollHeight;
+        });
+        this.loading = false;
+      }, 5000);
+      // this.chatList.push({
+      // 	role:"user",
+      // 	content:this.text,
+      // 	time:"2023-11-11 11:10:11"
+      // },{
+      // 	role:"ai",
+      // 	content:`小朋友,你真棒!`,//这里需要调用接口
+      // 	time:"2023-11-11 11:10:11"
+      // })
+      // this.text = "";
+      // // 元素滚动条触底
+      // this.$nextTick(() => {
+      //   this.$refs.chatRef.scrollTop = this.$refs.chatRef.scrollHeight;
+      // });
+    },
+    sendAiIdea(text) {
+			if (this.loading) return this.$message.info("请稍等");
+      this.text = text;
+      this.send();
+    },
+    sendImage() {
+      this.$message.info("发送图片");
+    },
+    sendVideo() {
+      this.$message.info("发送视频");
+    }
+  }
+};
 </script>
 
 <style scoped>
-.search{
-	width: 100%;
-	height: 100%;
-	box-sizing: border-box;
-}
-
-.s_top{
-	width: 100%;
-	height: calc(100% - 90px);
-	overflow-x: hidden;
-	box-sizing: border-box;
-	padding: 20px 0;
-}
-
-.s_t_chat{
-	width: 100%;
-	display: flex;
-	box-sizing: border-box;
-	padding: 10px;
-}
-
-.s_t_chat>div{
-	display: flex;
-	align-items: flex-start;
-	width: 100%;
-}
-
-.s_t_c_user{
-	box-sizing: border-box;
-	padding-left: 35px;
-}
-
-.s_t_c_u_left{
-	width: 90%;
-	height: auto;
-}
-
-.s_t_c_u_l_content{
-	width: auto;
-	max-width: 100%;
-	height: auto;
-	box-sizing: border-box;
-	padding: 10px;
-	color: white;
-	background-color: #3681FC;
-	border-radius: 8px 2px 8px 8px;
-  white-space: pre-line;
-	word-break: break-all;
-}
-
-
-.s_t_c_a_r_contentImage>span{
-	display: block;
-}
-
-.s_t_c_a_r_contentImage>img{
-	width: 45%;
-	height: 125px;
-	margin: 1% 1.5%;
-	cursor: pointer;
-}
-
-.s_t_c_a_r_contentImage{
-	width: auto;
-	max-width: 100%;
-	height: auto;
-	box-sizing: border-box;
-	padding: 10px;
-	background-color: #F6F8FF;
-	border-radius: 2px 8px 8px 8px;
+.search {
+  width: 100%;
+  height: 100%;
+  box-sizing: border-box;
+}
+.imgNumberBlock{
+  width: 100%;
+  height: 30px;
+  display: flex;
+  justify-content: space-between;
+  box-sizing: border-box;
+  /* padding: 5px 10px; */
+}
+.imgNumberBlock > .imgNumber {
+  width: 18%;
+  height: 30px;
+  white-space:initial;
+  background: rgba(224, 234, 251, 1);
+  border-radius: 5px; 
+  display: flex;
+  align-items: center;
+  cursor: pointer;
+  justify-content: center;
+}
+
+.s_top {
+  width: 100%;
+  height: calc(100% - 90px);
+  overflow-x: hidden;
+  box-sizing: border-box;
+  padding: 20px 0;
+}
+
+.s_t_chat {
+  width: 100%;
+  display: flex;
+  box-sizing: border-box;
+  padding: 10px;
+}
+
+.s_t_chat > div {
+  display: flex;
+  align-items: flex-start;
+  width: 100%;
+}
+
+.s_t_c_user {
+  box-sizing: border-box;
+  padding-left: 35px;
+}
+
+.s_t_c_u_left {
+  width: 90%;
+  height: auto;
+}
+
+.s_t_c_u_l_content {
+  width: auto;
+  max-width: 100%;
+  height: auto;
+  box-sizing: border-box;
+  padding: 10px;
+  color: white;
+  background-color: #3681fc;
+  border-radius: 8px 2px 8px 8px;
   white-space: pre-line;
-	word-break: break-all;
-}
-
-.s_t_c_u_l_time{
-	width: 100%;
-	display: flex;
-	justify-content: flex-end;
-	font-size: 12px;
-	color: #9F9F9F;
-	margin-top: 5px;
-}
-
-.s_t_c_u_right{
-	width: 35px;
-	height: 35px;
-	display: flex;
-	justify-content: center;
-	margin-left: 5px
-}
-
-.s_t_c_u_right>span{
-	width: 32px;
-	height: 32px;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	color: white;
-	background-color: #3681FC;
-	border-radius: 50%;;
+  word-break: break-all;
 }
 
-.s_t_c_ai{
-	box-sizing: border-box;
-	padding-right: 35px;
+.s_t_c_a_r_contentImage > span {
+  display: block;
 }
 
-.s_t_c_a_right{
-	min-width: 90%;
-	height: auto;
+.s_t_c_a_r_contentImage > img {
+  width: 45%;
+  height: 125px;
+  margin: 1% 1.5%;
+  border-radius: 5px;
+  cursor: pointer;
 }
 
-.s_t_c_a_r_content{
-	width: auto;
-	max-width: 100%;
-	height: auto;
-	box-sizing: border-box;
-	padding: 10px;
-	background-color: #F6F8FF;
-	border-radius: 2px 8px 8px 8px;
+.s_t_c_a_r_contentImage {
+  width: auto;
+  max-width: 100%;
+  height: auto;
+  box-sizing: border-box;
+  padding: 10px;
+  background-color: #f6f8ff;
+  border-radius: 2px 8px 8px 8px;
   white-space: pre-line;
-	word-break: break-all;
-}
-
-.s_t_c_a_r_content2{
-	background-color: #F6F8FF;
-	width: 100%;
-	height: auto;
-	box-sizing: border-box;
-	padding: 10px;
-	border-radius: 2px 8px 8px 8px;
-	box-shadow: 0 0px 10px #c5cbee;
-}
-
-.s_t_c_a_r_c_title{
-	display: flex;
-	align-items: center;
-}
-.s_t_c_a_r_c_title>img{
-	width: 16px;
-	height: 16px;
-}
-
-.s_t_c_a_r_c_item{
-	width: 100%;
-	height: auto;
-	box-sizing: border-box;
-	padding: 10px;
-	background-color: #FFFFFF;
-	border-radius: 5px;
-	margin-top: 5px;
-	color: #666666;
-	font-size: 14px;
-	cursor: pointer;
-}
-
-.s_t_c_a_r_c_item:hover{
-	border: solid #B8D2FE 1px;
-	box-shadow: 0 0 5px 2px #B8D2FE;
-}
-
-.s_t_c_a_r_c_title>span{
-	font-weight: bold;
-}
-
-
-.s_t_c_a_r_time{
-	width: 100%;
-	display: flex;
-	justify-content: flex-start;
-	font-size: 12px;
-	color: #9F9F9F;
-	margin-top: 5px;
+  word-break: break-all;
 }
 
-.s_t_c_a_left{
-	width: 35px;
-	height: 35px;
-	display: flex;
-	justify-content: center;
-	margin-right: 5px
+.s_t_c_u_l_time {
+  width: 100%;
+  display: flex;
+  justify-content: flex-end;
+  font-size: 12px;
+  color: #9f9f9f;
+  margin-top: 5px;
 }
 
-.s_t_c_a_left>span{
-	width: 32px;
-	height: 32px;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	color: white;
-	background-color: #3681FC;
-	border-radius: 50%;
-}
-
-.s_bottom{
-	width: 100%;
-	height: 90px;
-	display: flex;
-	flex-direction: column;
-	justify-content: space-between;
-}
-
-.s_b_btnArea{
-	width: 100%;
-	height: 30px;
-	display: flex;
-	align-items: center;
-	box-sizing: border-box;
-	padding: 0 10px;
+.s_t_c_u_right {
+  width: 35px;
+  height: 35px;
+  display: flex;
+  justify-content: center;
+  margin-left: 5px;
 }
 
-.s_b_ba-item{
-	width: auto;
-	box-sizing: border-box;
-	padding: 0 10px;
-	height: 25px;
-	background-color: white;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	/* 阴影 */
-	box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.363);
-	border-radius: 15px;
-	font-size: 14px;
-	cursor: pointer;
-	margin-right: 10px;
+.s_t_c_u_right > span {
+  width: 32px;
+  height: 32px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  color: white;
+  background-color: #3681fc;
+  border-radius: 50%;
 }
 
-
-.s_b_inputArea{
-	width: 100%;
-	height: 55px;
-	box-sizing: border-box;
-	border-top: solid 1px #EDEDED;
-	display: flex;
-	justify-content: center;
-	align-items: center;
+.s_t_c_ai {
+  box-sizing: border-box;
+  padding-right: 35px;
+  position: relative;
 }
 
-.s_b_tape{
-	width: 35px;
-	height: 35px;
-	background: url("../../../assets/icon/course/tape.png") no-repeat;
-	background-size: 50% 60%;
-	background-position: center;
-	cursor: pointer;
+.aiCopy{
+  position: absolute;
+  right: 5px;
+  bottom: 0%;
+  transform: translate(0,-30%);
+  cursor: pointer;
 }
 
-.s_b_input{
-	width: 65%;
-	height: 45px;
-	background-color: #F3F3F3;
-	border-radius: 50px;
-	margin: 0 10px;
-	display: flex;
-	align-items: center;
+.s_t_c_a_right {
+  min-width: 90%;
+  height: auto;
 }
 
-.s_b_i_left{
-	width: calc(100% - 45px);
-	height: 100%;
-}
-
-.s_b_i_left>>>.el-input__inner{
-	border: none;
-	background-color: #F3F3F3;
-	outline: none;
-	border-radius: 50px 0 0 50px;
-}
-
-
-.s_b_i_right{
-	width: 45px;
-	height: 45px;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-}
-
-.s_b_i_right>span{
-	width: 35px;
-	height: 35px;
-	background: url("../../../assets/icon/course/file.png") no-repeat;
-	background-size: 50% 60%;
-	background-position: center;
-	cursor: pointer;
-}
-
-.s_b_btn{
-	width: 40px;
-	height: 40px;
-	background-color: #3681FC;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	border-radius: 50%;
-	cursor: pointer;
-}
-
-.s_b_btn>span{
-	width: 30px;
-	height: 30px;
-	background: url("../../../assets/icon/course/send.png") no-repeat;
-	background-size: 70% 70%;
-	background-position: center;
-	
-}
-
-
-
-</style>
+.s_t_c_a_r_content {
+  width: auto;
+  max-width: 100%;
+  height: auto;
+  box-sizing: border-box;
+  padding: 10px;
+  background-color: #f6f8ff;
+  border-radius: 2px 8px 8px 8px;
+  white-space: pre-line;
+  word-break: break-all;
+}
+
+.s_t_c_a_r_content2 {
+  background-color: #f6f8ff;
+  width: 100%;
+  height: auto;
+  box-sizing: border-box;
+  padding: 10px;
+  border-radius: 2px 8px 8px 8px;
+  box-shadow: 0 0px 10px #c5cbee;
+}
+
+.s_t_c_a_r_c_title {
+  display: flex;
+  align-items: center;
+}
+.s_t_c_a_r_c_title > img {
+  width: 16px;
+  height: 16px;
+}
+
+.s_t_c_a_r_c_item {
+  width: 100%;
+  height: auto;
+  box-sizing: border-box;
+  padding: 10px;
+  background-color: #ffffff;
+  border-radius: 5px;
+  margin-top: 10px;
+  color: #666666;
+  font-size: 14px;
+  cursor: pointer;
+  border: solid #ffffff 1px;
+  box-shadow: 0 0 5px 2px #ffffff;
+}
+
+.s_t_c_a_r_c_item:hover {
+  border: solid #b8d2fe 1px;
+  box-shadow: 0 0 5px 2px #b8d2fe;
+}
+
+.s_t_c_a_r_c_title > span {
+  font-weight: bold;
+}
+
+.s_t_c_a_r_time {
+  width: 100%;
+  display: flex;
+  justify-content: flex-start;
+  font-size: 12px;
+  color: #9f9f9f;
+  margin-top: 5px;
+}
+
+.s_t_c_a_left {
+  width: 35px;
+  height: 35px;
+  display: flex;
+  justify-content: center;
+  margin-right: 5px;
+}
+
+.s_t_c_a_left > span {
+  width: 32px;
+  height: 32px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  color: white;
+  background-color: #3681fc;
+  border-radius: 50%;
+}
+
+.s_bottom {
+  width: 100%;
+  height: 90px;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+}
+
+.s_b_btnArea {
+  width: 100%;
+  height: 30px;
+  display: flex;
+  align-items: center;
+  box-sizing: border-box;
+  padding: 0 10px;
+}
+
+.s_b_ba-item {
+  width: auto;
+  box-sizing: border-box;
+  padding: 0 10px;
+  height: 25px;
+  background-color: white;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  /* 阴影 */
+  box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.363);
+  border-radius: 15px;
+  font-size: 14px;
+  cursor: pointer;
+  margin-right: 10px;
+}
+
+.s_b_inputArea {
+  width: 100%;
+  height: 55px;
+  box-sizing: border-box;
+  border-top: solid 1px #ededed;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.s_b_tape {
+  width: 35px;
+  height: 35px;
+  background: url("../../../assets/icon/course/tape.png") no-repeat;
+  background-size: 50% 60%;
+  background-position: center;
+  cursor: pointer;
+}
+
+.s_b_input {
+  width: 65%;
+  height: 45px;
+  background-color: #f3f3f3;
+  border-radius: 50px;
+  margin: 0 10px;
+  display: flex;
+  align-items: center;
+}
+
+.s_b_i_left {
+  width: calc(100% - 45px);
+  height: 100%;
+}
+
+.s_b_i_left >>> .el-input__inner {
+  border: none;
+  background-color: #f3f3f3;
+  outline: none;
+  border-radius: 50px 0 0 50px;
+}
+
+.s_b_i_right {
+  width: 45px;
+  height: 45px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.s_b_i_right > span {
+  width: 35px;
+  height: 35px;
+  background: url("../../../assets/icon/course/file.png") no-repeat;
+  background-size: 50% 60%;
+  background-position: center;
+  cursor: pointer;
+}
+
+.s_b_btn {
+  width: 40px;
+  height: 40px;
+  background-color: #3681fc;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  border-radius: 50%;
+  cursor: pointer;
+}
+
+.s_b_btn > span {
+  width: 30px;
+  height: 30px;
+  background: url("../../../assets/icon/course/send.png") no-repeat;
+  background-size: 70% 70%;
+  background-position: center;
+}
+</style>

+ 44 - 19
src/components/classRoomHelper/component/taskArea.vue

@@ -1,5 +1,5 @@
 <template>
-	<div class="task" v-loading="loading">
+	<div class="task">
 		<div class="taskTop">
 			<div class="tt_title">任务时间分配</div>
 			<div class="tt_item">
@@ -66,7 +66,7 @@
 						<span>Ai</span>
 					</div>
 					<div class="t_t_c_a_right">
-						<div class="t_t_c_a_r_content" v-html="item.content"></div>
+						<div class="t_t_c_a_r_content" v-loading="loading && index == chatList.length - 1" v-html="item.content"></div>
 						<div class="t_t_c_a_r_time">{{item.time}}</div>
 					</div>
 					
@@ -77,15 +77,15 @@
 		<div class="t_bottom">
 			<div class="t_b_btnArea">
 				<!-- <div class="s_b_ba-item" @click.stop="choiceRole()">选择角色</div> -->
-				<div class="t_b_ba-item" @click="sendType('智能总结')">智能总结</div>
-				<div class="t_b_ba-item" @click="sendType('智能出题')">智能出题</div>
-				<div class="t_b_ba-item" @click="sendType('优秀标兵')">优秀标兵</div>
-				<div class="t_b_ba-item" @click="sendType('扩展知识')">扩展知识</div>
+				<div class="t_b_ba_item" @click="sendType('智能总结')">智能总结</div>
+				<div class="t_b_ba_item" @click="sendType('智能出题')">智能出题</div>
+				<!-- <div class="t_b_ba_item" @click="sendType('优秀标兵')">优秀标兵</div> -->
+				<div class="t_b_ba_item" @click="sendType('扩展知识')">扩展知识</div>
 			</div>
 			<div class="t_b_inputArea">
 				<div class="t_b_tape" @click="goTape()"></div>
 				<div class="t_b_input">
-					<el-input class="t_b_i_left" v-model="text"></el-input>
+					<el-input :disabled="loading" @keyup.enter.native="send()" class="t_b_i_left" v-model="text"></el-input>
 					<div class="t_b_i_right" @click="sendFile()">
 						<span></span>
 					</div>
@@ -132,20 +132,33 @@
 				this.cardType = 1;
 			},
 			sendFile(){
+				if (this.loading) return this.$message.info("请稍等");
 				this.$message.info("点击了附件")
 			},
 			goTape(){
+				if (this.loading) return this.$message.info("请稍等");
 				this.$message.info(`点击了语音`)
 			},
 			send(){
+				if (this.loading) return this.$message.info("请稍等");
+				if(this.text.trim().length==0)return this.$message.info("请输入内容")
 				this.loading = true;
-
+				this.chatList.push({
+					role:"user",
+					content:this.text,
+					time:new Date().toLocaleString().replace(/\//ig,'-')
+				})
+				
+				this.chatList.push({
+					role:"ai",
+					content:"",
+					time:new Date().toLocaleString().replace(/\//ig,'-')
+				})
+				this.$nextTick(() => {
+				  this.$refs.chatRef.scrollTop = this.$refs.chatRef.scrollHeight;
+				});;
 				setTimeout(()=>{
-					this.chatList.push({
-						role:"user",
-						content:this.text,
-						time:new Date().toLocaleString().replace(/\//ig,'-')
-					})
+					
 
 					let aiContent="对不起,这个问题我回答不了。"
 
@@ -198,11 +211,15 @@ b.学生可以创建一个“绿色挑战”活动,鼓励家庭成员减少垃
 通过这些扩展活动,学生不仅能够加深对垃圾问题的理解,还能学习到如何在日常生活中实际应用这些知识,从而更有效地保护我们的环境。`;
 							break;
 					}
-					this.chatList.push({
-						role:"ai",
-						content:aiContent,
-						time:new Date().toLocaleString().replace(/\//ig,'-')
-					})
+					this.chatList[this.chatList.length - 1].content = aiContent;
+          this.chatList[
+            this.chatList.length - 1
+          ].time = new Date().toLocaleString().replace(/\//gi, "-");
+					// this.chatList.push({
+					// 	role:"ai",
+					// 	content:aiContent,
+					// 	time:new Date().toLocaleString().replace(/\//ig,'-')
+					// })
 					this.text = "";
 					this.$nextTick(() => {
 					  this.$refs.chatRef.scrollTop = this.$refs.chatRef.scrollHeight;
@@ -225,6 +242,8 @@ b.学生可以创建一个“绿色挑战”活动,鼓励家庭成员减少垃
 				// });;
 			},
 			sendType(text){
+				
+				if (this.loading) return this.$message.info("请稍等");
 				this.text = text;
 				this.send();
 			},
@@ -305,6 +324,7 @@ b.学生可以创建一个“绿色挑战”活动,鼓励家庭成员减少垃
 	height: 30px;
 	display: flex;
 	justify-content: center;
+	align-items: center;
 	box-sizing: border-box;
 	border: solid 1px #E0EAFB;
 	color: #626466;
@@ -530,7 +550,7 @@ b.学生可以创建一个“绿色挑战”活动,鼓励家庭成员减少垃
 	overflow-y: hidden;
 }
 
-.t_b_ba-item{
+.t_b_ba_item{
 	width: auto;
 	box-sizing: border-box;
 	padding: 0 10px;
@@ -546,6 +566,11 @@ b.学生可以创建一个“绿色挑战”活动,鼓励家庭成员减少垃
 	cursor: pointer;
 	margin-right: 10px;
 	white-space: nowrap;
+	transition: .3s;
+}
+
+.t_b_ba_item:hover{
+	background-color: rgb(236, 236, 236);
 }
 
 

+ 17 - 5
src/components/components/onlineWrite.vue

@@ -189,7 +189,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPG",
         "TIF",
         "PCX",
@@ -295,7 +295,16 @@ export default {
             content: [
               {
                 type: "text",
-                text: "这张图片里面有哪些文字?返回格式为{title:标题,content:内容}",
+                text: `NOTICE
+Role: 你是一个专门解读图片的大师,你可以把图片里面的文字全部提取出来,然后根据Format example的要求返回
+ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
+
+-----
+## Format example
+{
+    "title":"标题",
+    "content":"内容"
+}`,
               },
               {
                 type: "image_url",
@@ -326,12 +335,15 @@ export default {
             : "";
           try {
             aiImageNav = JSON.parse(aiImageNav);
+            this.myAnswerList.engTitle = aiImageNav.title;
+            this.myAnswerList.engText = aiImageNav.content;
           } catch (error) {
-            this.getImageNav();
+            // this.getImageNav();
+            this.myAnswerList.engTitle = '';
+            this.myAnswerList.engText = aiImageNav;
           }
           console.log(aiImageNav);
-          this.myAnswerList.engTitle = aiImageNav.title;
-          this.myAnswerList.engText = aiImageNav.content;
+
           this.type = 1;
           loading.close();
         },

+ 8 - 6
src/components/courseDetail.vue

@@ -217,7 +217,9 @@
                       ? "阶段模式"
                       : courseDetail.state == 2
                       ? "任务模式"
-                      : "极简模式"
+                      : courseDetail.state == 3
+                      ? "极简模式"
+                      : "AI模式"
                   }}
                 </div></span
               >
@@ -242,7 +244,7 @@
                 <div class="jdAndTask">
                   <div>第{{ index + 1 }}阶段</div>
                   <div
-                    v-if="courseDetail.state == 2 || courseDetail.state == 3"
+                    v-if="courseDetail.state == 2 || courseDetail.state == 3 || courseDetail.state == 4"
                   >
                     任务查看
                   </div>
@@ -1273,7 +1275,7 @@ export default {
               this.screenType
           );
         }
-      } else if (this.courseDetail.state == 3) {
+      } else if (this.courseDetail.state == 3 || this.courseDetail.state == 4) {
         if (this.classList.length) {
           this.goTo(
             "/studystudentE3?type=" +
@@ -1329,8 +1331,8 @@ export default {
 							type:"error",
 						}).then(() => {
 							if(this.courseDetail.state == 1 || this.courseDetail.state == 2){
-								window.parent.postMessage({ tools: "openCourseUpdate",cid:this.id }, "*");
-							}else if(this.courseDetail.state == 3){
+								window.parent.postMessage({ tools: "openNewCourseUpdate",cid:this.id }, "*");
+							}else if(this.courseDetail.state == 3 || this.courseDetail.state == 4){
 								window.parent.postMessage({ tools: "openCourseEUpdate",cid:this.id }, "*");
 							}
 
@@ -1432,7 +1434,7 @@ export default {
                   "&screenType=" +
                   this.screenType
               );
-            } else if (this.courseDetail.state == 3) {
+            } else if (this.courseDetail.state == 3 || this.courseDetail.state == 4) {
               this.goTo(
                 "/studystudentE3?type=" +
                   i +

+ 2 - 2
src/components/easy/studyStudent.vue

@@ -4245,7 +4245,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPG",
         "TIF",
         "PCX",
@@ -4494,7 +4494,7 @@ export default {
           "BMP",
           "GIF",
           "PNG",
-          "JPGE",
+          "JPEG",
           "JPG",
           "TIF",
           "PCX",

+ 19 - 6
src/components/easy2/commpont/onlineWrite.vue

@@ -189,7 +189,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPG",
         "TIF",
         "PCX",
@@ -295,7 +295,16 @@ export default {
             content: [
               {
                 type: "text",
-                text: "这张图片里面有哪些文字?返回格式为{title:标题,content:内容}",
+                text: `NOTICE
+Role: 你是一个专门解读图片的大师,你可以把图片里面的文字全部提取出来,然后根据Format example的要求返回
+ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
+
+-----
+## Format example
+{
+    "title":"标题",
+    "content":"内容"
+}`,
               },
               {
                 type: "image_url",
@@ -324,14 +333,18 @@ export default {
           let aiImageNav = res.data.FunctionResponse.choices
             ? res.data.FunctionResponse.choices[0].message.content
             : "";
-          try {
+            try {
             aiImageNav = JSON.parse(aiImageNav);
+            this.myAnswerList.engTitle = aiImageNav.title;
+            this.myAnswerList.engText = aiImageNav.content;
           } catch (error) {
-            this.getImageNav();
+            // this.getImageNav();
+            this.myAnswerList.engTitle = '';
+            this.myAnswerList.engText = aiImageNav;
           }
           console.log(aiImageNav);
-          this.myAnswerList.engTitle = aiImageNav.title;
-          this.myAnswerList.engText = aiImageNav.content;
+          // this.myAnswerList.engTitle = aiImageNav.title;
+          // this.myAnswerList.engText = aiImageNav.content;
           this.type = 1;
           loading.close();
         },

+ 2 - 2
src/components/easy2/studyStudent jiu.vue

@@ -14660,7 +14660,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPG",
         "TIF",
         "PCX",
@@ -14910,7 +14910,7 @@ export default {
           "BMP",
           "GIF",
           "PNG",
-          "JPGE",
+          "JPEG",
           "JPG",
           "TIF",
           "PCX",

+ 25 - 3
src/components/easy2/studyStudent.vue

@@ -12359,7 +12359,7 @@ export default {
           {
             role: "user",
             content:
-              "你的任务是为文字内容进行批注,请依照以下步骤完成任务,并仅显示第二步完成的内容:1.校对并更正:" + t,
+               `Role: 你是一名小学英语作文的老师,根据这篇文章的内容你去批改这篇文章,然后仅输出一篇纠错好的文章。文章:${t}`,
           },
         ],
         uid: this.userid,
@@ -15012,6 +15012,28 @@ export default {
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
                   this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
+                } else if (b[j].type == 16 && a[i].tool[0] == 69) {
+                  //选择题
+                  let _work = {
+                    userid: b[j].userid,
+                    ateacher: b[j].ateacher,
+                    wid: b[j].id,
+                    works: b[j].content,
+                    sName: b[j].name,
+                    type: 16,
+                    time: b[j].time,
+                    score: b[j].score,
+                    img: b[j].img,
+                    likesCount: likesCount,
+                    commentCount: commentCount,
+                    isLikes: isLikes,
+                    commentJson: commentJson,
+                    aiCode: b[j].aiCode,
+                    teacherCode: b[j].teacherCode
+                  };
+                  _worksStudent[i].push(_work);
+                  _worksStudent2[i].push(_work);
+                  this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
                 } else if (b[j].type == 17 && a[i].tool[0] == 70) {
                   //选择题
                   let _work = {
@@ -15343,7 +15365,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPEG",
         "JPG",
         "TIF",
@@ -15594,7 +15616,7 @@ export default {
           "BMP",
           "GIF",
           "PNG",
-          "JPGE",
+          "JPEG",
           "JPG",
           "TIF",
           "PCX",

+ 19 - 6
src/components/easy3/commpont/onlineWrite.vue

@@ -189,7 +189,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPG",
         "TIF",
         "PCX",
@@ -295,7 +295,16 @@ export default {
             content: [
               {
                 type: "text",
-                text: "这张图片里面有哪些文字?返回格式为{title:标题,content:内容}",
+                text: `NOTICE
+Role: 你是一个专门解读图片的大师,你可以把图片里面的文字全部提取出来,然后根据Format example的要求返回
+ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
+
+-----
+## Format example
+{
+    "title":"标题",
+    "content":"内容"
+}`,
               },
               {
                 type: "image_url",
@@ -324,14 +333,18 @@ export default {
           let aiImageNav = res.data.FunctionResponse.choices
             ? res.data.FunctionResponse.choices[0].message.content
             : "";
-          try {
+            try {
             aiImageNav = JSON.parse(aiImageNav);
+            this.myAnswerList.engTitle = aiImageNav.title;
+            this.myAnswerList.engText = aiImageNav.content;
           } catch (error) {
-            this.getImageNav();
+            // this.getImageNav();
+            this.myAnswerList.engTitle = '';
+            this.myAnswerList.engText = aiImageNav;
           }
           console.log(aiImageNav);
-          this.myAnswerList.engTitle = aiImageNav.title;
-          this.myAnswerList.engText = aiImageNav.content;
+          // this.myAnswerList.engTitle = aiImageNav.title;
+          // this.myAnswerList.engText = aiImageNav.content;
           this.type = 1;
           loading.close();
         },

+ 2 - 2
src/components/easy3/studyStudent jiu.vue

@@ -14680,7 +14680,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPG",
         "TIF",
         "PCX",
@@ -14930,7 +14930,7 @@ export default {
           "BMP",
           "GIF",
           "PNG",
-          "JPGE",
+          "JPEG",
           "JPG",
           "TIF",
           "PCX",

+ 3 - 3
src/components/easy3/studyStudent.vue

@@ -12351,7 +12351,7 @@ export default {
           {
             role: "user",
             content:
-              "你的任务是为文字内容进行批注,请依照以下步骤完成任务,并仅显示第二步完成的内容:1.校对并更正:" + t,
+               `Role: 你是一名小学英语作文的老师,根据这篇文章的内容你去批改这篇文章,然后仅输出一篇纠错好的文章。文章:${t}`,
           },
         ],
         uid: this.userid,
@@ -15360,7 +15360,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPEG",
         "JPG",
         "TIF",
@@ -15611,7 +15611,7 @@ export default {
           "BMP",
           "GIF",
           "PNG",
-          "JPGE",
+          "JPEG",
           "JPG",
           "TIF",
           "PCX",

+ 2 - 2
src/components/noTerminal/studyStudent.vue

@@ -7447,7 +7447,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPG",
         "TIF",
         "PCX",
@@ -7696,7 +7696,7 @@ export default {
           "BMP",
           "GIF",
           "PNG",
-          "JPGE",
+          "JPEG",
           "JPG",
           "TIF",
           "PCX",

+ 1 - 1
src/components/study.vue

@@ -4213,7 +4213,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPG",
         "TIF",
         "PCX",

+ 3 - 3
src/components/studyStudent.vue

@@ -12330,7 +12330,7 @@ export default {
           {
             role: "user",
             content:
-              "你的任务是为文字内容进行批注,请依照以下步骤完成任务,并仅显示第二步完成的内容:1.校对并更正:" + t,
+               `Role: 你是一名小学英语作文的老师,根据这篇文章的内容你去批改这篇文章,然后仅输出一篇纠错好的文章。文章:${t}`,
           },
         ],
         uid: this.userid,
@@ -15335,7 +15335,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPEG",
         "JPG",
         "TIF",
@@ -15586,7 +15586,7 @@ export default {
           "BMP",
           "GIF",
           "PNG",
-          "JPGE",
+          "JPEG",
           "JPG",
           "TIF",
           "PCX",

+ 107 - 68
src/components/studyStudentXin.vue

@@ -39,7 +39,13 @@
       <div class="pb_left" v-else-if="!(IsFollow && tType == 2)">
         <!-- <div class="courseTitle">{{ courseDetail.title }}</div> -->
         <div style="border-bottom: 1px solid #cad1dc; width: 100%">
-          <div class="courseTitle" :style="{ margin: tcid && inviteCode && '10px auto 0px'}">
+          <!-- <div class="courseTitle" :style="{ margin: tcid && inviteCode && '10px auto 0px'}"> -->
+          <div class="courseTitle">
+            <el-tooltip effect="light" content="收缩" placement="top">
+              <div class="mlImg" @click="setContent2(false)">
+                  <img src="../assets/icon/newIcons/launch.png" alt="" />
+              </div>
+            </el-tooltip>
             <div
               style="
                 max-width: calc(100% - 40px);
@@ -61,16 +67,15 @@
                 </div>
               </el-tooltip>
             </div>
-            <el-tooltip effect="light" content="收缩" placement="top">
+            <!-- <el-tooltip effect="light" content="收缩" placement="top">
               <div class="mlImg" @click="setContent2(false)">
                 <img src="../assets/icon/newIcons/isRight.png" alt="" />
               </div>
-            </el-tooltip>
+            </el-tooltip> -->
           </div>
           <div
             class="inviteBox"
             v-if="tcid && inviteCode"
-            style="padding: 0 0 8px 0"
           >
             <div>
               <span>随机码:{{ inviteCode }}</span>
@@ -90,6 +95,9 @@
                 // stageBoxIsCss: stageIndex == courseType,
                }"
             >
+              <div class="closeTri" :style="{transform:item.isOpen ? 'rotate(0deg)' : 'rotate(-90deg)'}">
+                <img src="../assets/icon/newIcons/chevronUp.png" alt />
+              </div>
               <div class="stageItemTitle" :class="{ stageNav: item.isOpen }">
                 <div>阶段{{ stageIndex + 1 }}</div>
                 <el-tooltip
@@ -105,9 +113,7 @@
               <!-- <div class="closeTri" v-if="stageIndex == courseType" :style="{transform:item.isOpen ? 'rotate(0deg)' : 'rotate(-90deg)'}">
                 <img src="../assets/icon/newIcons/downC.png" alt />
               </div> -->
-              <div class="closeTri" :style="{transform:item.isOpen ? 'rotate(90deg)' : 'rotate(0deg)'}">
-                <img src="../assets/icon/newIcons/right.png" alt />
-              </div>
+             
             </div>
             <div class="stageChild" :class="{ navActive: item.isOpen }">
               <div v-for="(nav, navIndex) in item.task" :key="navIndex">
@@ -126,14 +132,14 @@
                       v-if="navIndex == taskCount && nav.id == navId && stageIndex == courseType"
                       @click="openTask(stageIndex, navIndex, nav.id)"
                     >
-                      <img :style="{transform: nav.isOpen ? 'rotate(0deg)':'rotate(270deg)'}" src="../assets/icon/newIcons/bDown2.png" alt />
+                      <img :style="{transform: nav.isOpen ? 'rotate(0deg)':'rotate(270deg)'}" src="../assets/icon/newIcons/chevronUp.png" alt />
                     </div>
                     <div
                       class="closeTri1"
                       v-else
                       @click="openTask(stageIndex, navIndex, nav.id)"
                     >
-                      <img :style="{transform: nav.isOpen ? 'rotate(90deg)':'rotate(0deg)'}" src="../assets/icon/newIcons/right.png" alt />
+                      <img :style="{transform: nav.isOpen ? 'rotate(-90deg)':'rotate(-90deg)'}" src="../assets/icon/newIcons/chevronUp.png" alt />
                     </div>
                   </div>
                   <div v-else class="noToolBlue"></div>
@@ -258,7 +264,7 @@
             </el-tooltip>
           </div>
           <div class="btnAll">
-            <div class="btnLeft">
+            <!-- <div class="btnLeft">
               <el-tooltip effect="light" content="刷新" placement="top">
                 <div class="reBtnIcon" @click="refreshCourse">
                   <span>刷新</span>
@@ -283,8 +289,8 @@
                   </div>
                 </el-tooltip>
               </div>
-            </div>
-            <div class="btnRight">
+            </div> -->
+            <!-- <div class="btnRight">
               <div
                 class="last"
                 @click="nextOrpreSteps(0)"
@@ -368,7 +374,7 @@
                 </div>
                 <div class="lastText" style="color: #000">返回</div>
               </div>
-            </div>
+            </div> -->
 
             <!-- <div
               class="returnBtn lockIcon"
@@ -649,8 +655,8 @@
                   >
                     <div class="navCorOpenBox">
                       <div class="navTitile">内容列表:</div>
-                      <div class="navCorOpen" @click="setContent(false)">
-                        <img src="../assets/icon/newIcons/isRight.png" alt="" />
+                      <div class="navCorOpen" style="transform:rotate(180deg)" @click="setContent(false)">
+                        <img src="../assets/icon/newIcons/launch.png" alt="" />
                       </div>
                     </div>
                     <div class="navBox">
@@ -665,26 +671,36 @@
                           class="vedioTimeBox"
                           v-for="(vitem, vindex) in vChapterData[taskCount]"
                           :key="vindex + '1'"
+                          
                         >
-                          <div class="navListItem" v-if="vitem.type == 2">
+                          <div class="navListItem" :class="isClickNav == vindex ? 'isClickNav' : ''" v-if="vitem.type == 2">
                             <div
                               @click="lookVedio(vitem.url, vindex)"
                               class="navText"
-                              :class="isClickNav == vindex ? 'isClickNav' : ''"
+                              
                             >
                               <span v-if="vitem.text">{{ vitem.text }}-</span
                               >{{ vitem.name }}
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
-                              <img src="../assets/icon/newIcon/down.png" alt />
+
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)"> -->
+                            <div class="downIcon">
+                              <img src="https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame56551715423909783.png" alt="">
+
+                              <!-- <img
+                                :src="isClickNav == vindex ?'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame1111715423625357.png':'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame2221715423643605.png'"
+                                alt
+                              /> -->
                             </div>
+                            <img :src="isClickNav == vindex ? 'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame99991715423519837.png':'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/download21715423345632.png'" alt />
+
                           </div>
 
-                          <div class="navListItem" v-if="vitem.type == 6">
+                          <div class="navListItem" :class="isClickNav == vindex ? 'isClickNav' : ''" v-if="vitem.type == 6">
                             <div
                               @click="lookText(taskCount, vindex)"
                               class="navText"
-                              :class="isClickNav == vindex ? 'isClickNav' : ''"
+                              
                             >
                               {{ vitem.name }}.doc
                             </div>
@@ -692,20 +708,24 @@
                               class="downIcon"
                               @click="checkFileFull1(vitem.type, vitem)"
                             >
+                            <!-- <img src="https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame56551715423909783.png" alt=""> -->
                               <img
-                                src="../assets/icon/newIcon/allScreen.png"
+                                :src="isClickNav == vindex ?'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame1111715423625357.png':'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame2221715423643605.png'"
                                 alt
                               />
                             </div>
+                            <img :src="isClickNav == vindex ? 'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame99991715423519837.png':'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/download21715423345632.png'" alt />
+
                           </div>
                           <div
                             class="navListItem"
+                            :class="isClickNav == vindex ? 'isClickNav' : ''"
                             v-if="vitem.type == 8 || vitem.type == 14"
                           >
                             <div
                               @click="doUrl(vitem.url, vindex)"
                               class="navText"
-                              :class="isClickNav == vindex ? 'isClickNav' : ''"
+                              
                             >
                               {{ vitem.title ? vitem.title : vitem.url }}
                             </div>
@@ -713,17 +733,20 @@
                               class="downIcon"
                               @click="checkFileFull1(vitem.type, vitem)"
                             >
-                              <img
-                                src="../assets/icon/newIcon/allScreen.png"
+                            <!-- <img src="https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame56551715423909783.png" alt=""> -->
+                            <img
+                                :src="isClickNav == vindex ?'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame1111715423625357.png':'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame2221715423643605.png'"
                                 alt
                               />
                             </div>
+                            <img :src="isClickNav == vindex ? 'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame99991715423519837.png':'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/download21715423345632.png'" alt />
+
                           </div>
-                          <div class="navListItem" v-if="vitem.type == 3">
+                          <div class="navListItem" :class="isClickNav == vindex ? 'isClickNav' : ''" v-if="vitem.type == 3">
                             <div
                               @click="downFile(vitem, vindex)"
                               class="navText"
-                              :class="isClickNav == vindex ? 'isClickNav' : ''"
+                              
                             >
                               <span v-if="vitem.text">{{ vitem.text }}-</span
                               >{{ vitem.name }}
@@ -732,14 +755,13 @@
                               class="downIcon"
                               @click="checkFileFull1(vitem.type, vitem)"
                             >
-                              <img
-                                src="../assets/icon/newIcon/allScreen.png"
+                            <img
+                                :src="isClickNav == vindex ?'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame1111715423625357.png':'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame2221715423643605.png'"
                                 alt
                               />
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
-                              <img src="../assets/icon/newIcon/down.png" alt />
-                            </div>
+                            <img :src="isClickNav == vindex ? 'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame99991715423519837.png':'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/download21715423345632.png'" alt />
+
                           </div>
                           <div class="navListItem" v-if="vitem.type == 12">
                             <div class="navText" @click="downloadFile2(vitem)">
@@ -750,25 +772,28 @@
                               class="downIcon"
                               @click="checkFileFull1(vitem.type, vitem)"
                             >
-                              <img
-                                src="../assets/icon/newIcon/allScreen.png"
+                            <img
+                                :src="isClickNav == vindex ?'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame1111715423625357.png':'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame2221715423643605.png'"
                                 alt
                               />
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
-                              <img src="../assets/icon/newIcon/down.png" alt />
-                            </div>
+                            <img :src="isClickNav == vindex ? '../assets/icon/newIcon/download.png':'../assets/icon/newIcon/download2.png'" alt />
                           </div>
-                          <div class="navListItem" v-if="vitem.type == 13">
+                          <div class="navListItem"  :class="isClickNav == vindex ? 'isClickNav' : ''" v-if="vitem.type == 13">
                             <div
                               class="navText"
                               @click="checkPhoto(vitem, vindex)"
-                              :class="isClickNav == vindex ? 'isClickNav' : ''"
+                             
                             >
                               {{ vitem.name }}
                             </div>
                             <div class="downIcon" @click="downloadFile2(vitem)">
-                              <img src="../assets/icon/newIcon/down.png" alt />
+                              <img
+                                :src="isClickNav == vindex ?'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame1111715423625357.png':'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame2221715423643605.png'"
+                                alt
+                              />
+                              <!-- <img src="https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame56551715423909783.png" alt=""> -->
+                              <img :src="isClickNav == vindex ? 'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame99991715423519837.png':'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/download21715423345632.png'" alt />
                             </div>
                           </div>
                         </div>
@@ -791,10 +816,12 @@
                                 class="downIcon"
                                 @click="downloadFile2(vitem)"
                               >
-                                <img
-                                  src="../assets/icon/newIcon/down.png"
-                                  alt
-                                />
+                              <img
+                                :src="isClickNav == vindex ?'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame1111715423625357.png':'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame2221715423643605.png'"
+                                alt
+                              />
+                              <!-- <img src="https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame56551715423909783.png" alt=""> -->
+                              <img :src="isClickNav == vindex ? 'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Frame99991715423519837.png':'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/download21715423345632.png'" alt />
                               </div>
                             </div>
                           </div>
@@ -12350,7 +12377,7 @@ export default {
           {
             role: "user",
             content:
-              "你的任务是为文字内容进行批注,请依照以下步骤完成任务,并仅显示第二步完成的内容:1.校对并更正:" + t,
+             `Role: 你是一名小学英语作文的老师,根据这篇文章的内容你去批改这篇文章,然后仅输出一篇纠错好的文章。文章:${t}`,
           },
         ],
         uid: this.userid,
@@ -15356,7 +15383,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPEG",
         "JPG",
         "TIF",
@@ -15607,7 +15634,7 @@ export default {
           "BMP",
           "GIF",
           "PNG",
-          "JPGE",
+          "JPEG",
           "JPG",
           "TIF",
           "PCX",
@@ -20547,12 +20574,13 @@ export default {
 }
 
 .courseTitle {
-  width: 85%;
-  margin: 10px auto 26px auto;
+  width: 90%;
+  margin: 30px auto 15px auto;
   display: flex;
   flex-direction: row;
   align-items: center;
-  justify-content: space-between;
+  /* justify-content: space-between; */
+  justify-content: flex-start;
   text-align: center;
 }
 
@@ -20568,8 +20596,13 @@ export default {
 .inviteBox {
   font-size: 14px;
   /* margin-top: 5px; */
+  /* margin: 15px 0; */
+  padding: 0 15px;
+  padding-left: 46px;
+  margin-bottom: 15px;
+  width: 100%;
   color: #00000099;
-  text-align: center;
+  text-align: ringht;
 }
 
 .courseTitle >>> .el-tooltip {
@@ -21330,12 +21363,14 @@ export default {
   width: calc(100% - 20px);
   height: 50px;
   margin: 0px auto 10px;
+  box-sizing: border-box;
+  padding: 0 10px;
   display: flex;
   flex-direction: row;
   flex-wrap: nowrap;
   align-items: center;
   justify-content: space-between;
-  background: #f0f4fa;
+  /* background: #f0f4fa; */
   border-radius: 6px 6px 6px 6px;
 }
 
@@ -21345,15 +21380,15 @@ export default {
   overflow: hidden;
   text-overflow: ellipsis;
   width: 220px;
-  padding: 0 10px;
+  /* padding: 0 10px; */
   font-weight: 400;
-  color: #0e1e33;
+  /* color: #0e1e33; */
 }
 
 .downIcon {
-  width: 20px;
-  min-width: 20px;
-  height: 20px;
+  width: 16px;
+  min-width: 16px;
+  height: 16px;
   margin-right: 15px;
   cursor: pointer;
 }
@@ -22241,8 +22276,9 @@ export default {
 }
 
 .isClickNav {
-  /* color: #499eef; */
-  color: #000;
+  color: #499eef;
+  /* color: #000; */
+  background: rgba(224, 234, 251, 1);
 }
 
 .commentImg {
@@ -23735,9 +23771,9 @@ ol {
 }
 
 .navCorOpen {
-  padding-right: 15px;
+  padding-left: 15px;
   cursor: pointer;
-  width: 45px;
+  width: 23px;
   display: flex;
 }
 
@@ -23747,10 +23783,13 @@ ol {
 }
 
 .mlImg {
-  width: 40px !important;
-  min-width: 40px;
+  width: 23px !important;
+  /* min-width: 30px; */
+  display: flex;
+  align-content: center;
+  margin-right: 6px;
   cursor: pointer;
-  transform: rotate(180deg);
+  /* transform: rotate(180deg); */
 }
 
 .mlImg > img {
@@ -23849,7 +23888,7 @@ ol {
   flex-direction: row;
   flex-wrap: nowrap;
   align-items: center;
-  margin-left: 15px;
+  margin-left: 5px;
   width: calc(100% - 50px);
 }
 .stageNav{
@@ -23868,9 +23907,9 @@ ol {
 }
 .closeTri,
 .closeTri1 {
-  min-width: 15px;
-  width: 15px;
-  height: 15px;
+  min-width: 25px;
+  width: 25px;
+  height: 25px;
   transition: all .5s;
 }
 

+ 19 - 6
src/components/trainCourse/easy2/commpont/onlineWrite.vue

@@ -189,7 +189,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPG",
         "TIF",
         "PCX",
@@ -295,7 +295,16 @@ export default {
             content: [
               {
                 type: "text",
-                text: "这张图片里面有哪些文字?返回格式为{title:标题,content:内容}",
+                text: `NOTICE
+Role: 你是一个专门解读图片的大师,你可以把图片里面的文字全部提取出来,然后根据Format example的要求返回
+ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
+
+-----
+## Format example
+{
+    "title":"标题",
+    "content":"内容"
+}`,
               },
               {
                 type: "image_url",
@@ -324,14 +333,18 @@ export default {
           let aiImageNav = res.data.FunctionResponse.choices
             ? res.data.FunctionResponse.choices[0].message.content
             : "";
-          try {
+            try {
             aiImageNav = JSON.parse(aiImageNav);
+            this.myAnswerList.engTitle = aiImageNav.title;
+            this.myAnswerList.engText = aiImageNav.content;
           } catch (error) {
-            this.getImageNav();
+            // this.getImageNav();
+            this.myAnswerList.engTitle = '';
+            this.myAnswerList.engText = aiImageNav;
           }
           console.log(aiImageNav);
-          this.myAnswerList.engTitle = aiImageNav.title;
-          this.myAnswerList.engText = aiImageNav.content;
+          // this.myAnswerList.engTitle = aiImageNav.title;
+          // this.myAnswerList.engText = aiImageNav.content;
           this.type = 1;
           loading.close();
         },

+ 3 - 3
src/components/trainCourse/easy2/studyStudent.vue

@@ -11994,7 +11994,7 @@ export default {
           {
             role: "user",
             content:
-              "你的任务是为文字内容进行批注,请依照以下步骤完成任务,并仅显示第二步完成的内容:1.校对并更正:" + t,
+               `Role: 你是一名小学英语作文的老师,根据这篇文章的内容你去批改这篇文章,然后仅输出一篇纠错好的文章。文章:${t}`,
           },
         ],
         uid: this.userid,
@@ -14921,7 +14921,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPEG",
         "JPG",
         "TIF",
@@ -15172,7 +15172,7 @@ export default {
           "BMP",
           "GIF",
           "PNG",
-          "JPGE",
+          "JPEG",
           "JPG",
           "TIF",
           "PCX",

+ 19 - 6
src/components/trainCourse/easy3/commpont/onlineWrite.vue

@@ -189,7 +189,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPG",
         "TIF",
         "PCX",
@@ -295,7 +295,16 @@ export default {
             content: [
               {
                 type: "text",
-                text: "这张图片里面有哪些文字?返回格式为{title:标题,content:内容}",
+                text: `NOTICE
+Role: 你是一个专门解读图片的大师,你可以把图片里面的文字全部提取出来,然后根据Format example的要求返回
+ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
+
+-----
+## Format example
+{
+    "title":"标题",
+    "content":"内容"
+}`,
               },
               {
                 type: "image_url",
@@ -324,14 +333,18 @@ export default {
           let aiImageNav = res.data.FunctionResponse.choices
             ? res.data.FunctionResponse.choices[0].message.content
             : "";
-          try {
+            try {
             aiImageNav = JSON.parse(aiImageNav);
+            this.myAnswerList.engTitle = aiImageNav.title;
+            this.myAnswerList.engText = aiImageNav.content;
           } catch (error) {
-            this.getImageNav();
+            // this.getImageNav();
+            this.myAnswerList.engTitle = '';
+            this.myAnswerList.engText = aiImageNav;
           }
           console.log(aiImageNav);
-          this.myAnswerList.engTitle = aiImageNav.title;
-          this.myAnswerList.engText = aiImageNav.content;
+          // this.myAnswerList.engTitle = aiImageNav.title;
+          // this.myAnswerList.engText = aiImageNav.content;
           this.type = 1;
           loading.close();
         },

+ 3 - 3
src/components/trainCourse/easy3/studyStudent.vue

@@ -11983,7 +11983,7 @@ export default {
           {
             role: "user",
             content:
-              "你的任务是为文字内容进行批注,请依照以下步骤完成任务,并仅显示第二步完成的内容:1.校对并更正:" + t,
+               `Role: 你是一名小学英语作文的老师,根据这篇文章的内容你去批改这篇文章,然后仅输出一篇纠错好的文章。文章:${t}`,
           },
         ],
         uid: this.userid,
@@ -14911,7 +14911,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPEG",
         "JPG",
         "TIF",
@@ -15162,7 +15162,7 @@ export default {
           "BMP",
           "GIF",
           "PNG",
-          "JPGE",
+          "JPEG",
           "JPG",
           "TIF",
           "PCX",

+ 3 - 3
src/components/trainCourse/studyStudent.vue

@@ -11966,7 +11966,7 @@ export default {
           {
             role: "user",
             content:
-              "你的任务是为文字内容进行批注,请依照以下步骤完成任务,并仅显示第二步完成的内容:1.校对并更正:" + t,
+               `Role: 你是一名小学英语作文的老师,根据这篇文章的内容你去批改这篇文章,然后仅输出一篇纠错好的文章。文章:${t}`,
           },
         ],
         uid: this.userid,
@@ -14892,7 +14892,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPEG",
         "JPG",
         "TIF",
@@ -15143,7 +15143,7 @@ export default {
           "BMP",
           "GIF",
           "PNG",
-          "JPGE",
+          "JPEG",
           "JPG",
           "TIF",
           "PCX",

+ 2 - 2
src/components/横板极简和任务模式/easy2/studyStudent.vue

@@ -14660,7 +14660,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPG",
         "TIF",
         "PCX",
@@ -14910,7 +14910,7 @@ export default {
           "BMP",
           "GIF",
           "PNG",
-          "JPGE",
+          "JPEG",
           "JPG",
           "TIF",
           "PCX",

+ 2 - 2
src/components/横板极简和任务模式/easy3/studyStudent.vue

@@ -14680,7 +14680,7 @@ export default {
         "BMP",
         "GIF",
         "PNG",
-        "JPGE",
+        "JPEG",
         "JPG",
         "TIF",
         "PCX",
@@ -14930,7 +14930,7 @@ export default {
           "BMP",
           "GIF",
           "PNG",
-          "JPGE",
+          "JPEG",
           "JPG",
           "TIF",
           "PCX",

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio