From 804158fa14e17559f5b4bc0ebf62c42d7b640cff Mon Sep 17 00:00:00 2001
From: taoxu <2622874537@qq.com>
Date: Tue, 26 Dec 2023 22:40:39 +0800
Subject: [PATCH] =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=B8=B2=E6=9F=93=20?=
 =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 common/css/iconfont.css                       |   14 +-
 common/http.interceptor.js                    |    2 +-
 pages.json                                    |   10 +
 pages/Mystudent/Mystudent.vue                 | 1295 +++++++++--------
 pages_teacher/pages_add/add_class.vue         |   59 +-
 pages_teacher/teacher_class/class_members.vue |   60 +-
 .../teacher_teachers/operation_detail.vue     |  122 +-
 7 files changed, 782 insertions(+), 780 deletions(-)

diff --git a/common/css/iconfont.css b/common/css/iconfont.css
index 36c7f17..12be79d 100644
--- a/common/css/iconfont.css
+++ b/common/css/iconfont.css
@@ -1,8 +1,8 @@
 @font-face {
   font-family: "iconfont"; /* Project id 3598721 */
-  src: url('//at.alicdn.com/t/c/font_3598721_fd8phfvkjv.woff2?t=1691978562796') format('woff2'),
-       url('//at.alicdn.com/t/c/font_3598721_fd8phfvkjv.woff?t=1691978562796') format('woff'),
-       url('//at.alicdn.com/t/c/font_3598721_fd8phfvkjv.ttf?t=1691978562796') format('truetype');
+  src: url('//at.alicdn.com/t/c/font_3598721_z5jk4kgjfv.woff2?t=1703600739909') format('woff2'),
+       url('//at.alicdn.com/t/c/font_3598721_z5jk4kgjfv.woff?t=1703600739909') format('woff'),
+       url('//at.alicdn.com/t/c/font_3598721_z5jk4kgjfv.ttf?t=1703600739909') format('truetype');
 }
 
 .iconfont {
@@ -13,6 +13,14 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
+.icon-xiangxiajiantoucuxiao:before {
+  content: "\e8c8";
+}
+
+.icon-xiangshangjiantoucuxiao:before {
+  content: "\e8d8";
+}
+
 .icon-yiwancheng:before {
   content: "\e630";
 }
diff --git a/common/http.interceptor.js b/common/http.interceptor.js
index c62fbe8..74ddf6b 100644
--- a/common/http.interceptor.js
+++ b/common/http.interceptor.js
@@ -42,7 +42,7 @@ const install = (Vue, vm) => {
 		// 所以哪怕您重新登录修改了Storage,下一次的请求将会是最新值
 		// const token = uni.getStorageSync('token');
 
-		const token = "	Bearer 794bed8faaf14a00b07befd07b8402b2"
+		const token = "	Bearer 5791a135fff342a4b7e70109b6936826"
 
 		// console.log("我是token", token)
 		config.header.Authorization = token; 
diff --git a/pages.json b/pages.json
index 0a2b316..16e574f 100644
--- a/pages.json
+++ b/pages.json
@@ -228,6 +228,16 @@
 							"enablePullDownRefresh": false,
 							"navigationStyle": "custom"
 						}
+					},
+					{
+						"path" : "teacher_class/class_members",
+						"style" : 
+						{
+							"navigationBarTitleText": "",
+							"navigationBarBackgroundColor": "#4473f6",
+							"enablePullDownRefresh": false,
+							"navigationStyle": "custom"
+						}
 					}
 	  				
 	  			]
diff --git a/pages/Mystudent/Mystudent.vue b/pages/Mystudent/Mystudent.vue
index 9452838..754c631 100644
--- a/pages/Mystudent/Mystudent.vue
+++ b/pages/Mystudent/Mystudent.vue
@@ -1,21 +1,16 @@
 <template>
 	<view class="pagebox">
 		<view class="topbox">
-			<u-navbar title="LILY"
-					  :border-bottom="false"
-					  :background="bgc"
-					  title-color='#FFFFFF'
-					  title-size='36'
-					  height='36'></u-navbar>
+			<u-navbar title="LILY" :border-bottom="false" :background="bgc" title-color='#FFFFFF' title-size='36'
+				height='36'></u-navbar>
 			<view class="echarts">
 				<!-- <mpvue-echarts id="main" ref="pieChart" :echarts="echarts" @onInit="initChart" /> -->
-				<l-echart ref="chart"
-						  @finished="initChart"></l-echart>
+				<l-echart ref="chart" @finished="initChart"></l-echart>
 			</view>
 			<view class="infobigbox">
 				<view class="logo">
-					<image src="https://file.langsi.online/yasiimg/web/static/ubtuFZZ3dgSoSc444qIg"
-						   style="z-index: 0;"></image>
+					<image src="https://file.langsi.online/yasiimg/web/static/ubtuFZZ3dgSoSc444qIg" style="z-index: 0;">
+					</image>
 				</view>
 				<view class="infobox">
 
@@ -25,15 +20,33 @@
 								今日学习(分)
 							</view>
 							<view class="infobox_top_leftbot">
-								320
+								{{workinfo.todayStudyPoint}}
 							</view>
 						</view>
 						<view class="infobox_top_right">
 							<view class="infobox_top_righttop">
 								较昨日
 							</view>
-							<view class="infobox_top_rightbot">
-								20%
+							<view class="infobox_top_rightbot" style="color: #2D7CE6; " v-if="isup">
+								<view class="iconfont icon-xiangshangjiantoucuxiao">
+								</view>
+								<view class="text">
+									{{beforyes}}%
+								</view>
+
+							</view>
+							<view class="infobox_top_rightbot" v-if="beforyes==0" style="color: #2E4975;">
+								<view class="text">
+									{{beforyes}}%
+								</view>
+							</view>
+							<view class="infobox_top_rightbot" v-if="isup==false">
+							<view class="iconfont icon-xiangxiajiantoucuxiao">
+							</view>
+							<view class="text">
+								{{beforyes}}%
+							</view>
+							
 							</view>
 						</view>
 					</view>
@@ -59,7 +72,7 @@
 								今日问AI(次)
 							</view>
 							<view class="infobox_bot_cont_bot">
-								43
+								{{workinfo.askAiNum}}
 							</view>
 						</view>
 					</view>
@@ -71,88 +84,34 @@
 					<view class="study_info_top_left">
 						作业完成情况
 					</view>
-					<view class="study_info_top_right">
+					<!-- <view class="study_info_top_right">
 						本周
 						<view class="iconfont icon-arow_down"></view>
-					</view>
+					</view> -->
 				</view>
 				<view class="study_info_cont_box">
 
-					<view class="study_info_cont">
-						<view class="data">Mon</view>
+					<view class="study_info_cont" v-for="(item, index) in sdydata" :key="index">
+						<view class="data" v-if="index==1">Sun</view>
+						<view class="data" v-if="index==2">Mon</view>
+						<view class="data" v-if="index==3">Tus</view>
+						<view class="data" v-if="index==4">Wed</view>
+						<view class="data" v-if="index==5">Thu</view>
+						<view class="data" v-if="index==6">Fri</view>
+						<view class="data" v-if="index==7">Sat</view>
+
 						<view class="study_box">
-							<view class="study"
-								  v-for="(item, index) in sdydata"
-								  :key="index"
-								  :style="{ backgroundColor: item.background }"></view>
+							<view class="study" v-for="(items,indexs) in item" :key="indexs"
+								:style="{ backgroundColor: items.background }"></view>
 						</view>
 
 					</view>
-					<view class="study_info_cont">
-						<view class="data">Tue</view>
-						<view class="study_box">
-							<view class="study"
-								  v-for="(item, index) in sdydata"
-								  :key="index"
-								  :style="{ backgroundColor: item.background }"></view>
-						</view>
 
