SanHQin 8 months ago
parent
commit
ad84c6c5af

File diff suppressed because it is too large
+ 40 - 0
src/assets/icon/course/aiTalk.svg


File diff suppressed because it is too large
+ 6 - 0
src/assets/icon/course/aiVanish.svg


File diff suppressed because it is too large
+ 40 - 0
src/assets/icon/course/aiWait.svg


BIN
src/assets/icon/course/helloworldQs.gif


+ 181 - 2
src/components/classRoomHelper/component/dialogArea.vue

@@ -3,7 +3,7 @@
     <div v-show="cardType == 0">
       <div class="d_top" ref="chatRef">
         <div class="d_t_chat" v-for="(item, index) in chatList" :key="index">
-          <div class="d_t_c_user" v-if="item.content">
+          <div class="d_t_c_user" v-if="item.content && item.content!='addAsk'">
             <div class="d_t_c_u_left">
               <div class="d_t_c_u_l_content">{{ item.content }}</div>
               <div class="d_t_c_u_l_time">{{ item.createtime }}</div>
@@ -13,7 +13,7 @@
             </div>
           </div>
 
-          <div class="d_t_c_ai">
+          <div class="d_t_c_ai" v-if="item.content!='addAsk'">
             <div class="d_t_c_a_left">
               <el-avatar v-if="item.filename" :src="item.filename"></el-avatar>
               <span v-else>Ai</span>
@@ -57,6 +57,9 @@
               <div class="d_t_c_a_r_time">{{ item.createtime }}</div>
             </div>
           </div>
+					<div class="s_t_addAsk" v-if="item.content == 'addAsk'">
+						<span v-for="item2 in item.aiContent" :key="item2.index" @click.stop="send(item2.label)">{{item2.label}}</span>
+					</div>
         </div>
       </div>
       <div class="d_bottom">
@@ -497,6 +500,7 @@ export default {
           this.chatList.find(i => i.uid == _uid).isShowSynchronization = true;
           this.chatList.find(i => i.uid == _uid).loading = false;
           this.nowChatList.push(this.chatList.find(i => i.uid == _uid));
+					this.addAsk(this.chatList.find(i => i.uid == _uid).content)
           // 这里保存对话
           this.insertChat(_uid);
           return;
@@ -546,6 +550,7 @@ export default {
           this.chatList.find(i => i.uid == _uid).isShowSynchronization = true;
           this.chatList.find(i => i.uid == _uid).loading = false;
           this.nowChatList.push(this.chatList.find(i => i.uid == _uid));
+					this.addAsk(this.chatList.find(i => i.uid == _uid).content)
           this.source.close();
           this.insertChat(_uid);
         } else {
@@ -690,6 +695,153 @@ export default {
           console.log("获取公共角色失败", e);
         });
     },
