| 
					
				 | 
			
			
				@@ -0,0 +1,1375 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<div class="contrastObservation" v-loading="loading"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<div class="co_card co_aggregateData" v-loading="aggregateLoading"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<div class="co_ad_title"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					:src=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						require('../../../assets/icon/contrastObservation/titleIcon.svg') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<span>总数据对比</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<div class="co_ad_chartArea"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<chart :data="aggregateData.chartData" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<div class="co_ad_messageArea" v-html="aggregateData.message"></div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<div class="co_card co_ai_card"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<div class="co_c_main" v-loading="aiLoading"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<div class="co_c_title">AI观察结果</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					class="co_c_m_message" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					v-for="(item, index) in aiData" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					:key="index" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="co_c_m_m_title co_ai_title"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<el-tooltip 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							class="item" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							effect="dark" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							:content="item.description" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							placement="bottom" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							popper-class="text_tooltip" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<span>{{ item.title }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</el-tooltip> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="score"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<span class="titleBlob">评分:</span>{{ item.score }}分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="message"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<span class="titleBlob">结论:</span>{{ item.message }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="basis"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<span class="titleBlob">依据:</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<ol> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<li 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								v-for="(item2, index2) in item.basis.length ? item.basis : []" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								:key="index2" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								{{ item2 }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</li> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</ol> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<!-- <div class="co_c_m_m_text">{{ item.message }}</div> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<div class="co_card co_teacher_card"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<div class="co_c_main" v-loading="teacherLoading"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<div class="co_c_title">教师观察结果</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					class="co_c_m_message" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					v-for="(item, index) in teacherData" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					:key="index" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="co_c_m_m_title co_teacher_title"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<el-tooltip 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							class="item" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							effect="dark" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							:content="item.description" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							placement="bottom" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							popper-class="text_tooltip" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<span>{{ item.title }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</el-tooltip> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="score"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<span class="titleBlob">评分:</span>{{ item.score }}分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="message"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<span class="titleBlob">结论:</span>{{ item.message }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="basis"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<span class="titleBlob">依据:</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<ol> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<li 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								v-for="(item2, index2) in item.basis.length ? item.basis : []" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								:key="index2" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								{{ item2 }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</li> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</ol> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<!-- <div class="co_c_m_m_text">{{ item.message }}</div> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<div class="co_card co_contrast_card"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<div class="co_c_main" v-loading="contrastLoading"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<div class="co_c_title">对比观察结果</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					class="co_c_m_message" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					v-for="(item, index) in contrastData" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					:key="index" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="co_c_m_m_title co_contrast_title"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<el-tooltip 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							class="item" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							effect="dark" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							:content="item.description" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							placement="bottom" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							popper-class="text_tooltip" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<span>{{ item.title }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</el-tooltip> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="similarity"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<span class="titleBlob compareTitle">相同点:</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<span>{{ item.similarity }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<!-- <div class="compare" v-else> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<div class="titleBlob">相同点:</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<ol> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<li 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								v-for="(item2, index2) in item.similarity.length ? item.similarity : []" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								:key="index2" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								{{ item2 }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</li> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</ol> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="difference"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<span class="titleBlob compareTitle">不同点:</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<span>{{ item.difference }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<!-- <div class="compare" v-else> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<div class="titleBlob">不同点:</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<ol> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<li 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								v-for="(item2, index2) in item.difference.length ? item.difference : []" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								:key="index2" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								{{ item2 }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</li> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</ol> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<!--<div class="score">评分:{{ item.score }}分</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="message">结论:{{ item.message }}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="basis"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<span>依据:</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<ol> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<li 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								v-for="(item2, index2) in item.basis.length ? item.basis : []" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								:key="index2" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								{{ item2 }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</li> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</ol> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div>--> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<!-- <div class="co_c_m_m_text">{{ item.message }}</div> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			class="refresh" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			@click.stop="refresh()" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			v-loading=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				loading || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				aggregateLoading || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				aiLoading || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				teacherLoading || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				contrastLoading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				:src="require('../../../assets/icon/contrastObservation/refresh.svg')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import chart from "./component/chart"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { v4 as uuidv4 } from "uuid"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	components: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		chart, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			tid: this.$route.query["tid"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			testId: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				testId: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				checkUrl: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				doUrl: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			editorBarData: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				type: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				content: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			testData: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			isDoTestList: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			loading: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			aggregateLoading: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			aiLoading: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			teacherLoading: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			contrastLoading: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			classroomObservationData: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			aggregateData: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				message: ``, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				chartData: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					legend: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						data: ["AI的观察结果", "教师观察结果"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					radar: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						// shape: 'circle', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						indicator: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							{ name: "教学设计", max: 10 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							{ name: "教学实施", max: 10 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							{ name: "学生参与", max: 10 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							{ name: "知识建构", max: 10 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							{ name: "课堂氛围", max: 10 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							{ name: "教学评价", max: 10 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					series: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							name: "Budget vs spending", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							type: "radar", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							data: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									value: [0, 0, 0, 0, 0, 0], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									name: "AI的观察结果", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									value: [0, 0, 0, 0, 0, 0], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									name: "教师观察结果", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			aiData: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			teacherData: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			contrastData: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		refresh() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(this.loading || this.aggregateLoading || this.aiLoading || this.teacherLoading || this.contrastLoading)return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取绑定的testId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		getBindTestId() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return new Promise((resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (this.loading || !this.tid) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.loading = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let pram = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					tid: this.tid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					type: "0", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.ajax 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.post("https://gpt4.cocorobo.cn/get_classroom_observation_new", pram) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _result = res.data.FunctionResponse.result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							if (_testData) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								this.testId = _testData; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								resolve(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								this.$message.error("该观察未绑定表单"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.catch((e) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.$message.error("获取testId失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						console.log(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.finally(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.loading = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取绑定的表单数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		getBindTestData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return new Promise((resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (!this.testId.testId || !this.tid) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.loading = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.ajax 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.get(this.$store.state.api + "getTestWorksNoPage", { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						cid: this.testId.testId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						cn: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if (res.data[0].length != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							let _result = res.data[0][0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							_result.chapters = JSON.parse(_result.chapters); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							// _result.cover = JSON.parse(_result.cover); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							this.testData = _result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							resolve(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if (res.data[1].length != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							let _doTest = res.data[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							_doTest.forEach((i) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								i.courseJson = JSON.parse(i.courseJson); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							this.isDoTestList = _doTest; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.catch((e) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.$message.info("获取表单数据失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						console.log(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.finally((_) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.loading = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取教师观察结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		getTeacherResultData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return new Promise((resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (this.teacherLoading || !this.testData) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.teacherLoading = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.teacherData = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let _workData = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.isDoTestList.forEach((item, index) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (index == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						item.courseJson.forEach((i) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							if (i.type == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								// 选择题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								if (i.json.type == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									// 单选题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									_workData.push({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										typeName: "单选题", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										type: "1-1", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										title: i.json.title, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										checkList: i.json.array, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										answer: i.json.answer[0], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										userAnswer: [i.json.answer2[0]], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										score: i.json.score, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								} else if (i.json.type == 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									//多选题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									_workData.push({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										typeName: "多选题", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										type: "1-2", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										title: i.json.title, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										checkList: i.json.array, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										answer: i.json.answer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										userAnswer: [i.json.answer2], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										score: i.json.score, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} else if (i.type == 7) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								//评分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								_workData.push({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									typeName: "评分题", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									type: "7", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									title: i.json.title, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									max: i.json.big, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									min: i.json.small, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									userAnswer: [i.json.answer2], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} else if (i.type == 3) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								//问答题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								_workData.push({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									typeName: "问答题", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									type: "3", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									title: i.json.title, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									score: i.json.score, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									answer: i.json.answer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									userAnswer: [i.json.answer2], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} else if (i.type == 5) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								//附件上传 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						item.courseJson.forEach((i) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							if (i.type == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								// 选择题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								if (i.json.type == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									// 单选题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									let _index = _workData.findIndex((j) => j.type == "1-1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									if (_index != -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										_workData[_index].userAnswer.push(i.json.answer2[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								} else if (i.json.type == 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									//多选题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									let _index = _workData.findIndex((j) => j.type == "1-2"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									if (_index != -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										_workData[_index].userAnswer.push(i.json.answer2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} else if (i.type == 7) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								//评分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								let _index = _workData.findIndex((j) => j.type == "7"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								if (_index != -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									_workData[_index].userAnswer.push(i.json.answer2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} else if (i.type == 3) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								//问答题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								let _index = _workData.findIndex((j) => j.type == "3"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								if (_index != -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									_workData[_index].userAnswer.push(i.json.answer2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} else if (i.type == 5) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								//附件上传 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let _workText = ``; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				_workData.forEach((i) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (i.type == "1-1") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _checkListText = ``; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						i.checkList.forEach((i2, index) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							_checkListText += `选项${index + 1}:${i2.option}\n`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _userAnswerText = ``; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _newAnswer = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						i.userAnswer.forEach((i2) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							if (typeof i2 === "number") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								_newAnswer.push(i2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								_newAnswer.push(...i2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						i.checkList.forEach((item, index) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							_userAnswerText += `选择选项${index + 1}的次数:${ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								_newAnswer.filter((i3) => i3 === index).length 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}\n`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						_workText += `单选题:\n总分:${i.score}分\n题目:${ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							i.title 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}\n答案:选项${ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							i.answer + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}\n选项:\n${_checkListText}${_userAnswerText}\n`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} else if (i.type == "1-2") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _checkListText = ``; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						i.checkList.forEach((i2, index) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							_checkListText += `选项${index + 1}:${i2.option}\n`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _answerText = ``; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						i.answer.forEach((i4, index4) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							if (index4 != 0) _answerText += `、`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							_answerText += `选项${index4 + 1}`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _userAnswerText = ``; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _newAnswer = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						i.userAnswer.forEach((i2) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							if (typeof i2 === "number") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								_newAnswer.push(i2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								_newAnswer.push(...i2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						i.checkList.forEach((item, index) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							_userAnswerText += `选择选项${index + 1}的次数:${ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								_newAnswer.filter((i3) => i3 === index).length 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}\n`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						_workText += `多选题:\n总分:${i.score}分\n题目:${i.title}\n答案:${_answerText}\n选项:\n${_checkListText}${_userAnswerText}\n`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} else if (i.type == "7") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _userAnswerText = ``; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _groupUserAnswer = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						i.userAnswer.forEach((i2) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							if (!_groupUserAnswer.includes(i2)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								_groupUserAnswer.push(i2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						_groupUserAnswer.forEach((i3) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							_userAnswerText += `${i3}:${ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								i.userAnswer.filter((i4) => i4 === i3).length 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}\n`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						_workText += `评分题:\n最大评分:${i.max}\n最小评分:${i.min}\n评分与次数:\n${_userAnswerText}\n\n`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} else if (i.type == "3") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _userAnswerText = ``; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _groupUserAnswer = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						i.userAnswer.forEach((i2) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							if (!_groupUserAnswer.includes(i2)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								_groupUserAnswer.push(i2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						_groupUserAnswer.forEach((i3) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							_userAnswerText += `${i3}:${ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								i.userAnswer.filter((i4) => i4 === i3).length 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}\n`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						_workText += `问答题:\n总分:${i.score}分\n题目:${i.title}\n答案:${i.answer}\n答题与次数:\n${_userAnswerText}\n\n`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let _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. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## 任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+你是专业的教育评估专家,熟悉教学评估的六个维度,了解如何从课堂观察报告中提取关键信息,并进行深入分析。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+请你基于以下【课堂观察报告】,请你按照【教学目标与内容编排、教学策略与课堂组织、学生参与和学习体验、知识建构和能力培养、课堂氛围与师生关系、教学评价与反馈改进】这六个维度进行分析、总结,并按指定格式输出内容。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+1. 教学目标与内容编排:评估教学目标的明确性、内容的科学性、系统性和前沿性,内容与学生实际生活的联系,以及教学活动、资源的合理编排。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+2. 教学策略与课堂组织:分析教师采用的教学模式、教学方法和策略,组织管理能力,师生互动方式,多媒体技术运用,以及教学设计实施的效果。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+3. 学生参与和学习体验:关注学生在课堂上的参与度、参与深度,包括回答问题、提出疑问、讨论互动、动手实践、探究性学习等,以及学习体验的积极性。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+4. 知识建构和能力培养:分析学生对知识的理解深度,知识内化、迁移应用,参与高阶思维活动的情况,以及培养批判性思维、创新能力、问题解决能力等核心素养的效果。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+5. 课堂氛围与师生关系:包括课堂氛围、师生关系、同伴互助、学习动机激发、心理安全感等软实力因素,以及对学生个体差异的关注和包容。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+6. 教学评价与反馈改进:评估教师对学生学习效果的评价方式及时性,形成性评价、小测验、作业反馈等评价方式的运用,反馈质量对学习的促进作用,并根据评价结果持续改进教学。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## 输出 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 输出要求 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 输出格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title":"教学目标与内容编排", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"评估教学目标的明确性、内容的科学性、系统性和前沿性,内容与学生实际生活的联系,以及教学活动、资源的合理编排。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"score":"满分10分,给出具体的分值。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"message": "给出具体的评分理由。使用3个完整的句子。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"basis":["基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。列举出至少3个依据。"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title": "教学策略与课堂组织", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"分析教师采用的教学模式、教学方法和策略,组织管理能力,师生互动方式,多媒体技术运用,以及教学设计实施的效果。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"score":"满分10分,给出具体的分值。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"message":"给出具体的评分理由。使用3个完整的句子。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"basis":["基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。列举出至少3个依据。使用"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title": "学生参与和学习体验", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"关注学生在课堂上的参与度、参与深度,包括回答问题、提出疑问、讨论互动、动手实践、探究性学习等,以及学习体验的积极性。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"score":"满分10分,给出具体的分值。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"message":"给出具体的评分理由。使用3个完整的句子。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"basis":["基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。列举出至少3个依据。使用"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title": "知识建构和能力培养", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"分析学生对知识的理解深度,知识内化、迁移应用,参与高阶思维活动的情况,以及培养批判性思维、创新能力、问题解决能力等核心素养的效果。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"score":"满分10分,给出具体的分值。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"message":"给出具体的评分理由。使用3个完整的句子。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"basis":["基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。列举出至少3个依据。使用"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title": "课堂氛围与师生关系", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"包括课堂氛围、师生关系、同伴互助、学习动机激发、心理安全感等软实力因素,以及对学生个体差异的关注和包容。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"score":"满分10分,给出具体的分值。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"message":"给出具体的评分理由。使用3个完整的句子。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"basis":["基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。列举出至少3个依据。使用"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title": "教学评价与反馈改进", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"评估教师对学生学习效果的评价方式及时性,形成性评价、小测验、作业反馈等评价方式的运用,反馈质量对学习的促进作用,并根据评价结果持续改进教学。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"score":"满分10分,给出具体的分值。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"message":"给出具体的评分理由。使用3个完整的句子。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"basis":["基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。列举出至少3个依据。使用"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## 教师课堂观察报告 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 1. 教学目标与内容编排 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+> 评估教学目标的明确性、内容的科学性、系统性和前沿性,内容与学生实际生活的联系,以及教学活动、资源的合理编排。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+评分:{满分10分,给出具体的分值。} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+结论:{给出具体的评分理由。使用3个完整的句子。} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+依据:{基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。列举出至少3个依据。} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 2. 教学策略与课堂组织 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+> 分析教师采用的教学模式、教学方法和策略,组织管理能力,师生互动方式,多媒体技术运用,以及教学设计实施的效果。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+评分: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+结论: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+依据: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 3. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 4. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 5. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 6. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## 数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+${_workText} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 课堂实录文稿 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+${this.editorBarData.type == 0 ? this.editorBarData.content : ""}`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				const _uuid = uuidv4(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let params = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					model: "gpt-3.5-turbo", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					temperature: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					max_tokens: 4096, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					top_p: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					frequency_penalty: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					presence_penalty: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					messages: [{ role: "user", content: _msg }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					uid: _uuid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					mind_map_question: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					stream: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.ajax 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.post("https://gpt4.cocorobo.cn/chat", params) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _data = res.data.FunctionResponse.choices[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _jsonData = _data.message.content; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						_jsonData = _jsonData 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							.replaceAll("```json", "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							.replaceAll("```", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _result = JSON.parse(_jsonData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.teacherData = _result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						resolve(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.catch((e) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						console.log(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.$message.error("生成教师观察结果失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.finally((_) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.teacherLoading = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//获取观察数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		getClassroomObservationData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return new Promise((resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let params = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					tid: this.tid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.loading = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.ajax 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.post("https://gpt4.cocorobo.cn/get_classroom_ob_tid", params) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _data = res.data.FunctionResponse.result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _result = JSON.parse(_data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.classroomObservationData = _result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						resolve(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取AI观察结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		getAiResultData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return new Promise((resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (this.aiLoading || this.loading) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				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)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _jsonObj = JSON.parse(i.jsonData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if(!_jsonObj.courseName){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							if(_jsonObj.name!=="课堂记录"){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								_workText+=`名称:${_jsonObj.name}\n分析内容:${_jsonObj.content}\n\n` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let _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. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## 任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+你是专业的教育评估专家,熟悉教学评估的六个维度,了解如何从课堂观察报告中提取关键信息,并进行深入分析。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+请你基于以下【课堂观察报告】,请你按照【教学目标与内容编排、教学策略与课堂组织、学生参与和学习体验、知识建构和能力培养、课堂氛围与师生关系、教学评价与反馈改进】这六个维度进行分析、总结,并按指定格式输出内容。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+1. 教学目标与内容编排:评估教学目标的明确性、内容的科学性、系统性和前沿性,内容与学生实际生活的联系,以及教学活动、资源的合理编排。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+2. 教学策略与课堂组织:分析教师采用的教学模式、教学方法和策略,组织管理能力,师生互动方式,多媒体技术运用,以及教学设计实施的效果。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+3. 学生参与和学习体验:关注学生在课堂上的参与度、参与深度,包括回答问题、提出疑问、讨论互动、动手实践、探究性学习等,以及学习体验的积极性。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+4. 知识建构和能力培养:分析学生对知识的理解深度,知识内化、迁移应用,参与高阶思维活动的情况,以及培养批判性思维、创新能力、问题解决能力等核心素养的效果。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+5. 课堂氛围与师生关系:包括课堂氛围、师生关系、同伴互助、学习动机激发、心理安全感等软实力因素,以及对学生个体差异的关注和包容。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+6. 教学评价与反馈改进:评估教师对学生学习效果的评价方式及时性,形成性评价、小测验、作业反馈等评价方式的运用,反馈质量对学习的促进作用,并根据评价结果持续改进教学。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## 输出 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 输出要求 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 输出格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title":"教学目标与内容编排", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"评估教学目标的明确性、内容的科学性、系统性和前沿性,内容与学生实际生活的联系,以及教学活动、资源的合理编排。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"score":"满分10分,给出具体的分值。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"message": "给出具体的评分理由。使用3个完整的句子。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"basis":["基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。列举出至少3个依据。"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title": "教学策略与课堂组织", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"分析教师采用的教学模式、教学方法和策略,组织管理能力,师生互动方式,多媒体技术运用,以及教学设计实施的效果。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"score":"满分10分,给出具体的分值。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"message":"给出具体的评分理由。使用3个完整的句子。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"basis":["基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。列举出至少3个依据。使用"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title": "学生参与和学习体验", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"关注学生在课堂上的参与度、参与深度,包括回答问题、提出疑问、讨论互动、动手实践、探究性学习等,以及学习体验的积极性。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"score":"满分10分,给出具体的分值。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"message":"给出具体的评分理由。使用3个完整的句子。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"basis":["基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。列举出至少3个依据。使用"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title": "知识建构和能力培养", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"分析学生对知识的理解深度,知识内化、迁移应用,参与高阶思维活动的情况,以及培养批判性思维、创新能力、问题解决能力等核心素养的效果。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"score":"满分10分,给出具体的分值。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"message":"给出具体的评分理由。使用3个完整的句子。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"basis":["基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。列举出至少3个依据。使用"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title": "课堂氛围与师生关系", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"包括课堂氛围、师生关系、同伴互助、学习动机激发、心理安全感等软实力因素,以及对学生个体差异的关注和包容。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"score":"满分10分,给出具体的分值。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"message":"给出具体的评分理由。使用3个完整的句子。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"basis":["基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。列举出至少3个依据。使用"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title": "教学评价与反馈改进", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"评估教师对学生学习效果的评价方式及时性,形成性评价、小测验、作业反馈等评价方式的运用,反馈质量对学习的促进作用,并根据评价结果持续改进教学。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"score":"满分10分,给出具体的分值。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"message":"给出具体的评分理由。使用3个完整的句子。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"basis":["基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。列举出至少3个依据。使用"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## AI课堂观察报告 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 1. 教学目标与内容编排 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+> 评估教学目标的明确性、内容的科学性、系统性和前沿性,内容与学生实际生活的联系,以及教学活动、资源的合理编排。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+评分:{满分10分,给出具体的分值。} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+结论:{给出具体的评分理由。使用3个完整的句子。} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+依据:{基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。需要指出具体是哪一个模型以及该模型对应的内容。列举出至少3个依据。} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 2. 教学策略与课堂组织 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+> 分析教师采用的教学模式、教学方法和策略,组织管理能力,师生互动方式,多媒体技术运用,以及教学设计实施的效果。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+评分: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+结论: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+依据: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 3.  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 4.  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 5. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 6. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## 数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+${_workText} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 课堂实录文稿 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+${this.editorBarData.type == 0 ? this.editorBarData.content : ""}`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				const _uuid = uuidv4(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let params = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					model: "gpt-3.5-turbo", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					temperature: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					max_tokens: 4096, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					top_p: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					frequency_penalty: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					presence_penalty: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					messages: [{ role: "user", content: _msg }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					uid: _uuid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					mind_map_question: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					stream: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.ajax 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.post("https://gpt4.cocorobo.cn/chat", params) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _data = res.data.FunctionResponse.choices[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _jsonData = _data.message.content; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						_jsonData = _jsonData 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							.replaceAll("```json", "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							.replaceAll("```", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _result = JSON.parse(_jsonData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.aiData = _result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						resolve(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.catch((e) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						console.log(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.$message.error("生成ai观察结果失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.finally((_) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.aiLoading = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取对比观察 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		getContrastResultData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return new Promise((resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (this.contrastLoading || this.loading) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (!this.teacherData.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return this.$message.error("缺少教师观察结果"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} else if (!this.aiData.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return this.$message.error("缺少ai观察结果"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.contrastLoading = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.contrastData = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let _teacherWorkText = ``; //教师观察转换的提示词 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let _aiWorkText = ``; //ai观察转换的提示词 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 转换教师观察结果数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.teacherData.forEach((i) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					_teacherWorkText += ` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+标题:${i.title} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+描述:${i.description} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+评分:${i.score} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+结论:${i.message} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+依据:${i.basis.join("、")}\n 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//转换ai观察结果数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.aiData.forEach((i) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					_aiWorkText += ` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+标题:${i.title} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+描述:${i.description} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+评分:${i.score} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+结论:${i.message} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+依据:${i.basis.join("、")}\n 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let _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. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## 任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+你是专业的教育评估专家,熟悉教学评估的六个维度,了解如何从课堂观察报告中提取关键信息,并进行深入分析。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+以下是两份不同的【课堂观察报告】,两个包含均从这六个维度对课堂进行分析,【教学目标与内容编排、教学策略与课堂组织、学生参与和学习体验、知识建构和能力培养、课堂氛围与师生关系、教学评价与反馈改进】这六个维度。请你对两个报告的内容从六个不同维度进行对比分析。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+1. 教学目标与内容编排:评估教学目标的明确性、内容的科学性、系统性和前沿性,内容与学生实际生活的联系,以及教学活动、资源的合理编排。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+2. 教学策略与课堂组织:分析教师采用的教学模式、教学方法和策略,组织管理能力,师生互动方式,多媒体技术运用,以及教学设计实施的效果。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+3. 学生参与和学习体验:关注学生在课堂上的参与度、参与深度,包括回答问题、提出疑问、讨论互动、动手实践、探究性学习等,以及学习体验的积极性。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+4. 知识建构和能力培养:分析学生对知识的理解深度,知识内化、迁移应用,参与高阶思维活动的情况,以及培养批判性思维、创新能力、问题解决能力等核心素养的效果。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+5. 课堂氛围与师生关系:包括课堂氛围、师生关系、同伴互助、学习动机激发、心理安全感等软实力因素,以及对学生个体差异的关注和包容。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+6. 教学评价与反馈改进:评估教师对学生学习效果的评价方式及时性,形成性评价、小测验、作业反馈等评价方式的运用,反馈质量对学习的促进作用,并根据评价结果持续改进教学。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## 输出 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 输出要求 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 输出格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title":"教学目标与内容编排", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"评估教学目标的明确性、内容的科学性、系统性和前沿性,内容与学生实际生活的联系,以及教学活动、资源的合理编排。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"similarity":"使用3句完整的话进行描述", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"difference": "使用3句完整的话进行描述" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title": "教学策略与课堂组织", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"分析教师采用的教学模式、教学方法和策略,组织管理能力,师生互动方式,多媒体技术运用,以及教学设计实施的效果。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"similarity":"使用3句完整的话进行描述", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"difference": "使用3句完整的话进行描述" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title": "学生参与和学习体验", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"关注学生在课堂上的参与度、参与深度,包括回答问题、提出疑问、讨论互动、动手实践、探究性学习等,以及学习体验的积极性。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"similarity":"使用3句完整的话进行描述(最好是数组)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"similarity":"使用3句完整的话进行描述", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"difference": "使用3句完整的话进行描述" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title": "知识建构和能力培养", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"分析学生对知识的理解深度,知识内化、迁移应用,参与高阶思维活动的情况,以及培养批判性思维、创新能力、问题解决能力等核心素养的效果。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"similarity":"使用3句完整的话进行描述", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"difference": "使用3句完整的话进行描述" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title": "课堂氛围与师生关系", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"包括课堂氛围、师生关系、同伴互助、学习动机激发、心理安全感等软实力因素,以及对学生个体差异的关注和包容。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"similarity":"使用3句完整的话进行描述", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"difference": "使用3句完整的话进行描述" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"title": "教学评价与反馈改进", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"description":"评估教师对学生学习效果的评价方式及时性,形成性评价、小测验、作业反馈等评价方式的运用,反馈质量对学习的促进作用,并根据评价结果持续改进教学。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"similarity":"使用3句完整的话进行描述", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"difference": "使用3句完整的话进行描述" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 1. 教学目标与内容编排 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+> 评估教学目标的明确性、内容的科学性、系统性和前沿性,内容与学生实际生活的联系,以及教学活动、资源的合理编排。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+相同点:{使用3句完整的话进行描述} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+不同点:{使用3句完整的话进行描述} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 2. 教学策略与课堂组织 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+> 分析教师采用的教学模式、教学方法和策略,组织管理能力,师生互动方式,多媒体技术运用,以及教学设计实施的效果。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 3.  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 4.  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 5. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 6. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## 数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 教师课堂观察报告  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+${_teacherWorkText} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### AI课堂观察报告 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+${_aiWorkText} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// this.contrastLoading = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// console.log("对比观察提示词👇👇") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// console.log(_msg) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				const _uuid = uuidv4(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let params = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					model: "gpt-3.5-turbo", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					temperature: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					max_tokens: 4096, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					top_p: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					frequency_penalty: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					presence_penalty: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					messages: [{ role: "user", content: _msg }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					uid: _uuid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					mind_map_question: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					stream: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.ajax 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.post("https://gpt4.cocorobo.cn/chat", params) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _data = res.data.FunctionResponse.choices[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _jsonData = _data.message.content; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						_jsonData = _jsonData 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							.replaceAll("```json", "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							.replaceAll("```", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _result = JSON.parse(_jsonData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.contrastData = _result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.catch((e) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						console.log(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.$message.error("生成ai观察结果失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.finally((_) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.contrastLoading = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取总数据对比 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		getAggregateResultData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return new Promise((resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (!this.aiData.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return this.$message.info("请先获取ai观察结果"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} else if (!this.teacherData.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return this.$message.error("请先获取教师观察结果"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.aggregateLoading = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.aggregateData.message = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let _teacherWorkText = ``; //教师观察转换的提示词 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let _aiWorkText = ``; //ai观察转换的提示词 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 转换教师观察结果数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.teacherData.forEach((i) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					_teacherWorkText += ` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+标题:${i.title} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+描述:${i.description} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+评分:${i.score} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+结论:${i.message} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+依据:${i.basis.join("、")}\n 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//转换ai观察结果数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.aiData.forEach((i) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					_aiWorkText += ` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+标题:${i.title} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+描述:${i.description} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+评分:${i.score} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+结论:${i.message} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+依据:${i.basis.join("、")}\n 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let _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. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## 任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+你是专业的教育评估专家,熟悉教学评估的六个维度,了解如何从课堂观察报告中提取关键信息,并进行深入分析。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+以下是两份不同的【课堂观察报告】,两个包含均从这六个维度对课堂进行分析,【教学目标与内容编排、教学策略与课堂组织、学生参与和学习体验、知识建构和能力培养、课堂氛围与师生关系、教学评价与反馈改进】这六个维度。请你对两个报告的内容进行对比分析,指出其中的相同点和不同点。仅仅输出一段完整的小论文进行介绍,使用不超过10句完整的话,需适当指出各自的得分情况。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+1. 教学目标与内容编排:评估教学目标的明确性、内容的科学性、系统性和前沿性,内容与学生实际生活的联系,以及教学活动、资源的合理编排。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+2. 教学策略与课堂组织:分析教师采用的教学模式、教学方法和策略,组织管理能力,师生互动方式,多媒体技术运用,以及教学设计实施的效果。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+3. 学生参与和学习体验:关注学生在课堂上的参与度、参与深度,包括回答问题、提出疑问、讨论互动、动手实践、探究性学习等,以及学习体验的积极性。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+4. 知识建构和能力培养:分析学生对知识的理解深度,知识内化、迁移应用,参与高阶思维活动的情况,以及培养批判性思维、创新能力、问题解决能力等核心素养的效果。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+5. 课堂氛围与师生关系:包括课堂氛围、师生关系、同伴互助、学习动机激发、心理安全感等软实力因素,以及对学生个体差异的关注和包容。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+6. 教学评价与反馈改进:评估教师对学生学习效果的评价方式及时性,形成性评价、小测验、作业反馈等评价方式的运用,反馈质量对学习的促进作用,并根据评价结果持续改进教学。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## 输出 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 输出要求 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 输出格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{仅仅输出一段完整的小论文进行介绍,使用不超过10句完整的话,需适当指出各自的得分情况。最好是字符串} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## 数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### 教师课堂观察报告  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+${_teacherWorkText} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### AI课堂观察报告 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+${_aiWorkText} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// console.log("总数居对比"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// console.log(_msg) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// return this.aggregateLoading = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				const _uuid = uuidv4(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let params = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					model: "gpt-3.5-turbo", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					temperature: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					max_tokens: 4096, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					top_p: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					frequency_penalty: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					presence_penalty: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					messages: [{ role: "user", content: _msg }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					uid: _uuid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					mind_map_question: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					stream: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.ajax 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.post("https://gpt4.cocorobo.cn/chat", params) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _data = res.data.FunctionResponse.choices[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let _result = _data.message.content; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.aggregateData.message = _result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						// let _jsonData = _data.message.content; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						// _jsonData = _jsonData.replaceAll("```json", "").replaceAll("```", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						// let _result = JSON.parse(_jsonData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						// this.aiData = _result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.catch((e) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						console.log(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.$message.error("生成总结数据对比"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.finally((_) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.aggregateLoading = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 计算总数据对比里的雷达图 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		getAggregateChartData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (!this.aiData.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return this.$message.info("请先获取ai观察结果"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else if (!this.teacherData.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return this.$message.error("请先获取教师观察结果"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			let _teacherData = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				value: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				name: "教师观察结果", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			let _aiData = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				value: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				name: "AI的观察结果", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			let _chartData = JSON.parse(JSON.stringify(this.aggregateData.chartData)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			let _titleList = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				教学目标与内容编排: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				教学策略与课堂组织: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				学生参与和学习体验: 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				知识建构和能力培养: 3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				课堂氛围与师生关系: 4, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				教学评价与反馈改进: 5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.teacherData.forEach((i) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (i.title in _titleList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					_teacherData.value[_titleList[i.title]] = parseInt(i.score); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.aiData.forEach((i) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (i.title in _titleList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					_aiData.value[_titleList[i.title]] = parseInt(i.score); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			_chartData.series[0].data = [_aiData, _teacherData]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.aggregateData.chartData = _chartData; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//获取 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		getData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 获取观察所绑定的表单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.getBindTestId().then((_) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 后去表单的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.getBindTestData().then((_) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					Promise.all([ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.getTeacherResultData(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.getAiResultData(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					]).then((_) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					 this.getAggregateChartData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.getContrastResultData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.getAggregateResultData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	mounted() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style scoped> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.contrastObservation { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	min-width: 1500px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/* min-height: 800px; */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 100vh; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background-color: #f0f2f5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	padding: 30px 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background-image: #d4d8f6; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	justify-content: space-around; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.refresh { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	position: fixed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	right: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	top: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 60px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 60px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background-color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border-radius: 12px 0px 0px 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	justify-content: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	box-shadow: 0 16px 24px 2px #0000000a; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_card { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	min-width: 24%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	max-width: 24%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 23%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border-radius: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background-color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	padding: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	overflow: hidden; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_aggregateData { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background-color: #fbfcfe; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_ad_title { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 35px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	font-size: 22px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	color: #434e69; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	font-weight: 600; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	margin-bottom: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_ad_title > img { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 25px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 25px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	margin-right: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_ad_chartArea { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 45%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	margin-bottom: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_ad_messageArea { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: calc(100% - 35px - 45% - 40px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background-color: #eef2fc; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	padding: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	overflow-y: auto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border: solid 1px #e0eafb; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border-radius: 6px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	white-space: pre-line; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	font-size: 18px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_ai_card { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	padding: 8px 0 0 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: linear-gradient(to right, #3673e8, #ad88fd); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/* background: linear-gradient(#f4eefd, #fff, #fff, #fff, #fff, #fff); */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/* height: calc(100% - 10px); */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_ai_card > .co_c_main { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: linear-gradient(#f4eefd, #fff, #fff, #fff, #fff, #fff); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_teacher_card { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	padding: 8px 0 0 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: linear-gradient(to right, #3673e8, #88fdc5); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/* background: linear-gradient(#f5fffa, #fff, #fff, #fff, #fff, #fff); */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/* height: calc(100% - 10px); */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_teacher_card > .co_c_main { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: linear-gradient(#f5fffa, #fff, #fff, #fff, #fff, #fff); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_contrast_card { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	padding: 8px 0 0 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: linear-gradient(to right, #fdcd72, #fd8888); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/* background: linear-gradient(#fffaee, #fff, #fff, #fff, #fff, #fff); */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/* height: calc(100% - 10px); */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_contrast_card > .co_c_main { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: linear-gradient(#fffaee, #fff, #fff, #fff, #fff, #fff); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_c_main { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: calc(100%); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: calc(100%); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	padding: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border-radius: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	overflow-x: hidden; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_c_title { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: calc(100% + 20px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 80px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	justify-content: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	left: -20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	top: -20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	font-size: 24px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_c_m_message { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: auto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	margin-bottom: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_c_m_m_title { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 50px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	font-size: 22px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	font-weight: bold; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_c_m_m_title > span { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	transition: 0.3s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_c_m_m_title > span:hover { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	color: #3681fc; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cursor: help; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_c_m_m_title > span::before { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	content: ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	bottom: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	left: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	opacity: 0.5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_ai_title > span::before { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: linear-gradient(to right, #3673e8, #ad88fd); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_teacher_title > span::before { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: linear-gradient(to right, #3673e8, #88fdc5); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.co_contrast_title > span::before { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: linear-gradient(to right, #fdcd72, #fd8888); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.message, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.score, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.basis { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	font-size: 18px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.basis > ol { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	margin-left: 30px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.compare > ol { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	margin-left: 30px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.similarity, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.difference, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.compare { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	font-size: 18px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	margin-bottom: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.titleBlob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	font-weight: bold; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* .compareTitle{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	margin-left: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	display: inline-block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.compareTitle::after{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	content: ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 |