-					</view>
-					<view class="study_info_cont">
-						<view class="data">Wed</view>
-						<view class="study_box">
-							<view class="study"
-								  v-for="(item, index) in sdydata"
-								  :key="index"
-								  :style="{ backgroundColor: item.background }"></view>
-						</view>
-
-					</view>
-					<view class="study_info_cont">
-						<view class="data">Thu</view>
-						<view class="study_box">
-							<view class="study"
-								  v-for="(item, index) in sdydata"
-								  :key="index"
-								  :style="{ backgroundColor: item.background }"></view>
-						</view>
-
-					</view>
-					<view class="study_info_cont">
-						<view class="data">Fri</view>
-						<view class="study_box">
-							<view class="study"
-								  v-for="(item, index) in sdydata"
-								  :key="index"
-								  :style="{ backgroundColor: item.background }"></view>
-						</view>
-
-					</view>
-					<view class="study_info_cont">
-						<view class="data">Sat</view>
-						<view class="study_box">
-							<view class="study"
-								  v-for="(item, index) in sdydata"
-								  :key="index"
-								  :style="{ backgroundColor: item.background }"></view>
-						</view>
-
-					</view>
-					<view class="study_info_cont">
-						<view class="data">Sun</view>
-						<view class="study_box">
-							<view class="study"
-								  v-for="(item, index) in sdydata"
-								  :key="index"
-								  :style="{ backgroundColor: item.background }"></view>
-						</view>
-
-					</view>
 				</view>
 
 
 			</view>
-		
+
 		</view>
 		<view class="work_info">
 			<view class="work_info_top">
@@ -231,8 +190,7 @@
 					</view>
 				</view>
 			</view>
-			<view class="work_card"
-				  :class="isalready == true ? 'act1' : ''">
+			<view class="work_card" :class="isalready == true ? 'act1' : ''">
 				<view class="work_card_top">
 					<view class="work_card_top_left">
 						<view class="work_card_top_left_img">
@@ -240,8 +198,7 @@
 						</view>
 						课后作业
 					</view>
-					<view class="work_card_top_right"
-						  :class="isalready == true ? 'act2' : ''">
+					<view class="work_card_top_right" :class="isalready == true ? 'act2' : ''">
 						进行中
 					</view>
 				</view>
@@ -305,465 +262,584 @@
 </template>
 
 <script>