+		addAsk(_text){
+			this.chatLoading = true;
+      let _uuid = uuidv4();
+
+      let _msg = `NOTICE
+Role: 你是一个多功能的AI助手,能够根据学生的文本内容判断其情感状态,并提供相应的支持和引导。
+ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
+Instruction: Based on the context, follow "Format example", write content.
+
+# Context
+## 任务
+请你基于以下{学生文本内容},执行以下任务,按要求输出对应内容。
+首先,请你判断学生是否进行情感倾诉,比如心情不好、遭遇校园暴力、对他人进行人身攻击等。如果是,请扮演一个心理咨询师的角色,坚持人本主义的立场,善良、温柔地引导对方,安抚对方的情绪,为对方提供心理支持。剩下的其它情况,请你扮演提问引导者的角色,延续学生的提问,围绕问题本身,继续追加提出3个问题,激发学生的深度思考、创造性思考。
+
+## 知识库
+### 人本主义心理学
+人本主义心理学强调个体的主观体验和自我实现,认为每个人都有内在的潜力和价值。心理咨询师应当以同理心、无条件积极关注和真诚的态度对待来访者,帮助他们发现自身的力量和解决问题的能力。
+
+### 提问引导技巧
+提问引导技巧包括开放性问题、反思性问题和假设性问题等,旨在通过提问激发对方的思考和探索,帮助他们深入理解问题并找到解决方案。
+
+## 工作流程
+1. 仔细阅读并分析学生提供的文本内容。
+2. 判断学生是否进行情感倾诉。
+3. 如果是情感倾诉,扮演心理咨询师的角色,提供情感支持和引导。
+4. 如果不是情感倾诉,扮演提问引导者的角色,围绕问题本身追加提出3个问题。
+5. 按指定格式输出相应的内容。
+
+## 限制/注意事项
+- 在回答时应保持专业性和权威性,确保信息的准确性和可靠性。
+- 避免生成与问题无关或不恰当的回答,确保回答的相关性和实用性。
+- 在提供情感支持时,注意用词温柔,避免引起对方的负面情绪。
+
+## 输出
+### 输出要求
+1. 输出内容包含情感支持或追加问题。
+2. 情感支持部分应体现同理心和积极关注。
+3. 追加问题应具有启发性和深度。
+
+## 学生文本内容
+${_text}
+
+---
+## Format example
+[{
+  "index": 1,
+  "label": "不同国家的垃圾分类标准和方法?"
+},
+{
+  "index": 2,
+  "label": "可回收垃圾的处理流程和再利用方法?"
+},
+{
+  "index": 3,
+  "label": "有害垃圾对环境和人体健康的潜在影响?"
+}]`;
+      this.chatList.push({
+        role: "user",
+        content: `addAsk`,
+        uid: _uuid,
+        AI: "AI",
+        aiContent: "",
+        oldContent: "",
+        isShowSynchronization: false,
+        filename: "",
+        index: this.chatList.length,
+        is_mind_map: false,
+        loading: true
+      });
+
+      this.scrollBottom();
+
+			let history = [];
+      // this.nowChatList.forEach(i => {
+      //   if (i.content == "wanSearch") {
+      //     // history.push({
+      //     // 	role:"assistant",
+      //     // 	content: JSON.stringify(i.aiContent)
+      //     // })
+      //     return;
+      //   } else if (i.content == "getImage") {
+      //     return history.push({
+      //       role: "assistant",
+      //       content: i.aiContent
+      //     });
+      //   }else if(i.content == "addAsk"){
+
+			// 	}
+      //   if (i.content) {
+      //     history.push({
+      //       role: "user",
+      //       content: i.content
+      //     });
+      //   }
+      //   if (i.aiContent) {
+      //     history.push({
+      //       role: "assistant",
+      //       content: i.aiContent
+      //     });
+      //   }
+      // });
+      history.push({ role: "user", content: _msg });
+			console.log(history)
+      let params = {
+        model: "gpt-3.5-turbo",
+        temperature: 0,
+        max_tokens: 4096,
+        top_p: 1,
+        frequency_penalty: 0,
+        presence_penalty: 0,
+        messages:history,
+				stream: false,
+        uid: _uuid,
+        mind_map_question: ""
+      };
+      // let params = {
+      //   message: {
+      //     anthropic_version: "bedrock-2023-05-31",
+      //     max_tokens: 4096,
+      //     temperature: 0,
+      //     top_p: 1,
+      //     messages: [{ role: "user", content: _msg }]
+      //   },
+      //   uid: _uuid,
+      //   model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
+      // };
+      this.text = "";
+
+      this.ajax
+        .post("https://gpt4.cocorobo.cn/chat", params)
+        // .post("https://claude3.cocorobo.cn/chat", params)
+        .then(res => {
+					console.log(res)
+					let _data = res.data.FunctionResponse.choices[0].message.content;
+					console.log(_data);
+					this.chatList.find(i => i.uid == _uuid).aiContent =JSON.parse(_data);
+					this.chatList.find(i => i.uid == _uuid).isalltext = true;
+          this.chatList.find(i => i.uid == _uuid).isShowSynchronization = true;
+          this.chatList.find(i => i.uid == _uuid).loading = false;
+					this.scrollBottom();
+					this.chatLoading = false;
+        })
+        .catch(e => {
+          this.chatLoading = false;
+          console.log(e);
+        });
+		},
     changeRole() {
       this.cardType = 0;
       // this.rightSubjects = this.subjectsType;
@@ -1332,4 +1484,31 @@ export default {
   margin-right: 10px;
   /* margin-left: 10px; */
 }
+.s_t_addAsk{
+	width:100%;
+	height:auto;
+	padding:10px 20px;
+	display:flex;
+	flex-direction:column;
+	justify-content:center;
+	align-items:center;
+	box-sizing:border-box;
+}
+
+.s_t_addAsk>span{
+	box-sizing:border-box;
+	width:auto;
+	height:auto;
+	padding:15px;
+	margin-bottom:10px;
+	background-color:#F5F6F7;
+	border-radius:10px;
+	cursor:pointer;
+	border:solid 1px #E8E9EC;
+	transition:.3s;
+}
+
+.s_t_addAsk>span:hover{
+	background-color:#E8E9EC;
+}
 </style>

+ 193 - 0
src/components/classRoomHelper/component/levitatedSphere.vue

@@ -0,0 +1,193 @@
+<template>
+  <div class="levitatedSphere" v-show="show">
+    <div class="ls_hello" v-if="showIndex == 0">
+      <el-image
+        style="width: 100%; height: 100%"
+        v-show="aiStatus == 1"
+        :src="require('../../../assets/icon/course/aiTalk.svg')"
+        fit="fill"
+      ></el-image>
+      <el-image
+        style="width: 100%; height: 100%"
+        v-show="aiStatus == 2"
+        :src="require('../../../assets/icon/course/aiVanish.svg')"
+        fit="fill"
+      ></el-image>
+      <el-image
+        style="width: 100%; height: 100%"
+        v-show="aiStatus == 0"
+        :src="require('../../../assets/icon/course/aiWait.svg')"
+        fit="fill"
+      ></el-image>
+    </div>
+    <div
+      class="ls_text"
+      :style="{
+        width: userText || aiText || showTextIndex == 2 ? '300px' : '0px'
+      }"
+    >
+      <div class="ls_t_ai" v-if="[0, 2].includes(showTextIndex)">
+        <span v-if="[0].includes(showTextIndex)">{{ aiText }}</span>
+        <span v-if="[2].includes(showTextIndex)">正在组织语言...</span>
+      </div>
+      <div class="ls_t_user" v-if="[1].includes(showTextIndex)">
+        {{ userText }}
+      </div>
+    </div>
+    <!-- 录音转文字 -->
+    <iframe
+      allow="camera *; microphone *;display-capture;midi;encrypted-media;"
+      src="https://beta.cloud.cocorobo.cn/browser/public/index.html"
+      ref="iiframe"
+      v-show="false"
+    ></iframe>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      show: false,
+      showIndex: 0, //0 :在说话 1 : 接收 2:待命
+      aiStatus: 0,
+      aiText: "您好,我是小可,有什么可以帮助您的?",
+      userText: "",
+      showTextIndex: 0, //0:ai,1:用户, 2:组织语言
+      timer: null
+    };
+  },
+  computed: {
+    textLeft() {
+      let _result = 0;
+      if (this.showTextIndex == 0) {
+        _result = this.aiText.length * 18;
+      } else if (this.showTextIndex == 1) {
+        _result = this.userText.length * 20;
+      } else if (this.showTextIndex == 2) {
+        _result = 9 * 18;
+      }
+      if (_result > 350) _result = 380;
+      return _result;
+    }
+  },
+  methods: {
+    recordStart() {
+      let iiframe = this.$refs["iiframe"];
+      iiframe.contentWindow.window.document.getElementById(
+        "languageOptions"
+      ).selectedIndex = 2; //普通话
+      iiframe.contentWindow.testdoContinuousPronunciationAssessment();
+      iiframe.contentWindow.onRecognizedResult = e => {
+      let _msg = e.privText;
+      // let _msg = _text;
+      // console.log("👇");
+      // console.log(_msg);
+      if (_msg.indexOf("可可同学") != -1 && !this.show) {
+        this.aiText = "您好,我是小可,有什么可以帮助您的?";
+        this.aiStatus = 0;
+        this.showIndex = 0;
+        this.show = true;
+        console.log("已唤醒可可同学");
+      } else if (this.show == true) {
+        if (this.showTextIndex == 2) {
+          console.log("ai在组织语言");
+        } else {
+          this.showTextIndex = 1;
+          this.aiText = "";
+          this.userText += _msg;
+          this.aiStatus = 1;
+          if (this.timer) {
+            clearTimeout(this.timer);
+            this.timer = null;
+          }
+          this.timer = setTimeout(() => {
+            this.showTextIndex = 2;
+            this.aiText = "";
+            console.log("开始思考");
+            setTimeout(() => {
+              this.aiStatus = 0;
+              this.showTextIndex = 0;
+              this.aiText = "不知道,请您稍后再问...。";
+              this.timer = setTimeout(() => {
+                this.showTextIndex = 3;
+                this.aiStatus = 2;
+                this.aiText = "";
+                this.userText = "";
+              }, 5000);
+            }, 3000);
+          }, 5000);
+        }
+      } else {
+        console.log("不响应");
+      }
+      };
+    }
+  },
+  mounted() {
+		this.recordStart();
+    // setTimeout(() => {
+    //   this.recordStart("嘿哟黑");
+    //   setTimeout(() => {
+    //     this.recordStart("可可同学。");
+    //     setTimeout(() => {
+    //       setTimeout(() => {
+    //         this.recordStart("你是谁呀。");
+    //         setTimeout(() => {
+    //           this.recordStart("平时都在做什么?");
+    //         }, 2000);
+    //       }, 3000);
+    //     }, 6000);
+    //   }, 3000);
+    // },3000);
+  }
+};
+</script>
+
+<style scoped>
+.levitatedSphere {
+  position: fixed;
+  width: auto;
+  height: auto;
+  top: 20px;
+  right: 10px;
+  z-index: 9999;
+  display: flex;
+  transform: rotate(0);
+}
+
+.ls_hello {
+  width: 80px;
+  height: 80px;
+  position: absolute;
+  top: 0;
+  right: 0;
+}
+
+.ls_text {
+  position: absolute;
+  right: 100px;
+  top: 20px;
+  max-width: 300px;
+  display: flex;
+  justify-content: flex-end;
+}
+
+.ls_t_ai {
+  padding: 12px;
+  width: auto;
+  height: auto;
+  border-radius: 12px 0px 12px 12px;
+  background: #00000099;
+  color: #fff;
+}
+
+.ls_t_user {
+  padding: 12px;
+  width: auto;
+  height: auto;
+  border-radius: 12px 12px 12px 12px;
+  background: #00000099;
+  color: #fff;
+}
+</style>

