SanHQin 9 månader sedan
förälder
incheckning
e477a2fccf

+ 50 - 7
src/components/pages/classroomObservation/components/analysisTemplateDialog.vue

@@ -370,7 +370,7 @@ export default {
 				{ value: "9", label: "地理" },
 				{ value: "10", label: "政治" },
 			],
-			defaultData:{"id":"45413212-2956-11ef-bee5-005056b86db5","name":"科学通用模板","detail":"针对性分析科学课堂,包含通用分析模块以及科学学科分析模块,并采用5E和5EX课程设计模型对课堂进行改编。","open":"1","userid":"qgt","type":"4","use":0,"update_at":"2024-06-13T07:21:48.000Z","create_at":"2024-06-13T07:21:48.000Z"},
+			defaultData:null,
 			templateData: [],
 			collectData: [],
 			analysisDetail: null,
@@ -400,14 +400,16 @@ export default {
 			this.tagBox = 0;
 			this.getData();
 			this.getCollectData(false);
+			this.getDefaultTemplate();
 			this.dialogVisible = true;
 		},
 		close() {
-			if (this.loading) return;
+			// if (this.loading) return;
 			this.dialogVisible = false;
 			this.text = "";
 			this.tagIndex = 1;
 			this.tagSubject = 0;
+			this.defaultData = null;
 			this.tagBox = 0;
 		},
 		changeTagSubject(subject) {
@@ -510,7 +512,7 @@ export default {
 		},
 		// 使用
 		useAnalysis(item) {
-			this.$confirm("使用模板会替换原有的模板!是否使用该模板?", "提示", {
+			this.$confirm("确定使用该模板来创建新的课堂吗?", "提示", {
 				confirmButtonText: "确定",
 				cancelButtonText: "取消",
 				type: "warning",
@@ -530,18 +532,21 @@ export default {
 						.then((res) => {
 							let _data = res.data[0][0];
 							if (_data) {
+								this.loading = true;
 								_data.tips = JSON.parse(_data.tips);
-								console.log(_data);
+								this.$emit("useTemplate", _data.tips);
 							} else {
+								this.loading = false;
 								this.$message.error("获取模板详细为空");
 							}
 						})
 						.catch((e) => {
 							console.log(e);
+							this.loading = false;
 							this.$message.error("获取模板详细失败");
 						})
 						.finally((_) => {
-							this.loading = false;
+							// this.loading = false;
 						});
 				})
 				.catch(() => {
@@ -707,7 +712,7 @@ export default {
 			);
 			_data.splice(_dIndex, 1);
 			this.analysisDetail.tips = JSON.parse(JSON.stringify(_data));
-			this.$message.success("删除成功");
+			// this.$message.success("删除成功");
 		},
 		// 添加弹窗
 		addAnalysisItem(type) {
@@ -746,10 +751,48 @@ export default {
 			this.tagBox = 0;
 			this.analysisDetail = null;
 		},
+		getDefaultTemplate(){
+			let params = {
+				uid:this.userId
+			}
+			this.ajax.get(this.$store.state.api+"selectClassroomDefault",params).then(res=>{
+				let _data = res.data[0][0];
+				this.defaultData = _data;
+			}).catch(e=>{
+				this.$message.error("获取默认模板失败");
+				console.log(e);
+			})
+		},
 		//设置默认
 		setDefault(_data){
 			if(this.defaultData.id==_data.id)return;
-			this.$message.info("设置默认");
+			this.$confirm("确定设置该模板为默认模板?", "提示", {
+				confirmButtonText: "确定",
+				cancelButtonText: "取消",
+				type: "warning",
+			})
+				.then(() => {
+					let params = [{
+				uid:this.userId,
+				tid:_data.id
+			}]
+			this.ajax.post(this.$store.state.api+"updateClassroomDefault",params).then(res=>{
+				console.log("👇设置默认模板")
+				if(res.data ==1){
+					this.$message.success('设置默认模板成功');
+				}else{
+					this.$message.error('设置默认模板失败');
+				}
+				this.getDefaultTemplate();
+			}).catch(e=>{
+				this.$message.error('设置默认模板失败');
+				console.log(e);
+				this.getDefaultTemplate();
+			})
+				}).catch(e=>{
+					console.log(e)
+				})
+			// this.$message.info("设置默认");
 		}
 	},
 };

+ 3 - 2
src/components/pages/classroomObservation/components/baseMessage.vue

@@ -562,8 +562,8 @@ Instruction: Based on the context, follow "Format example", write content.
 ]
 
 ## 课堂实录 
-${this.data.editorBarData.content}
-`;
+${this.data.editorBarData?this.data.editorBarData.content:""}
+`;			
 				const _uuid = uuidv4();
 				let params = {
 					model: "gpt-3.5-turbo",
@@ -619,6 +619,7 @@ ${this.data.editorBarData.content}
 					.catch((e) => {
 						console.log(e);
 						this.$message.error("生成词云图失败");
+						this.uploadNephogramLoading = false;
 					})
 					.finally((_) => {
 						this.uploadNephogramLoading = false;

+ 11 - 0
src/components/pages/classroomObservation/components/chatArea.vue

@@ -2175,6 +2175,17 @@ ${JSON.stringify(_list)}
 			// console.log(this.editorBarData)
 			this.$forceUpdate();
 		},
+		// 初始化
+		init(){
+			this.transcriptionData.content="";
+			this.chatList = [];
+			this.editorBarData = {
+				type: "0", //0---文字   1-文件
+				content: "",
+				url: "",
+			}
+			this.audioUrl = "";
+		}
 	},
 	mounted() {},
 };

+ 475 - 3
src/components/pages/classroomObservation/components/messageArea.vue

@@ -250,6 +250,7 @@
 		<!-- 分析模板 -->
 		<analysisTemplateDialog
 			ref="analysisTemplateDialogRef"
+			@useTemplate="useTemplate"
 			:dataList="dialogTagDataList"
 		/>
 	</div>
@@ -1057,13 +1058,31 @@ export default {
 		},
 		// 使用分析模板
 		useAnalysisTemplate() {
-			return;
-			if (!this.tid) return this.$message.error("请先选择课堂");
+			// return;
+			// if (!this.tid) return this.$message.error("请先选择课堂");
 			this.$refs.analysisTemplateDialogRef.open();
 		},
+		useTemplate(json){
+			let _result = [];
+			json.forEach(i=>{
+				let _obj = {
+					jsonData:i.jsonData,
+					type:i.Type,
+					index:i.tIndex
+				}
+				_result.push(_obj)
+			})
+			this.$parent.addNewCourseByTemplate(_result).then(res=>{
+				this.$refs.analysisTemplateDialogRef.close();
+				this.$refs.analysisTemplateDialogRef.loading = false;
+			}).catch(e=>{
+				console.log(e);
+				this.$refs.analysisTemplateDialogRef.loading = false;
+			})
+		},
 		//另存为模板
 		saveAsTemplate() {
-			return;
+			// return;
 			if (!this.tid) return this.$message.error("请先选择课堂");
 			this.$refs.saveTemplateDialogRef.open();
 			// this.$message.info("另存为模板");
@@ -1184,6 +1203,8 @@ export default {
 					// 图片
 					let _imageList = _data.find((i) => i.tIndex == 1);
 					_imageList.jsonData = JSON.parse(_imageList.jsonData);
+					console.log("👇👇")
+					console.log(_imageList)
 					if (!_imageList.jsonData.videoList) {
 						_imageList.jsonData.videoList = [];
 					}
@@ -1599,6 +1620,457 @@ export default {
 			if (!this.tid) return this.$message.error("请选择课堂");
 			this.$refs.bindingFormDialogRef.open(_data.jsonData);
 		},
+		init(){
+			console.log("初始化")
+			this.bmData = {};
+			this.dataList = [
+				{
+					id: "f7e54174-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "5E课程改编",
+						result:
+							"5E教学模型旨在为教育工作者提供一个结构化的教学框架,通过五个阶段:激发兴趣(Engage)、探索(Explore)、解释(Explain)、延伸(Elaborate)、评价(Evaluate)促进学生主动学习。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 2,
+					tIndex: 0,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7e7dc2a-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "5EX课程改编",
+						result:
+							"5EX模型是一个用于设计和实施 STEM 教育中跨学科学习活动的框架。旨在通过跨学科的方式,让学生在解决实际问题的过程中,发展科学探究能力、工程设计能力、技术制作能力、数学应用能力和创新实践能力。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 2,
+					tIndex: 1,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7bea92d-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "课堂活动类型",
+						result:
+							"课堂活动类型分析通过详细记录和统计不同教学活动的出现频次和具体案例,揭示了教师和学生在课堂上的互动模式和教学策略,有助于深入理解和优化教学过程。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 1,
+					tIndex: 0,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7c13eae-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "学科核心素养发展",
+						result:
+							"以《义务教育科学课程标准》为基础,分析该节课程的教学目标设计、课堂活动与学科核心素养培养匹配程度。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 1,
+					tIndex: 1,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7c3be4a-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "科学教育目标分析",
+						result:
+							"以《Learning Science, Learning about Science, Doing Science: different goals demand different learning methods》为基础,分析课程在学习科学、了解科学、做科学、解决社会科学问题共4个维度的表现。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 1,
+					tIndex: 2,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7c64778-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "PORTAAL课堂观察",
+						result:
+							"以《PORTAAL_A Classroom Observation Tool Assessing Evidence-Based Teaching Practices for Active Learning in Large Science, Technology, Engineering, and Mathematics Classes》为基础,分析课程在实践、逻辑发展、问责、减少学生焦虑共5个维度的表现。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 1,
+					tIndex: 3,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7c8d627-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "UTOP课堂观察",
+						result:
+							"以 American National Science Foundation 支持的 REESE 项目成果《Teaching DimensionsObservational Protocol》为基础,分析课程在教学方法、师生对话、学生认知参与、教学策略、教学技术这五个维度的课堂表现。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 1,
+					tIndex: 4,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7cb6ac8-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "L-PST模型",
+						result:
+							"以华南师范大学詹泽慧团队的 L-PST 模型研究成果为基础,分析课程在课堂教学、课堂文化、技术应用这三个维度的课堂表现。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 1,
+					tIndex: 5,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7ce0d57-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "RTOP课堂观察",
+						result:
+							"以 American National Science Foundation 支持的 ACEPT 项目成果《Reformed Teaching Observation Protocol》为基础,分析课程在课程设计与实施、课堂内容、课堂文化维度的表现。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 1,
+					tIndex: 6,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7d0ab16-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "SCOP课堂观察",
+						result:
+							"以Washington State Leadership and Assistance of Science Education Reform发布的《Science Classroom Observation Protocol》为基础,分析课程在学习目标、理解过程、意义建构、课堂文化四个维度的课堂表现。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 1,
+					tIndex: 7,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7d33562-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "KWL教学策略",
+						result:
+							"KWL是 Ogle 于1986年提出的一种学习方法,分析学生课前已知道什么、上课想知道什么、课后学到了什么。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 1,
+					tIndex: 8,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7d5cecd-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "LICC课堂观察",
+						result:
+							"崔允漷教授团队创设的LICC课堂观察框架从4个维度对课堂进行观察,即:学生学习、教师教学、课程性质、课堂文化。每维度5视角,每视角有相应的观察点,合计68个观察点。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 1,
+					tIndex: 9,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7d85cff-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "读思达教学法",
+						result:
+							"余文森教授基于发展问题,提出了“读思达”教学法,要让阅读、思考、表达真实、深刻、完整地发生,成为课堂教学的真正中心。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 1,
+					tIndex: 10,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7dadc88-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "教学内容分析",
+						result:
+							"在语文课堂教学研究中,改变一味讲究教师的教学方法、教学艺术的标准,推进从教学内容角度观课评教,是王荣生教授的语文教学内容观课评教研究结果。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 1,
+					tIndex: 11,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7dd547b-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "提问策略分析",
+						result:
+							"结合语文课堂改编David Hopkins的提问观察表,关注语文课堂发生的提问,进行语文课堂提问策略有效性的分析。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 1,
+					tIndex: 12,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7dffc46-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "教师反馈分析",
+						result:
+							"综合教师反馈的文献研究,分析语文课堂中教师对学生参与问题回答、课堂讨论、课堂朗读等课堂互动行为的输出内容以及表现进行的言语性回应。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 1,
+					tIndex: 13,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7e2aa58-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "师生互动分析",
+						result:
+							"依据师生互动在语文课堂上的表征形式,把语文课堂师生互动分为提问互动、讨论互动、表演互动、情感互动四种形式,并进行课堂观察与分析。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 1,
+					tIndex: 14,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7af7f71-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "词频词汇分析",
+						result: "",
+						fileList: [],
+						dataFileList: [],
+						wordNum: "",
+						wordCountNum: "",
+						fileList2: [],
+					},
+					Type: 0,
+					tIndex: 2,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7b21fcb-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "OMO智慧课堂分析",
+						result:
+							"OMO智慧教学环境的课堂分析指标体系,通过整合多模态数据,从“教学设计”、“教学实施”、“教学效果”三个维度提炼课堂教学特征。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 0,
+					tIndex: 3,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7b4b19c-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "教学阶段九事件分析",
+						result:
+							"加涅的教学九事件分析图表描述了9个关键步骤,帮助教师设计有效教学并促进学生学习。它涵盖引起注意、呈现信息、引导练习等环节,确保学生掌握知识并能运用所学。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 0,
+					tIndex: 4,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7b729dc-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "布鲁姆问题分类",
+						result:
+							"布鲁姆教学目标法旨在系统化地提升学生认知能力。该方法将认知领域分为六个层次:记忆、理解、应用、分析、评价和创新,以此框架指导教学活动,促进学生从基础知识掌握到高阶思维技能的全面发展。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 0,
+					tIndex: 5,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7b9b6d5-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "麦卡锡问题分类",
+						result:
+							"麦卡锡模式(4MAT模式)由伯尼斯·麦卡锡开发,将学习问题分为“是何”、“为何”、“如何”和“若何”四类,旨在通过事实、原理、方法和创造性思维的综合应用,促进学生全面发展。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 0,
+					tIndex: 6,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+				{
+					id: "f7bc3e00-2794-11ef-aaca-12e77c4cb76b",
+					jsonData: {
+						name: "学生回答情况",
+						result:
+							"IRE分析是一种课堂观察方法,用于分析教师提问和学生回答的互动模式。它将学生的回答分为三类:R1(简单回应)、R2(事实性知识回答)和R3(开放性推理性或解释性回答)。",
+						fileList: [],
+						dataFileList: [],
+						content: "",
+					},
+					Type: 0,
+					tIndex: 7,
+					tId: "2c5b1c3e-6b49-4f50-97e4-9724982480aa",
+					createtime: "2024-06-11 01:50:23",
+					like_num: 0,
+					like_data: null,
+					userid: "1298a40e-1566-11ee-91d8-005056b86db5",
+					isdel: 0,
+				},
+			];
+			this.imageList = {};
+			this.loading=false;
+			this.baseMessageLoading= false;
+			this.currencyLoading=false;
+			this.scienceLoading= false;
+			this.extendLoading= false;
+			this.valueAddedLoading= false;
+		},
 	},
 };
 </script>

+ 23 - 7
src/components/pages/classroomObservation/components/saveTemplateDialog.vue

@@ -50,6 +50,11 @@
 </template>
 
 <script>
+var OpenCC = require("opencc-js");
+let converter = OpenCC.Converter({
+		from:'hk',
+		to:'cn'
+})
 export default {
 	emits: ["success"],
 	props: {
@@ -122,13 +127,24 @@ export default {
 						let _result = [];
 						
 						_data.forEach(i=>{
-							i.jsonData.content = "";
-							i.jsonData.dataFileList = [];
-							i.jsonData.fileList = [];
-							i.createtime = "";
-							i.id = "",
-							i.tId = "",
-							i.userid = "";
+							if(converter(i.jsonData.name)==converter('词频词汇分析')){
+								i.jsonData.wordNum = 0;
+								i.jsonData.wordCountNum = 0;
+								i.createtime = "";
+								i.jsonData.content = "";
+								i.id = "",
+								i.tId = "",
+								i.userid = "";
+							}else{
+								i.jsonData.content = "";
+								i.jsonData.dataFileList = [];
+								i.jsonData.fileList = [];
+								i.createtime = "";
+								i.id = "",
+								i.tId = "",
+								i.userid = "";
+							}
+							
 							_result.push(i)
 						})
 						let params = [{

+ 199 - 69
src/components/pages/classroomObservation/index.vue

@@ -34,13 +34,15 @@
 							<div class="selectBox">
 								<span>{{ item.label }}</span>
 								<div class="controlsBox">
-									<span class="changeSelect" @click.stop="changeCourse(item)"></span>
 									<span
-									class="delSelect"
-									@click.stop="delCourse(item.id)"
-								></span>
+										class="changeSelect"
+										@click.stop="changeCourse(item)"
+									></span>
+									<span
+										class="delSelect"
+										@click.stop="delCourse(item.id)"
+									></span>
 								</div>
-								
 							</div>
 						</el-option>
 					</el-select>
@@ -55,7 +57,7 @@
 			</div>
 			<div class="co-h2-right">
 				<div
-					:class="['co-h2-r-btn', fileId ? '' : 'ca-h2-r-noActive']"
+					:class="['co-h2-r-btn', fileId && tid ? '' : 'ca-h2-r-noActive']"
 					style="background: rgba(54, 129, 252, 1)"
 					@click.stop="getReport()"
 				>
@@ -64,7 +66,7 @@
 				</div>
 
 				<div
-					:class="['co-h2-r-btn', fileId ? '' : 'ca-h2-r-noActive']"
+					:class="['co-h2-r-btn', fileId && tid ? '' : 'ca-h2-r-noActive']"
 					style="background: #ffffff"
 					@click.stop="preview()"
 				>
@@ -156,8 +158,12 @@
 			:tid="tid"
 			@shareBtn="shareBtn"
 		></sharePdf>
-		<changeCourseNameDialog :tid="tid" ref="changeCourseNameDialogRef" @success="changeCourseSuccess"/>
-		
+		<changeCourseNameDialog
+			:tid="tid"
+			ref="changeCourseNameDialogRef"
+			@success="changeCourseSuccess"
+		/>
+
 		<!-- <addNewCourseDialog
 			:courseList="optionData"
 			ref="addNewCourseDialogRef"
@@ -178,7 +184,7 @@ import { v4 as uuidv4 } from "uuid";
 // 添加课堂弹窗
 // import addNewCourseDialog from "./components/addNewCourseDialog.vue";
 //修改课程名称弹窗
-import changeCourseNameDialog from './components/changeCourseNameDialog';
+import changeCourseNameDialog from "./components/changeCourseNameDialog";
 //保存模板弹窗
 
 export default {
@@ -208,42 +214,150 @@ export default {
 				this.$refs.messageAreaRef.getData();
 				this.$refs.chatAreaRef.getData();
 				this.getFileIdId();
+
+			// 	setTimeout(()=>{
+			// 		this.$refs.messageAreaRef.init();
+			// 		this.$refs.chatAreaRef.init();
+			// 		this.tid = "";
+			// 		this.fileId = "";
+			// 		this.fileIdId = "";
+			// 	},6000)
 			});
 		},
 		addNewCourse() {
+			return new Promise((resolve,reject)=>{
+				this.addNewCourseByDefault().then(_=>{
+					resolve();
+				})
+			})
+			// var OpenCC = require("opencc-js");
+			// let converter = OpenCC.Converter({
+			// 	from: "hk",
+			// 	to: "cn",
+			// });
+			// return new Promise((resolve, reject) => {
+			// 	if (this.loading) return this.$message.info("请稍等");
+			// 	this.loading = true;
+			// 	let date = new Date();
+			// 	let month = date.getMonth() + 1;
+			// 	let day = date.getDate();
+			// 	let classroomName = `${month < 10 ? "0" + month : month}${
+			// 		day < 10 ? "0" + day : day
+			// 	}新建课堂`;
+			// 	let sum = this.optionData.filter(
+			// 		(i) => i.label.indexOf(classroomName) != -1
+			// 	).length;
+			// 	if (!sum == 0) {
+			// 		classroomName += sum;
+			// 	}
+			// 	let params = {
+			// 		tid: uuidv4(),
+			// 		name: classroomName,
+			// 		userid: this.userId,
+			// 	};
+			// 	this.ajax
+			// 		.post(
+			// 			"https://gpt4.cocorobo.cn/insert_classroom_observation_tid",
+			// 			params
+			// 		)
+			// 		.then((res) => {
+			// 			let _data = res.data.FunctionResponse;
+			// 			if (converter(_data.message) == converter("创建成功")) {
+			// 				// 设置该课堂的tid
+			// 				this.tid = params.tid;
+			// 				this.ajax
+			// 					.post("https://gpt4.cocorobo.cn/insert_classroom_observation", {
+			// 						tid: params.tid,
+			// 						type: 10,
+			// 						index: 0,
+			// 						json_data: JSON.stringify({ file_ids: "" }),
+			// 						userid: this.userId,
+			// 					})
+			// 					.then((res2) => {
+			// 						let _data2 = res2.data.FunctionResponse;
+			// 						if (converter(_data2.message) == converter("创建成功")) {
+			// 							this.loading = false;
+			// 							this.$nextTick(() => {
+			// 								this.getCourseList().then((_) => {
+			// 									this.getFileIdId();
+			// 									this.$refs.messageAreaRef.getData();
+			// 									this.$refs.chatAreaRef.getData();
+			// 									resolve();
+			// 								});
+			// 							});
+			// 						} else {
+			// 							this.$message.error("创建fileIds失败");
+			// 						}
+			// 					});
+			// 			} else if (converter(_data.message) == converter("tid重复")) {
+			// 				this.$message.error("该课堂已存在");
+			// 				this.loading = false;
+			// 			} else {
+			// 				this.$message.error("创建失败");
+			// 				this.loading = false;
+			// 			}
+			// 		});
+			// });
+		},
+		addNewCourseByDefault() {
+			// 通过用户ID获取默认的模板
+			return new Promise((resolve,reject)=>{
+				let params = {
+				uid: this.userId,
+			};
+			this.loading = true;
+			this.ajax.get(this.$store.state.api + "selectClassroomDefault", params).then((res) => {
+				let _data = res.data[0][0];
+				if (_data) {
+					this.loading = true;
+					_data.tips = JSON.parse(_data.tips);
+					let _result = [];
+					_data.tips.forEach((i) => {
+						let _obj = {
+							jsonData: i.jsonData,
+							type: i.Type,
+							index: i.tIndex,
+						};
+						_result.push(_obj);
+					});
+					this.loading = false;
+					// console.log('👇要生成的模板')
+					// console.log(_result)
+					this.addNewCourseByTemplate(_result).then(_=>{
+						resolve();
+					})
+				}else{
+					this.loading = false;
+					this.$message.error("获取模板详细为空");
+				}
+			});
+			})
+			
+		},
+		addNewCourseByTemplate(json = []) {
+			if (json.length <= 0) return;
+
 			var OpenCC = require("opencc-js");
 			let converter = OpenCC.Converter({
-					from:'cn',
-					to:'hk'
-			})
+				from: "hk",
+				to: "cn",
+			});
 			return new Promise((resolve, reject) => {
-				if (this.loading) return this.$message.info("请稍等");
 				this.loading = true;
-				let date = new Date();
-				let month = date.getMonth() + 1;
-				let day = date.getDate();
-				let classroomName = `${month < 10 ? "0" + month : month}${
-					day < 10 ? "0" + day : day
-				}新建课堂`;
-				let sum = this.optionData.filter(
-					(i) => i.label.indexOf(classroomName) != -1
-				).length;
-				if (!sum == 0) {
-					classroomName += sum;
-				}
+				const _newTid = uuidv4();
 				let params = {
-					tid: uuidv4(),
-					name: classroomName,
+					tid: _newTid,
 					userid: this.userId,
+					template: json,
 				};
 				this.ajax
 					.post(
-						"https://gpt4.cocorobo.cn/insert_classroom_observation_tid",
+						"https://gpt4.cocorobo.cn/insert_classroom_observation_template",
 						params
 					)
 					.then((res) => {
 						let _data = res.data.FunctionResponse;
-						if (converter(_data.message)== converter("创建成功")) {
+						if (converter(_data.message) == converter("创建成功")) {
 							// 设置该课堂的tid
 							this.tid = params.tid;
 							this.ajax
@@ -292,7 +406,7 @@ export default {
 			// 	type: "warning",
 			// })
 			// 	.then(() => {
-				this.$refs.messageAreaRef.getReport();
+			this.$refs.messageAreaRef.getReport();
 			// 	})
 			// 	.catch((e) => {
 			// 		console.log(e)
@@ -360,13 +474,22 @@ export default {
 								type: "success",
 								message: "删除成功!",
 							});
+							this.tid = "";
+
 							// 清空tid
 							this.tid = "";
+							this.fileIdId = "";
+							this.fileId = "";
 							this.getCourseList().then((_) => {
-								if (!this.tid) return;
-								this.getFileIdId();
+								if (!this.tid){
+									this.$refs.messageAreaRef.init();
+									this.$refs.chatAreaRef.init();
+								}else{
+									this.getFileIdId();
 								this.$refs.messageAreaRef.getData();
 								this.$refs.chatAreaRef.getData();
+								}
+								
 							});
 						});
 				})
@@ -444,9 +567,10 @@ export default {
 						this.loading = false;
 						console.log(this.optionData);
 						resolve();
-					}).catch(e=>{
+					})
+					.catch((e) => {
 						console.log(e);
-						this.$message.error("获取课堂列表失败")
+						this.$message.error("获取课堂列表失败");
 					});
 			});
 		},
@@ -476,45 +600,50 @@ export default {
 			this.createTime = time;
 		},
 		// 修改课程名称
-		changeCourse(item){
+		changeCourse(item) {
 			this.$refs.changeCourseNameDialogRef.open(item);
 			// console.log(item);
 		},
 		// 修改课程名称确定
-		changeCourseSuccess(data){
+		changeCourseSuccess(data) {
 			this.loading = true;
-			if(this.tid==data.tid){
+			if (this.tid == data.tid) {
 				this.$refs.messageAreaRef.bmData.jsonData.courseName = data.name;
-				this.$refs.messageAreaRef.saveData(this.$refs.messageAreaRef.bmData).then(res=>{
-					this.loading = false;
-					this.optionData.find(i=>i.id==data.id).label=data.name
-					this.$message.success('修改成功')
-				})
-			}else{
-				this.ajax.post("https://gpt4.cocorobo.cn/get_classroom_observation_new",{
-				tid:data.tid,
-				type:0
-			}).then(res=>{
-				let _data = res.data.FunctionResponse.result;
-				_data = JSON.parse(_data);
-				let _bmData = _data.find(i=>i.tIndex==0);
-				_bmData.jsonData = JSON.parse(_bmData.jsonData);
-				_bmData.jsonData.courseName = data.name;
-				this.$refs.messageAreaRef.saveData(_bmData).then(res=>{
-					this.loading = false;
-					this.optionData.find(i=>i.id==data.id).label=data.name
-					this.$message.success('修改成功')
-				})
-			}).catch(e=>{
-				console.log(e);
-				this.$message.error('修改失败')
-				this.loading = false;
-			})
+				this.$refs.messageAreaRef
+					.saveData(this.$refs.messageAreaRef.bmData)
+					.then((res) => {
+						this.loading = false;
+						this.optionData.find((i) => i.id == data.id).label = data.name;
+						this.$message.success("修改成功");
+					});
+			} else {
+				this.ajax
+					.post("https://gpt4.cocorobo.cn/get_classroom_observation_new", {
+						tid: data.tid,
+						type: 0,
+					})
+					.then((res) => {
+						let _data = res.data.FunctionResponse.result;
+						_data = JSON.parse(_data);
+						let _bmData = _data.find((i) => i.tIndex == 0);
+						_bmData.jsonData = JSON.parse(_bmData.jsonData);
+						_bmData.jsonData.courseName = data.name;
+						this.$refs.messageAreaRef.saveData(_bmData).then((res) => {
+							this.loading = false;
+							this.optionData.find((i) => i.id == data.id).label = data.name;
+							this.$message.success("修改成功");
+						});
+					})
+					.catch((e) => {
+						console.log(e);
+						this.$message.error("修改失败");
+						this.loading = false;
+					});
 			}
 		},
 		//保存词频词汇分析
-		saveWordFrequency({_sentence=0,_words=0}){
-			this.$refs.messageAreaRef.saveWordFrequency({_sentence,_words})
+		saveWordFrequency({ _sentence = 0, _words = 0 }) {
+			this.$refs.messageAreaRef.saveWordFrequency({ _sentence, _words });
 		},
 	},
 	mounted() {
@@ -775,7 +904,7 @@ export default {
 	justify-content: space-between;
 }
 
-.controlsBox{
+.controlsBox {
 	display: flex;
 	align-items: center;
 	width: auto;
@@ -783,17 +912,18 @@ export default {
 	display: none;
 }
 
-.selectBox:hover>.controlsBox{
+.selectBox:hover > .controlsBox {
 	display: flex;
 }
 
-.changeSelect{
+.changeSelect {
 	width: 16px;
 	height: 16px;
 	/* display: none; */
 	align-items: center;
 	justify-content: center;
-	background: url("../../../assets/icon/classroomObservation/editIcon.svg") no-repeat;
+	background: url("../../../assets/icon/classroomObservation/editIcon.svg")
+		no-repeat;
 	background-size: 100% 100%;
 	box-sizing: border-box;
 	margin-right: 10px;