Parcourir la source

update: 错题本与评测练习模块

KELECHUAN il y a 2 ans
Parent
commit
cb185d31ad
41 fichiers modifiés avec 582 ajouts et 156 suppressions
  1. BIN
      .vs/slnx.sqlite
  2. 4 4
      common/global_scss/pages_style.scss
  3. 7 3
      pages/style/tab_pages.scss
  4. 55 13
      pages/tab_exam/tab_exam.vue
  5. 4 1
      pages/tab_swap/tab_swap.vue
  6. 92 11
      pages/tab_work/tab_work.vue
  7. 48 0
      static/iconfont/iconfont-weapp-icon.css
  8. 12 0
      store/children.js
  9. 4 3
      subpkg/datalist/examlist.vue
  10. 3 2
      subpkg/datalist/swaplist.vue
  11. 61 40
      subpkg/datalist/worklist.vue
  12. 2 1
      subpkg/statslist/swapstats.vue
  13. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  14. 1 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/top-day/top-day.js.map
  15. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/tab_exam/tab_exam.js.map
  16. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/tab_swap/tab_swap.js.map
  17. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/tab_work/tab_work.js.map
  18. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/subpkg/datalist/examlist.js.map
  19. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/subpkg/datalist/swaplist.js.map
  20. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/subpkg/datalist/worklist.js.map
  21. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/subpkg/statslist/swapstats.js.map
  22. 40 4
      unpackage/dist/dev/mp-weixin/common/main.wxss
  23. 1 1
      unpackage/dist/dev/mp-weixin/common/vendor.js
  24. 1 1
      unpackage/dist/dev/mp-weixin/pages/tab_exam/tab_exam.js
  25. 1 1
      unpackage/dist/dev/mp-weixin/pages/tab_exam/tab_exam.wxml
  26. 7 3
      unpackage/dist/dev/mp-weixin/pages/tab_exam/tab_exam.wxss
  27. 7 3
      unpackage/dist/dev/mp-weixin/pages/tab_home/tab_home.wxss
  28. 1 1
      unpackage/dist/dev/mp-weixin/pages/tab_swap/tab_swap.js
  29. 7 3
      unpackage/dist/dev/mp-weixin/pages/tab_swap/tab_swap.wxss
  30. 1 1
      unpackage/dist/dev/mp-weixin/pages/tab_work/tab_work.js
  31. 1 1
      unpackage/dist/dev/mp-weixin/pages/tab_work/tab_work.wxml
  32. 56 3
      unpackage/dist/dev/mp-weixin/pages/tab_work/tab_work.wxss
  33. 48 0
      unpackage/dist/dev/mp-weixin/static/iconfont/iconfont-weapp-icon.css
  34. 1 1
      unpackage/dist/dev/mp-weixin/subpkg/datalist/examlist.wxml
  35. 1 0
      unpackage/dist/dev/mp-weixin/subpkg/datalist/examlist.wxss
  36. 1 1
      unpackage/dist/dev/mp-weixin/subpkg/datalist/swaplist.wxml
  37. 1 0
      unpackage/dist/dev/mp-weixin/subpkg/datalist/swaplist.wxss
  38. 1 1
      unpackage/dist/dev/mp-weixin/subpkg/datalist/worklist.wxml
  39. 1 0
      unpackage/dist/dev/mp-weixin/subpkg/datalist/worklist.wxss
  40. 1 0
      unpackage/dist/dev/mp-weixin/subpkg/statslist/swapstats.wxss
  41. 103 45
      utils/RequestHandler.js

BIN
.vs/slnx.sqlite


+ 4 - 4
common/global_scss/pages_style.scss