+ 201 - 5
src/components/classRoomHelper/component/searchArea.vue

@@ -33,7 +33,8 @@
           v-if="
             item.content &&
               item.content != 'wanSearch' &&
-              item.content != 'getImage'
+              item.content != 'getImage' &&
+							item.content !='addAsk'
           "
         >
           <div class="s_t_c_u_left">
@@ -47,7 +48,7 @@
 
         <div
           class="s_t_c_ai"
-          v-if="item.content != 'wanSearch' && item.content != 'getImage'"
+          v-if="item.content != 'wanSearch' && item.content != 'getImage' && item.content !='addAsk'"
         >
           <div class="s_t_c_a_left">
             <span>Ai</span>
@@ -143,6 +144,9 @@
             </div>
           </div>
         </div>
+				<div class="s_t_addAsk" v-if="item.content == 'addAsk'">
+					<span v-for="item2 in item.aiContent" :key="item2.index" @click.stop="send(item2.label)">{{item2.label}}</span>
+				</div>
       </div>
     </div>
     <div class="s_bottom">
@@ -812,7 +816,7 @@ Instruction: Based on the context, follow "Format example", write content.
       //       }
       let history = [];
       this.nowChatList.forEach(i => {
-        if (i.content == "wanSearch") {
+				if (i.content == "wanSearch") {
           // history.push({
           // 	role:"assistant",
           // 	content: JSON.stringify(i.aiContent)
@@ -823,7 +827,9 @@ Instruction: Based on the context, follow "Format example", write content.
             role: "assistant",
             content: i.aiContent
           });
-        }
+        }else if(i.content == "addAsk"){
+
+				}
         if (i.content) {
           history.push({
             role: "user",
@@ -1097,6 +1103,7 @@ ${_atList
           this.chatList.find(i => i.uid == _uid).isShowSynchronization = true;
           this.chatList.find(i => i.uid == _uid).loading = false;
           this.nowChatList.push(this.chatList.find(i => i.uid == _uid));
+					this.addAsk(this.chatList.find(i => i.uid == _uid).content)
           // 这里保存对话
           this.insertChat(_uid);
           return;
@@ -1272,7 +1279,7 @@ ${_atList
 			---
 
 			## 输出
-			- 输出应包括3个相关的搜索建议,每个搜索建议需要以问号的方式结束。
+			- 输出应包括6个相关的搜索建议,每个搜索建议需要以问号的方式结束。
 			- 请一步步思考如何根据现有信息推送搜索建议,但是不需要输出搜索建议以外的内容。
 
 			---
@@ -1295,6 +1302,20 @@ ${_atList
           "index": 3,
           "title": "有害垃圾的影响",
           "label": "有害垃圾对环境和人体健康的潜在影响?"
+        },{
+          "index": 4,
+          "title": "垃圾分类标准",
+          "label": "不同国家的垃圾分类标准和方法?"
+        },
+        {
+          "index": 5,
+          "title": "可回收垃圾处理",
+          "label": "可回收垃圾的处理流程和再利用方法?"
+        },
+        {
+          "index": 6,
+          "title": "有害垃圾的影响",
+          "label": "有害垃圾对环境和人体健康的潜在影响?"
         }]
 			`;
       this.chatList.push({
@@ -1353,6 +1374,153 @@ ${_atList
         });
       this.getWAntSearchContent(_uuid);
     },
+		addAsk(_text){
+			this.chatLoading = true;
+      let _uuid = uuidv4();
+
+      let _msg = `NOTICE
+Role: 你是一个多功能的AI助手,能够根据学生的文本内容判断其情感状态,并提供相应的支持和引导。
+ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
+Instruction: Based on the context, follow "Format example", write content.
+
+# Context
+## 任务
+请你基于以下{学生文本内容},执行以下任务,按要求输出对应内容。
+首先,请你判断学生是否进行情感倾诉,比如心情不好、遭遇校园暴力、对他人进行人身攻击等。如果是,请扮演一个心理咨询师的角色,坚持人本主义的立场,善良、温柔地引导对方,安抚对方的情绪,为对方提供心理支持。剩下的其它情况,请你扮演提问引导者的角色,延续学生的提问,围绕问题本身,继续追加提出3个问题,激发学生的深度思考、创造性思考。
+
+## 知识库
+### 人本主义心理学
+人本主义心理学强调个体的主观体验和自我实现,认为每个人都有内在的潜力和价值。心理咨询师应当以同理心、无条件积极关注和真诚的态度对待来访者,帮助他们发现自身的力量和解决问题的能力。
+
+### 提问引导技巧
+提问引导技巧包括开放性问题、反思性问题和假设性问题等,旨在通过提问激发对方的思考和探索,帮助他们深入理解问题并找到解决方案。
+
+## 工作流程
+1. 仔细阅读并分析学生提供的文本内容。
+2. 判断学生是否进行情感倾诉。
+3. 如果是情感倾诉,扮演心理咨询师的角色,提供情感支持和引导。
+4. 如果不是情感倾诉,扮演提问引导者的角色,围绕问题本身追加提出3个问题。
+5. 按指定格式输出相应的内容。
+
+## 限制/注意事项
+- 在回答时应保持专业性和权威性,确保信息的准确性和可靠性。
+- 避免生成与问题无关或不恰当的回答,确保回答的相关性和实用性。
+- 在提供情感支持时,注意用词温柔,避免引起对方的负面情绪。
+
+## 输出
+### 输出要求
+1. 输出内容包含情感支持或追加问题。
+2. 情感支持部分应体现同理心和积极关注。
+3. 追加问题应具有启发性和深度。
+
+## 学生文本内容
+${_text}
+
+---
+## Format example
+[{
+  "index": 1,
+  "label": "不同国家的垃圾分类标准和方法?"
+},
+{
+  "index": 2,
+  "label": "可回收垃圾的处理流程和再利用方法?"
+},
+{
+  "index": 3,
+  "label": "有害垃圾对环境和人体健康的潜在影响?"
+}]`;
+      this.chatList.push({
+        role: "user",
+        content: `addAsk`,
+        uid: _uuid,
+        AI: "AI",
+        aiContent: "",
+        oldContent: "",
+        isShowSynchronization: false,
+        filename: "",
+        index: this.chatList.length,
+        is_mind_map: false,
+        loading: true
+      });
+
+      this.scrollBottom();
+
+			let history = [];
+      // this.nowChatList.forEach(i => {
+      //   if (i.content == "wanSearch") {
+      //     // history.push({
+      //     // 	role:"assistant",
+      //     // 	content: JSON.stringify(i.aiContent)
+      //     // })
+      //     return;
+      //   } else if (i.content == "getImage") {
+      //     return history.push({
+      //       role: "assistant",
+      //       content: i.aiContent
+      //     });
+      //   }else if(i.content == "addAsk"){
+
+			// 	}
+      //   if (i.content) {
+      //     history.push({
+      //       role: "user",
+      //       content: i.content
+      //     });
+      //   }
+      //   if (i.aiContent) {
+      //     history.push({
+      //       role: "assistant",
+      //       content: i.aiContent
+      //     });
+      //   }
+      // });
+      history.push({ role: "user", content: _msg });
+			console.log(history)
+      let params = {
+        model: "gpt-3.5-turbo",
+        temperature: 0,
+        max_tokens: 4096,
+        top_p: 1,
+        frequency_penalty: 0,
+        presence_penalty: 0,
+        messages:history,
+				stream: false,
+        uid: _uuid,
+        mind_map_question: ""
+      };
+      // let params = {
+      //   message: {
+      //     anthropic_version: "bedrock-2023-05-31",
+      //     max_tokens: 4096,
+      //     temperature: 0,
+      //     top_p: 1,
+      //     messages: [{ role: "user", content: _msg }]
+      //   },
+      //   uid: _uuid,
+      //   model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
+      // };
+      this.text = "";
+
+      this.ajax
+        .post("https://gpt4.cocorobo.cn/chat", params)
+        // .post("https://claude3.cocorobo.cn/chat", params)
+        .then(res => {
+					console.log(res)
+					let _data = res.data.FunctionResponse.choices[0].message.content;
+					console.log(_data);
+					this.chatList.find(i => i.uid == _uuid).aiContent =JSON.parse(_data);
+					this.chatList.find(i => i.uid == _uuid).isalltext = true;
+          this.chatList.find(i => i.uid == _uuid).isShowSynchronization = true;
+          this.chatList.find(i => i.uid == _uuid).loading = false;
+					this.scrollBottom();
+					this.chatLoading = false;
+        })
+        .catch(e => {
+          this.chatLoading = false;
+          console.log(e);
+        });
+		},
     scrollBottom() {
       this.$nextTick(() => {
         this.$refs.chatRef.scrollTop = this.$refs.chatRef.scrollHeight;
@@ -2444,4 +2612,32 @@ ${_wordData}
   margin: 5px 0;
   white-space: wrap;
 }
+
+.s_t_addAsk{
+	width:100%;
+	height:auto;
+	padding:10px 20px;
+	display:flex;
+	flex-direction:column;
+	justify-content:center;
+	align-items:center;
+	box-sizing:border-box;
+}
+
+.s_t_addAsk>span{
+	box-sizing:border-box;
+	width:auto;
+	height:auto;
+	padding:15px;
+	margin-bottom:10px;
+	background-color:#F5F6F7;
+	border-radius:10px;
+	cursor:pointer;
+	border:solid 1px #E8E9EC;
+	transition:.3s;
+}
+
+.s_t_addAsk>span:hover{
+	background-color:#E8E9EC;
+}
 </style>

+ 342 - 22
src/components/classRoomHelper/component/taskArea.vue

@@ -1,13 +1,21 @@
 <template>
   <div class="task">
-    <div class="taskTop" v-if="false">
+    <div class="taskTop">
       <div class="tt_title">任务时间分配</div>
       <div class="tt_item">
         <div class="tt_i_title">
           <span>课程时间轴</span>
         </div>
         <div class="tt_i_box">
-          <img :src="require('../../../assets/icon/course/group.png')" />
+					<div class="tt_i_b_step" v-if="navList.length==1">
+						<!-- 只有一个阶段 -->
+						<span :style="{'background':taskCount>=index?'#3681FC':'#E0EAFB'}" v-for="(item,index) in navList[courseType].task"></span>
+					</div>
+					<div  class="tt_i_b_step" v-if="navList.length>1">
+						<!-- 多个阶段 -->
+						<span :style="{'background':courseType>=index?'#3681FC':'#E0EAFB'}" v-for="(item,index) in navList"></span>
+					</div>
+          <!-- <img :src="require('../../../assets/icon/course/group.png')" /> -->
         </div>
       </div>
 
@@ -22,11 +30,11 @@
             <div class="tt_i_b_box">
               <div class="tt_i_b_b_item">
                 <div>提交人数</div>
-                <span>34<span>人</span></span>
+                <span>{{ isWorkStudent }}<span>人</span></span>
               </div>
-              <div class="tt_i_b_b_item">
-                <div>正确率</div>
-                <span>88<span>%</span></span>
+              <div class="tt_i_b_b_item" v-if="(this.$route.query.tcid || courseDetail.juri) && allStudent && complete!='-'">
+                <div>完成率</div>
+                <span>{{ complete }}<span>%</span></span>
               </div>
             </div>
           </div>
@@ -35,15 +43,15 @@
             <div class="tt_i_b_box">
               <div class="tt_i_b_b_item">
                 <div>参与人数</div>
-                <span>56<span>人</span></span>
+                <span>{{ isWorkAll }}<span>人</span></span>
               </div>
               <div class="tt_i_b_b_item">
                 <div>点赞数</div>
-                <span>36<span>个</span></span>
+                <span>{{likeNum}}<span>个</span></span>
               </div>
               <div class="tt_i_b_b_item">
                 <div>评论数</div>
-                <span>128<span>条</span></span>
+                <span>{{commentNum}}<span>条</span></span>
               </div>
             </div>
           </div>
@@ -52,7 +60,7 @@
     </div>
     <div class="t_top" ref="chatRef">
       <div class="t_t_chat" v-for="(item, index) in chatList" :key="index">
-        <div class="t_t_c_user" v-if="item.content">
+        <div class="t_t_c_user" v-if="item.content && item.content!='addAsk'">
           <div class="t_t_c_u_left">
             <div class="t_t_c_u_l_content">{{ item.content }}</div>
             <div class="t_t_c_u_l_time">{{ item.createtime }}</div>
@@ -61,7 +69,7 @@
             <span>我</span>
           </div>
         </div>
-        <div class="t_t_c_ai">
+        <div class="t_t_c_ai" v-if="item.content!='addAsk'">
           <div class="t_t_c_a_left">
             <el-avatar v-if="item.filename" :src="item.filename"></el-avatar>
             <span v-else>Ai</span>
@@ -104,6 +112,9 @@
             <div class="t_t_c_a_r_time">{{ item.createtime }}</div>
           </div>
         </div>
+				<div class="s_t_addAsk" v-if="item.content == 'addAsk'">
+					<span v-for="item2 in item.aiContent" :key="item2.index" @click.stop="send(item2.label)">{{item2.label}}</span>
+				</div>
       </div>
     </div>
     <div class="t_bottom">
@@ -149,7 +160,23 @@ export default {
     courseDetail: {
       type: Object,
       default: () => {}
-    }
+    },
+		navList:{
+			type:Array,
+			default:()=>[]
+		},
+		courseType:{
+			type:Number,
+			default:0
+		},
+		taskCount:{
+			type:Number,
+			default:0
+		},
+		worksStudent:{
+			type:Array,
+			default:()=>[]
+		}
   },
   data() {
     return {
@@ -162,9 +189,92 @@ export default {
       nowChatList: [],
 			source:null,
 			saveUid:"",
+			allStudent:[],
+			tcid:this.$route.query.tcid,
+			oid:this.$route.query.oid,
     };
   },
   computed: {
+		isWorkAll(){
+			let _userList = []
+			if(this.worksStudent.length){
+				this.worksStudent.forEach(i=>{
+					if(i.length){
+						i.forEach(i2=>{
+							if(i2.commentJson){
+								i2.commentJson.forEach(i3=>{
+								if(i3.userid && !_userList.find(i5=>i5.userid==i3.userid)){
+									_userList.push(i3)
+								}
+							})
+							}
+							
+							if(i2.likeJson){
+								i2.likeJson.forEach(i4=>{
+								if(i4.likesId && !_userList.find(i5=>i5.userid==i4.likesId)){
+									_userList.push({...i4,userid:i4.likesId})
+								}
+							})
+							}
+							
+						})
+					}
+				})
+			}
+			return _userList.length;
+		},
+		complete(){
+			let _result = 0;
+			let _all = this.allStudent?this.allStudent.length:0
+			if(_all==0)return '-'
+			_result = ((this.isWorkStudent/_all).toFixed(2))*100
+			return _result;
+		},
+		likeNum(){
+			let _result = 0;
+			if(this.worksStudent.length){
+				this.worksStudent.forEach(i=>{
+					if(i.length){
+						i.forEach(i2=>{
+							if(i2.likesCount){
+								_result+=i2.likesCount
+							}
+						})
+					}
+				})
+			}
+			return _result;
+		},
+		commentNum(){
+			let _result = 0;
+			if(this.worksStudent.length){
+				this.worksStudent.forEach(i=>{
+					if(i.length){
+						i.forEach(i2=>{
+							if(i2.commentCount){
+								_result+=i2.commentCount
+							}
+						})
+					}
+				})
+			}
+			return _result;
+		},
+		isWorkStudent(){
+			let _userList = []
+			if(this.worksStudent.length){
+				this.worksStudent.forEach(i=>{
+					if(i.length){
+						i.forEach(i2=>{
+							if(i2.ttype==2 && !_userList.find(i3=>i3.userid==i2.userid)){
+								_userList.push(i2)
+							}
+						})
+					}
+				})
+			}
+			return _userList.length;
+		},
     pan() {
       return content => {
         try {
@@ -276,6 +386,10 @@ export default {
           this.chatList.find(i => i.uid == _uid).isShowSynchronization = true;
           this.chatList.find(i => i.uid == _uid).loading = false;
           this.nowChatList.push(this.chatList.find(i => i.uid == _uid));
+					let _content = this.chatList.find(i => i.uid == _uid).content;
+					if(!['智能总结','智能出题','扩展知识'].includes(_content)){
+						this.addAsk(this.chatList.find(i => i.uid == _uid).content);
+					}
           // 这里保存对话
           this.insertChat(_uid);
           return;
@@ -518,6 +632,8 @@ Instruction: Based on the context, follow "Format example", write content.
 5. 环保教育活动:在学校中推广环保意识的活动和资源。
         `;
       } else if (_text == "智能出题") {
+				// console.log("👇")
+				// return console.log(this.navList[this.courseType].task[this.taskCount].taskName)
         _msg = `
         NOTICE
 Language: Please use the same language as the user requirement, if the user speaks Chinese, the specific text of your answer should also be in Chinese.
@@ -526,11 +642,12 @@ Instruction: Based on the context, follow "Format example", write content.
 
 # Context
 ## 任务
-你的任务是根据用户的请求,结合以下“课程信息”包含的子条目(“课程标题”,“分类”以及“年级”),向用户输出相关的练习题目,将结果以有序列表的形式返回给用户。
+你的任务是根据用户的请求,结合以下“课程信息”包含的子条目(“课程标题”,“分类”以及“年级”),向用户输出当前任务相关的练习题目,将结果以有序列表的形式返回给用户。
 课程信息
 课程标题:${this.courseDetail.title}
 分类:${this.courseDetail.name ? this.courseDetail.name : "无"}
 学生年级:${this.courseDetail.classname ? this.courseDetail.classname : "无"}
+当前任务名称:${this.navList[this.courseType].task[this.taskCount].taskName}
 
 ## 规则
 1. 练习题目内容应该与“课程信息”相关,避免提供无关的信息。
@@ -553,6 +670,7 @@ Instruction: Based on the context, follow "Format example", write content.
 
 
 					`;
+					console.log(_msg)
       } else if (_text == "智能总结") {
         _msg = `
         NOTICE
@@ -685,22 +803,175 @@ Instruction: Based on the context, follow "Format example", write content.
       this.getAiContent(_uuid);
       // this.send(text);
     },
-    // sendImage() {
-    //   this.$message.info("发送图片");
-    // },
-    // sendVideo() {
-    //   this.$message.info("发送视频");
-    // },
+		addAsk(_text){
+			this.chatLoading = true;
+      let _uuid = uuidv4();
+
+      let _msg = `NOTICE
+Role: 你是一个多功能的AI助手,能够根据学生的文本内容判断其情感状态,并提供相应的支持和引导。
+ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
+Instruction: Based on the context, follow "Format example", write content.
+
+# Context
+## 任务
+请你基于以下{学生文本内容},执行以下任务,按要求输出对应内容。
+首先,请你判断学生是否进行情感倾诉,比如心情不好、遭遇校园暴力、对他人进行人身攻击等。如果是,请扮演一个心理咨询师的角色,坚持人本主义的立场,善良、温柔地引导对方,安抚对方的情绪,为对方提供心理支持。剩下的其它情况,请你扮演提问引导者的角色,延续学生的提问,围绕问题本身,继续追加提出3个问题,激发学生的深度思考、创造性思考。
+
+## 知识库
+### 人本主义心理学
+人本主义心理学强调个体的主观体验和自我实现,认为每个人都有内在的潜力和价值。心理咨询师应当以同理心、无条件积极关注和真诚的态度对待来访者,帮助他们发现自身的力量和解决问题的能力。
+
+### 提问引导技巧
+提问引导技巧包括开放性问题、反思性问题和假设性问题等,旨在通过提问激发对方的思考和探索,帮助他们深入理解问题并找到解决方案。
+
+## 工作流程
+1. 仔细阅读并分析学生提供的文本内容。
+2. 判断学生是否进行情感倾诉。
+3. 如果是情感倾诉,扮演心理咨询师的角色,提供情感支持和引导。
+4. 如果不是情感倾诉,扮演提问引导者的角色,围绕问题本身追加提出3个问题。
+5. 按指定格式输出相应的内容。
+
+## 限制/注意事项
+- 在回答时应保持专业性和权威性,确保信息的准确性和可靠性。
+- 避免生成与问题无关或不恰当的回答,确保回答的相关性和实用性。
+- 在提供情感支持时,注意用词温柔,避免引起对方的负面情绪。
+
+## 输出
+### 输出要求
+1. 输出内容包含情感支持或追加问题。
+2. 情感支持部分应体现同理心和积极关注。
+3. 追加问题应具有启发性和深度。
+
+## 学生文本内容
+${_text}
+
+---
+## Format example
+[{
+  "index": 1,
+  "label": "不同国家的垃圾分类标准和方法?"
+},
+{
+  "index": 2,
+  "label": "可回收垃圾的处理流程和再利用方法?"
+},
+{
+  "index": 3,
+  "label": "有害垃圾对环境和人体健康的潜在影响?"
+}]`;
+      this.chatList.push({
+        role: "user",
+        content: `addAsk`,
+        uid: _uuid,
+        AI: "AI",
+        aiContent: "",
+        oldContent: "",
+        isShowSynchronization: false,
+        filename: "",
+        index: this.chatList.length,
+        is_mind_map: false,
+        loading: true
+      });
+
+      this.scrollBottom();
+
+			let history = [];
+      // this.nowChatList.forEach(i => {
+      //   if (i.content == "wanSearch") {
+      //     // history.push({
+      //     // 	role:"assistant",
+      //     // 	content: JSON.stringify(i.aiContent)
+      //     // })
+      //     return;
+      //   } else if (i.content == "getImage") {
+      //     return history.push({
+      //       role: "assistant",
+      //       content: i.aiContent
+      //     });
+      //   }else if(i.content == "addAsk"){
+
+			// 	}
+      //   if (i.content) {
+      //     history.push({
+      //       role: "user",
+      //       content: i.content
+      //     });
+      //   }
+      //   if (i.aiContent) {
+      //     history.push({
+      //       role: "assistant",
+      //       content: i.aiContent
+      //     });
+      //   }
+      // });
+      history.push({ role: "user", content: _msg });
+			console.log(history)
+      let params = {
+        model: "gpt-3.5-turbo",
+        temperature: 0,
+        max_tokens: 4096,
+        top_p: 1,
+        frequency_penalty: 0,
+        presence_penalty: 0,
+        messages:history,
+				stream: false,
+        uid: _uuid,
+        mind_map_question: ""
+      };
+      // let params = {
+      //   message: {
+      //     anthropic_version: "bedrock-2023-05-31",
+      //     max_tokens: 4096,
+      //     temperature: 0,
+      //     top_p: 1,
+      //     messages: [{ role: "user", content: _msg }]
+      //   },
+      //   uid: _uuid,
+      //   model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
+      // };
+      this.text = "";
+
+      this.ajax
+        .post("https://gpt4.cocorobo.cn/chat", params)
+        // .post("https://claude3.cocorobo.cn/chat", params)
+        .then(res => {
+					console.log(res)
+					let _data = res.data.FunctionResponse.choices[0].message.content;
+					console.log(_data);
+					this.chatList.find(i => i.uid == _uuid).aiContent =JSON.parse(_data);
+					this.chatList.find(i => i.uid == _uuid).isalltext = true;
+          this.chatList.find(i => i.uid == _uuid).isShowSynchronization = true;
+          this.chatList.find(i => i.uid == _uuid).loading = false;
+					this.scrollBottom();
+					this.chatLoading = false;
+        })
+        .catch(e => {
+          this.chatLoading = false;
+          console.log(e);
+        });
+		},
+    getAllStudent(){
+			let params = {
+				oid:this.oid,
+				cid:this.tcid?this.tcid:this.courseDetail.juri
+			}
+			this.allStudent = []
+			this.ajax.get(this.$store.state.api+'selectWorksStudent',params).then(res=>{
+				this.allStudent = res.data[0]
+			})
+		},
     scrollBottom() {
       this.$nextTick(() => {
         this.$refs.chatRef.scrollTop = this.$refs.chatRef.scrollHeight;
       });
-    }
+    },
+
   },
   mounted() {
     this.getChatList().then(_ => {
       this.scrollBottom();
     });
+		this.getAllStudent();
     this.nowChatList = [];
   }
 };
@@ -761,6 +1032,24 @@ Instruction: Based on the context, follow "Format example", write content.
   justify-content: space-between;
 }
 
+.tt_i_b_step{
+	display: flex;
+	width: 100%;
+	height: auto;
+	margin: 10px 0;
+}
+
+.tt_i_b_step>span{
+	height: 5px;
+	background-color: #E0EAFB;
+	flex: 1;
+	border-left: 2px solid #fff;
+}
+
+.tt_i_b_step>span:nth-child(-1){
+	border: none;
+}
+
 .tt_i_box > img {
   width: 100%;
   height: 50px;
@@ -785,6 +1074,7 @@ Instruction: Based on the context, follow "Format example", write content.
 
 .tt_i_b_box {
   width: auto;
+	min-width: 140px;
   height: 60px;
   box-sizing: border-box;
   border: solid 1px #e0eafb;
@@ -794,6 +1084,8 @@ Instruction: Based on the context, follow "Format example", write content.
 
 .tt_i_b_b_item {
   width: 70px;
+	min-width: 70px;
+	flex: 1;
   height: 100%;
   display: flex;
   flex-direction: column;
@@ -822,8 +1114,8 @@ Instruction: Based on the context, follow "Format example", write content.
 
 .t_top {
   width: 100%;
-  height: calc(100% - 90px);
-  /* height: calc(100% - 370px); */
+  /* height: calc(100% - 90px); */
+  height: calc(100% - 370px);
   overflow: auto;
   box-sizing: border-box;
   padding: 20px 0;
@@ -1123,4 +1415,32 @@ td,
 th {
   padding: 10px;
 }
+
+.s_t_addAsk{
+	width:100%;
+	height:auto;
+	padding:10px 20px;
+	display:flex;
+	flex-direction:column;
+	justify-content:center;
+	align-items:center;
+	box-sizing:border-box;
+}
+
+.s_t_addAsk>span{
+	box-sizing:border-box;
+	width:auto;
+	height:auto;
+	padding:15px;
+	margin-bottom:10px;
+	background-color:#F5F6F7;
+	border-radius:10px;
+	cursor:pointer;
+	border:solid 1px #E8E9EC;
+	transition:.3s;
+}
+
+.s_t_addAsk>span:hover{
+	background-color:#E8E9EC;
+}
 </style>

+ 23 - 2
src/components/classRoomHelper/index.vue

@@ -1,5 +1,6 @@
 <template>
   <div class="ch_box" ref="ch_box">
+		
     <div class="ch_content_box" v-if="type == 1">
       <searchArea
         :courseDetail="courseDetail"
@@ -10,6 +11,10 @@
       />
       <taskArea
         :courseDetail="courseDetail"
+				:navList="navList"
+				:courseType="courseType"
+				:taskCount="taskCount"
+				:worksStudent="worksStudent"
         ref="taskAreaRef"
         v-if="itemType == 2"
       />
@@ -145,6 +150,7 @@
         </div>
       </div>
     </div>
+		<levitatedSphere/>
   </div>
 </template>
 
@@ -152,12 +158,14 @@
 import searchArea from "./component/searchArea.vue";
 import taskArea from "./component/taskArea.vue";
 import dialogArea from "./component/dialogArea.vue";
+import levitatedSphere from './component/levitatedSphere.vue'
 export default {
   emits: ["refresh", "goStep", "backPage", "authority", "review"],
   components: {
     searchArea,
     taskArea,
-    dialogArea
+    dialogArea,
+		levitatedSphere
   },
   props: {
     courseDetail: {
@@ -176,6 +184,18 @@ export default {
 			type:String,
 			default:""
 		},
+		courseType:{
+			type:Number,
+			default:0
+		},
+		taskCount:{
+			type:Number,
+			default:0
+		},
+		worksStudent:{
+			type:Array,
+			default:()=>[]
+		}
   },
   data() {
     return {
@@ -226,9 +246,10 @@ export default {
   border-radius: 10px;
   box-sizing: border-box;
   right: 20px;
-  overflow: hidden;
+  /* overflow: hidden; */
   display: flex;
   top: 20px;
+	z-index:1000;
 }
 
 .ch_nav_box {

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

@@ -8041,7 +8041,7 @@
       </div>
     </div>
 		<!-- v-show="org == '1973f6c7-1561-11ee-91d8-005056b86db5' || org == '777559d2-7239-11ee-b98c-005056b86db5' || org == '884c5665-a453-46f3-b7b6-01d575290aa9'" -->
-		<classRoomHelper :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)" ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
+		<classRoomHelper :worksStudent="worksStudent" :courseType="parseInt(courseType)" :taskCount="taskCount" :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)" ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
                     '/courseDetail?userid=' +
                       userid +
                       '&oid=' +
@@ -14416,6 +14416,7 @@ export default {
               var commentCount = 0;
               var isLikes = false;
               var commentJson = [];
+							var likeJson = [];
               var data = b[j];
               if (i == b[j].tool) {
                 if (data.type == 2 && a[i].tool[0] == 4) {
@@ -14577,7 +14578,7 @@ export default {
                   //点赞
                   if (d[k].workId == b[j].id) {
                     likesCount++;
-
+										likeJson.push(d[k])
                     if (d[k].likesId == this.userid) {
                       isLikes = true;
                     }
@@ -14629,6 +14630,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 1,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14636,6 +14638,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14682,6 +14685,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 3,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14689,6 +14693,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14727,6 +14732,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 4,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14734,6 +14740,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i].push(_works);
                     _worksStudent2[i].push(_works);
@@ -14749,6 +14756,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 5,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14756,6 +14764,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i].push(_work);
                     _worksStudent2[i].push(_work);
@@ -14771,6 +14780,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 12,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14778,6 +14788,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14816,6 +14827,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 0,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14823,6 +14835,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14861,6 +14874,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 0,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14868,6 +14882,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14907,6 +14922,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 2,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14914,6 +14930,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   if (this.isGroup) {
                     let isGw = 1;
@@ -14949,6 +14966,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 2,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14956,6 +14974,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14969,6 +14988,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 8,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14976,6 +14996,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14989,6 +15010,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 9,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14996,6 +15018,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15009,6 +15032,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 10,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15016,6 +15040,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15029,6 +15054,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 13,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15036,6 +15062,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15049,6 +15076,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 16,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15057,7 +15085,8 @@ export default {
                     isLikes: isLikes,
                     commentJson: commentJson,
                     aiCode: b[j].aiCode,
-                    teacherCode: b[j].teacherCode
+                    teacherCode: b[j].teacherCode,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15071,6 +15100,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 17,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15078,6 +15108,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15091,6 +15122,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 14,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15098,6 +15130,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15116,6 +15149,7 @@ export default {
                       works: _gindex.url,
                       sName: b[j].name,
                       type: _gindex.type,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -15123,6 +15157,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i][_gindex.groupIndex].push(_work);
                     _worksStudent2[i][_gindex.groupIndex].push(_work);
@@ -15136,6 +15171,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: b[j].type == 1 ? 0 : b[j].type == 4 ? 1 : 3,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15143,6 +15179,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15155,6 +15192,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 12,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15162,6 +15200,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15178,6 +15217,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 12,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15185,6 +15225,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15201,6 +15242,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 15,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15208,6 +15250,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);

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

@@ -8071,7 +8071,7 @@
       </div>
     </div>
 				<!-- v-show="org == '1973f6c7-1561-11ee-91d8-005056b86db5' || org == '777559d2-7239-11ee-b98c-005056b86db5' || org == '884c5665-a453-46f3-b7b6-01d575290aa9'" -->
-		<classRoomHelper :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)" ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
+		<classRoomHelper :worksStudent="worksStudent" :courseType="parseInt(courseType)" :taskCount="taskCount" :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)" ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
                     '/courseDetail?userid=' +
                       userid +
                       '&oid=' +
@@ -14455,6 +14455,7 @@ export default {
               var commentCount = 0;
               var isLikes = false;
               var commentJson = [];
+							var likeJson = [];
               var data = b[j];
               if (i == b[j].tool) {
                 if (data.type == 2 && a[i].tool[0] == 4) {
@@ -14616,7 +14617,7 @@ export default {
                   //点赞
                   if (d[k].workId == b[j].id) {
                     likesCount++;
-
+										likeJson.push(d[k])
                     if (d[k].likesId == this.userid) {
                       isLikes = true;
                     }
@@ -14668,6 +14669,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 1,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14675,6 +14677,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14721,6 +14724,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 3,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14728,6 +14732,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14766,6 +14771,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 4,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14773,6 +14779,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i].push(_works);
                     _worksStudent2[i].push(_works);
@@ -14788,6 +14795,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 5,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14795,6 +14803,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i].push(_work);
                     _worksStudent2[i].push(_work);
@@ -14810,6 +14819,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 12,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14817,6 +14827,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14855,6 +14866,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 0,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14862,6 +14874,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14900,6 +14913,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 0,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14907,6 +14921,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14946,6 +14961,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 2,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14953,6 +14969,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   if (this.isGroup) {
                     let isGw = 1;
@@ -14988,6 +15005,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 2,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14995,6 +15013,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15008,6 +15027,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 8,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15015,6 +15035,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15028,6 +15049,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 9,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15035,6 +15057,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15048,6 +15071,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 10,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15055,6 +15079,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15068,6 +15093,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 13,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15075,6 +15101,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15088,6 +15115,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 16,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15096,7 +15124,8 @@ export default {
                     isLikes: isLikes,
                     commentJson: commentJson,
                     aiCode: b[j].aiCode,
-                    teacherCode: b[j].teacherCode
+                    teacherCode: b[j].teacherCode,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15110,6 +15139,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 17,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15117,6 +15147,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15130,6 +15161,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 14,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15137,6 +15169,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15155,6 +15188,7 @@ export default {
                       works: _gindex.url,
                       sName: b[j].name,
                       type: _gindex.type,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -15162,6 +15196,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i][_gindex.groupIndex].push(_work);
                     _worksStudent2[i][_gindex.groupIndex].push(_work);
@@ -15175,6 +15210,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: b[j].type == 1 ? 0 : b[j].type == 4 ? 1 : 3,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15182,6 +15218,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15194,6 +15231,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 12,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15201,6 +15239,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15217,6 +15256,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 12,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15224,6 +15264,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15240,6 +15281,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 15,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15247,6 +15289,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);

+ 46 - 2
src/components/studyStudent.vue

@@ -8038,7 +8038,7 @@
         </el-dialog>
       </div>
 			<!-- v-show="org == '1973f6c7-1561-11ee-91d8-005056b86db5' || org == '777559d2-7239-11ee-b98c-005056b86db5' || org == '884c5665-a453-46f3-b7b6-01d575290aa9'" -->
-      <classRoomHelper :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)"  ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
+      <classRoomHelper :worksStudent="worksStudent" :courseType="parseInt(courseType)" :taskCount="taskCount" :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)"  ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
                     '/courseDetail?userid=' +
                       userid +
                       '&oid=' +
@@ -14389,6 +14389,7 @@ export default {
               var commentCount = 0;
               var isLikes = false;
               var commentJson = [];
+							var likeJson = [];
               var data = b[j];
               if (i == b[j].tool) {
                 if (data.type == 2 && a[i].tool[0] == 4) {
@@ -14550,6 +14551,7 @@ export default {
                   //点赞
                   if (d[k].workId == b[j].id) {
                     likesCount++;
+										likeJson.push(d[k])
 
                     if (d[k].likesId == this.userid) {
                       isLikes = true;
@@ -14602,6 +14604,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 1,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14609,6 +14612,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14655,6 +14659,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 3,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14662,6 +14667,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14700,6 +14706,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 4,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14707,6 +14714,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i].push(_works);
                     _worksStudent2[i].push(_works);
@@ -14722,6 +14730,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 5,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14729,6 +14738,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i].push(_work);
                     _worksStudent2[i].push(_work);
@@ -14744,6 +14754,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 12,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14751,6 +14762,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14789,6 +14801,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 0,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14796,6 +14809,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14834,6 +14848,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 0,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14841,6 +14856,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14880,6 +14896,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 2,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14887,6 +14904,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   if (this.isGroup) {
                     let isGw = 1;
@@ -14922,6 +14940,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 2,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14929,6 +14948,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14942,6 +14962,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 8,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14949,6 +14970,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14962,6 +14984,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 9,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14969,6 +14992,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14982,6 +15006,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 10,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14989,6 +15014,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15002,6 +15028,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 13,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15009,6 +15036,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15022,6 +15050,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 16,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15030,7 +15059,8 @@ export default {
                     isLikes: isLikes,
                     commentJson: commentJson,
                     aiCode: b[j].aiCode,
-                    teacherCode: b[j].teacherCode
+                    teacherCode: b[j].teacherCode,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15044,6 +15074,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 17,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15051,6 +15082,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15064,6 +15096,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 14,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15071,6 +15104,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15089,6 +15123,7 @@ export default {
                       works: _gindex.url,
                       sName: b[j].name,
                       type: _gindex.type,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -15096,6 +15131,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i][_gindex.groupIndex].push(_work);
                     _worksStudent2[i][_gindex.groupIndex].push(_work);
@@ -15109,6 +15145,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: b[j].type == 1 ? 0 : b[j].type == 4 ? 1 : 3,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15116,6 +15153,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15128,6 +15166,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 12,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15135,6 +15174,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15151,6 +15191,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 12,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15158,6 +15199,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15174,6 +15216,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 15,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15181,6 +15224,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);

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