SanHQin 1 gadu atpakaļ
vecāks
revīzija
66f3aa5ae2
1 mainītis faili ar 100 papildinājumiem un 41 dzēšanām
  1. 100 41
      src/components/pages/contrastObservation/index.vue

+ 100 - 41
src/components/pages/contrastObservation/index.vue

@@ -165,7 +165,16 @@
 			</div>
 		</div>
 		<div
-			:class="['refresh',(loading ||aggregateLoading ||aiLoading ||teacherLoading ||contrastLoading)?'refreshDisabled':'']"
+			:class="[
+				'refresh',
+				loading ||
+				aggregateLoading ||
+				aiLoading ||
+				teacherLoading ||
+				contrastLoading
+					? 'refreshDisabled'
+					: '',
+			]"
 			@click.stop="refresh()"
 			v-loading="
 				loading ||
@@ -197,6 +206,7 @@ export default {
 				checkUrl: "",
 				doUrl: "",
 			},
+			bmData:null,
 			editorBarData: {
 				type: 0,
 				content: "",
@@ -251,11 +261,18 @@ export default {
 	},
 	methods: {
 		refresh() {
-			if(this.loading || this.aggregateLoading || this.aiLoading || this.teacherLoading || this.contrastLoading)return;
-			this.getData();
+			if (
+				this.loading ||
+				this.aggregateLoading ||
+				this.aiLoading ||
+				this.teacherLoading ||
+				this.contrastLoading
+			)
+				return;
+			this.getData(true);
 		},
 		// 获取绑定的testId
-		getBindTestId() {
+		getBindTestId(flag = false) {
 			return new Promise((resolve, reject) => {
 				if (this.loading || !this.tid) return;
 				this.loading = true;
@@ -270,9 +287,20 @@ export default {
 						if (_result) {
 							let _jsonData = JSON.parse(_result);
 							let baseMessage = _jsonData[0];
-							let _bmJsonData = JSON.parse(baseMessage.jsonData);
-							let _testData = _bmJsonData.testData;
-							this.editorBarData = _bmJsonData.editorBarData;
+							baseMessage.jsonData = JSON.parse(baseMessage.jsonData);
+							let _testData = baseMessage.jsonData.testData;
+							this.editorBarData = baseMessage.jsonData.editorBarData;
+							this.bmData = baseMessage;
+							if(!flag){//判断是否是需要生成数据
+								if(baseMessage.jsonData.contrastObservationData){//如果有这个字段则只取里面的数据
+									let _data = baseMessage.jsonData.contrastObservationData;
+									this.aggregateData=_data.aggregateData;
+									this.aiData=_data.aiData;
+									this.teacherData=_data.teacherData;
+									this.contrastData=_data.contrastData;
+									return;
+								}
+							}
 							if (_testData) {
 								this.testId = _testData;
 								resolve();
@@ -332,7 +360,7 @@ export default {
 		getTeacherResultData() {
 			return new Promise((resolve, reject) => {
 				if (this.teacherLoading || !this.testData) return;
-				if(!this.testData>0)return this.$message.error("绑定的表单无数据")
+				if (!this.testData > 0) return this.$message.error("绑定的表单无数据");
 				this.teacherLoading = true;
 				this.teacherData = [];
 				let _workData = [];
@@ -504,8 +532,7 @@ export default {
 						_workText += `问答题:\n总分:${i.score}分\n题目:${i.title}\n答案:${i.answer}\n答题与次数:\n${_userAnswerText}\n\n`;
 					}
 				});
-				let _msg = 
-`NOTICE
+				let _msg = `NOTICE
 Role: 你是专业的教育评估专家,熟悉教学评估的六个维度,了解如何从课堂观察报告中提取关键信息,并进行深入分析。
 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.
 ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
@@ -598,8 +625,8 @@ ${this.editorBarData.type == 0 ? this.editorBarData.content : ""}
 		"basis":["基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。列举出至少3个依据。使用"]
 	},
 ]`;
-// console.log("👇教师观察")
-// 				console.log(_msg)
+				// console.log("👇教师观察")
+				// 				console.log(_msg)
 				const _uuid = uuidv4();
 				let params = {
 					model: "gpt-3.5-turbo",
@@ -659,29 +686,28 @@ ${this.editorBarData.type == 0 ? this.editorBarData.content : ""}
 		getAiResultData() {
 			return new Promise((resolve, reject) => {
 				if (this.aiLoading || this.loading) return;
-				if (!this.classroomObservationData.length > 0){
-					return this.getClassroomObservationData().then(_=>{
-						this.getAiResultData().then(_=>{
+				if (!this.classroomObservationData.length > 0) {
+					return this.getClassroomObservationData().then((_) => {
+						this.getAiResultData().then((_) => {
 							resolve();
 						});
-					})
-				};
+					});
+				}
 				this.aiLoading = true;
 				this.aiData = [];
 				let _workText = ``; //转换的提示词
 				let _sum = 0;
-				this.classroomObservationData.forEach(i=>{
-					if([0,1,2].includes(i.Type)){
+				this.classroomObservationData.forEach((i) => {
+					if ([0, 1, 2].includes(i.Type)) {
 						let _jsonObj = JSON.parse(i.jsonData);
-						if(!_jsonObj.courseName){
-							if(_jsonObj.name!=="课堂记录"){
-								_workText+=`名称:${_jsonObj.name}\n分析内容:${_jsonObj.content}\n\n`
-							}			
+						if (!_jsonObj.courseName) {
+							if (_jsonObj.name !== "课堂记录") {
+								_workText += `名称:${_jsonObj.name}\n分析内容:${_jsonObj.content}\n\n`;
+							}
 						}
 					}
-				})
-				let _msg = 
-`NOTICE
+				});
+				let _msg = `NOTICE
 Role: 你是专业的教育评估专家,熟悉教学评估的六个维度,了解如何从课堂观察报告中提取关键信息,并进行深入分析。
 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.
 ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
@@ -969,10 +995,11 @@ ${_aiWorkText}
 						let _result = JSON.parse(_jsonData);
 
 						this.contrastData = _result;
+						resolve();
 					})
 					.catch((e) => {
 						console.log(e);
-						this.$message.error("生成ai观察结果失败");
+						this.$message.error("生成对比观察结果失败");
 					})
 					.finally((_) => {
 						this.contrastLoading = false;
@@ -1069,6 +1096,7 @@ ${_aiWorkText}
 						let _data = res.data.FunctionResponse.choices[0];
 						let _result = _data.message.content;
 						this.aggregateData.message = _result;
+						resolve();
 						// let _jsonData = _data.message.content;
 						// _jsonData = _jsonData.replaceAll("```json", "").replaceAll("```", "");
 						// let _result = JSON.parse(_jsonData);
@@ -1076,7 +1104,7 @@ ${_aiWorkText}
 					})
 					.catch((e) => {
 						console.log(e);
-						this.$message.error("生成总结数据对比");
+						this.$message.error("生成总结数据对比失败");
 					})
 					.finally((_) => {
 						this.aggregateLoading = false;
@@ -1112,14 +1140,14 @@ ${_aiWorkText}
 			this.teacherData.forEach((i) => {
 				if (i.title in _titleList) {
 					let _scoreStr = i.score;
-					_scoreStr=parseInt(_scoreStr.replaceAll('分',''))
+					_scoreStr = parseInt(_scoreStr.replaceAll("分", ""));
 					_teacherData.value[_titleList[i.title]] = parseInt(_scoreStr);
 				}
 			});
 			this.aiData.forEach((i) => {
 				if (i.title in _titleList) {
 					let _scoreStr = i.score;
-					_scoreStr=parseInt(_scoreStr.replaceAll('分',''))
+					_scoreStr = parseInt(_scoreStr.replaceAll("分", ""));
 					_aiData.value[_titleList[i.title]] = parseInt(_scoreStr);
 				}
 			});
@@ -1127,20 +1155,51 @@ ${_aiWorkText}
 			this.aggregateData.chartData = _chartData;
 		},
 		//获取
-		getData() {
+		getData(flag = false) {
 			// 获取观察所绑定的表单
-			this.getBindTestId().then((_) => {
+			this.getBindTestId(flag).then((_) => {
 				// 后去表单的数据
 				this.getBindTestData().then((_) => {
-					Promise.all([
-						this.getTeacherResultData(),
-						this.getAiResultData(),
-					]).then((_) => {
-					 this.getAggregateChartData();
-						this.getContrastResultData();
-						this.getAggregateResultData();
+						Promise.all([
+							this.getTeacherResultData(),
+							this.getAiResultData(),
+						]).then((_) => {
+							this.getAggregateChartData();
+							Promise.all([this.getContrastResultData(),this.getAggregateResultData()]).then(_=>{
+								this.saveData()
+							})
+						});
+					});
+			});
+		},
+		//储存数据
+		saveData() {
+			return new Promise((resolve, reject) => {
+				let _saveData = JSON.parse(JSON.stringify(this.bmData));
+				_saveData.jsonData.contrastObservationData = {
+						aggregateData: this.aggregateData,
+						aiData: this.aiData,
+						teacherData: this.teacherData,
+						contrastData: this.contrastData,
+				}
+				let params = {
+					id: _saveData.id,
+					json_data: JSON.stringify(_saveData.jsonData),
+				};
+				// console.log(params)
+				// return resolve();
+				this.ajax
+					.post(
+						"https://gpt4.cocorobo.cn/update_classroom_observation",
+						params
+					)
+					.then((res) => {
+						this.$message.success("保存数据成功")
+						resolve();
+					}).catch(e=>{
+						console.log(e);
+						this.$message.info('保存数据失败')
 					});
-				});
 			});
 		},
 	},
@@ -1182,7 +1241,7 @@ ${_aiWorkText}
 	cursor: pointer;
 }
 
-.refreshDisabled{
+.refreshDisabled {
 	cursor: not-allowed;
 }