Kaynağa Gözat

优化CSS,解决按钮多次响应问题,优化组件,完善个人信息页面,完善孩子信息页面等

KELECHUAN 3 yıl önce
ebeveyn
işleme
471e6f1320

+ 101 - 0
components/analysis-module/analysis-module.vue

@@ -0,0 +1,101 @@
+<template>
+
+	<view class="block">
+
+		<view class="item-container" @click="navRoseChart">
+			<view class="analysis-name">
+				<view class="t-icon t-icon-xtubiao-"></view>
+				<text class="analysis-text">优劣科目分析</text>
+			</view>
+		</view>
+
+
+		<view class="item-container" @click="navRadarChart">
+			<view class="analysis-name">
+				<view class="t-icon t-icon-xtubiao-3"></view>
+				<text class="analysis-text">考试能力分析</text>
+			</view>
+		</view>
+
+
+		<view class="item-container" @click="navArcbarChart">
+			<view class="analysis-name">
+				<view class="t-icon t-icon-xtubiao-6"></view>
+				<text class="analysis-text">成绩占比分析</text>
+			</view>
+		</view>
+
+	</view>
+
+
+</template>
+
+<script>
+	export default {
+		name: "analysis-module ",
+		data() {
+			return {
+
+			};
+		},
+		methods: {
+			//导航玫瑰图页面
+			navRoseChart(e) {
+				console.log(e);
+				uni.navigateTo({
+					url: "/gradepkg/rose-chart/rose-chart"
+				})
+			},
+			//导航雷达图页面
+			navRadarChart(e) {
+				console.log(e);
+				uni.navigateTo({
+					url: "/gradepkg/radar-chart/radar-chart"
+				})
+			},
+			//导航到进度条页面
+			navArcbarChart(e) {
+				console.log(e);
+				uni.navigateTo({
+					url: "/gradepkg/arcbar-chart/arcbar-chart"
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	.block {
+		display: flex;
+		flex-direction: column;
+		justify-content: space-between;
+		width: 347rpx;
+		height: 345rpx;
+
+		.item-container {
+			display: flex;
+			align-items: center;
+			border-radius: 16rpx;
+			background-color: #FFFFFF;
+			box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.05);
+			width: 347rpx;
+			height: 100rpx;
+
+			.analysis-name {
+				display: flex;
+				align-items: center;
+				justify-content: flex-start;
+				width: 100%;
+				margin: 20rpx 0rpx 20rpx 40rpx;
+
+				.analysis-text {
+					margin: 26rpx;
+					font-size: 30rpx;
+					font-weight: bold;
+					color: #3B4144;
+				}
+			}
+		}
+
+	}
+</style>

+ 0 - 72
components/area-mini-chart/area-mini-chart.vue

@@ -1,72 +0,0 @@
-<template>
-	<view class="chart-container">
-		<view class="chart-name">
-			<view class="t-icon t-icon-xtubiao-4"></view>
-			<text class="chart-name-text">单科走势</text>
-		</view>
-
-		<view class="charts-box">
-			<qiun-data-charts type="mini-area" :chartData="gradeData.subjectAreaChart.areaComparison" :loadingType="4" background="none"
-				:tapLegend="false" :canvas2d='true' canvasId='canvans1' />
-		</view>
-	</view>
-</template>
-
-<script>
-	import {mapState} from 'vuex'
-
-	export default {
-		name: "area-mini-chart",
-		//定义props属性,用来接收外界传递到当前组件的数据
-		props: {},
-		computed: {
-			...mapState('m_chart', ['gradeData'])
-		},
-		data() {
-			return {
-			};
-		},
-		methods: {
-			
-			
-		},
-	}
-</script>
-
-<style lang="scss">
-	.chart-container {
-		border-radius: 20rpx;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		flex-direction: column;
-		background-color: #FFFFFF;
-		box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.05);
-		width: 340rpx;
-
-		.chart-name {
-			display: flex;
-			align-items: center;
-			justify-content: flex-start;
-			width: 100%;
-			margin: 20rpx 0 20rpx 40rpx;
-
-			.chart-name-text {
-				margin-left: 20rpx;
-				font-size: 30rpx;
-				font-weight: bold;
-				color: #3B4144;
-			}
-		}
-
-		.charts-box {
-			width: 100%;
-			height: 240rpx;
-		}
-	}
-
-	.t-icon {
-		width: 40rpx;
-		height: 40rpx;
-	}
-</style>

+ 33 - 0
components/back/back.vue

@@ -0,0 +1,33 @@
+<template>
+	<view class="back">
+		<view class="t-icon t-icon-fanhui2-copy" @click="backIconHandler"></view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "back",
+		data() {
+			return {
+
+			};
+		},
+		methods:{
+			backIconHandler(){
+				//调用自定义事件
+				this.$emit('click')
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.back {
+		padding: 100rpx 0 30rpx 40rpx;
+
+		.t-icon {
+			width: 50rpx;
+			height: 50rpx;
+		}
+	}
+</style>

+ 0 - 70
components/column-mini-chart/column-mini-chart.vue

@@ -1,70 +0,0 @@
-<template>
-	<view class="chart-container">
-		<view class="chart-name">
-			<view class="t-icon t-icon-xtubiao-2"></view>
-			<text class="chart-name-text">最近成绩</text>
-		</view>
-
-		<view class="charts-box">
-			<qiun-data-charts type="mini-column" :chartData="gradeData.recentColumnChart.columnComparison"
-				:loadingType="4" background="none" :tapLegend="false" :canvas2d='true' canvasId='canvans2' />
-		</view>
-	</view>
-</template>
-
-<script>
-	import {
-		mapState
-	} from 'vuex'
-	export default {
-		name: "column-mini-chart",
-		props: {},
-		computed: {
-			...mapState('m_chart', ['gradeData'])
-		},
-		data() {
-			return {};
-		},
-		methods: {
-
-		},
-	}
-</script>
-
-<style lang="scss">
-	.chart-container {
-		border-radius: 20rpx;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		flex-direction: column;
-		background-color: #FFFFFF;
-		box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.05);
-		width: 340rpx;
-
-		.chart-name {
-			display: flex;
-			align-items: center;
-			justify-content: flex-start;
-			width: 100%;
-			margin: 20rpx 0 20rpx 40rpx;
-
-			.chart-name-text {
-				margin-left: 20rpx;
-				font-size: 30rpx;
-				font-weight: bold;
-				color: #3B4144;
-			}
-		}
-
-		.charts-box {
-			width: 100%;
-			height: 240rpx;
-		}
-	}
-
-	.t-icon {
-		width: 40rpx;
-		height: 40rpx;
-	}
-</style>

+ 0 - 75
components/line-mini-chart/line-mini-chart.vue

@@ -1,75 +0,0 @@
-<template>
-	<view class="chart-container">
-		<view class="chart-name">
-			<view class="t-icon t-icon-xtubiao-4"></view>
-			<text class="chart-name-text">学期走势</text>
-		</view>
-
-		<view class="charts-box">
-			<qiun-data-charts type="mini-line" :chartData="gradeData.semesterLineChart.lineComparison" :loadingType="4" background="none"
-				:tapLegend="false" :canvas2d='true' canvasId='canvans3' />
-		</view>
-	</view>
-</template>
-
-<script>
-	import {
-		mapState
-	} from 'vuex'
-	
-	export default {
-		name: "line-mini-chart",
-		props: {},
-		computed:{
-			...mapState('m_chart',['gradeData'])
-		},
-		data() {
-			return {
-			};
-		},
-		methods: {
-		},
-		//创建组件生命周期函数
-		created() {
-		}
-	}
-</script>
-
-<style lang="scss">
-	.chart-container {
-		border-radius: 20rpx;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		flex-direction: column;
-		background-color: #FFFFFF;
-		box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.05);
-		width: 340rpx;
-
-		.chart-name {
-			display: flex;
-			align-items: center;
-			justify-content: flex-start;
-			width: 100%;
-			margin: 20rpx 0 20rpx 40rpx;
-
-			.chart-name-text {
-				margin-left: 20rpx;
-				font-size: 30rpx;
-				font-weight: bold;
-				color: #3B4144;
-			}
-		}
-
-		.charts-box {
-			margin-top: 40rpx;
-			width: 100%;
-			height: 200rpx;
-		}
-	}
-
-	.t-icon {
-		width: 40rpx;
-		height: 40rpx;
-	}
-</style>

+ 0 - 69
components/mainline-mini-chart/mainline-mini-chart.vue

@@ -1,69 +0,0 @@
-<template>
-	<view class="chart-container">
-		<view class="chart-name">
-			<view class="t-icon t-icon-xtubiao-4"></view>
-			<text class="chart-name-text">学期成绩走势</text>
-		</view>
-		
-		<view class="charts-box">
-			<qiun-data-charts class="chart" :canvas2d='true' canvasId='canvans5' type="mainline" :chartData="gradeData.mainLineChart" :loadingType="4"/>
-		</view>
-	</view>
-</template>
-
-<script>
-	import {mapState} from 'vuex'
-	export default {
-		name:"mainline-mini-chart",
-		props: {},
-		data() {
-			return {	
-
-			};
-		},
-		computed:{
-			...mapState('m_chart',['gradeData'])
-		},
-		methods:{
-		},
-		//创建组件生命周期函数
-		created(){
-		}
-	}
-</script>
-
-<style lang="scss">
-.chart-container {
-		border-radius: 20rpx;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		flex-direction: column;
-		background-color: #FFFFFF;
-		box-shadow: 0 4rpx 8rpx rgba(0,0,0,0.05);
-		width: 706rpx;
-	
-		.chart-name {
-			display: flex;
-			align-items: center;
-			justify-content: flex-start;
-			width: 100%;
-			margin: 20rpx 0 20rpx 40rpx;
-			
-			.chart-name-text {
-				margin-left: 20rpx;
-				font-size: 30rpx;
-				font-weight: bold;
-				color: #3B4144;
-			}
-		}
-	.charts-box{
-		width: 100%;
-		height:300rpx;
-	}
-}
-.t-icon{
-		width: 40rpx;
-		height: 40rpx;
-	}
-</style>

+ 21 - 19
components/top-box/top-box.vue

@@ -2,7 +2,7 @@
 	<view>
 		<!-- 头部信息 -->
 		<view class="home-topinfo"></view>
-		<view style="display: flex;align-items: center; margin-top: -450rpx;
+		<view style="display: flex;align-items: center; margin-top: -450rpx;
     margin-bottom: 120rpx;">
 			<image class="children-avatar" :src="childreninfo.avatar" @click="showChildrenList"></image>
 			<view class="children-name">
@@ -16,10 +16,9 @@
 				</view>
 			</view>
 		</view>
-		
-		<u-picker class="picker" :show="select" :closeOnClickOverlay="true"
-			:columns="semesterList" ref="uPicker" @confirm="selectSemester"
-			@cancel="selectCancel"></u-picker>
+
+		<u-picker class="picker" :show="select" :closeOnClickOverlay="true" :columns="semesterList" ref="uPicker"
+			@confirm="selectSemester" @cancel="selectCancel"></u-picker>
 		<!-- 更新时间戳 -->
 		<view class="refresh-time">
 			<text class="time-text">更新于:{{timeStamp}}</text>
@@ -53,7 +52,7 @@
 			}
 		},
 		created() {
-			
+
 		},
 		data() {
 			return {
@@ -66,7 +65,7 @@
 			...mapState('m_parent', ['parentdetail'])
 		},
 		methods: {
-			...mapMutations('m_children', ['updateChildrenInfo', 'updateChildrenSemester']),			
+			...mapMutations('m_children', ['updateChildrenInfo', 'updateChildrenSemester']),
 			//学期选择
 			selectSemester(e) {
 				console.log('selectSemester', e)
@@ -100,6 +99,7 @@
 		height: 600rpx;
 		background: linear-gradient(#0080ff, #f1f3f5);
 	}
+
 	.children-avatar {
 		margin-left: 40rpx;
 		width: 100rpx;
@@ -108,31 +108,33 @@
 		border: 4rpx solid #FFFFFF;
 		box-shadow: 0 10rpx 20rpx rgba(0, 0, 0, 0.2);
 	}
-	
+
 	.children-name {
 		margin-left: 20rpx;
+		padding-top: 10rpx;
 		display: flex;
 		flex-direction: column;
-	
+		justify-content: center;
+
 		.name {
 			color: #3B4144;
 			font-size: 36rpx;
 			font-weight: bold;
-			margin-top: 17rpx;
 		}
-	
+
 		.detail-box {
-			margin-top: 10rpx;
 			display: flex;
-	
+
 			.detail {
-				color: #ddeeff;
+				color: #FFFFFF;
 				font-weight: bold;
 				font-size: 30rpx;
 			}
-	
+
 			.select-icon {
-				margin-left: 10rpx;
+				margin:2rpx 0 0 10rpx;
+				width: 30rpx;
+				height: 30rpx;
 			}
 		}
 	}
@@ -140,10 +142,10 @@
 	.refresh-time {
 		.time-text {
 			position: relative;
-			left: 575rpx;
-			bottom: 230rpx;
+			left: 582rpx;
+			bottom: 210rpx;
 			font-size: 24rpx;
-			color: #ddeeff;
+			color: #FFFFFF;
 			font-weight: bold;
 		}
 	}

+ 38 - 37
gradepkg/arcbar-chart/arcbar-chart.vue

@@ -1,8 +1,6 @@
 <template>
 	<view class="page-box">
-		<view class="back">
-			<view class="t-icon t-icon-fanhui2-copy" @click="returnList"></view>
-		</view>
+		<back @click="returnList"></back>
 
 		<view class="children-box">
 			<image class="children-avatar" :src="childreninfo.avatar"></image>
@@ -14,33 +12,47 @@
 
 		<!-- 数据分析模块 -->
 		<view class="data-box">
-			<view class="data-box-item" v-bind:style="{background: gradeData.rankArcbarChart.recentAnalyse.series[0].color}">
+			<view class="data-box-item"
+				v-bind:style="{background: gradeData.rankArcbarChart.recentAnalyse.series[0].color}">
 				<view class="item-text">{{gradeData.rankArcbarChart.recentAnalyse.series[0].name}}</view>
 				<view class="item-number">{{gradeData.rankArcbarChart.recentAnalyse.series[0].data/0.01}}%</view>
 				<view style="display: flex;align-items: center;padding-bottom: 15rpx;padding: 0 15rpx 10rpx 15rpx;">
-					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[0].data<0.4" class="t-icon t-icon-jiangbei-20"></view>
-					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[0].data>=0.4 && gradeData.rankArcbarChart.recentAnalyse.series[0].data<0.7"
+					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[0].data<0.4"
+						class="t-icon t-icon-jiangbei-20"></view>
+					<view
+						v-if="gradeData.rankArcbarChart.recentAnalyse.series[0].data>=0.4 && gradeData.rankArcbarChart.recentAnalyse.series[0].data<0.7"
 						class="t-icon t-icon-jiangbei-19"></view>
-					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[0].data>=0.7" class="t-icon t-icon-jiangbei-18"></view>
-					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[0].data<0.4" class="icon-text-item">要加把劲!</view>
-					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[0].data>=0.4 && gradeData.rankArcbarChart.recentAnalyse.series[0].data<0.7"
+					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[0].data>=0.7"
+						class="t-icon t-icon-jiangbei-18"></view>
+					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[0].data<0.4" class="icon-text-item">要加把劲!
+					</view>
+					<view
+						v-if="gradeData.rankArcbarChart.recentAnalyse.series[0].data>=0.4 && gradeData.rankArcbarChart.recentAnalyse.series[0].data<0.7"
 						class="icon-text-item">再接再厉!</view>
-					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[0].data>=0.7" class="icon-text-item">非常优秀!</view>
+					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[0].data>=0.7" class="icon-text-item">
+						非常优秀!</view>
 				</view>
 			</view>
 
-			<view class="data-box-item" v-bind:style="{background: gradeData.rankArcbarChart.recentAnalyse.series[1].color}">
+			<view class="data-box-item"
+				v-bind:style="{background: gradeData.rankArcbarChart.recentAnalyse.series[1].color}">
 				<view class="item-text">{{gradeData.rankArcbarChart.recentAnalyse.series[1].name}}</view>
 				<view class="item-number">{{gradeData.rankArcbarChart.recentAnalyse.series[1].data/0.01}}%</view>
 				<view style="display: flex;align-items: center;padding-bottom: 15rpx;padding: 0 15rpx 10rpx 15rpx;">
-					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[1].data<0.4" class="t-icon t-icon-jiangbei-20"></view>
-					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[1].data>=0.4 && gradeData.rankArcbarChart.recentAnalyse.series[1].data<0.7"
+					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[1].data<0.4"
+						class="t-icon t-icon-jiangbei-20"></view>
+					<view
+						v-if="gradeData.rankArcbarChart.recentAnalyse.series[1].data>=0.4 && gradeData.rankArcbarChart.recentAnalyse.series[1].data<0.7"
 						class="t-icon t-icon-jiangbei-19"></view>
-					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[1].data>=0.7" class="t-icon t-icon-jiangbei-18"></view>
-					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[1].data<0.4" class="icon-text-item">要加把劲!</view>
-					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[1].data>=0.4 && gradeData.rankArcbarChart.recentAnalyse.series[1].data<0.7"
-						class="icon-text-item">再接再厉!</view>
-					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[1].data>=0.7" class="icon-text-item">非常优秀!</view>
+					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[1].data>=0.7"
+						class="t-icon t-icon-jiangbei-18"></view>
+					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[1].data<0.4" class="icon-text-item">还需提升!
+					</view>
+					<view
+						v-if="gradeData.rankArcbarChart.recentAnalyse.series[1].data>=0.4 && gradeData.rankArcbarChart.recentAnalyse.series[1].data<0.7"
+						class="icon-text-item">继续努力!</view>
+					<view v-if="gradeData.rankArcbarChart.recentAnalyse.series[1].data>=0.7" class="icon-text-item">
+						格外出色!</view>
 				</view>
 			</view>
 		</view>
@@ -63,8 +75,8 @@
 				<text class="chart-name-text">{{semester}} 排行占比走势对比</text>
 			</view>
 			<view class="charts-box">
-				<qiun-data-charts type="area" :chartData="gradeData.rankArcbarChart.semesterAnalyse" :loadingType="4" :opts="{dataLabel: false}"
-					:canvas2d='true' canvasId='canvans899' />
+				<qiun-data-charts type="area" :chartData="gradeData.rankArcbarChart.semesterAnalyse" :loadingType="4"
+					:opts="{dataLabel: false}" :canvas2d='true' canvasId='canvans899' />
 			</view>
 		</view>
 
@@ -79,11 +91,10 @@
 	export default {
 		computed: {
 			...mapState('m_children', ['childreninfo', 'semester']),
-			...mapState('m_chart',['gradeData'])
+			...mapState('m_chart', ['gradeData'])
 		},
 		data() {
-			return {
-			};
+			return {};
 		},
 		methods: {
 			//返回成绩页面
@@ -93,8 +104,7 @@
 				})
 			},
 		},
-		onLoad() {
-		}
+		onLoad() {}
 	}
 </script>
 
@@ -103,15 +113,6 @@
 		height: 600rpx;
 		background: linear-gradient(#ffd071, #f1f3f5);
 
-		.back {
-			padding: 100rpx 0 30rpx 40rpx;
-
-			.t-icon {
-				width: 50rpx;
-				height: 50rpx;
-			}
-		}
-
 		.children-box {
 			display: flex;
 			align-items: center;
@@ -145,7 +146,7 @@
 		}
 
 		.chart-container {
-			margin: 40rpx 20rpx 0 20rpx;
+			margin: 20rpx;
 			padding: 0rpx 10rpx 0rpx 0rpx;
 			border-radius: 15rpx;
 			display: flex;
@@ -217,9 +218,9 @@
 	}
 
 	.icon-text-item {
-		font-size: 30rpx;
+		font-size: 35rpx;
 		font-weight: bold;
 		color: #FFFFFF;
-		margin-left: 10rpx;
+		margin-left: 20rpx;
 	}
 </style>

+ 3 - 13
gradepkg/area-chart/area-chart.vue

@@ -1,9 +1,7 @@
 <template>
 	<view class="page-box">
 		<!-- 返回按钮 -->
-		<view class="back">
-			<view class="t-icon t-icon-fanhui2-copy" @click="returnList"></view>
-		</view>
+		<back @click="returnList"></back>
 		<!-- 学生信息头部 -->
 		<view class="children-box">
 			<image class="children-avatar" :src="childreninfo.avatar"></image>
@@ -105,18 +103,10 @@
 		height: 600rpx;
 		background: linear-gradient(#ff8caf, #f1f3f5);
 
-		.back {
-			padding: 100rpx 0 30rpx 40rpx;
-
-			.t-icon {
-				width: 50rpx;
-				height: 50rpx;
-			}
-		}
-
 		.children-box {
 			display: flex;
 			align-items: center;
+			margin-bottom: 40rpx;
 
 			.children-avatar {
 				margin-left: 40rpx;
@@ -147,7 +137,7 @@
 		}
 
 		.chart-container {
-			margin: 40rpx 20rpx 0 20rpx;
+			margin: 20rpx;
 			padding: 0rpx 10rpx 0rpx 0rpx;
 			border-radius: 15rpx;
 			display: flex;

+ 3 - 12
gradepkg/column-chart/column-chart.vue

@@ -1,8 +1,6 @@
 <template>
 	<view class="page-box">
-		<view class="back">
-			<view class="t-icon t-icon-fanhui2-copy" @click="returnList"></view>
-		</view>
+		<back @click="returnList"></back>
 		
 		<view class="children-box">
 			<image class="children-avatar" :src="childreninfo.avatar"></image>
@@ -67,18 +65,11 @@
 	.page-box {
 		height: 600rpx;
 		background: linear-gradient(#ffd071, #f1f3f5);
-	
-		.back {
-			padding: 100rpx 0 30rpx 40rpx;
-			.t-icon{
-				width:50rpx;
-				height:50rpx;
-			}
-		}
 		
 		.children-box{
 			display: flex;
 			align-items: center;
+			margin-bottom: 40rpx;
 			.children-avatar{
 				margin-left: 40rpx;
 				width: 96rpx;
@@ -105,7 +96,7 @@
 			}
 		}
 		.chart-container {
-			margin: 40rpx 20rpx 0 20rpx;
+			margin: 20rpx;
 			padding: 0rpx 10rpx 0rpx 0rpx;
 			border-radius: 15rpx;
 			display: flex;

+ 3 - 12
gradepkg/line-chart/line-chart.vue

@@ -1,9 +1,7 @@
 <template>
 	<view class="page-box">
 		<!-- 返回按钮 -->
-		<view class="back">
-			<view class="t-icon t-icon-fanhui2-copy" @click="returnList"></view>
-		</view>
+		<back @click="returnList"></back>
 		<!-- 学生信息头部 -->
 		<view class="children-box">
 			<image class="children-avatar" :src="childreninfo.avatar"></image>
@@ -80,18 +78,11 @@
 	.page-box {
 		height: 600rpx;
 		background: linear-gradient(#a5c6ff, #f1f3f5);
-	
-		.back {
-			padding: 100rpx 0 30rpx 40rpx;
-			.t-icon{
-				width:50rpx;
-				height:50rpx;
-			}
-		}
 		
 		.children-box{
 			display: flex;
 			align-items: center;
+			margin-bottom: 40rpx;
 			.children-avatar{
 				margin-left: 40rpx;
 				width: 96rpx;
@@ -119,7 +110,7 @@
 		}
 		
 		.chart-container {
-			margin: 40rpx 20rpx 0 20rpx;
+			margin: 20rpx;
 			padding: 0rpx 10rpx 0rpx 0rpx;
 			border-radius: 15rpx;
 			display: flex;

+ 2 - 13
gradepkg/radar-chart/radar-chart.vue

@@ -1,8 +1,6 @@
 <template>
 	<view class="page-box">
-		<view class="back">
-			<view class="t-icon t-icon-fanhui2-copy" @click="returnList"></view>
-		</view>
+		<back @click="returnList"></back>
 
 		<view class="children-box">
 			<image class="children-avatar" :src="childreninfo.avatar"></image>
@@ -158,15 +156,6 @@
 		height: 600rpx;
 		background: linear-gradient(#ff8caf, #f1f3f5);
 
-		.back {
-			padding: 100rpx 0 30rpx 40rpx;
-
-			.t-icon {
-				width: 50rpx;
-				height: 50rpx;
-			}
-		}
-
 		.children-box {
 			display: flex;
 			align-items: center;
@@ -200,7 +189,7 @@
 		}
 
 		.chart-container {
-			margin: 40rpx 20rpx 0 20rpx;
+			margin: 20rpx;
 			padding: 0rpx 10rpx 0rpx 0rpx;
 			border-radius: 15rpx;
 			display: flex;

+ 8 - 19
gradepkg/rose-chart/rose-chart.vue

@@ -1,8 +1,6 @@
 <template>
 	<view class="page-box">
-		<view class="back">
-			<view class="t-icon t-icon-fanhui2-copy" @click="returnList"></view>
-		</view>
+		<back @click="returnList"></back>
 
 		<view class="children-box">
 			<image class="children-avatar" :src="childreninfo.avatar"></image>
@@ -35,9 +33,9 @@
 					<view v-if="worstSubject.value<80 && bestSubject.value>=50" class="t-icon t-icon-jiangbei-10">
 					</view>
 					<view v-if="worstSubject.value<50" class="t-icon t-icon-jiangbei-11"></view>
-					<view v-if="worstSubject.value<50" class="icon-text-item">提升自己!</view>
-					<view v-if="worstSubject.value<80 && bestSubject.value>=50" class="icon-text-item">再接再厉!</view>
-					<view v-if="worstSubject.value>=80" class="icon-text-item">非常优秀!</view>
+					<view v-if="worstSubject.value<50" class="icon-text-item">还需提升!</view>
+					<view v-if="worstSubject.value<80 && bestSubject.value>=50" class="icon-text-item">继续努力!</view>
+					<view v-if="worstSubject.value>=80" class="icon-text-item">格外出色!</view>
 				</view>
 			</view>
 		</view>
@@ -120,16 +118,7 @@
 	.page-box {
 		height: 600rpx;
 		background: linear-gradient(#a5c6ff, #f1f3f5);
-
-		.back {
-			padding: 100rpx 0 30rpx 40rpx;
-
-			.t-icon {
-				width: 50rpx;
-				height: 50rpx;
-			}
-		}
-
+		
 		.children-box {
 			display: flex;
 			align-items: center;
@@ -163,7 +152,7 @@
 		}
 
 		.chart-container {
-			margin: 40rpx 20rpx 0 20rpx;
+			margin: 20rpx;
 			padding: 0rpx 10rpx 0rpx 0rpx;
 			border-radius: 15rpx;
 			display: flex;
@@ -264,9 +253,9 @@
 	}
 
 	.icon-text-item {
-		font-size: 30rpx;
+		font-size: 35rpx;
 		font-weight: bold;
 		color: #FFFFFF;
-		margin-left: 10rpx;
+		margin-left: 20rpx;
 	}
 </style>

+ 22 - 0
information/chart.js

@@ -7,6 +7,7 @@ export default {
 	state: () => ({
 		//成绩图表数据
 		gradeData: {
+			//总成绩曲线图数据
 			mainLineChart: {
 				categories: [
 					"开学考试",
@@ -28,6 +29,7 @@ export default {
 					]
 				}],
 			},
+			//表格数据
 			tableData: [{
 					'考试': '开学',
 					'语文': 83,
@@ -113,7 +115,9 @@ export default {
 					'key': '科学',
 				}
 			],
+			//学期折线图数据
 			semesterLineChart: {
+				//总成绩
 				lineComparison: {
 					categories: [
 						"测验1",
@@ -154,6 +158,7 @@ export default {
 						}
 					],
 				},
+				//主科
 				majorComparison: {
 					categories: [
 						"测验1",
@@ -194,6 +199,7 @@ export default {
 						}
 					],
 				},
+				//副科
 				minorComparison: {
 					categories: [
 						"测验1",
@@ -235,7 +241,9 @@ export default {
 					],
 				},
 			},
+			//单科曲线图数据
 			subjectAreaChart: {
+				//单科对比
 				areaComparison: {
 					categories: [
 						"测验1",
@@ -280,6 +288,7 @@ export default {
 						}
 					],
 				},
+				//学科对比
 				subjectComparison: {
 					categories: [
 						"测验1",
@@ -358,7 +367,9 @@ export default {
 					],
 				},
 			},
+			//近期考试数据
 			recentColumnChart: {
+				//近两次对比
 				columnComparison: {
 					categories: [
 						"数学",
@@ -392,6 +403,7 @@ export default {
 						}
 					],
 				},
+				//雷达对比
 				radarSubjectComparison: {
 					categories: [
 						"数学",
@@ -437,7 +449,9 @@ export default {
 					],
 				},
 			},
+			//优势科目分析
 			advantageRoseChart: {
+				//近期分析
 				recentAnalyse: {
 					series: [{
 						"data": [{
@@ -467,6 +481,7 @@ export default {
 						]
 					}]
 				},
+				//学期综合分析
 				semesterAnalyse: {
 					series: [{
 						"data": [{
@@ -497,7 +512,9 @@ export default {
 					}]
 				},
 			},
+			//能力雷达图分析
 			abilityRadarChart: {
+				//重要考试分析
 				importantAnalyse: {
 					categories: [
 						"语文",
@@ -542,6 +559,7 @@ export default {
 						}
 					],
 				},
+				//普通考试分析
 				commonAnalyse: {
 					categories: [
 						"语文",
@@ -587,7 +605,9 @@ export default {
 					],
 				},
 			},
+			//排名占比分析
 			rankArcbarChart: {
+				//近期排名占比分析
 				recentAnalyse: {
 					series: [{
 							"name": "超过年级中",
@@ -601,6 +621,7 @@ export default {
 						}
 					],
 				},
+				//学期排名占比分析
 				semesterAnalyse: {
 					categories: [
 						"测验1",
@@ -646,6 +667,7 @@ export default {
 					"color": "#0052d4"
 				}]
 			},
+			//作业进度条数据
 			homeworkArcbar: {
 				"series": [{
 					"name": "完成率",

+ 5 - 2
main.js

@@ -7,8 +7,11 @@ import {$http} from '@escook/request-miniprogram'
 //5.导入store的自定义模块
 import store from '@/information/store.js'
 //导入uView组件库
-import uView from '@/uni_modules/uview-ui'
-Vue.use(uView)
+import uView from '@/uni_modules/uview-ui'
+//配置公共方法
+import Common from './utils/Common.js'
+Vue.prototype.$noMultipleClicks = Common.noMultipleClicks;
+
 //挂载到uni.$http上方便调用
 uni.$http = $http
 

+ 9 - 1
pages.json

@@ -25,7 +25,7 @@
 		}, {
 			"path": "pages/subscribe/subscribe",
 			"style": {
-				"enablePullDownRefresh": false,
+				"enablePullDownRefresh": true,
 				"navigationStyle": "custom"
 			}
 
@@ -72,6 +72,14 @@
 					"enablePullDownRefresh": false
 				}
 
+			}, {
+				"path": "parentInfo/parentInfo",
+				"style": {
+					"navigationStyle": "custom",
+					"enablePullDownRefresh": false,
+					"disableScroll": true
+				}
+
 			}
 		]
 	}, {

+ 145 - 109
pages/grade/grade.vue

@@ -7,50 +7,68 @@
 		<view class="mini-chart-list">
 
 			<view class="mini-chart-item">
-				<mainline-mini-chart></mainline-mini-chart>
-			</view>
+				<view class="mainchart-container">
+					<view class="mainchart-name">
+						<view class="t-icon t-icon-xtubiao-4"></view>
+						<text class="mainchart-text">学期成绩走势</text>
+					</view>
 
-			<view class="mini-chart-item" @click="navLineChart">
-				<line-mini-chart></line-mini-chart>
+					<view class="mainchart-box">
+						<qiun-data-charts class="chart" :canvas2d='true' canvasId='canvans5' type="mainline"
+							:chartData="gradeData.mainLineChart" :loadingType="4" />
+					</view>
+				</view>
 			</view>
 
-			<view class="mini-chart-item" @click="navAreaChart">
-				<area-mini-chart></area-mini-chart>
-			</view>
+			<view class="mini-chart-item">
+				<view class="chart-container" @click="navLineChart">
+					<view class="chart-name">
+						<view class="t-icon t-icon-xtubiao-4"></view>
+						<text class="chart-name-text">学期走势</text>
+					</view>
 
-			<view class="mini-chart-item" @click="navColumnChart">
-				<column-mini-chart></column-mini-chart>
+					<view class="charts-box">
+						<qiun-data-charts type="mini-line" :chartData="gradeData.semesterLineChart.lineComparison"
+							:loadingType="4" background="none" :tapLegend="false" :canvas2d='true'
+							canvasId='canvans3' />
+					</view>
+				</view>
 			</view>
 
-			<!-- 按钮区域 -->
 			<view class="mini-chart-item">
-				<view class="item-i" @click="navRoseChart">
-					<view class="item-container">
-						<view class="chart-name">
-							<view class="t-icon t-icon-xtubiao-"></view>
-							<text class="chart-name-text">优劣科目分析</text>
-						</view>
+				<view class="chart-container" @click="navAreaChart">
+					<view class="chart-name">
+						<view class="t-icon t-icon-xtubiao-4"></view>
+						<text class="chart-name-text">单科走势</text>
 					</view>
-				</view>
 
-				<view class="item-i" @click="navRadarChart">
-					<view class="item-container">
-						<view class="chart-name">
-							<view class="t-icon t-icon-xtubiao-3"></view>
-							<text class="chart-name-text">考试能力分析</text>
-						</view>
+					<view class="charts-box">
+						<qiun-data-charts type="mini-area" :chartData="gradeData.subjectAreaChart.areaComparison"
+							:loadingType="4" background="none" :tapLegend="false" :canvas2d='true'
+							canvasId='canvans1' />
 					</view>
 				</view>
+			</view>
+
+			<view class="mini-chart-item">
+				<view class="chart-container" @click="navColumnChart">
+					<view class="chart-name">
+						<view class="t-icon t-icon-xtubiao-2"></view>
+						<text class="chart-name-text">最近成绩</text>
+					</view>
 
-				<view class="item-i" @click="navArcbarChart">
-					<view class="item-container">
-						<view class="chart-name">
-							<view class="t-icon t-icon-xtubiao-6"></view>
-							<text class="chart-name-text">成绩占比分析</text>
-						</view>
+					<view class="charts-box">
+						<qiun-data-charts type="mini-column" :chartData="gradeData.recentColumnChart.columnComparison"
+							:loadingType="4" background="none" :tapLegend="false" :canvas2d='true'
+							canvasId='canvans2' />
 					</view>
 				</view>
 			</view>
+			<!-- 分析模块 -->
+			<view class="mini-chart-item">
+				<analysis-module></analysis-module>
+			</view>
+
 
 		</view>
 		<!-- 成绩表单 -->
@@ -103,27 +121,6 @@
 					url: "/gradepkg/line-chart/line-chart"
 				})
 			},
-			//导航玫瑰图页面
-			navRoseChart(e) {
-				console.log(e);
-				uni.navigateTo({
-					url: "/gradepkg/rose-chart/rose-chart"
-				})
-			},
-			//导航雷达图页面
-			navRadarChart(e) {
-				console.log(e);
-				uni.navigateTo({
-					url: "/gradepkg/radar-chart/radar-chart"
-				})
-			},
-			//导航到进度条页面
-			navArcbarChart(e) {
-				console.log(e);
-				uni.navigateTo({
-					url: "/gradepkg/arcbar-chart/arcbar-chart"
-				})
-			},
 			//更新时间戳
 			getTimeStamp() {
 				var date = new Date(),
@@ -135,6 +132,7 @@
 		onLoad() {
 			this.getTimeStamp()
 		},
+		//刷新页面
 		onPullDownRefresh() {
 			this.getTimeStamp()
 			console.log('refresh');
@@ -147,91 +145,129 @@
 
 <style lang="scss">
 	.chart-list-container {
+		width: 100%;
 		height: 100%;
-		overflow-x: hidden;
+		overflow-x:hidden; //隐藏多余的页面
 
 		.home-topinfo {
 			background: linear-gradient(#ff8caf, #f1f3f5);
 		}
 
+		//缩略图列表
 		.mini-chart-list {
 			display: flex;
-			flex-direction: row;
-			justify-content: center;
 			align-items: center;
 			flex-wrap: wrap;
-			margin: -100rpx 22rpx 0 22rpx;
+			margin: -100rpx 20rpx 0 20rpx;
 			justify-content: space-between;
 
 			.mini-chart-item {
-				margin-top: 22rpx;
+				margin: 10rpx 0;
 				display: flex;
 				flex-direction: column;
-				justify-content: space-between;
-
-				.item-i {
-					margin: -10rpx 0;
-
-					.item-container {
-						border-radius: 16rpx;
-						background-color: #FFFFFF;
-						box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.05);
-						width: 340rpx;
-						height: auto;
-
-						.chart-name {
-							display: flex;
-							align-items: center;
-							justify-content: flex-start;
-							width: 100%;
-							margin: 20rpx 0rpx 20rpx 40rpx;
-
-							.chart-name-text {
-								margin: 26rpx;
-								font-size: 30rpx;
-								font-weight: bold;
-								color: #3B4144;
-							}
-						}
-					}
-
-					.t-icon {
-						width: 40rpx;
-						height: 40rpx;
-					}
-				}
 			}
 		}
+	}
 
-		.table-card {
-			margin: 20rpx 22rpx;
-			border-radius: 16rpx;
+	//总成绩折线图
+	.mainchart-container {
+		border-radius: 16rpx;
+		display: flex;
+		align-items: center;
+		flex-direction: column;
+		background-color: #FFFFFF;
+		box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.05);
+		width: 100%;
+
+		.mainchart-name {
 			display: flex;
 			align-items: center;
-			justify-content: center;
-			flex-direction: column;
-			background-color: #FFFFFF;
-			box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.05);
-
-			.table-name {
-				width: 100%;
-				text-align: left;
-				margin: 20rpx 0 0 50rpx;
-				display: flex;
-				align-items: center;
+			justify-content: flex-start;
+			width: 100%;
+			margin: 20rpx 0 20rpx 40rpx;
+
+			.mainchart-text {
+				margin-left: 20rpx;
+				font-size: 30rpx;
 				font-weight: bold;
 				color: #3B4144;
+			}
+		}
+
+		.mainchart-box {
+			width: 710rpx;
+			height: 300rpx;
+		}
+	}
+
+	//缩略图
+	.chart-container {
+		border-radius: 16rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		flex-direction: column;
+		background-color: #FFFFFF;
+		box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.05);
+		width: 347rpx;
+		height: 345rpx;
+
+		.chart-name {
+			display: flex;
+			align-items: center;
+			justify-content: flex-start;
+			width: 100%;
+			margin: 20rpx 0 35rpx 40rpx;
 
-				.table-name-text {
-					font-size: 30rpx;
-					margin-left: 20rpx;
-				}
+			.chart-name-text {
+				margin-left: 20rpx;
+				font-size: 30rpx;
+				font-weight: bold;
+				color: #3B4144;
 			}
+		}
+
+		.charts-box {
+			width: 100%;
+			height: 250rpx;
+		}
+	}
+
+	//表格
+	.table-card {
+		margin: 10rpx 20rpx;
+		border-radius: 16rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		flex-direction: column;
+		background-color: #FFFFFF;
+		box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.05);
 
-			.table {
-				margin: 20rpx;
-				width: 90%;
+		.table-name {
+			width: 100%;
+			text-align: left;
+			margin: 20rpx 0 0 50rpx;
+			display: flex;
+			align-items: center;
+			font-weight: bold;
+			color: #3B4144;
+
+			.table-name-text {
+				font-size: 30rpx;
+				margin-left: 20rpx;
 			}
 		}
+
+		.table {
+			margin: 20rpx;
+			width: 92%;
+		}
+	}
+
+	//图标
+	.t-icon {
+		width: 40rpx;
+		height: 40rpx;
 	}
 </style>

+ 5 - 5
pages/home/home.vue

@@ -101,7 +101,7 @@
 
 
 
-			<view class="card-item">
+			<view class="card-item" style="width: 100%;">
 				<view class="card-info">
 					<view class="t-icon t-icon-jiaoshidaka"></view>
 					<text class="info-text">今日自主学习</text>
@@ -215,7 +215,7 @@
 		height: 100%;
 
 		.notice {
-			margin: -80rpx 20rpx 20rpx 20rpx;
+			margin: -100rpx 20rpx 20rpx 20rpx;
 		}
 
 		.card-box {
@@ -226,14 +226,14 @@
 			justify-content: space-between;
 
 			.card-item {
-				margin: 12rpx 0;
+				margin: 10rpx 0;
 				display: flex;
 				flex-direction: column;
 				justify-content: space-between;
 				background-color: #FFFFFF;
 				box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.05);
 				border-radius: 16rpx;
-				width: 340rpx;
+				width: 347rpx;
 				height: auto;
 
 				.card-info {
@@ -262,7 +262,7 @@
 	.charts-box {
 		width: 100%;
 		height: 300rpx;
-		padding-bottom: 10rpx;
+		padding-bottom: 20rpx;
 	}
 
 	.t-icon {

+ 11 - 6
pages/my/my.vue

@@ -39,7 +39,7 @@
 				<!-- 用户功能 -->
 				<view class="com-item">
 					<view class="com-box">
-						<view class="cell">
+						<view class="cell" @click="myInfo">
 							<view class="cell-left">
 								<view class="t-icon t-icon-zhanghu" ></view>
 								<view class="cell-text">个人信息</view>
@@ -101,7 +101,7 @@
 	export default {
 		computed: {
 			...mapState('m_parent', ['token', 'parentdetail', 'parentinfo','myData']),
-			...mapState('m_children', ['childreninfo'])
+			...mapState('m_children', ['childreninfo','semesterList'])
 		},
 
 		data() {
@@ -122,7 +122,7 @@
 				if(succ && succ.confirm)
 				{
 					this.updateChildrenInfo()
-					this.updateChildrenSemester('选择学年')
+					this.updateChildrenSemester(this.semesterList[0][0])
 					// this.updateParentDetail()
 					this.updateParentInfo()
 					this.updateToken()
@@ -151,6 +151,12 @@
 				uni.navigateTo({
 					url: '/subpkg/mymsg/mymsg'
 				})
+			},
+			//我的信息
+			myInfo(){
+				uni.navigateTo({
+					url: '/subpkg/parentInfo/parentInfo'
+				})
 			}
 
 		}
@@ -184,8 +190,7 @@
 		}
 
 		.userinfo-topinfo {
-			height: 380rpx;
-			// background: linear-gradient(#ff5959, #f1f3f5);
+			height: 350rpx;
 			display: flex;
 			justify-content: flex-start;
 			align-items: center;
@@ -211,7 +216,7 @@
 					color: #3B4144;
 					font-size: 36rpx;
 					font-weight: bold;
-					margin: 4rpx 0 0 10rpx;
+					margin-left: 10rpx;
 				}
 				
 				.u-tag{

+ 29 - 39
pages/subscribe/subscribe.vue

@@ -1,11 +1,8 @@
 <template>
 	<view class="container">
+		<!-- 头部区域 -->
+		<top-box v-bind:timeStamp="timeStamp"></top-box>
 
-		<!-- <u-steps :current="testList.length -1 " direction="column" activeIcon="checkmark" inactiveIcon="arrow-right">
-			<view class="steps-card">
-				<u-steps-item v-for="(item,index) in testList" :key="index" :title="item.title" :desc="item.desc"></u-steps-item>
-			</view>
-		</u-steps> -->
 	</view>
 </template>
 
@@ -14,49 +11,42 @@
 		mapState
 	} from 'vuex'
 	export default {
+		computed: {
+			...mapState('m_parent', ['parentinfo'])
+		},
 		data() {
 			return {
-				// testList: [
-				// 	{
-				// 		'title': '开学考试',
-				// 		'desc': '9.1',
-				// 	},
-				// 	{
-				// 		'title': '期中考试',
-				// 		'desc': '10.1',
-				// 	},
-				// 	{
-				// 		'title': '期末考试',
-				// 		'desc': '12.1',
-				// 	},
-				// 	{
-				// 		'title': '毕业考试',
-				// 		'desc': '12.30',
-				// 	},
-				// 	{
-				// 		'title': '升学考试',
-				// 		'desc': '3.1',
-				// 	}
-				// ]
+				//时间戳
+				timeStamp: '',
 			}
 		},
-		computed: {
-			...mapState('m_parent', ['parentinfo'])
+		methods:{
+			//更新时间戳
+			getTimeStamp() {
+				var date = new Date(),
+					hour = date.getHours() < 10 ? "0" + date.getHours() : date.getHours(),
+					minute = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
+				this.timeStamp = (hour + ':' + minute).toString();
+			}
+		},
+		onLoad() {
+			this.getTimeStamp()
+		},
+		//刷新页面
+		onPullDownRefresh() {
+			this.getTimeStamp()
+			console.log('refresh');
+			setTimeout(function() {
+				uni.stopPullDownRefresh();
+			}, 1000);
 		}
 	}
 </script>
 
 <style lang="scss">
 	.container {
-		height: 400rpx;
-		background: linear-gradient(#ff6187, #f1f3f5);
-		display: flex;
-
-		// .steps-card{
-		// 	background-color: #FFFFFF;
-		// 	margin: 20rpx;
-		// 	padding: 10rpx;
-		// 	border-radius: 15rpx;
-		// }
+		.home-topinfo {
+			background: linear-gradient(#ffd200, #f1f3f5);
+		}
 	}
 </style>

+ 10 - 21
subpkg/childrenInfo/childrenInfo.vue

@@ -1,9 +1,7 @@
 <template>
 	<view class="container">
 		<!-- 返回按钮 -->
-		<view class="back">
-			<view class="t-icon t-icon-fanhui2-copy" @click="returnMy"></view>
-		</view>
+		<back @click="returnMy"></back>
 		<!-- 孩子头部信息 -->
 		<view class="top-info">
 			<image class="children-avatar" :src="childreninfo.avatar" size="100"></image>
@@ -17,21 +15,23 @@
 		<view class="card-box">
 			<u-cell-group :border="false">
 				<view class="i-item">
-					<view class="t-icon t-icon-shangke"></view>
-					<u-cell class="cell-box" size="large" title="班级" label="描述信息" :border="false"></u-cell>
+					<view class="t-icon t-icon-canyon-nature-svgrepo-com"></view>
+					<u-cell class="cell-box" size="large" title="班级" :label="childreninfo.class" :border="false"></u-cell>
 				</view>
 				<view class="i-item">
-					<view class="t-icon t-icon-yongxinfuwu"></view>
+					<view class="t-icon t-icon-empire-state-building-america-svgrepo-com"></view>
 					<u-cell class="cell-box" size="large" title="年龄" label="描述信息" :border="false"></u-cell>
 				</view>
 				<view class="i-item">
-					<view class="t-icon t-icon-qitaxueke"></view>
+					<view class="t-icon t-icon-atomium-belgium-svgrepo-com"></view>
 					<u-cell class="cell-box" size="large" title="个人信息" label="描述信息" :border="false"></u-cell>
 				</view>
 			</u-cell-group>
 			<!-- 横向内容列表 -->
 			<view style="display: flex; flex-wrap: wrap; align-items: center;margin: 0 40rpx 0 40rpx;">
-				<view class="data-box-item"></view>
+				<view class="data-box-item">
+					<view class="item-text">能力卡片</view>
+				</view>
 				<view class="data-box-item"></view>
 				<view class="data-box-item"></view>
 				<view class="data-box-item"></view>
@@ -72,19 +72,10 @@
 		height: 600rpx;
 		background: linear-gradient(#ff8caf, #f1f3f5);
 
-		.back {
-			padding: 100rpx 0 30rpx 40rpx;
-
-			.t-icon {
-				width: 50rpx;
-				height: 50rpx;
-			}
-		}
-
 		.top-info {
 			display: flex;
 			align-items: center;
-			margin-top: 40rpx;
+			margin-top: 10rpx;
 
 			.children-avatar {
 				margin-left: 50rpx;
@@ -115,8 +106,6 @@
 			}
 		}
 
-
-
 		.card-box {
 			position: relative;
 			background-color: #FFFFFF;
@@ -138,7 +127,7 @@
 			display: flex;
 			flex-direction: column;
 			margin: 20rpx;
-			background-color: #0052d4;
+			background-color: #ff8caf;
 			border-radius: 15rpx;
 			width: 280rpx;
 			height: 280rpx;

+ 1 - 1
subpkg/guide/guide.vue

@@ -30,7 +30,7 @@
 	export default {
 		data() {
 			return {
-				show: false
+				show: false,
 			};
 		},
 		computed:{

+ 118 - 110
subpkg/login/login.vue

@@ -1,6 +1,6 @@
-<template>
+<template>
 	<view>
-		<!-- 登录 -->
+		<!-- 登录 -->
 		<view class="content">
 			<view class="bg1"></view>
 			<view class="bg2"></view>
@@ -9,9 +9,9 @@
 				<text class="title">登录</text>
 				<text class="subtitle">欢迎来到醍摩豆家长</text>
 			</view>
-		
+
 			<view class="form-box">
-				<button @click="getUserInfo" class="btn" plain="true">微信一键登录</button>
+				<button @click="$noMultipleClicks(getUserInfo)" class="btn" plain="true">微信一键登录</button>
 				<view class="other">
 					<text class="other-text-left">账号密码登录</text>
 					<text class="other-text-right" style="color:#4169E1;">
@@ -21,33 +21,38 @@
 			</view>
 		</view>
 		<!-- 动画 -->
-		<view class="ocean"></view>
-	</view>
-</template>
-
+		<view class="ocean"></view>
+	</view>
+</template>
+
 <script>
-	import {mapMutations,mapState} from 'vuex';
-	
-	export default {
-		data() {
-			return {
-				query: {}
-			};
+	import {
+		mapMutations,
+		mapState
+	} from 'vuex';
+
+	export default {
+		data() {
+			return {
+				query: {},
+				//是否正在点击
+				noClick: true
+			};
 		},
 		computed: {
 			...mapState('m_parent', ['token'])
 		},
 		onLoad() {
-			
+
 		},
-		onShow(){
+		onShow() {
 			this.getCode()
 		},
-		methods:{
+		methods: {
 			...mapMutations('m_parent', ['updateParentInfo', 'updateToken']),
-			
+
 			//换取code方法
-			async getCode(){
+			async getCode() {
 				//调用login()拿到code用于换取token
 				let [err, res] = await uni.login().catch(err => err)
 				//判断调用是否成功
@@ -57,66 +62,65 @@
 					js_code: res.code
 				}
 			},
-			
+
 			//调用登录接口换取token
 			async getToken() {
 				//传入后台换取token
-				const loginResult = await uni.$http.post('https://test.teammodel.cn/aclassone/get-miniapp-userinfo', this.query)
+				const loginResult = await uni.$http.post('https://test.teammodel.cn/aclassone/get-miniapp-userinfo',
+					this.query)
 				if (loginResult.statusCode !== 200) return uni.$showMsg('登录失败!')
 				uni.$showMsg('登录成功')
 				//更新vuex中token
 				console.log(loginResult.data.miniappData);
 				this.updateToken(loginResult.data.miniappData)
 			},
-			
+
 			//获取用户信息事件
 			async getUserInfo() {
-					await uni.getUserProfile({
-						desc: '获取您的基本信息',
-						success: infoRes => {
-							 if (infoRes.errMsg === 'getUserProfile:ok') {
-								this.getToken()
-								this.updateParentInfo(infoRes.userInfo)
-								uni.redirectTo({
-									url: '/subpkg/guide/guide'
-								})
-							  } else {
-								uni.$showMsg('获取不到您的信息!')
-							  }
-						 },
-						fail: err => {
-							uni.$showMsg('拒绝授权获取不到您的基本信息!')
-							console.log('getUserInfo-error', JSON.stringify(err))
+				await uni.getUserProfile({
+					desc: '获取您的基本信息',
+					success: infoRes => {
+						if (infoRes.errMsg === 'getUserProfile:ok') {
+							this.getToken()
+							this.updateParentInfo(infoRes.userInfo)
+							uni.redirectTo({
+								url: '/subpkg/guide/guide'
+							})
+						} else {
+							uni.$showMsg('获取不到您的信息!')
 						}
-					});
-				 
+					},
+					fail: err => {
+						uni.$showMsg('拒绝授权获取不到您的基本信息!')
+					}
+				});
 			},
-			
-		},
-	}
-</script>
-
+
+		},
+	}
+</script>
+
 <style lang="scss">
 	//登录页面
 	.content {
 		width: 100vw;
 		height: 100vh;
 		background-color: #fafafa;
-	
+
 		.tips {
 			padding-top: 200rpx;
 			padding-left: 80rpx;
 			display: flex;
 			flex-direction: column;
 			z-index: 99;
-	
+
 			.title {
 				line-height: 70rpx;
 				font-weight: bold;
 				font-size: 50rpx;
 				z-index: 99;
 			}
-	
+
 			.subtitle {
 				line-height: 70rpx;
 				font-size: 35rpx;
@@ -124,9 +128,9 @@
 				color: #b0b0b1;
 				z-index: 99;
 			}
-	
+
 		}
-	
+
 		.bg1 {
 			position: fixed;
 			top: -250rpx;
@@ -138,7 +142,7 @@
 			margin-right: 20rpx;
 			z-index: 5;
 		}
-	
+
 		.bg2 {
 			position: fixed;
 			top: -100rpx;
@@ -150,6 +154,7 @@
 			background-color: #ff5959;
 			z-index: 4;
 		}
+
 		.bg3 {
 			position: fixed;
 			top: 500rpx;
@@ -160,15 +165,15 @@
 			background-color: #FFC600;
 			z-index: 4;
 		}
-		
-		
-	
+
+
+
 		.form-box {
 			padding-top: 250rpx;
 			padding-left: 70rpx;
 			width: 610rpx;
-	
-	
+
+
 			.btn {
 				display: flex;
 				justify-content: center;
@@ -184,25 +189,25 @@
 				margin-top: 60rpx;
 				z-index: 99;
 			}
-	
+
 			.other {
 				display: flex;
 				justify-content: space-between;
 				z-index: 99;
-	
+
 				text {
 					line-height: 80rpx;
 					font-size: 28rpx;
 					z-index: 99;
 				}
-	
+
 				.other-text-left {
 					margin-left: 4rpx;
 					margin-top: 20rpx;
 					color: #FFFFFF;
 					font-weight: bold;
 				}
-	
+
 				.other-text-right {
 					margin-right: 4rpx;
 					margin-top: 20rpx;
@@ -211,58 +216,61 @@
 			}
 		}
 	}
-	
-	
-	
+
+
+
 	.ocean {
-	    display: flex;
+		display: flex;
 		margin-top: -600rpx;
 		margin-left: -520rpx;
-	    width: 1800rpx;
-	    height: 1800rpx;
-	    background-color: #4169E1;
-	    border-radius: 50%;
-	
-	    &::before,
-	    &::after {
-	        content: "";
-	        position: absolute;
-					margin-top: 870rpx;
-	        width: 1600rpx;
-	        height: 1600rpx;
-	        top: 0;
-	        left: 50%;
-					border-radius: 43%;
-	        background-color: #fafafa;
-	        transform: translate(-50%, -70%) rotate(0);
-	        animation: rotate 6s linear infinite;
-	        z-index: 2;
-	    }
-	
-	    &::after {
-					border-radius: 46%;
-	        background-color: #fafafa;
-					opacity: 0.7;
-	        transform: translate(-50%, -70%) rotate(0);
-	        animation: rotate 10s linear -5s infinite;
-	        z-index: 3;
-	    }
-			&::after {
-					border-radius: 40%;
-			    background-color: #fafafa;
-					opacity: 0.5;
-			    transform: translate(-50%, -70%) rotate(0);
-			    animation: rotate 10s linear -5s infinite;
-			    z-index: 3;
-			}
-			
+		width: 1800rpx;
+		height: 1800rpx;
+		background-color: #4169E1;
+		border-radius: 50%;
+
+		&::before,
+		&::after {
+			content: "";
+			position: absolute;
+			margin-top: 870rpx;
+			width: 1600rpx;
+			height: 1600rpx;
+			top: 0;
+			left: 50%;
+			border-radius: 43%;
+			background-color: #fafafa;
+			transform: translate(-50%, -70%) rotate(0);
+			animation: rotate 6s linear infinite;
+			z-index: 2;
+		}
+
+		&::after {
+			border-radius: 46%;
+			background-color: #fafafa;
+			opacity: 0.7;
+			transform: translate(-50%, -70%) rotate(0);
+			animation: rotate 10s linear -5s infinite;
+			z-index: 3;
+		}
+
+		&::after {
+			border-radius: 40%;
+			background-color: #fafafa;
+			opacity: 0.5;
+			transform: translate(-50%, -70%) rotate(0);
+			animation: rotate 10s linear -5s infinite;
+			z-index: 3;
+		}
+
 	}
-	
+
 	@keyframes rotate {
-	    50% {
-	        transform: translate(-50%, -73%) rotate(180deg);
-	    } 100% {
-	        transform: translate(-50%, -70%) rotate(360deg);
-	    }
-	}
+		50% {
+			transform: translate(-50%, -73%) rotate(180deg);
+		}
+
+		100% {
+			transform: translate(-50%, -70%) rotate(360deg);
+		}
+	}
 </style>

+ 152 - 0
subpkg/parentInfo/parentInfo.vue

@@ -0,0 +1,152 @@
+<template>
+	<view class="container">
+		<!-- 返回按钮 -->
+		<back @click="returnMy"></back>
+		<!-- 头部信息 -->
+		<view class="top-info">
+			<image class="parent-avatar" :src="parentinfo.avatarUrl" size="100"></image>
+			<view class="parent-name">
+				<text class="name">{{parentinfo.nickName}}</text>
+				<text class="phone">{{parentdetail.phoneNumber}}</text>
+			</view>
+		</view>
+	
+		<!-- 内容列表 -->
+		<view class="card-box">
+			<u-cell-group :border="false">
+				<view class="i-item">
+					<view class="t-icon t-icon-canyon-nature-svgrepo-com"></view>
+					<u-cell class="cell-box" size="large" title="您的绑定手机" :label="parentdetail.phoneNumber" :border="false"></u-cell>
+				</view>
+				<view class="i-item">
+					<view class="t-icon t-icon-empire-state-building-america-svgrepo-com"></view>
+					<u-cell class="cell-box" size="large" title="订阅信息" label="描述信息" :border="false"></u-cell>
+				</view>
+				<view class="i-item">
+					<view class="t-icon t-icon-atomium-belgium-svgrepo-com"></view>
+					<u-cell class="cell-box" size="large" title="订阅时间" label="2022.2.15-2025.2.15" :border="false"></u-cell>
+				</view>
+			</u-cell-group>
+			<!-- 横向内容列表 -->
+			<view style="margin: 10rpx 0 0 60rpx;font-size: 35rpx;font-weight: bold;color: #3B4144;">我的孩子</view>
+			<view style="display: flex; flex-wrap: wrap; align-items: center;margin: 0 40rpx 0 40rpx;">
+				<view class="data-box-item" v-for="(item,index) in parentdetail.childrenList" :key="index">
+					<view class="item-text">{{item.name}}</view>
+					<view class="avatar-box">
+						<u-avatar size="100" class="item-avatar" :src="item.avatar" mode="aspectFill"></u-avatar>
+					</view>
+				</view>
+			</view>
+		</view>
+	
+	</view>
+</template>
+
+<script>
+	import {
+		mapState,
+		mapMutations
+	} from 'vuex'
+	export default {
+		computed:{
+			...mapState('m_parent',['parentinfo','parentdetail'])
+		},
+		data() {
+			return {
+				
+			};
+		},
+		methods:{
+			//返回成绩页面
+			returnMy() {
+				uni.switchTab({
+					url: '/pages/my/my'
+				})
+			},
+		},
+	}
+</script>
+
+<style lang="scss">
+.container {
+		height: 600rpx;
+		background: linear-gradient(#0080ff, #f1f3f5);
+
+		.top-info {
+			display: flex;
+			align-items: center;
+			margin-top: 10rpx;
+
+			.parent-avatar {
+				margin-left: 50rpx;
+				width: 140rpx;
+				height: 140rpx;
+				border-radius: 100%;
+				border: 6rpx solid #FFFFFF;
+				box-shadow: 0 10rpx 20rpx rgba(0, 0, 0, 0.2);
+			}
+
+			.parent-name {
+				margin-left: 50rpx;
+				display: flex;
+				flex-direction: column;
+				font-weight: bold;
+
+				.name {
+					color: #3B4144;
+					font-size: 45rpx;
+					font-weight: bold;
+				}
+				.phone{
+					color: #596166;
+					font-size: 35rpx;
+					font-weight: bold;
+				}
+			}
+		}
+
+		.card-box {
+			position: relative;
+			background-color: #FFFFFF;
+			box-shadow: 0 6rpx 10rpx rgba(0, 0, 0, 0.2);
+			top: 80rpx;
+			left: 50rpx;
+			border-radius: 100rpx;
+			width: 750rpx;
+			height: 100vh;
+
+			.i-item {
+				display: flex;
+				align-items: center;
+				margin-left: 35rpx;
+			}
+		}
+
+		.data-box-item {
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			margin: 20rpx;
+			background-color: #6190e8;
+			border-radius: 15rpx;
+			width: 280rpx;
+			height: 280rpx;
+			box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.1);
+
+			.item-text {
+				width: 100%;
+				justify-content: flex-start;
+				font-size: 35rpx;
+				font-weight: bold;
+				color: #FFFFFF;
+				margin: 15rpx 0 0 30rpx;
+			}
+			.avatar-box{
+				.item-avatar{
+					width: 220rpx;
+					height: 220rpx;
+				}
+			}
+		}
+	}
+</style>

+ 2 - 22
uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js

@@ -55,8 +55,8 @@ const cfu = {
 		"gauge", "candle", "mix", "tline", "tarea", "scatter", "bubble", "demotype", "mainline", "mainradar",
 		"mini-line", "mini-area", "mini-column", "mini-rose", "home-arcbar"
 	],
-	"range": ["饼状图", "圆环图", "玫瑰图", "词云图", "漏斗图", "地图", "圆弧进度条", "折线图", "柱状图", "条状图", "区域图", "雷达图", "仪表盘", "K线图",
-		"混合图", "时间轴折线", "时间轴区域", "散点图", "气泡图", "自定义类型", "首页趋势图", "首页雷达图", "折线缩略图", "区域缩略图", "柱状缩略图", "玫瑰缩略图",
+	"range": ["饼状图", "圆环图", "玫瑰图", "圆弧进度条", "折线图", "柱状图", "条状图", "区域图", "雷达图", "仪表盘", "K线图",
+		"散点图", "气泡图", "自定义类型", "首页趋势图", "首页雷达图", "折线缩略图", "区域缩略图", "柱状缩略图", "玫瑰缩略图",
 		"条状图缩略图", "雷达缩略图", "首页进度圆环"
 	],
 	//增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的"demotype"
@@ -99,26 +99,6 @@ const cfu = {
 		},
 	},
 	//这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。
-	"demotype": {
-		//我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置
-		"type": "line",
-		"color": color,
-		"padding": [15, 10, 0, 15],
-		"xAxis": {
-			"disableGrid": true,
-		},
-		"yAxis": {
-			"gridType": "dash",
-			"dashLength": 2,
-		},
-		"legend": {},
-		"extra": {
-			"line": {
-				"type": "curve",
-				"width": 2
-			},
-		}
-	},
 	//下面是自定义配置,请添加项目所需的通用配置
 	"rose": {
 		"type": "rose",

+ 19 - 0
utils/Common.js

@@ -0,0 +1,19 @@
+// 处理多次点击
+function noMultipleClicks(methods) {
+    let that = this;
+    
+    if (that.noClick) {
+        that.noClick= false;
+        methods();
+        setTimeout(function () {
+            that.noClick= true;
+        }, 2000)
+    } else {
+        console.log("请稍后点击")
+    }
+}
+
+//导出
+export default {
+	noMultipleClicks,//禁止多次点击
+}