@@ -129,10 +129,10 @@ page{
 	.bg_box {
 		position: fixed;
 		width: 100%;
-		height: 900rpx;
+		height: 800rpx;
 		background-size: 100%;
 		background-repeat: no-repeat;
-		background-image: linear-gradient(to top, #f3f4f9, rgba(255, 255, 255, 0) 50%),url('https://image.meiye.art/pic_1628634662880');
+		background-image: linear-gradient(to top, #f3f4f9, rgba(255, 255, 255, 0) 45%),url('https://image.meiye.art/pic_1628634662880');
 		// left: 50%;
 		// right: 50%;
 		// transform: translate(-50%, -30%);
@@ -146,10 +146,10 @@ page{
 	.bg_card{
 		position: fixed;
 		width: 100%;
-		height: 900rpx;
+		height: 800rpx;
 		background-size: 100%;
 		background-repeat: no-repeat;
-		background-image: linear-gradient(to top, #f3f4f9, rgba(255, 255, 255, 0) 50%),url('https://image.meiye.art/pic_1628634712718');
+		background-image: linear-gradient(to top, #f3f4f9, rgba(255, 255, 255, 0) 45%),url('https://image.meiye.art/pic_1628634712718');
 		
 // 		position: fixed;
 // 		left: 50%;

+ 7 - 3
pages/style/tab_pages.scss

@@ -132,7 +132,7 @@
 	}
 	.scroll_view_bottom{
 		white-space: nowrap;
-		height: 400rpx;
+		height: 370rpx;
 		._item_box{
 			margin: 0 20rpx;
 			display: inline-block;
@@ -170,10 +170,14 @@
 			vertical-align: top;
 			background-color: #FFF;
 			border-radius: $border-radius;
-			height: 350rpx;
-			width: 300rpx;
+			height: 320rpx;
+			width: 280rpx;
 			overflow: hidden;
 			z-index: 55;
+			.t-icon {
+				width: 120rpx;
+				height: 120rpx;
+			}
 			.image_box{
 				height: 220rpx;
 				width: 100%;

+ 55 - 13
pages/tab_exam/tab_exam.vue

@@ -54,7 +54,10 @@
 					</view>
 				</view>
 				<view class="class_list">
-					<view class="class_item" :style="{borderImage: item.examInfo.progress === 'finish'?none:'linear-gradient(to right, #ff8caf, #FFF) 1'}" v-for="(item,index) in examData" :key="index" @click="navExamData(index)" v-if="examData.length != 0">
+					<view class="class_item"
+						:style="{borderImage: item.examInfo.progress === 'finish'?none:'linear-gradient(to right, #ff8caf, #FFF) 1'}"
+						v-for="(item,index) in examData" :key="index" @click="navExamData(index)"
+						v-if="examData.length != 0">
 						<view class="flex_row" style="margin: 0 20rpx;">
 							<view class="t-icon t-icon-examicon" style="width: 60rpx; height: 60rpx;"></view>
 							<view class="flex_cloumn" style="height:92rpx;justify-content: space-between;">
@@ -89,15 +92,48 @@
 				<view class="title" style="font-size: 32rpx;">评测练习</view>
 				<view class="bottom_tag"></view>
 			</view>
-			
+
 			<view class="flex_row" style="width: 70%;"></view>
 		</view>
 		<scroll-view class="scroll_view_bottom" scroll-x="true" :scroll-with-animation="true" scroll-left="0">
-			<view class="_item"></view>
-			<view class="_item"></view>
-			<view class="_item"></view>
-			<view class="_item"></view>
-			<view class="_item"></view>
+			<view class="_item" v-for="(item,index) in examPractice" :key="index">
+				<view class="flex_cloumn" style="height: 320rpx;">
+					<view class="flex_row" style="margin: 10rpx;">
+						<view class="t-icon t-icon-yuwen" v-if="item.subject === '语文'"></view>
+						<view class="t-icon t-icon-shuxue" v-if="item.subject === '数学'"></view>
+						<view class="t-icon t-icon-yingyu" v-if="item.subject === '英语'"></view>
+						<view class="t-icon t-icon-tiyu" v-if="item.subject === '体育'"></view>
+						<view class="t-icon t-icon-tianwen" v-if="item.subject === '科学'"></view>
+						<view class="t-icon t-icon-zuixinkecheng" v-if="item.subject === '思品'"></view>
+						<view class="t-icon t-icon-wuli" v-if="item.subject === '物理'"></view>
+						<view class="t-icon t-icon-huaxue" v-if="item.subject === '化学'"></view>
+						<view class="t-icon t-icon-meishu" v-if="item.subject === '美术'"></view>
+						<view class="t-icon t-icon-yinle" v-if="item.subject === '音乐'"></view>
+						<view class="t-icon t-icon-dili" v-if="item.subject === '地理'"></view>
+						<view class="t-icon t-icon-lishi" v-if="item.subject === '历史'"></view>
+						<view class="flex_cloumn" style="height: 100rpx;justify-content: space-around;">
+							<view class="title" style="font-size: 32rpx;">{{item.subject}}</view>
+							<view class="tag_fill"
+								style="background-color: #d8deff;width:fit-content;margin-left: 0;padding: 5rpx 10rpx;">
+								<view class="t-icon t-icon-zhengceguizhang"
+									style="width: 30rpx;height: 30rpx;margin-right: 5rpx;"></view>
+								<view class="tag_text" style="color: #4169E1;">{{item.type}}</view>
+							</view>
+						</view>
+					</view>
+					<view class="flex_cloumn" style="height: 100%;justify-content: space-around;margin: 0 30rpx 20rpx 30rpx;">
+						<view class="title" style="font-size: 32rpx;">{{item.title}}</view>
+						<view class="title" style="font-size: 30rpx;font-weight: 400;">「 {{item.modality}} 」</view>
+						<view class="flex_baseline">
+								<view class="subtitle" style="font-weight: 400;font-size: 28rpx;">评测题量,共</view>
+								<view class="subtitle" style="font-weight: 400;font-size: 40rpx;margin-left: 4rpx;">{{item.amount}}</view>
+								<view class="subtitle" style="font-weight: 400;font-size: 28rpx;margin-left: 4rpx;">题</view>
+						</view>
+
+					</view>
+				</view>
+
+			</view>
 		</scroll-view>
 	</view>
 </template>
@@ -109,7 +145,7 @@
 	export default {
 		computed: {
 			...mapState('m_chart', ['examChartData']),
-			...mapState('m_children', ['examData'])
+			...mapState('m_children', ['examData', 'examPractice'])
 		},
 		data() {
 			return {
@@ -144,8 +180,9 @@
 				performance: '',
 				//完成数据
 				finishData: '',
+				finishRate: '',
 				timeStamp: '',
-				image1:'https://image.meiye.art/pic_1631411821365LA63Wc70BLbmyHhj2XjiL'
+				image1: 'https://image.meiye.art/pic_1631411821365LA63Wc70BLbmyHhj2XjiL',
 			};
 		},
 		onLoad() {
@@ -176,12 +213,14 @@
 			},
 			//获得评判信息
 			getPerformance() {
-				if(this.examData.length != 0){
+				if (this.examData.length != 0) {
 					this.finishData = this.examData.filter(x => x.examInfo.progress === 'finish')
+					this.finishRate = (this.finishData.length * 100 / this.examData.length).toFixed(0)
 					this.performance = this.finishData.length / this.examData.length >= 0.4 ?
 						(this.finishData.length / this.examData.length >= 0.7 ? '优秀' : '良好') : '较差'
-				}else{
+				} else {
 					this.finishData = []
+					this.finishRate = 0
 					this.performance = '无评测'
 				}
 
@@ -215,12 +254,12 @@
 				}
 			},
 			navExamList() {
-				let value = this.performance
+				let value = this.finishRate
 				uni.navigateTo({
 					url: `/subpkg/datalist/examlist?value=${value}`
 				})
 			},
-			navExamData(index){
+			navExamData(index) {
 				uni.navigateTo({
 					url: `/subpkg/datalist/examdata?index=${index}`
 				})
@@ -240,12 +279,15 @@
 		background-color: $color-pink;
 		margin-left: 20rpx;
 	}
+
 	.circle_line1 {
 		background-image: linear-gradient(to right, #ff8caf, #ff8caf), linear-gradient(90deg, #FFF -50%, rgba(255, 255, 255, 0.0));
 	}
+
 	.circle_line2 {
 		background-image: linear-gradient(to right, #ff8caf, #ff8caf), linear-gradient(180deg, #FFF -50%, rgba(255, 255, 255, 0.0));
 	}
+
 	.circle_line3 {
 		background-image: linear-gradient(to right, #ff8caf, #ff8caf), linear-gradient(0deg, #FFF -50%, rgba(255, 255, 255, 0.0));
 	}

+ 4 - 1
pages/tab_swap/tab_swap.vue

@@ -138,6 +138,7 @@
 				performance: '',
 				//完成数据
 				finishData: '',
+				finishRate: '',
 				timeStamp: '',
 				image1: 'https://image.meiye.art/pic_1631411820764Vm5iw82gnV2lVKWRokFmU'
 			};
@@ -170,10 +171,12 @@
 				if (this.swapData.length != 0) {
 					this.finishData = this.swapData.filter(x => x.vote && x.vote.progress === 'finish')
 					this.finishData.push(...this.swapData.filter(x => x.survey && x.survey.progress === 'finish'))
+					this.finishRate = (this.finishData.length * 100 / this.swapData.length).toFixed(0)
 					this.performance = this.finishData.length / this.swapData.length >= 0.4 ?
 						(this.finishData.length / this.swapData.length >= 0.7 ? '优秀' : '良好') : '较差'
 				} else {
 					this.finishData = []
+					this.finishRate = 0
 					this.performance = '无活动'
 				}
 			},
@@ -183,7 +186,7 @@
 				})
 			},
 			navSwapList() {
-				let value = this.performance
+				let value = this.finishRate
 				uni.navigateTo({
 					url: `/subpkg/datalist/swaplist?value=${value}`
 				})

+ 92 - 11
pages/tab_work/tab_work.vue

@@ -52,7 +52,10 @@
 					</view>
 				</view>
 				<view class="class_list">
-					<view class="class_item" :style="{borderImage: item.work.progress === 'finish'?none:'linear-gradient(to right, #f9c752, #FFF) 1'}" v-for="(item,index) in workData" :key="index" @click="navWorkData(index)" v-if="workData.length != 0">
+					<view class="class_item"
+						:style="{borderImage: item.work.progress === 'finish'?none:'linear-gradient(to right, #f9c752, #FFF) 1'}"
+						v-for="(item,index) in workData" :key="index" @click="navWorkData(index)"
+						v-if="workData.length != 0">
 						<view class="flex_row" style="margin: 0 20rpx;">
 							<view class="t-icon t-icon-workicon" style="width: 60rpx; height: 60rpx;"></view>
 							<view class="flex_cloumn">
@@ -70,7 +73,8 @@
 								<view class="flex_row"
 									style="width:510rpx;overflow: hidden;white-space: nowrap;text-overflow: ellipsis">
 									<view class="class_item_subtitle" style="font-size: 26rpx;font-weight: 400;">
-										{{item.work.description}}</view>
+										{{item.work.description}}
+									</view>
 								</view>
 							</view>
 						</view>
@@ -83,18 +87,35 @@
 			</view>
 
 			<view class="flex_cloumn" style="margin: 15rpx 0 10rpx 20rpx;">
-				<view class="title" style="font-size: 32rpx;">作业例题</view>
+				<view class="title" style="font-size: 32rpx;">错题本</view>
 				<view class="bottom_tag"></view>
 			</view>
 
 			<view class="flex_row" style="width: 70%;"></view>
 		</view>
 		<scroll-view class="scroll_view_bottom" scroll-x="true" :scroll-with-animation="true" scroll-left="0">
-			<view class="_item"></view>
-			<view class="_item"></view>
-			<view class="_item"></view>
-			<view class="_item"></view>
-			<view class="_item"></view>
+			<view class="_item" v-for="(item,index) in mistakeData" :key="index">
+				<view class="flex_cloumn_book" :style="{backgroundColor: item.color}">
+					<view class="book_shadow"></view>
+
+					<view class="book_title">{{item.subject}}</view>
+
+					<view class="flex_cloumn_box">
+						<view class="title" style="color: #FFF;font-size: 50rpx;margin-left: auto;">{{item.subject}}
+						</view>
+						<view class="flex_baseline" style="margin-left: auto;">
+							<view class="subtitle" style="font-size: 28rpx;color: #FFF;font-weight: 400;">收录错题</view>
+							<view class="subtitle"
+								style="color: #FFF;font-weight: 400;font-size: 40rpx;margin-left: 4rpx;">
+								{{item.amount}}
+							</view>
+							<view class="subtitle"
+								style="font-size: 28rpx;color: #FFF;font-weight: 400;margin-left: 4rpx;">道</view>
+						</view>
+					</view>
+
+				</view>
+			</view>
 		</scroll-view>
 	</view>
 </template>
@@ -105,7 +126,7 @@
 	} from 'vuex'
 	export default {
 		computed: {
-			...mapState('m_children', ['workData']),
+			...mapState('m_children', ['workData', 'mistakeData']),
 			...mapState('m_chart', ['workChartData'])
 		},
 		data() {
@@ -126,8 +147,9 @@
 				performance: '',
 				//完成数据
 				finishData: '',
+				finishRate: '',
 				timeStamp: '',
-				image1: 'https://image.meiye.art/pic_16314118207650DBDbJB8Ao3fE8_1bY3Fj'
+				image1: 'https://image.meiye.art/pic_16314118207650DBDbJB8Ao3fE8_1bY3Fj',
 			};
 		},
 		onLoad() {
@@ -157,10 +179,12 @@
 			getPerformance() {
 				if (this.workData.length != 0) {
 					this.finishData = this.workData.filter(x => x.work.progress === 'finish')
+					this.finishRate = (this.finishData.length * 100 / this.workData.length).toFixed(0)
 					this.performance = this.finishData.length / this.workData.length >= 0.4 ?
 						(this.finishData.length / this.workData.length >= 0.7 ? '优秀' : '良好') : '较差'
 				} else {
 					this.finishData = []
+					this.finishRate = 0
 					this.performance = '无作业'
 				}
 			},
@@ -170,7 +194,7 @@
 				})
 			},
 			navWorkList() {
-				let value = this.performance
+				let value = this.finishRate
 				uni.navigateTo({
 					url: `/subpkg/datalist/worklist?value=${value}`
 				})
@@ -203,13 +227,70 @@
 	.image {
 		top: -50rpx;
 	}
+
 	.circle_line1 {
 		background-image: linear-gradient(to right, #f9c752, #f9c752), linear-gradient(90deg, #FFF -50%, rgba(255, 255, 255, 0.0));
 	}
+
 	.circle_line2 {
 		background-image: linear-gradient(to right, #f9c752, #f9c752), linear-gradient(180deg, #FFF -50%, rgba(255, 255, 255, 0.0));
 	}
+
 	.circle_line3 {
 		background-image: linear-gradient(to right, #f9c752, #f9c752), linear-gradient(0deg, #FFF -50%, rgba(255, 255, 255, 0.0));
 	}
+
+	.scroll_view_bottom {
+		white-space: nowrap;
+		height: 350rpx;
+
+		._item {
+			margin: 4rpx 20rpx 0 20rpx;
+			display: inline-block;
+			vertical-align: top;
+			background-color: #FFF;
+			border-radius: $border-radius;
+			height: 300rpx;
+			width: 240rpx;
+			z-index: 55;
+			box-shadow: 1px 0px 2px #ffffff, 2px -1px 2px #d2d2d2, 3px -2px 2px #b4b4b4;
+		}
+	}
+
+	.flex_cloumn_book {
+		display: flex;
+		flex-direction: column;
+		height: 100%;
+		width: 100%;
+		overflow: hidden;
+	}
+
+	.book_title {
+		position: absolute;
+		margin-top: 60rpx;
+		margin-left: 80rpx;
+		font-size: 130rpx;
+		font-weight: 600;
+		color: #FFF;
+		opacity: 0.2;
+		writing-mode: vertical-lr;
+	}
+
+	.book_shadow {
+		position: absolute;
+		margin-left: 20rpx;
+		height: 300rpx;
+		width: 20rpx;
+		background-image: linear-gradient(to right, rgba(105, 105, 105, 0.1), rgba(255, 255, 255, 0.1));
+	}
+
+	.flex_cloumn_box {
+		display: flex;
+		flex-direction: column;
+		height: 100rpx;
+		width: 200rpx;
+		margin: 160rpx 20rpx 40rpx 20rpx;
+		justify-content: space-between;
+		z-index: 99;
+	}
 </style>

Fichier diff supprimé car celui-ci est trop grand
+ 48 - 0
static/iconfont/iconfont-weapp-icon.css


+ 12 - 0
store/children.js

@@ -16,6 +16,10 @@ export default {
 		clockData: '',
 		//勋章数据
 		medalData: '',
+		//评测练习
+		examPractice: '',
+		//错题数据
+		mistakeData: '',
 	}),
 	mutations: {
 		//更新当前孩子信息
@@ -46,6 +50,14 @@ export default {
 		//更新勋章数据
 		updateMedalData(state, medalData){
 			state.medalData = medalData
+		},
+		//更新评测练习
+		updateExamPractice(state, examPractice){
+			state.examPractice = examPractice
+		},
+		//更新错题数据
+		updateMistakeData(state, mistakeData){
+			state.mistakeData = mistakeData
 		}
 	}
 }

+ 4 - 3
subpkg/datalist/examlist.vue

@@ -17,11 +17,11 @@
 				<view class="content_title" style="font-size: 60rpx; margin-left: 10rpx;">{{dayTime.split('月')[1]}}
 				</view>
 				<view class="content_title" style="margin-left: 10rpx;">日</view>
-				<view class="content_title" style="margin-left: 10rpx;font-size: 50rpx;">{{value}}</view>
-				<view class="content_title" style="margin-left: 10rpx;">完成</view>
+				<view class="content_title" style="font-size: 40rpx;margin-left: 20rpx;">完成率</view>
+				<view class="content_title" style="margin-left: 10rpx;font-size: 60rpx;">{{value}}%</view>
 			</view>
 			<view class="flex_baseline">
-				<view class="content_subtitle" style="opacity: 0.8;">孩子共</view>
+				<view class="content_subtitle" style="opacity: 0.8;">孩子今日共</view>
 				<view class="content_subtitle" style="margin-left: 20rpx;font-size: 40rpx;transform: skew(-15deg);">
 					{{examData.length}}
 				</view>
@@ -165,6 +165,7 @@
 			transform: skew(-15deg);
 			color: #FFF;
 			z-index: 2;
+			text-shadow: 1px -1px 0px #c0c0c0, 2px -2px 0px #b0b0b0, 1px -1px 0px #a0a0a0, 2px -2px 0px #909090;
 		}
 
 		.content_subtitle {

+ 3 - 2
subpkg/datalist/swaplist.vue

@@ -11,8 +11,8 @@
 				<view class="content_title" style="margin-left: 10rpx;">月</view>
 				<view class="content_title" style="font-size: 60rpx; margin-left: 10rpx;">{{dayTime.split('月')[1]}}</view>
 				<view class="content_title" style="margin-left: 10rpx;">日</view>
-				<view class="content_title" style="margin-left: 10rpx;font-size: 50rpx;">{{value}}</view>
-								<view class="content_title" style="margin-left: 10rpx;">完成</view>
+				<view class="content_title" style="font-size: 40rpx;margin-left: 20rpx;">完成率</view>
+				<view class="content_title" style="margin-left: 10rpx;font-size: 60rpx;">{{value}}%</view>
 			</view>
 			<view class="flex_baseline">
 				<view class="content_subtitle" style="opacity: 0.8;">当前共</view>
@@ -153,6 +153,7 @@
 			transform: skew(-15deg);
 			color: #FFF;
 			z-index: 2;
+			text-shadow: 1px -1px 0px #c0c0c0, 2px -2px 0px #b0b0b0, 1px -1px 0px #a0a0a0, 2px -2px 0px #909090;
 		}
 	
 		.content_subtitle {

+ 61 - 40
subpkg/datalist/worklist.vue

@@ -1,47 +1,56 @@
 <template>
 	<view class="page_view">
 		<top-return :color="'#FFF'" text="作业列表"></top-return>
-		
+
 		<view class="bg_card"></view>
-		
+
 		<!-- 页面标题内容 -->
 		<view class="flex_cloumn">
 			<view class="flex_baseline">
 				<view class="content_title" style="font-size: 60rpx;">{{dayTime.split('月')[0]}}</view>
 				<view class="content_title" style="margin-left: 10rpx;">月</view>
-				<view class="content_title" style="font-size: 60rpx; margin-left: 10rpx;">{{dayTime.split('月')[1]}}</view>
+				<view class="content_title" style="font-size: 60rpx; margin-left: 10rpx;">{{dayTime.split('月')[1]}}
+				</view>
 				<view class="content_title" style="margin-left: 10rpx;">日</view>
-				<view class="content_title" style="margin-left: 10rpx;font-size: 50rpx;">{{value}}</view>
-								<view class="content_title" style="margin-left: 10rpx;">完成</view>
+				<view class="content_title" style="font-size: 40rpx;margin-left: 20rpx;">完成率</view>
+				<view class="content_title" style="margin-left: 10rpx;font-size: 60rpx;">{{value}}%</view>
 			</view>
 			<view class="flex_baseline">
-				<view class="content_subtitle" style="opacity: 0.8;">孩子共</view>
-					<view class="content_subtitle" style="margin-left: 20rpx;font-size: 40rpx;transform: skew(-15deg);">{{workData.length}}</view>
+				<view class="content_subtitle" style="opacity: 0.8;">孩子今日共</view>
+				<view class="content_subtitle" style="margin-left: 20rpx;font-size: 40rpx;transform: skew(-15deg);">
+					{{workData.length}}</view>
 				<view class="content_subtitle" style="margin-left: 20rpx;opacity: 0.8;">份作业</view>
 			</view>
 		</view>
-		
+
 		<view class="card_view">
-			<view class="card_item" style="width: 100%;" v-for="(item,index) in workData" :key="index" @click="navWorkData(index)">
+			<view class="card_item" style="width: 100%;" v-for="(item,index) in workData" :key="index"
+				@click="navWorkData(index)">
 				<view class="card_title">
 					<view class="front_tag" style="height: 40rpx;"></view>
 					<view class="title" style="font-size: 36rpx;">{{item.work.name}}</view>
-					<view :class="item.work.progress === 'finish'?'t-icon t-icon-yiwancheng1':'t-icon t-icon-jinhangzhong-copy1'" style="position: absolute; width: 100rpx; height: 100rpx;margin-left: 570rpx;margin-top: 50rpx;"></view>
+					<view
+						:class="item.work.progress === 'finish'?'t-icon t-icon-yiwancheng1':'t-icon t-icon-jinhangzhong-copy1'"
+						style="position: absolute; width: 100rpx; height: 100rpx;margin-left: 570rpx;margin-top: 50rpx;">
+					</view>
 				</view>
 				<view class="cloumn">
 					<view class="flex_row">
-						<u-parse class="title" style="font-size: 30rpx;" :content="item.work.description" :selectable="true"></u-parse>
+						<u-parse class="title" style="font-size: 30rpx;" :content="item.work.description"
+							:selectable="true"></u-parse>
 					</view>
 					<view class="flex_baseline" style="margin-top: 20rpx;">
 						<view class="subtitle">布置老师:</view>
 						<view class="title" style="margin-left: 20rpx; font-size: 30rpx;">{{item.work.creatorId}}</view>
 						<view class="subtitle" style="margin-left: 20rpx;">截至时间:</view>
-						<view class="title" style="margin-left: 20rpx; font-size: 30rpx;">{{$timeStampToTime(item.work.endTime)}}</view>
+						<view class="title" style="margin-left: 20rpx; font-size: 30rpx;">
+							{{$timeStampToTime(item.work.endTime)}}</view>
 					</view>
 				</view>
 				<!-- 正文 -->
 				<view class="content_box">
-					<view class="title_box" :style="{backgroundColor: item.work.progress === 'finish'? '#23b46c': '#f9c752' }">
+					<view class="title_box"
+						:style="{backgroundColor: item.work.progress === 'finish'? '#23b46c': '#f9c752' }">
 						<view class="title_text">作业附件</view>
 					</view>
 					<view v-for="(attachment,i) in item.work.attachments" :key="i">
@@ -58,12 +67,12 @@
 						</view>
 					</view>
 				</view>
-				
+
 			</view>
 		</view>
-	</view>
-</template>
-
+	</view>
+</template>
+
 <script>
 	import {
 		mapState,
@@ -71,9 +80,9 @@
 	} from 'vuex'
 	export default {
 		computed: {
-			...mapState('m_children',['workData'])
+			...mapState('m_children', ['workData'])
 		},
-		data(){
+		data() {
 			return {
 				value: '',
 				dayTime: ''
@@ -84,96 +93,108 @@
 			this.dayTime = (new Date()).format('M-d').replace('-', '月')
 		},
 		methods: {
-			fixNum(num){
+			fixNum(num) {
 				return num.toFixed(2)
 			},
-			navWorkData(index){
+			navWorkData(index) {
 				uni.navigateTo({
 					url: `/subpkg/datalist/workdata?index=${index}`
 				})
 			}
 		}
-	}
-</script>
-
+	}
+</script>
+
 <style lang="scss">
-	.subtitle{
+	.subtitle {
 		font-weight: 400;
 		font-size: 26rpx;
 	}
-	.tag{
+
+	.tag {
 		border-radius: 6rpx;
 		border: 1rpx solid $color-blue;
 		padding: 5rpx 16rpx;
-		.tag_text{
+
+		.tag_text {
 			font-size: 22rpx;
 			color: $color-blue;
 		}
 	}
-	.content_box{
+
+	.content_box {
 		margin: 20rpx;
 		padding: 0 20rpx;
 		background-color: #f6f6f6;
 		border-radius: 10rpx;
-		.title_box{
+
+		.title_box {
 			position: relative;
 			top: -20rpx;
-			width:fit-content;
+			width: fit-content;
 			height: 36rpx;
 			border-radius: 10rpx;
 			padding: 5rpx 20rpx;
-			.title_text{
+
+			.title_text {
 				font-size: 25rpx;
 				font-weight: bold;
 				color: #FFF;
 			}
 		}
-		.content_detail{
+
+		.content_detail {
 			font-size: 30rpx;
 			font-weight: bold;
 			color: $title;
 			word-break: break-all;
 		}
+
 		.content_subtitle {
 			font-size: 25rpx;
 			font-weight: bold;
 			color: $subtitle;
 		}
 	}
-	.attachment_box{
+
+	.attachment_box {
 		display: flex;
 		margin-bottom: 20rpx;
 		align-items: center;
 		padding: 15rpx 20rpx;
 		background-color: #FFF;
 		border-radius: 10rpx;
-		.t-icon{
+
+		.t-icon {
 			width: 60rpx;
 			height: 60rpx;
 		}
 	}
+
 	.flex_cloumn {
 		margin: 140rpx 0 0 50rpx;
 		height: 170rpx;
 		justify-content: space-around;
-	
+
 		.content_title {
 			font-size: 35rpx;
 			font-weight: bold;
 			transform: skew(-15deg);
 			color: #FFF;
 			z-index: 2;
+			text-shadow: 1px -1px 0px #c0c0c0, 2px -2px 0px #b0b0b0, 1px -1px 0px #a0a0a0, 2px -2px 0px #909090;
 		}
-	
+
 		.content_subtitle {
 			font-size: 35rpx;
 			color: #FFF;
 			z-index: 2;
 		}
 	}
-	.cloumn{
-		display:flex;
+
+	.cloumn {
+		display: flex;
 		flex-direction: column;
 		margin: 20rpx 50rpx;
-	}
-</style>
+	}
+</style>

+ 2 - 1
subpkg/statslist/swapstats.vue

@@ -177,7 +177,7 @@
 					for (let i = 0; i < sleepData.length; i++) {
 						sum += sleepData[i]
 					}
-					let sleepAvg = (sum/sleepData.length).toFixed(1)
+					let sleepAvg = (sum / sleepData.length).toFixed(1)
 					let opt = {
 						title: {
 							name: '平均睡眠',
@@ -418,6 +418,7 @@
 			transform: skew(-15deg);
 			color: #FFF;
 			z-index: 2;
+			text-shadow: 1px -1px 0px #c0c0c0, 2px -2px 0px #b0b0b0, 1px -1px 0px #a0a0a0, 2px -2px 0px #909090;
 		}
 
 		.content_subtitle {

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/top-day/top-day.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pages/tab_exam/tab_exam.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pages/tab_swap/tab_swap.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pages/tab_work/tab_work.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/subpkg/datalist/examlist.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/subpkg/datalist/swaplist.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/subpkg/datalist/worklist.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/subpkg/statslist/swapstats.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 40 - 4
unpackage/dist/dev/mp-weixin/common/main.wxss


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/mp-weixin/common/vendor.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/tab_exam/tab_exam.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/tab_exam/tab_exam.wxml


+ 7 - 3
unpackage/dist/dev/mp-weixin/pages/tab_exam/tab_exam.wxss

@@ -114,7 +114,7 @@
 }
 .scroll_view_bottom {
   white-space: nowrap;
-  height: 400rpx;
+  height: 370rpx;
 }
 .scroll_view_bottom ._item_box {
   margin: 0 20rpx;
@@ -153,11 +153,15 @@
   vertical-align: top;
   background-color: #FFF;
   border-radius: 12rpx;
-  height: 350rpx;
-  width: 300rpx;
+  height: 320rpx;
+  width: 280rpx;
   overflow: hidden;
   z-index: 55;
 }
+.scroll_view_bottom ._item .t-icon {
+  width: 120rpx;
+  height: 120rpx;
+}
 .scroll_view_bottom ._item .image_box {
   height: 220rpx;
   width: 100%;

+ 7 - 3
unpackage/dist/dev/mp-weixin/pages/tab_home/tab_home.wxss

@@ -114,7 +114,7 @@
 }
 .scroll_view_bottom {
   white-space: nowrap;
-  height: 400rpx;
+  height: 370rpx;
 }
 .scroll_view_bottom ._item_box {
   margin: 0 20rpx;
@@ -153,11 +153,15 @@
   vertical-align: top;
   background-color: #FFF;
   border-radius: 12rpx;
-  height: 350rpx;
-  width: 300rpx;
+  height: 320rpx;
+  width: 280rpx;
   overflow: hidden;
   z-index: 55;
 }
+.scroll_view_bottom ._item .t-icon {
+  width: 120rpx;
+  height: 120rpx;
+}
 .scroll_view_bottom ._item .image_box {
   height: 220rpx;
   width: 100%;

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/tab_swap/tab_swap.js


+ 7 - 3
unpackage/dist/dev/mp-weixin/pages/tab_swap/tab_swap.wxss

@@ -114,7 +114,7 @@
 }
 .scroll_view_bottom {
   white-space: nowrap;
-  height: 400rpx;
+  height: 370rpx;
 }
 .scroll_view_bottom ._item_box {
   margin: 0 20rpx;
@@ -153,11 +153,15 @@
   vertical-align: top;
   background-color: #FFF;
   border-radius: 12rpx;
-  height: 350rpx;
-  width: 300rpx;
+  height: 320rpx;
+  width: 280rpx;
   overflow: hidden;
   z-index: 55;
 }
+.scroll_view_bottom ._item .t-icon {
+  width: 120rpx;
+  height: 120rpx;
+}
 .scroll_view_bottom ._item .image_box {
   height: 220rpx;
   width: 100%;

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/tab_work/tab_work.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/tab_work/tab_work.wxml


+ 56 - 3
unpackage/dist/dev/mp-weixin/pages/tab_work/tab_work.wxss

@@ -114,7 +114,7 @@
 }
 .scroll_view_bottom {
   white-space: nowrap;
-  height: 400rpx;
+  height: 370rpx;
 }
 .scroll_view_bottom ._item_box {
   margin: 0 20rpx;
@@ -153,11 +153,15 @@
   vertical-align: top;
   background-color: #FFF;
   border-radius: 12rpx;
-  height: 350rpx;
-  width: 300rpx;
+  height: 320rpx;
+  width: 280rpx;
   overflow: hidden;
   z-index: 55;
 }
+.scroll_view_bottom ._item .t-icon {
+  width: 120rpx;
+  height: 120rpx;
+}
 .scroll_view_bottom ._item .image_box {
   height: 220rpx;
   width: 100%;
@@ -241,4 +245,53 @@
 .circle_line3 {
   background-image: linear-gradient(to right, #f9c752, #f9c752), linear-gradient(0deg, #FFF -50%, rgba(255, 255, 255, 0));
 }
+.scroll_view_bottom {
+  white-space: nowrap;
+  height: 350rpx;
+}
+.scroll_view_bottom ._item {
+  margin: 4rpx 20rpx 0 20rpx;
+  display: inline-block;
+  vertical-align: top;
+  background-color: #FFF;
+  border-radius: 12rpx;
+  height: 300rpx;
+  width: 240rpx;
+  z-index: 55;
+  box-shadow: 1px 0px 2px #ffffff, 2px -1px 2px #d2d2d2, 3px -2px 2px #b4b4b4;
+}
+.flex_cloumn_book {
+  display: flex;
+  flex-direction: column;
+  height: 100%;
+  width: 100%;
+  overflow: hidden;
+}
+.book_title {
+  position: absolute;
+  margin-top: 60rpx;
+  margin-left: 80rpx;
+  font-size: 130rpx;
+  font-weight: 600;
+  color: #FFF;
+  opacity: 0.2;
+  -webkit-writing-mode: vertical-lr;
+          writing-mode: vertical-lr;
+}
+.book_shadow {
+  position: absolute;
+  margin-left: 20rpx;
+  height: 300rpx;
+  width: 20rpx;
+  background-image: linear-gradient(to right, rgba(105, 105, 105, 0.1), rgba(255, 255, 255, 0.1));
+}
+.flex_cloumn_box {
+  display: flex;
+  flex-direction: column;
+  height: 100rpx;
+  width: 200rpx;
+  margin: 160rpx 20rpx 40rpx 20rpx;
+  justify-content: space-between;
+  z-index: 99;
+}
 

Fichier diff supprimé car celui-ci est trop grand
+ 48 - 0
unpackage/dist/dev/mp-weixin/static/iconfont/iconfont-weapp-icon.css


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/mp-weixin/subpkg/datalist/examlist.wxml


+ 1 - 0
unpackage/dist/dev/mp-weixin/subpkg/datalist/examlist.wxss

@@ -54,6 +54,7 @@
           transform: skew(-15deg);
   color: #FFF;
   z-index: 2;
+  text-shadow: 1px -1px 0px #c0c0c0, 2px -2px 0px #b0b0b0, 1px -1px 0px #a0a0a0, 2px -2px 0px #909090;
 }
 .flex_cloumn .content_subtitle {
   font-size: 35rpx;

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/mp-weixin/subpkg/datalist/swaplist.wxml


+ 1 - 0
unpackage/dist/dev/mp-weixin/subpkg/datalist/swaplist.wxss

@@ -50,6 +50,7 @@
           transform: skew(-15deg);
   color: #FFF;
   z-index: 2;
+  text-shadow: 1px -1px 0px #c0c0c0, 2px -2px 0px #b0b0b0, 1px -1px 0px #a0a0a0, 2px -2px 0px #909090;
 }
 .cloumn .content_subtitle {
   font-size: 35rpx;

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/dev/mp-weixin/subpkg/datalist/worklist.wxml


+ 1 - 0
unpackage/dist/dev/mp-weixin/subpkg/datalist/worklist.wxss

@@ -66,6 +66,7 @@
           transform: skew(-15deg);
   color: #FFF;
   z-index: 2;
+  text-shadow: 1px -1px 0px #c0c0c0, 2px -2px 0px #b0b0b0, 1px -1px 0px #a0a0a0, 2px -2px 0px #909090;
 }
 .flex_cloumn .content_subtitle {
   font-size: 35rpx;

+ 1 - 0
unpackage/dist/dev/mp-weixin/subpkg/statslist/swapstats.wxss

@@ -20,6 +20,7 @@
           transform: skew(-15deg);
   color: #FFF;
   z-index: 2;
+  text-shadow: 1px -1px 0px #c0c0c0, 2px -2px 0px #b0b0b0, 1px -1px 0px #a0a0a0, 2px -2px 0px #909090;
 }
 .flex_cloumn .content_subtitle {
   font-size: 35rpx;

+ 103 - 45
utils/RequestHandler.js

@@ -1,7 +1,6 @@
 //开始流程初始化方法
 function initStart(phoneNumber) {
 	let promiseArr = []
-
 	promiseArr.push(new Promise((r, j) => {
 		//发起请求,通过phoneNumber查询家长所有孩子信息
 		uni.request({
@@ -10,7 +9,6 @@ function initStart(phoneNumber) {
 				phoneNumber: 17882237075
 			},
 			success: (res) => {
-				console.log('孩子信息MockData', res);
 				this.$store.commit('m_parent/updateChildrenData', res.data);
 				r('请求返回成功!')
 			},
@@ -28,7 +26,6 @@ function initStart(phoneNumber) {
 				phoneNumber: 17882237075
 			},
 			success: (res) => {
-				console.log('家长信息MockData', res);
 				this.$store.commit('m_parent/updateUserData', res.data);
 				r('请求返回成功!')
 			},
@@ -864,7 +861,6 @@ function initTab() {
 	// if(res.data === ''){
 	// 	res.data = '今日无活动'
 	// }
-	console.log('活动信息MockData', swapData);
 	this.$store.commit('m_children/updateSwapData', swapData);
 
 	let promiseArr = []
@@ -877,7 +873,6 @@ function initTab() {
 				childid: 360000198303136326
 			},
 			success: (res) => {
-				console.log('评测信息MockData', res);
 				if (res.data === '') {
 					res.data = '今日无评测'
 				}
@@ -898,7 +893,6 @@ function initTab() {
 				childid: 360000198303136326
 			},
 			success: (res) => {
-				console.log('作业信息MockData', res);
 				if (res.data === '') {
 					res.data = '今日无作业'
 				}
@@ -927,7 +921,6 @@ function initHome() {
 				childid: 360000198303136326
 			},
 			success: (res) => {
-				console.log('打卡信息MockData', res);
 				this.$store.commit('m_children/updateClockData', res.data);
 				r('请求返回成功!')
 			},
@@ -981,7 +974,7 @@ function initHome() {
 		title: '科学学习实验',
 		name: '科学',
 		teacher: '张老师',
-		time: '17:55-17:56',
+		time: '16:55-17:56',
 		timeFrame: '上午第三节',
 		resource: 'https://klxxcdn.oss-cn-hangzhou.aliyuncs.com/histudy/hrm/media/bg3.mp4',
 		attendance: true
@@ -1091,9 +1084,52 @@ function initExam() {
 	subjectExamData.examList = testList;
 	subjectExamData.subjectList = subjectList;
 	this.$store.commit('m_chart/updateSubjectExamData', subjectExamData);
+	let examPracticeList = [{
+			subject: '语文',
+			type: '客观题',
+			title: '阅读理解',
+			modality: '专项训练',
+			amount: 15
+		},
+		{
+			subject: '数学',
+			type: '客观题',
+			title: '计算练习',
+			modality: '综合训练',
+			amount: 35
+		},
+		{
+			subject: '英语',
+			type: '客观题',
+			title: '语句排序问题',
+			modality: '专项训练',
+			amount: 20
+		},
+		{
+			subject: '物理',
+			type: '客观题',
+			title: '牛顿定律问题',
+			modality: '专项训练',
+			amount: 25
+		},
+		{
+			subject: '地理',
+			type: '客观题',
+			title: '时区问题',
+			modality: '专项训练',
+			amount: 10
+		},
+		{
+			subject: '历史',
+			type: '客观题',
+			title: '历史常识问题',
+			modality: '专项训练',
+			amount: 30
+		}
+	]
+	this.$store.commit('m_children/updateExamPractice', examPracticeList);
 	//成绩图表数据
 	let examChartData = {
-
 		//学期折线图数据
 		totalChartData: [{
 				categories: testList,
@@ -1232,42 +1268,42 @@ function initExam() {
 				],
 			},
 			{
-					categories: subjectList,
-					series: [{
-							name: "当前测验成绩",
-							data: [
-								99,
-								72,
-								84,
-								92,
-								77,
-								93
-							]
-						},
-						{
-							name: "班级平均",
-							data: [
-								88,
-								84,
-								79,
-								82,
-								89,
-								83
-							]
-						},
-						{
-							name: "年级平均",
-							data: [
-								78,
-								74,
-								77,
-								86,
-								78,
-								79
-							]
-						}
-					],
-				},
+				categories: subjectList,
+				series: [{
+						name: "当前测验成绩",
+						data: [
+							99,
+							72,
+							84,
+							92,
+							77,
+							93
+						]
+					},
+					{
+						name: "班级平均",
+						data: [
+							88,
+							84,
+							79,
+							82,
+							89,
+							83
+						]
+					},
+					{
+						name: "年级平均",
+						data: [
+							78,
+							74,
+							77,
+							86,
+							78,
+							79
+						]
+					}
+				],
+			},
 			{
 				categories: subjectList,
 				series: [{
@@ -1533,6 +1569,28 @@ function initWork() {
 	workChartData.push(finishChart);
 	workChartData.push(scoreChart);
 	this.$store.commit('m_chart/updateWorkChartData', workChartData);
+	let mistakeData = [{
+			subject: '语文',
+			amount: 20,
+			color: '#4169E1'
+		},
+		{
+			subject: '数学',
+			amount: 30,
+			color: '#ff8caf'
+		},
+		{
+			subject: '英语',
+			amount: 10,
+			color: '#FF6D31'
+		},
+		{
+			subject: '科学',
+			amount: 8,
+			color: '#f9c752'
+		}
+	]
+	this.$store.commit('m_children/updateMistakeData', mistakeData);
 }
 //家校页初始化方法
 function initSwap() {