-import * as echarts from '@/uni_modules/lime-echart/static/echarts.min'
-
-// import echarts from '@/common/echarts.min2.js' /*chart.min.js为在线定制*/
-import mpvueEcharts from '@/components/mpvue-echarts/src/echarts.vue'
-import LEchart from '@/uni_modules/lime-echart/components/l-echart/l-echart.vue';
-export default {
-	components: {
-		mpvueEcharts, LEchart
-	},
-	data() {
-		return {
-			// echarts,
-			totalScore: 10,
-			grammaticalScore: 8,
-			vocabularyScore: 8,
-			pronounceScore: 8,
-			fluencyScore: 8,
-			bgc: {
-				backgroundColor: "transparent",
-			},
-			sdydata: [],
-			isalready: true,
-			// https://file.langsi.online/yasiimg/web/static/uBHiWpVS8LQdX241DdjX
-		}
-	},
-	onLoad(option) {
-
-
-
-		this.changedata()
-	},
-
-	methods: {
-		async initChart() {
-			let _this = this
-
-			const option = {
-				color: ['#d1f7ff', '#95c6fd'],
-				legend: { // 图例组件
+	import * as echarts from '@/uni_modules/lime-echart/static/echarts.min'
 
+	// import echarts from '@/common/echarts.min2.js' /*chart.min.js为在线定制*/
+	import mpvueEcharts from '@/components/mpvue-echarts/src/echarts.vue'
+	import LEchart from '@/uni_modules/lime-echart/components/l-echart/l-echart.vue';
+	export default {
+		components: {
+			mpvueEcharts,
+			LEchart
+		},
+		data() {
+			return {
+				// echarts,
+				totalScore: 10,
+				grammaticalScore: 8,
+				vocabularyScore: 8,
+				pronounceScore: 8,
+				fluencyScore: 8,
+				bgc: {
+					backgroundColor: "transparent",
 				},
-				backgroundColor: 'transparent',
-				radar: [{ // 雷达图坐标系组件,只适用于雷达图。
-					center: ['50%', '50%'],
-					// 圆中心坐标,数组的第一项是横坐标,第二项是纵坐标。[ default: ['50%', '50%'] ]
-					radius: '70rpx',
-					// 圆的半径,数组的第一项是内半径,第二项是外半径。
-					startAngle: 90,
-					// 坐标系起始角度,也就是第一个指示器轴的角度。[ default: 90 ]
-					name: { // (圆外的标签)雷达图每个指示器名称的配置项。
-						formatter: '{value}',
-						textStyle: {
-							fontSize: '24rpx',
-							color: '#4DA1FF'
-						}
-					},
-					nameGap: 5,
-					// 指示器名称和指示器轴的距离。[ default: 15 ]
-					splitNumber: 1,
-					// (这里是圆的环数)指示器轴的分割段数。[ default: 5 ]
-					shape: 'circle',
-					// 雷达图绘制类型,支持 'polygon'(多边形) 和 'circle'(圆)。[ default: 'polygon' ]
-					axisLine: { // (圆内的几条直线)坐标轴轴线相关设置
-						lineStyle: {
-							color: '#daedff',
-							// 坐标轴线线的颜色。
-							width: 1,
-							// 坐标轴线线宽。
-							type: 'solid',
-							// 坐标轴线线的类型。
-						}
-					},
-					splitLine: { // (这里是指所有圆环)坐标轴在 grid 区域中的分隔线。
-						lineStyle: {
-							color: ['#daedff', '#daedff', '#daedff', '#daedff', '#daedff', '#91c5ff'],
-							// 分隔线颜色
-							width: 1,
-							// 分隔线线宽
-							type: ['solid', 'dashed'],
-							// 坐标轴线线的类型
-						}
-					},
-					splitArea: { // 坐标轴在 grid 区域中的分隔区域,默认不显示。
-						show: true,
-						areaStyle: { // 分隔区域的样式设置。
-							color: ' #E1F0FF',
-							// 分隔区域颜色。分隔区域会按数组中颜色的顺序依次循环设置颜色。默认是一个深浅的间隔色。
-						}
-					},
-					indicator: [
-						{ // 雷达图的指示器,用来指定雷达图中的多个变量(维度),跟data中 value 对应
-							name: '平均成绩/分' + ' ' + Number(_this.totalScore).toFixed(1),
-							// 指示器名称
-							max: 100,
-							// 指示器的最大值,可选,建议设置
-							color: '#FFFFFF ' // 标签特定的颜色。
-						},
-						{
-							name: '写作' + ' ' + Number(_this.grammaticalScore).toFixed(1),
-							max: 100,
-							color: '#FFFFFF' // 标签特定的颜色。
-						},
-						{
-							name: '阅读' + ' ' + Number(_this.vocabularyScore).toFixed(1),
-							max: 100,
-							color: '#FFFFFF' // 标签特定的颜色。
-						},
-						{
-							name: '口语' + ' ' + Number(_this.pronounceScore).toFixed(1),
-							max: 100,
-							color: '#FFFFFF' // 标签特定的颜色。
-						},
-						{
-							name: '听力' + ' ' + Number(_this.fluencyScore).toFixed(1),
-							max: 100,
-							color: '#FFFFFF' // 标签特定的颜色。
-						}]
-				}],
-				series: [{
-					name: '雷达图',
-					// 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。
-					type: 'radar',
-					// 系列类型: 雷达图
-					itemStyle: { // 折线拐点标志的样式。
+				sdydata: [],
+				isalready: true,
+				id: 1523,
+				workinfo: {},
+				orgworkinfo: {},
+				beforyes: '',
+				isup: ''
+				// https://file.langsi.online/yasiimg/web/static/uBHiWpVS8LQdX241DdjX
+			}
+		},
+		onLoad(option) {
 
-						normal: { // 普通状态时的样式
-							lineStyle: {
-								width: 2,
-								color: '#3F9AFF',
-							},
-							opacity: 1
-						},
-						emphasis: { // 高亮时的样式
-							lineStyle: {
-								width: 0,
-								color: '#60abff',
-							},
-							opacity: 1
-						}
-					},
-					data: [
-						//                         { // 雷达图的数据是多变量(维度)的
-						//                             name: '',
-						//                             // 数据项名称
-						//                             value: [100, 100, 100, 100, 100],
-						//                             // 其中的value项数组是具体的数据,每个值跟 radar.indicator 一一对应。
-						//                             symbol: 'circle',
-						//                             // 单个数据标记的图形。
-						//                             symbolSize: 0,
-						//                             // 单个数据标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,例如 [20, 10] 表示标记宽为20,高为10。
-						//                             // label: { // 单个拐点文本的样式设置
-						//                             //     normal: {
-						//                             //         show: false,
-						//                             //         // 单个拐点文本的样式设置。[ default: false ]
-						//                             //         position: 'top',
-						//                             //         // 标签的位置。[ default: top ]
-						//                             //         distance: 5,
-						//                             //         // 距离图形元素的距离。当 position 为字符描述值(如 'top'、'insideRight')时候有效。[ default: 5 ]
-						//                             //         color: '#d1f7ff',
-						//                             //         // 文字的颜色。如果设置为 'auto',则为视觉映射得到的颜色,如系列色。[ default: "#fff" ]
-						//                             //         fontSize: 14,
-						//                             //         // 文字的字体大小
-						//                             //         formatter: function(params) {
-						//                             //             return params.value;
-						//                             //         }
-						//                             //     }
-						//                             // },
-						//                             itemStyle: { // 单个拐点标志的样式设置。
-						//                                 normal: {
-						//                                     borderColor: '#d1f7ff',
-						//                                     // 拐点的描边颜色。[ default: '#000' ]
-						//                                     borderWidth: 0,
-						//                                     // 拐点的描边宽度,默认不描边。[ default: 0 ]
-						//                                 }
 
-						//                             },
-						//                             lineStyle: { // 单项线条样式。
-						//                                 normal: {
-						//                                     opacity: 0.5,// 图形透明度
-						//                                     width: 2,
-						//                                     color: '#d1f7ff',
-						//                                 },
-						//                                 emphasis: { // 高亮时的样式
-						//                                     width: 2,
-						//                                     color: '#d1f7ff',
-						//                                     opacity: 1
-						//                                 }
-						//                             },
-						//                             areaStyle: { // 单项区域填充样式
-						//                                 normal: {
-						//                                     color: '#d1f7ff' // 填充的颜色。[ default: "#000" ]
-						//                                 }
-						//                             }
-						//                         },
-						{
-							name: '',
-							value: [Number(_this.grammaticalScore).toFixed(1) * 10, Number(_this.grammaticalScore).toFixed(1) * 10, Number(_this.vocabularyScore).toFixed(1) * 10, Number(_this.pronounceScore).toFixed(1) * 10, Number(_this.fluencyScore).toFixed(1) * 10],
-							symbol: 'circle',
-							symbolSize: 0,
-							// label: {
-							//     normal: {
-							//         show: false,
-							//         position: 'top',
-							//         distance: 5,
-							//         color: '#95c6fd',
-							//         fontSize: 14,
-							//         formatter: function(params) {
-							//             return params.value;
-							//         }
-							//     }
-							// },
-							itemStyle: {
-								normal: {
-									borderColor: '##3F9AFF',
-									borderWidth: 0,
-								}
-							},
+
+			// this.changedata()
+			this.getinfo()
+		},
+
+		methods: {
+			getinfo() {
+				this.$u.get(
+					`https://api.admin-v2.langsi.online/admin-api/classroom/work-record/statistics?memberId=${this.id}`
+				).then(res => {
+
+
+					if (res.code == 0) {
+						this.workinfo = res.data
+						this.sdydata = this.workinfo.weekWorkStatistics
+						this.orgworkinfo = JSON.parse(JSON.stringify(res.data));
+						const percentageChange = ((this.workinfo.todayStudyPoint - this.workinfo
+							.yesterdayStudyPoint) / Math.abs(this.workinfo.yesterdayStudyPoint)) * 100;
+
+						// Determine whether it's an improvement or decline
+						this.isup = percentageChange > 0;
+
+						// Assign the absolute percentage change to this.beforyes
+						this.beforyes = Math.abs(percentageChange);
+						this.changedata()
+
+						// this.classlist = res.data.list
+						// this.isloding = false
+
+					}
+				})
+			},
+			async initChart() {
+				let _this = this
+
+				const option = {
+					color: ['#d1f7ff', '#95c6fd'],
+					legend: { // 图例组件
+
+					},
+					backgroundColor: 'transparent',
+					radar: [{ // 雷达图坐标系组件,只适用于雷达图。
+						center: ['50%', '50%'],
+						// 圆中心坐标,数组的第一项是横坐标,第二项是纵坐标。[ default: ['50%', '50%'] ]
+						radius: '70rpx',
+						// 圆的半径,数组的第一项是内半径,第二项是外半径。
+						startAngle: 90,
+						// 坐标系起始角度,也就是第一个指示器轴的角度。[ default: 90 ]
+						name: { // (圆外的标签)雷达图每个指示器名称的配置项。
+							formatter: '{value}',
+							textStyle: {
+								fontSize: '24rpx',
+								color: '#4DA1FF'
+							}
+						},
+						nameGap: 5,
+						// 指示器名称和指示器轴的距离。[ default: 15 ]
+						splitNumber: 1,
+						// (这里是圆的环数)指示器轴的分割段数。[ default: 5 ]
+						shape: 'circle',
+						// 雷达图绘制类型,支持 'polygon'(多边形) 和 'circle'(圆)。[ default: 'polygon' ]
+						axisLine: { // (圆内的几条直线)坐标轴轴线相关设置
 							lineStyle: {
-								normal: {
-									opacity: 0.5,
+								color: '#daedff',
+								// 坐标轴线线的颜色。
+								width: 1,
+								// 坐标轴线线宽。
+								type: 'solid',
+								// 坐标轴线线的类型。
+							}
+						},
+						splitLine: { // (这里是指所有圆环)坐标轴在 grid 区域中的分隔线。
+							lineStyle: {
+								color: ['#daedff', '#daedff', '#daedff', '#daedff', '#daedff', '#91c5ff'],
+								// 分隔线颜色
+								width: 1,
+								// 分隔线线宽
+								type: ['solid', 'dashed'],
+								// 坐标轴线线的类型
+							}
+						},
+						splitArea: { // 坐标轴在 grid 区域中的分隔区域,默认不显示。
+							show: true,
+							areaStyle: { // 分隔区域的样式设置。
+								color: ' #E1F0FF',
+								// 分隔区域颜色。分隔区域会按数组中颜色的顺序依次循环设置颜色。默认是一个深浅的间隔色。
+							}
+						},
+						indicator: [{ // 雷达图的指示器,用来指定雷达图中的多个变量(维度),跟data中 value 对应
+								name: '平均成绩/分' + ' ' + Number(_this.totalScore).toFixed(1),
+								// 指示器名称
+								max: 100,
+								// 指示器的最大值,可选,建议设置
+								color: '#FFFFFF ' // 标签特定的颜色。
+							},
+							{
+								name: '写作' + ' ' + Number(_this.grammaticalScore).toFixed(1),
+								max: 100,
+								color: '#FFFFFF' // 标签特定的颜色。
+							},
+							{
+								name: '阅读' + ' ' + Number(_this.vocabularyScore).toFixed(1),
+								max: 100,
+								color: '#FFFFFF' // 标签特定的颜色。
+							},
+							{
+								name: '口语' + ' ' + Number(_this.pronounceScore).toFixed(1),
+								max: 100,
+								color: '#FFFFFF' // 标签特定的颜色。
+							},
+							{
+								name: '听力' + ' ' + Number(_this.fluencyScore).toFixed(1),
+								max: 100,
+								color: '#FFFFFF' // 标签特定的颜色。
+							}
+						]
+					}],
+					series: [{
+						name: '雷达图',
+						// 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。
+						type: 'radar',
+						// 系列类型: 雷达图
+						itemStyle: { // 折线拐点标志的样式。
+
+							normal: { // 普通状态时的样式
+								lineStyle: {
 									width: 2,
-									color: '#2D7CE6',
+									color: '#3F9AFF',
 								},
-								emphasis: { // 高亮时的样式
-									width: 2,
-									color: '#2D7CE6',
-									opacity: 1
-								}
+								opacity: 1
 							},
-							areaStyle: {
-								normal: {
-									color: '#2D7CE6'
+							emphasis: { // 高亮时的样式
+								lineStyle: {
+									width: 0,
+									color: '#60abff',
+								},
+								opacity: 1
+							}
+						},
+						data: [
+							//                         { // 雷达图的数据是多变量(维度)的
+							//                             name: '',
+							//                             // 数据项名称
+							//                             value: [100, 100, 100, 100, 100],
+							//                             // 其中的value项数组是具体的数据,每个值跟 radar.indicator 一一对应。
+							//                             symbol: 'circle',
+							//                             // 单个数据标记的图形。
+							//                             symbolSize: 0,
+							//                             // 单个数据标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,例如 [20, 10] 表示标记宽为20,高为10。
+							//                             // label: { // 单个拐点文本的样式设置
+							//                             //     normal: {
+							//                             //         show: false,
+							//                             //         // 单个拐点文本的样式设置。[ default: false ]
+							//                             //         position: 'top',
+							//                             //         // 标签的位置。[ default: top ]
+							//                             //         distance: 5,
+							//                             //         // 距离图形元素的距离。当 position 为字符描述值(如 'top'、'insideRight')时候有效。[ default: 5 ]
+							//                             //         color: '#d1f7ff',
+							//                             //         // 文字的颜色。如果设置为 'auto',则为视觉映射得到的颜色,如系列色。[ default: "#fff" ]
+							//                             //         fontSize: 14,
+							//                             //         // 文字的字体大小
+							//                             //         formatter: function(params) {
+							//                             //             return params.value;
+							//                             //         }
+							//                             //     }
+							//                             // },
+							//                             itemStyle: { // 单个拐点标志的样式设置。
+							//                                 normal: {
+							//                                     borderColor: '#d1f7ff',
+							//                                     // 拐点的描边颜色。[ default: '#000' ]
+							//                                     borderWidth: 0,
+							//                                     // 拐点的描边宽度,默认不描边。[ default: 0 ]
+							//                                 }
+
+							//                             },
+							//                             lineStyle: { // 单项线条样式。
+							//                                 normal: {
+							//                                     opacity: 0.5,// 图形透明度
+							//                                     width: 2,
+							//                                     color: '#d1f7ff',
+							//                                 },
+							//                                 emphasis: { // 高亮时的样式
+							//                                     width: 2,
+							//                                     color: '#d1f7ff',
+							//                                     opacity: 1
+							//                                 }
+							//                             },
+							//                             areaStyle: { // 单项区域填充样式
+							//                                 normal: {
+							//                                     color: '#d1f7ff' // 填充的颜色。[ default: "#000" ]
+							//                                 }
+							//                             }
+							//                         },
+							{
+								name: '',
+								value: [Number(_this.grammaticalScore).toFixed(1) * 10, Number(_this
+									.grammaticalScore).toFixed(1) * 10, Number(_this
+									.vocabularyScore).toFixed(1) * 10, Number(_this
+									.pronounceScore).toFixed(1) * 10, Number(_this
+									.fluencyScore).toFixed(1) * 10],
+								symbol: 'circle',
+								symbolSize: 0,
+								// label: {
+								//     normal: {
+								//         show: false,
+								//         position: 'top',
+								//         distance: 5,
+								//         color: '#95c6fd',
+								//         fontSize: 14,
+								//         formatter: function(params) {
+								//             return params.value;
+								//         }
+								//     }
+								// },
+								itemStyle: {
+									normal: {
+										borderColor: '##3F9AFF',
+										borderWidth: 0,
+									}
+								},
+								lineStyle: {
+									normal: {
+										opacity: 0.5,
+										width: 2,
+										color: '#2D7CE6',
+									},
+									emphasis: { // 高亮时的样式
+										width: 2,
+										color: '#2D7CE6',
+										opacity: 1
+									}
+								},
+								areaStyle: {
+									normal: {
+										color: '#2D7CE6'
+									}
 								}
 							}
-						}]
-				},
-				]
-			};
-			const chart = await this.$refs.chart.init(echarts);
-			chart.setOption(option)
-			//return chart
-		},
+						]
+					}, ]
+				};
+				const chart = await this.$refs.chart.init(echarts);
+				chart.setOption(option)
+				//return chart
+			},
 
-		changedata() {
-			this.sdydata = [];
+			changedata() {
+				this.sdydata[1][0].times = 10
+				for (const key in this.sdydata) {
+					if (this.sdydata.hasOwnProperty(key)) {
+						const items = this.sdydata[key];
 
-			for (let i = 0; i < 10; i++) {
-				const isStudy = Math.random() < 0.5;
-				let totalNum = "0";
-				let alreadyNum = "0";
+						// Loop through each item in the structure
+						for (const item of items) {
+							// Compare times with maxTimes and calculate the percentage
+							const percentage = (item.times / this.workinfo.maxTimes) * 100;
 
-				if (isStudy) {
-					totalNum = String(Math.floor(Math.random() * 100));
-					alreadyNum = String(Math.floor(Math.random() * (parseInt(totalNum) + 1)));
+							// Get the background color using the getColorByPercentage method
+							const backgroundColor = this.getColorByPercentage(percentage);
+
+							// Add the background property to the item
+							item.background = backgroundColor;
+						}
+					}
 				}
+				console.log(this.sdydata, 'sdydatasdydata');
+			},
+			getColorByPercentage(percentage) {
+				// 将百分比转换为透明度
+				const alpha = percentage / 100;
 
-				this.sdydata.push({
-					isStudy,
-					totalNum,
-					alreadyNum,
-				});
+				// 返回颜色值,使用计算得到的透明度
+				return `rgba(61, 202, 211, ${alpha})`;
 			}
 
-			for (let i = 0; i < this.sdydata.length; i++) {
-				const item = this.sdydata[i];
-				if (item.isStudy) {
-					const percentage = (parseInt(item.alreadyNum) / parseInt(item.totalNum)) * 100;
-					const color = this.getColorByPercentage(percentage);
-					item.background = color;
-				} else {
-					item.background = '#F6F6F6';
-				}
-			}
 
-			console.log(this.sdydata, 'this.sdydata');
-		},
-		getColorByPercentage(percentage) {
-			// 将百分比转换为透明度
-			const alpha = percentage / 100;
-
-			// 返回颜色值,使用计算得到的透明度
-			return `rgba(61, 202, 211, ${alpha})`;
 		}
-
-
 	}
-}
 </script>
 
-<style  lang="scss">
-page {
-	background: #F7F9FC;
-	padding-bottom: 50rpx;
-}
+<style lang="scss">
+	page {
+		background: #F7F9FC;
+		padding-bottom: 50rpx;
+	}
 
 
-.pagebox {
+	.pagebox {
 
-	width: 750rpx;
-
-	.topbox {
-		// display: flex;
-		// flex-wrap: wrap;
-		padding: 0 32rpx;
 		width: 750rpx;
-		height: 1345.92rpx;
-		background-image: url("https://file.langsi.online/yasiimg/web/static/uBHiWpVS8LQdX241DdjX");
-		background-size: cover;
-		background-position: center;
 
-		.echarts {
-			margin-top: 70rpx;
-			margin-left: auto;
-			margin-right: 20rpx;
-			width: 400rpx;
-			height: 300rpx;
-			// background:transparent;
-		}
+		.topbox {
+			// display: flex;
+			// flex-wrap: wrap;
+			padding: 0 32rpx;
+			width: 750rpx;
+			height: 1345.92rpx;
+			background-image: url("https://file.langsi.online/yasiimg/web/static/uBHiWpVS8LQdX241DdjX");
+			background-size: cover;
+			background-position: center;
 
-		.infobigbox {
-			width: 686rpx;
-			position: relative;
-
-			.logo {
-				position: absolute;
-				left: 20rpx;
-				top: -342rpx;
-				width: 220rpx;
-				height: 485.82rpx;
-				z-index: 0 !important;
+			.echarts {
+				margin-top: 70rpx;
+				margin-left: auto;
+				margin-right: 20rpx;
+				width: 400rpx;
+				height: 300rpx;
+				// background:transparent;
 			}
 
-			.infobox {
-				position: relative;
+			.infobigbox {
 				width: 686rpx;
+				position: relative;
 
-				background: rgba(255, 255, 255, 0.7);
-				border-radius: 20rpx 20rpx 20rpx 20rpx;
+				.logo {
+					position: absolute;
+					left: 20rpx;
+					top: -342rpx;
+					width: 220rpx;
+					height: 485.82rpx;
+					z-index: 0 !important;
+				}
 
-				border: 2rpx solid #FFFFFF;
-				//  z-index: 999;
+				.infobox {
+					position: relative;
+					width: 686rpx;
 
-				.infobox_top {
-					display: flex;
-					flex-wrap: nowrap;
+					background: rgba(255, 255, 255, 0.7);
+					border-radius: 20rpx 20rpx 20rpx 20rpx;
 
-					// align-items: center;
-					.infobox_top_left {
-						width: 196rpx;
-						margin-top: 48rpx;
-						margin-left: 100rpx;
+					border: 2rpx solid #FFFFFF;
+					//  z-index: 999;
 
-						.infobox_top_lefttop {
-							font-size: 28rpx;
-							font-family: 'PingFang';
-							font-weight: 400;
-							color: #2E4975;
+					.infobox_top {
+						display: flex;
+						flex-wrap: nowrap;
 
+						// align-items: center;
+						.infobox_top_left {
+							width: 196rpx;
+							margin-top: 48rpx;
+							margin-left: 100rpx;
+
+							.infobox_top_lefttop {
+								font-size: 28rpx;
+								font-family: 'PingFang';
+								font-weight: 400;
+								color: #2E4975;
+
+							}
+
+							.infobox_top_leftbot {
+								font-size: 76rpx;
+								font-family: 'PingFang';
+								font-weight: 800;
+								color: #2E4975;
+								margin-top: 12rpx;
+							}
 						}
 
-						.infobox_top_leftbot {
-							font-size: 76rpx;
-							font-family: 'PingFang';
-							font-weight: 800;
-							color: #2E4975;
-							margin-top: 12rpx;
+						.infobox_top_right {
+							margin-left: 112rpx;
+							margin-top: 78rpx;
+
+							.infobox_top_righttop {
+								font-size: 24rpx;
+								font-family: 'PingFang', 'PingFang';
+								font-weight: 800;
+								color: #2E4975;
+							}
+
+							.infobox_top_rightbot {
+								display: flex;
+								flex-wrap: nowrap;
+								margin-top: 4rpx;
+								align-items: flex-end;
+								/* Align items at the bottom */
+								color: #F18F21;
+
+								.icon-xiangshangjiantoucuxiao {
+									font-size: 16rpx;
+									margin-bottom: 12rpx;
+								}
+
+								.icon-xiangxiajiantoucuxiao {
+									font-size: 16rpx;
+									margin-bottom: 12rpx;
+								}
+
+								.text {
+									font-size: 40rpx;
+									font-family: 'PingFang', 'PingFang';
+									font-weight: 800;
+								}
+							}
 						}
 					}
 
-					.infobox_top_right {
-						margin-left: 112rpx;
-						margin-top: 78rpx;
+					.infobox_bot {
+						margin-left: 32rpx;
+						margin-top: 32rpx;
+						margin-bottom: 32rpx;
+						width: 622rpx;
+						height: 126rpx;
+						background: #F6F6F6;
+						border-radius: 20rpx 20rpx 20rpx 20rpx;
+						display: flex;
+						flex-wrap: nowrap;
+						justify-content: space-around;
+						align-items: center;
 
-						.infobox_top_righttop {
-							font-size: 24rpx;
-							font-family:'PingFang','PingFang';
-							font-weight: 800;
-							color: #2E4975;
+						.infobox_bot_cont {
+							width: 140rpx;
+							display: flex;
+							flex-wrap: wrap;
+							justify-content: center;
+
+							.infobox_bot_cont_top {
+								font-size: 20rpx;
+								font-family: 'PingFang', 'PingFang';
+								font-weight: 500;
+								color: #2E4975;
+							}
+
+							.infobox_bot_cont_bot {
+								margin-top: 8rpx;
+								font-size: 36rpx;
+								font-family: 'PingFang', 'PingFang';
+								font-weight: 800;
+								color: #2E4975;
+							}
 						}
+					}
+				}
+			}
 
-						.infobox_top_rightbot {
-							margin-top: 4rpx;
-							font-size: 40rpx;
-							font-family:'PingFang','PingFang';
-							font-weight: 800;
-							color: #F18F21;
+			.study_info_box {
+				// position: absolute;
+				margin-top: 20rpx;
+				width: 686rpx;
+				padding: 32rpx;
+				// height: 365rpx;
+				background: #FFFFFF;
+				border-radius: 20rpx 20rpx 20rpx 20rpx;
+
+				.study_info_top {
+					display: flex;
+					flex-wrap: nowrap;
+					justify-content: space-between;
+					align-items: center;
+
+					.study_info_top_left {
+						font-size: 28rpx;
+						font-family: 'PingFang', 'PingFang';
+						font-weight: 800;
+						color: #2E4975;
+					}
+
+					.study_info_top_right {
+						display: flex;
+						flex-wrap: nowrap;
+						align-items: center;
+						font-size: 24rpx;
+						font-family: 'PingFang', 'PingFang';
+						font-weight: 500;
+						color: rgba(46, 73, 117, 0.65);
+						line-height: 38rpx;
+
+						.icon-arow_down {
+							margin-left: 8rpx;
+							font-size: 16rpx;
+							color: #2E4975;
 						}
 					}
 				}
 
-				.infobox_bot {
-					margin-left: 32rpx;
+				.study_info_cont_box {
+
 					margin-top: 32rpx;
-					margin-bottom: 32rpx;
-					width: 622rpx;
-					height: 126rpx;
-					background: #F6F6F6;
-					border-radius: 20rpx 20rpx 20rpx 20rpx;
 					display: flex;
-					flex-wrap: nowrap;
-					justify-content: space-around;
-					align-items: center;
+					// flex-wrap: warp;
+					flex-wrap: wrap;
 
-					.infobox_bot_cont {
-						width: 140rpx;
+					.study_info_cont {
+						margin-top: 4rpx;
 						display: flex;
-						flex-wrap: wrap;
-						justify-content: center;
+						flex-wrap: nowrap;
+						align-content: center;
 
-						.infobox_bot_cont_top {
+						// justify-content: space-between;
+						.data {
+							width: 40rpx;
 							font-size: 20rpx;
-							font-family:'PingFang','PingFang';
+							font-family: 'PingFang', 'PingFang';
 							font-weight: 500;
 							color: #2E4975;
 						}
 
-						.infobox_bot_cont_bot {
-							margin-top: 8rpx;
-							font-size: 36rpx;
-							font-family:'PingFang','PingFang';
-							font-weight: 800;
-							color: #2E4975;
+						.study_box {
+							margin-left: 12rpx;
+							display: flex;
+							flex-wrap: nowrap;
+							justify-content: space-between;
+
+							.study {
+								margin-right: 2rpx;
+								width: 57.4rpx;
+								height: 32.41rpx;
+								background: #F6F6F6;
+							}
 						}
 					}
 				}
+
 			}
+
 		}
 
-		.study_info_box {
-			// position: absolute;
-			margin-top: 20rpx;
-			width: 686rpx;
-			padding: 32rpx;
-			// height: 365rpx;
-			background: #FFFFFF;
-			border-radius: 20rpx 20rpx 20rpx 20rpx;
+		.work_info {
 
-			.study_info_top {
+			margin-top: 40rpx;
+			padding: 0 32rpx;
+
+			.work_info_top {
 				display: flex;
 				flex-wrap: nowrap;
-				justify-content: space-between;
 				align-items: center;
+				justify-content: space-between;
 
-				.study_info_top_left {
-					font-size: 28rpx;
-					font-family:'PingFang','PingFang';
+				.work_info_top_text {
+					font-size: 32rpx;
+					font-family: 'PingFang', 'PingFang';
 					font-weight: 800;
 					color: #2E4975;
 				}
 
-				.study_info_top_right {
+				.work_info_top_right {
 					display: flex;
 					flex-wrap: nowrap;
 					align-items: center;
 					font-size: 24rpx;
-					font-family:'PingFang','PingFang';
+					font-family: 'PingFang', 'PingFang';
 					font-weight: 500;
-					color: rgba(46, 73, 117, 0.65);
-					line-height: 38rpx;
+					color: rgba(7, 47, 90, 0.6);
 
 					.icon-arow_down {
 						margin-left: 8rpx;
@@ -773,208 +849,133 @@ page {
 				}
 			}
 
-			.study_info_cont_box {
-				margin-top: 32rpx;
+			.work_card {
+				margin-top: 20rpx;
 				display: flex;
-				// flex-wrap: warp;
 				flex-wrap: wrap;
-
-				.study_info_cont {
-					margin-top: 4rpx;
-					display: flex;
-					flex-wrap: nowrap;
-					align-content: center;
-
-					// justify-content: space-between;
-					.data {
-						width: 40rpx;
-						font-size: 20rpx;
-						font-family:'PingFang','PingFang';
-						font-weight: 500;
-						color: #2E4975;
-					}
-
-					.study_box {
-						margin-left: 12rpx;
-						display: flex;
-						flex-wrap: nowrap;
-						justify-content: space-between;
-
-						.study {
-							margin-right: 2rpx;
-							width: 57.4rpx;
-							height: 32.41rpx;
-							background: #F6F6F6;
-						}
-					}
-				}
-			}
-
-		}
-
-	}
-
-	.work_info {
-
-		margin-top: 40rpx;
-		padding: 0 32rpx;
-
-		.work_info_top {
-			display: flex;
-			flex-wrap: nowrap;
-			align-items: center;
-			justify-content: space-between;
-
-			.work_info_top_text {
-				font-size: 32rpx;
-				font-family:'PingFang','PingFang';
-				font-weight: 800;
-				color: #2E4975;
-			}
-
-			.work_info_top_right {
-				display: flex;
-				flex-wrap: nowrap;
-				align-items: center;
-				font-size: 24rpx;
-				font-family:'PingFang','PingFang';
-				font-weight: 500;
-				color: rgba(7, 47, 90, 0.6);
-
-				.icon-arow_down {
-					margin-left: 8rpx;
-					font-size: 16rpx;
-					color: #2E4975;
-				}
-			}
-		}
-
-		.work_card {
-			margin-top: 20rpx;
-			display: flex;
-			flex-wrap: wrap;
-			width: 686rpx;
-			padding: 32rpx;
-			background: #FFFFFF;
-			border-radius: 20rpx 20rpx 20rpx 20rpx;
-
-			border-left: 8rpx solid #F18F21;
-
-			.work_card_top {
-				width: 100%;
-				display: flex;
-				flex-wrap: nowrap;
-				align-items: center;
-				justify-content: space-between;
-
-				.work_card_top_left {
-					display: flex;
-					flex-wrap: nowrap;
-					align-items: center;
-					font-size: 28rpx;
-					font-family:'PingFang','PingFang';
-					font-weight: 800;
-					color: #2E4975;
-
-					.work_card_top_left_img {
-						margin-right: 8rpx;
-						width: 38rpx;
-						height: 32rpx;
-					}
-				}
-
-				.work_card_top_right {
-					font-size: 24rpx;
-					font-family:'PingFang','PingFang';
-					font-weight: 500;
-					color: #F18F21;
-				}
-
-				.act2 {
-					color: #2D7CE6;
-				}
-			}
-
-			.work_card_cont_box {
-				margin-top: 16rpx;
-				padding: 24rpx;
-				width: 100%;
-				background: #F9F9F9;
+				width: 686rpx;
+				padding: 32rpx;
+				background: #FFFFFF;
 				border-radius: 20rpx 20rpx 20rpx 20rpx;
 
-				.work_card_cont:last-child {
-					margin-bottom: 0;
-				}
+				border-left: 8rpx solid #F18F21;
 
-				.work_card_cont {
-					margin-bottom: 24rpx;
+				.work_card_top {
+					width: 100%;
 					display: flex;
 					flex-wrap: nowrap;
 					align-items: center;
+					justify-content: space-between;
 
-					.work_card_cont_point {
-						width: 8rpx;
-						height: 8rpx;
-						background: #2E4975;
-						border-radius: 50%;
-					}
-
-					.work_card_cont_text {
-						margin-left: 20rpx;
-						font-size: 24rpx;
-						font-family:'PingFang','PingFang';
-						font-weight: 500;
+					.work_card_top_left {
+						display: flex;
+						flex-wrap: nowrap;
+						align-items: center;
+						font-size: 28rpx;
+						font-family: 'PingFang', 'PingFang';
+						font-weight: 800;
 						color: #2E4975;
+
+						.work_card_top_left_img {
+							margin-right: 8rpx;
+							width: 38rpx;
+							height: 32rpx;
+						}
 					}
 
-					.work_card_cont_tag {
-						margin-left: 30rpx;
-						padding: 8rpx 18rpx;
-						background: #FFF2E4;
-						border-radius: 20rpx 20rpx 20rpx 20rpx;
-						font-size: 20rpx;
-						font-family:'PingFang','PingFang';
+					.work_card_top_right {
+						font-size: 24rpx;
+						font-family: 'PingFang', 'PingFang';
 						font-weight: 500;
 						color: #F18F21;
 					}
 
-				}
-			}
-
-			.work_card_info_box {
-				display: flex;
-				flex-wrap: wrap;
-				margin-top: 22rpx;
-
-				.work_card_info_top {
-					display: flex;
-					flex-wrap: nowrap;
-					align-items: center;
-					width: 100%;
-					font-size: 20rpx;
-					font-family:'PingFang','PingFang';
-					font-weight: 500;
-					color: rgba(46, 73, 117, 0.6);
-
-					.work_card_info_topimg {
-						margin-right: 8rpx;
-						width: 18.74rpx;
-						height: 20rpx;
+					.act2 {
+						color: #2D7CE6;
 					}
 				}
 
-				.work_card_info_bot {
-					margin-top: 4rpx;
-					font-size: 24rpx;
-					font-family:'PingFang','PingFang';
-					font-weight: 500;
-					color: #2E4975;
+				.work_card_cont_box {
+					margin-top: 16rpx;
+					padding: 24rpx;
+					width: 100%;
+					background: #F9F9F9;
+					border-radius: 20rpx 20rpx 20rpx 20rpx;
+
+					.work_card_cont:last-child {
+						margin-bottom: 0;
+					}
+
+					.work_card_cont {
+						margin-bottom: 24rpx;
+						display: flex;
+						flex-wrap: nowrap;
+						align-items: center;
+
+						.work_card_cont_point {
+							width: 8rpx;
+							height: 8rpx;
+							background: #2E4975;
+							border-radius: 50%;
+						}
+
+						.work_card_cont_text {
+							margin-left: 20rpx;
+							font-size: 24rpx;
+							font-family: 'PingFang', 'PingFang';
+							font-weight: 500;
+							color: #2E4975;
+						}
+
+						.work_card_cont_tag {
+							margin-left: 30rpx;
+							padding: 8rpx 18rpx;
+							background: #FFF2E4;
+							border-radius: 20rpx 20rpx 20rpx 20rpx;
+							font-size: 20rpx;
+							font-family: 'PingFang', 'PingFang';
+							font-weight: 500;
+							color: #F18F21;
+						}
+
+					}
+				}
+
+				.work_card_info_box {
+					display: flex;
+					flex-wrap: wrap;
+					margin-top: 22rpx;
+
+					.work_card_info_top {
+						display: flex;
+						flex-wrap: nowrap;
+						align-items: center;
+						width: 100%;
+						font-size: 20rpx;
+						font-family: 'PingFang', 'PingFang';
+						font-weight: 500;
+						color: rgba(46, 73, 117, 0.6);
+
+						.work_card_info_topimg {
+							margin-right: 8rpx;
+							width: 18.74rpx;
+							height: 20rpx;
+						}
+					}
+
+					.work_card_info_bot {
+						margin-top: 4rpx;
+						font-size: 24rpx;
+						font-family: 'PingFang', 'PingFang';
+						font-weight: 500;
+						color: #2E4975;
+					}
 				}
 			}
-		}
 
-		.act1 {
-			border-left: 8rpx solid #2D7CE6;
+			.act1 {
+				border-left: 8rpx solid #2D7CE6;
+			}
 		}
 	}
-}</style>
+</style>
\ No newline at end of file
diff --git a/pages_teacher/pages_add/add_class.vue b/pages_teacher/pages_add/add_class.vue
index cc4d372..31713db 100644
--- a/pages_teacher/pages_add/add_class.vue
+++ b/pages_teacher/pages_add/add_class.vue
@@ -19,51 +19,28 @@
 					
 					</view> -->
 
-			<view class="check_card_cls">
+		
+			<view class="check_card_cls " v-for="(item,index) in workinfo" :key="index">
 				<view class="check_card_cls_info_left">
 					<view class="class_card_left">
-						<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
+						<image :src="item.avatar"></image>
 					</view>
 					<view class="class_card_right">
 						<view class="class_card_right_top">
-							雅思1班
+							{{item.name}}
 						</view>
-						<view class="class_card_right_bot">
-							共21人
+						
+						<view class="class_card_right_bot" v-show="item.classify == 1">
+							听力
 						</view>
-					</view>
-				</view>
-				<view class="check_card_cls_info_right">
-					<view class="class_info">
-						<view class="class_info_top">
-							平均成绩/分
+						<view class="class_card_right_bot" v-show="item.classify == 2">
+							阅读
 						</view>
-						<view class="class_info_bot">
-							6
+						<view class="class_card_right_bot" v-show="item.classify == 3">
+							写作
 						</view>
-					</view>
-					<view class="class_info">
-						<view class="class_info_top">
-							作业完成度
-						</view>
-						<view class="class_info_bot">
-							80%
-						</view>
-					</view>
-
-				</view>
-			</view>
-			<view class="check_card_cls ">
-				<view class="check_card_cls_info_left">
-					<view class="class_card_left">
-						<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
-					</view>
-					<view class="class_card_right">
-						<view class="class_card_right_top">
-							雅思1班
-						</view>
-						<view class="class_card_right_bot">
-							共21人
+						<view class="class_card_right_bot" v-show="item.classify == 4">
+							口语
 						</view>
 					</view>
 				</view>
@@ -103,19 +80,23 @@
 					backgroundColor: "#F6F9FC",
 				},
 				checkindex: 0,
-				id:13,
+				id:12,
 				workinfo:[],
 				orgworkinfo:[]
 				
 
 			}
 		},
-		onLoad() {
+		onLoad(option) {
+			console.log(option);
+			this.id = option.id
+			// this.classid=15
 			this.getworklist()
 		},
+		
 		methods: {
 			getworklist() {
-				this.$u.get(`https://api.admin-v2.langsi.online//admin-api/classroom/work-record/classrooms?workId=${this.id}`).then(res => {
+				this.$u.get(`https://api.admin-v2.langsi.online/admin-api/classroom/work-record/classrooms?workId=${this.id}`).then(res => {
 			
 			
 					if (res.code == 0) {
diff --git a/pages_teacher/teacher_class/class_members.vue b/pages_teacher/teacher_class/class_members.vue
index cc4d372..4334764 100644
--- a/pages_teacher/teacher_class/class_members.vue
+++ b/pages_teacher/teacher_class/class_members.vue
@@ -19,21 +19,21 @@
 					
 					</view> -->
 
-			<view class="check_card_cls">
-				<view class="check_card_cls_info_left">
+			<view class="check_card_stu"  v-for="(item,index) in workinfo" :key="index">
+				<view class="check_card_stu_info_left">
 					<view class="class_card_left">
-						<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
+						<image :src="item.avatar"></image>
 					</view>
 					<view class="class_card_right">
 						<view class="class_card_right_top">
-							雅思1班
+							{{item.name}}
 						</view>
 						<view class="class_card_right_bot">
-							共21人
+							ID:{{item.id}}
 						</view>
 					</view>
 				</view>
-				<view class="check_card_cls_info_right">
+				<view class="check_card_stu_info_right">
 					<view class="class_info">
 						<view class="class_info_top">
 							平均成绩/分
@@ -50,43 +50,11 @@
 							80%
 						</view>
 					</view>
-
-				</view>
-			</view>
-			<view class="check_card_cls ">
-				<view class="check_card_cls_info_left">
-					<view class="class_card_left">
-						<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
-					</view>
-					<view class="class_card_right">
-						<view class="class_card_right_top">
-							雅思1班
-						</view>
-						<view class="class_card_right_bot">
-							共21人
-						</view>
-					</view>
-				</view>
-				<view class="check_card_cls_info_right">
-					<view class="class_info">
-						<view class="class_info_top">
-							平均成绩/分
-						</view>
-						<view class="class_info_bot">
-							6
-						</view>
-					</view>
-					<view class="class_info">
-						<view class="class_info_top">
-							作业完成度
-						</view>
-						<view class="class_info_bot">
-							80%
-						</view>
-					</view>
-
+			
 				</view>
 			</view>
+			
+			
 		</view>
 		
 	</view>
@@ -96,7 +64,7 @@
 	export default {
 		data() {
 			return {
-				title: '班级安排',
+				title: '学生安排',
 				// 班级名称数据绑定
 				
 				bgc: {
@@ -110,12 +78,16 @@
 
 			}
 		},
-		onLoad() {
+		onLoad(option) {
+			console.log(option);
+			this.id = option.id
+			// this.classid=15
 			this.getworklist()
 		},
+		
 		methods: {
 			getworklist() {
-				this.$u.get(`https://api.admin-v2.langsi.online//admin-api/classroom/work-record/classrooms?workId=${this.id}`).then(res => {
+				this.$u.get(`https://api.admin-v2.langsi.online/admin-api/classroom/work-record/members?workId=${this.id}`).then(res => {
 			
 			
 					if (res.code == 0) {
diff --git a/pages_teacher/teacher_teachers/operation_detail.vue b/pages_teacher/teacher_teachers/operation_detail.vue
index ae98431..02f62f3 100644
--- a/pages_teacher/teacher_teachers/operation_detail.vue
+++ b/pages_teacher/teacher_teachers/operation_detail.vue
@@ -53,7 +53,7 @@
 			<!-- 班级 -->
 			<view class="ap_class">
 				<!-- 安排班级 -->
-				<view class="ap_classes">
+				<view class="ap_classes" @click="toclass()">
 					<view class="ad_organization">
 						<view class="ad_ap">班级安排</view>
 						<view class="ad_icon">
@@ -70,7 +70,7 @@
 					</view>
 				</view>
 				<!-- 成员安排 -->
-				<view class="ap_classes">
+				<view class="ap_classes" @click="tostu()">
 					<view class="ad_organization">
 						<view class="ad_ap">成员安排</view>
 						<view class="ad_icon">
@@ -96,17 +96,20 @@
 				<view class="view_timeline" style="margin-top: 20rpx;">
 					<u-time-line>
 						<!-- 时间线1 -->
-						<u-time-line-item nodeTop="2" node-color="red" v-for="(itemsx,indexx) in item.items" :key="indexx">
+						<u-time-line-item nodeTop="2" node-color="red" v-for="(itemsx,indexx) in item.items"
+							:key="indexx">
 							<template v-slot:content>
 								<view>
 									<view class="u-order-title">
 										<view class="fickle">
 											<view class="view_first_wz" v-if="itemsx.classify==1||itemsx.classify==2">
-												{{itemsx.testName}}</view>
+												{{itemsx.testName}}
+											</view>
 											<view class="view_first_wz" v-if="itemsx.classify==3">{{itemsx.testName}}
 											</view>
 											<view class="view_first_wz" v-if="itemsx.classify==4">
-												{{itemsx.moduleName}}-{{itemsx.partName}}</view>
+												{{itemsx.moduleName}}-{{itemsx.partName}}
+											</view>
 											<view class="changeable greenish" v-if="itemsx.classify==1">听力</view>
 											<view class="changeable yellow" v-if="itemsx.classify==2">阅读</view>
 											<view class="changeable blur" v-if="itemsx.classify==3">写作</view>
@@ -117,34 +120,40 @@
 									</view>
 									<veiw class="blue-green">
 
-										<view class="blue_qs" :style="'width:' + itemsx.speedwidth + '%;'" v-if="itemsx.classify==1">
+										<view class="blue_qs" :style="'width:' + itemsx.speedwidth + '%;'"
+											v-if="itemsx.classify==1">
 
 										</view>
-										<view class="blue_qs2" :style="'width:' + itemsx.speedwidth + '%;'" v-if="itemsx.classify==2">
+										<view class="blue_qs2" :style="'width:' + itemsx.speedwidth + '%;'"
+											v-if="itemsx.classify==2">
 										</view>
-										<view class="blue_qs3" :style="'width:' + itemsx.speedwidth + '%;'" v-if="itemsx.classify==3">
+										<view class="blue_qs3" :style="'width:' + itemsx.speedwidth + '%;'"
+											v-if="itemsx.classify==3">
 										</view>
-										<view class="blue_qs4" :style="'width:' + itemsx.speedwidth + '%;'" v-if="itemsx.classify==4">
+										<view class="blue_qs4" :style="'width:' + itemsx.speedwidth + '%;'"
+											v-if="itemsx.classify==4">
 										</view>
-										<view class="text" style="z-index: 2;" v-if="itemsx.classify==1||itemsx.classify==2" >
+										<view class="text" style="z-index: 2;"
+											v-if="itemsx.classify==1||itemsx.classify==2">
 											{{itemsx.partName}}
 										</view>
-										<view class="word"  style="z-index: 2;" v-if="itemsx.classify==1||itemsx.classify==2">
+										<view class="word" style="z-index: 2;"
+											v-if="itemsx.classify==1||itemsx.classify==2">
 											:{{itemsx.questionType}}
 										</view>
-										<view class="text" style="z-index: 2;" v-if="itemsx.classify==3" >
+										<view class="text" style="z-index: 2;" v-if="itemsx.classify==3">
 											{{itemsx.partName}}
 										</view>
-									
-										<view class="text" style="z-index: 2;" v-if="itemsx.classify==4" >
+
+										<view class="text" style="z-index: 2;" v-if="itemsx.classify==4">
 											{{itemsx.questionName}}
 										</view>
-										
-										<view class="word"  style="z-index: 2;" v-if="itemsx.classify==4">
+
+										<view class="word" style="z-index: 2;" v-if="itemsx.classify==4">
 											:
-											 <span v-for=" ts in itemsx.speakingType.split(',') " :key="ts">
-											        {{ getTypeText(ts) }}
-											    </span>
+											<span v-for=" ts in itemsx.speakingType.split(',') " :key="ts">
+												{{ getTypeText(ts) }}
+											</span>
 										</view>
 									</veiw>
 
@@ -156,7 +165,7 @@
 				</view>
 			</template>
 			<view class="zhanwei" style="width: 100%;height: 50rpx;">
-				
+
 			</view>
 		</view>
 	</view>
@@ -179,18 +188,38 @@
 		},
 
 		methods: {
-			 getTypeText(type) {
-			        switch (type) {
-			            case '1':
-			                return '串题'+" ";
-			            case '2':
-			                return '跟读'+" ";
-			            case '3':
-			                return '模考'+" ";
-			            default:
-			                return '其他类型';
-			        }
-			    },
+			getTypeText(type) {
+				switch (type) {
+					case '1':
+						return '串题' + " ";
+					case '2':
+						return '跟读' + " ";
+					case '3':
+						return '模考' + " ";
+					default:
+						return '其他类型';
+				}
+			},
+			toclass(){
+				uni.navigateTo({
+					url: "/pages_teacher/pages_add/add_class?id=" +this.workinfo.id
+				
+				}).then(res => {
+				
+				}).catch(err => {
+				
+				});
+			},
+			tostu(){
+				uni.navigateTo({
+					url: "/pages_teacher/teacher_class/class_members?id=" + this.workinfo.id
+				
+				}).then(res => {
+				
+				}).catch(err => {
+				
+				});
+			},
 			getworklist() {
 				this.$u.get(`https://api.admin-v2.langsi.online/admin-api/classroom/work-record/detail?workId=${this.id}`)
 					.then(res => {
@@ -199,17 +228,17 @@
 						if (res.code == 0) {
 							this.workinfo = res.data
 							this.uploadspeath = (this.workinfo.doneNum / this.workinfo.totalNum) * 100;
-							
-							let json = JSON.stringify(this.workinfo )
-							
-							 for (const paper of this.workinfo.papers) {
-							        // Loop through items in each paper
-							        for (const item of paper.items) {
-							          // Calculate speedwidth and add it to the item
-							          item.speedwidth = (item.doneNum / item.totalNum) * 100;
-							        }
-							      }
-								 
+
+							let json = JSON.stringify(this.workinfo)
+
+							for (const paper of this.workinfo.papers) {
+								// Loop through items in each paper
+								for (const item of paper.items) {
+									// Calculate speedwidth and add it to the item
+									item.speedwidth = (item.doneNum / item.totalNum) * 100;
+								}
+							}
+
 							// this.orgworkinfo = JSON.parse(JSON.stringify(res.data));
 							// this.classlist = res.data.list
 							// this.isloding = false
@@ -231,7 +260,7 @@
 	.title {
 		margin-top: 32rpx;
 		font-size: 40rpx;
-		font-family:  'YOUSHEBIAOTIHEI-2',  'YOUSHEBIAOTIHEI-2';
+		font-family: 'YOUSHEBIAOTIHEI-2', 'YOUSHEBIAOTIHEI-2';
 		font-weight: 400;
 		color: #2E4975;
 	}
@@ -439,12 +468,13 @@
 			font-family: 'PingFang', 'PingFang';
 			font-weight: 500;
 			color: #2E4975;
-			
+
 			overflow: hidden;
 			white-space: nowrap;
 			text-overflow: ellipsis;
 		}
-		.word{
+
+		.word {
 			z-index: 2;
 			font-size: 24rpx;
 			font-family: 'PingFang', 'PingFang';