Forráskód Böngészése

评测,作业,活动页面优化与完成

KELECHUAN 3 éve
szülő
commit
5f7d6635f5
46 módosított fájl, 1864 hozzáadás és 811 törlés
  1. 1 1
      common/style.scss
  2. 6 6
      components/interactive-box/interactive-box.vue
  3. 19 14
      components/todayclass-box/todayclass-box.vue
  4. 10 2
      components/top-box/top-box.vue
  5. 8 8
      gradepkg/ability-chart/ability-chart.vue
  6. 20 14
      gradepkg/common/chartpage.scss
  7. 3 3
      gradepkg/general-chart/general-chart.vue
  8. 5 9
      gradepkg/rank-chart/rank-chart.vue
  9. 23 27
      gradepkg/single-chart/single-chart.vue
  10. 5 9
      gradepkg/subject-chart/subject-chart.vue
  11. 18 20
      main.js
  12. 19 5
      pages.json
  13. 1 1
      pages/common/blockmsg.scss
  14. 1 2
      pages/common/mainpage.scss
  15. 3 2
      pages/grade/grade.vue
  16. 9 6
      pages/home/home.vue
  17. 233 92
      pages/homework/homework.vue
  18. 2 2
      pages/interactive/interactive.vue
  19. BIN
      static/tab-icons/grade.png
  20. BIN
      static/tab-icons/home.png
  21. BIN
      static/tab-icons/homework.png
  22. BIN
      static/tab-icons/interactive.png
  23. BIN
      static/tab-icons/interactiveselect.png
  24. BIN
      static/tab-icons/my.png
  25. 4 4
      store/chart.js
  26. 4 4
      store/children.js
  27. 14 14
      subpkg/calendar/calendar.vue
  28. 72 0
      subpkg/common/detailpage.scss
  29. 71 99
      subpkg/common/iconfont-weapp-icon.css
  30. 25 30
      subpkg/common/videopage.scss
  31. 107 0
      subpkg/detaillist/activitylist.vue
  32. 0 159
      subpkg/detaillist/detaillist.vue
  33. 101 0
      subpkg/detaillist/examlist.vue
  34. 108 0
      subpkg/detaillist/homeworklist.vue
  35. 0 1
      subpkg/guide/accesspage.vue
  36. 16 1
      subpkg/login/login.vue
  37. 44 30
      subpkg/video/livepage.vue
  38. 44 29
      subpkg/video/videopage.vue
  39. 1 1
      subpkg/z-calendar/dateBox.vue
  40. 1 1
      subpkg/z-calendar/zsy-calendar.vue
  41. 8 12
      uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js
  42. 1 2
      uni_modules/uview-ui/components/u-skeleton/u-skeleton.vue
  43. 1 1
      uni_modules/uview-ui/libs/config/color.js
  44. 1 1
      uni_modules/uview-ui/theme.scss
  45. 836 164
      utils/APIHandler.js
  46. 19 35
      utils/Common.js

+ 1 - 1
common/style.scss

@@ -8,7 +8,7 @@ $page-background-color: #F5F5F5;
 $color-mixblue: #4169E1;
 $color-blue: #3C9CFF;
 $color-camblue: #bdd2ef;
-$color-green: #00b894;
+$color-green: #23b46c;
 $color-pink: #ff8caf;
 $color-yellow: #f9c752;
 //字体色

+ 6 - 6
components/interactive-box/interactive-box.vue

@@ -104,7 +104,7 @@
 					},
 					{
 						text: '娱乐放松记录',
-						color: 'background-color: #00cca3;',
+						color: 'background-color: #ff5959;',
 						icon: 't-icon t-icon-leimucuyule',
 						numData: '记录一下',
 					},
@@ -128,7 +128,7 @@
 				//时间表
 				pickerList: [
 					['0小时', '1小时', '2小时', '3小时', '4小时', '5小时', '6小时', '7小时', '8小时', '9小时', '10小时'],
-					['5分', '10分', '15分', '20分', '25分', '30分', '35分', '40分', '45分', '50分', '55分']
+					['5分', '10分', '15分', '20分', '25分', '30分', '35分', '40分', '45分', '50分', '55分']
 				],
 				//历史数据
 				historyData: {
@@ -167,7 +167,7 @@
 				}
 				//转换为数据记录到图表中
 				if (this.moduleData[this.cardCurrent].numData.search('小时') == -1) {
-					let timeData = parseFloat((parseInt(this.moduleData[this.cardCurrent].numData.replace('分', '')) / 60).toFixed(1))
+					let timeData = parseFloat((parseInt(this.moduleData[this.cardCurrent].numData.replace('分', '')) / 60).toFixed(1))
 					switch (this.cardCurrent) {
 						case 0:
 							this.historyData.study.push(timeData)
@@ -178,7 +178,7 @@
 							this.historyData.rest.shift()
 							break
 						case 2:
-						  let numExercise = parseInt(this.moduleData[this.cardCurrent].numData.replace('分', ''))/60
+						  let numExercise = parseInt(this.moduleData[this.cardCurrent].numData.replace('分', ''))/60
 							this.historyData.exercise.push(numExercise)
 							this.historyData.exercise.shift()
 							console.log(this.historyData.exercise);
@@ -191,7 +191,7 @@
 					}
 					this.saveToStudyChart()
 				} else {
-					let timeTemp = this.moduleData[this.cardCurrent].numData.replace('小时', '.').replace('分', '').split('.')
+					let timeTemp = this.moduleData[this.cardCurrent].numData.replace('小时', '.').replace('分', '').split('.')
 					let timeData = parseInt(timeTemp[0]) + parseFloat((timeTemp[1] / 60).toFixed(1))
 					switch (this.cardCurrent) {
 						case 0:
@@ -333,7 +333,7 @@
 
 		.module-item-num {
 			color: #FFF;
-			font-size: 42rpx;
+			font-size: 45rpx;
 			font-weight: bold;
 		}
 	}

+ 19 - 14
components/todayclass-box/todayclass-box.vue

@@ -1,37 +1,37 @@
 <template>
 	<!-- 今日课程 -->
-	<!-- 内容 -->
 	<view>
 		<!-- 课程列表 -->
 		<view style="margin-bottom: 20rpx;">
 			<view class="detail-image" v-if="state === 'none'" :style="{backgroundImage:`url(${image.none})`}"></view>
 			<!-- <view class="detail-image" v-if="state === ''" :style="{backgroundImage:`url(${image.class})`}"></view> -->
-
-
+			<!-- block -->
 			<view class="class-block" v-for="(classInfo,classIndex) in homeClassList" :key="classIndex"
 				:style="{backgroundColor: classIndex === 1 ? '#FFF' : ''}">
 				<view class="block-title" :style="{color: classIndex === 1 ? '#4169E1' : ''}">{{classInfo.name}}</view>
 				<view class="block-tag-box">
 					<view class="block-tag">{{classInfo.teacher}}</view>
 				</view>
-				<view class="block-subtitle" v-if="classIndex === 0 && state != 'none'">{{first}}</view>
-				<view class="block-subtitle" style="color: #4169E1;" v-if="classIndex === 1 && state != 'none'">
-					{{second}}
+
+				<!-- index -->
+				<view v-if="state != 'none'">
+					<view class="block-subtitle" v-if="classIndex === 0">{{first}}</view>
+					<view class="block-index" v-if="classIndex === 1">{{second}}</view>
+					<view class="block-subtitle" v-if="classIndex === 2">{{third}}</view>
 				</view>
-				<view class="block-subtitle" v-if="classIndex === 2 && state != 'none'">{{third}}</view>
+
+				<!-- time -->
 				<view class="block-subtitle" :style="{color: classIndex === 1 ? '#4169E1' : ''}" @click="navClass">
 					{{classInfo.time}}
 				</view>
+				<!-- activity -->
 				<u-tag :text="before" :type="beforeType" plain icon="hourglass"
-					v-if="classIndex === 0 && state != 'none'" @click="navVideoBefore(classCurrent-2)">
-				</u-tag>
-				<u-tag :text="now" type="success" icon="play-right" v-if="classIndex === 1" @click="navVideoNow(classCurrent-1)">
-				</u-tag>
-				<u-tag :text="after" type="error" :color="afterColor" :borderColor="afterColor" plain icon="pushpin"
-					v-if="classIndex === 2"></u-tag>
+					v-if="classIndex === 0 && state != 'none'" @click="navVideoBefore(classCurrent-2)"></u-tag>
+				<u-tag :text="now" type="success" icon="play-right" v-if="classIndex === 1"
+					@click="navVideoNow(classCurrent-1)"></u-tag>
+				<u-tag :text="after" type="error"  plain icon="pushpin" v-if="classIndex === 2"></u-tag>
 			</view>
 		</view>
-
 	</view>
 </template>
 <script>
@@ -158,4 +158,9 @@
 		background-size: 100%;
 		background-repeat: no-repeat;
 	}
+
+	.block-index {
+		font-size: 22rpx;
+		color: $color-mixblue;
+	}
 </style>

+ 10 - 2
components/top-box/top-box.vue

@@ -52,12 +52,14 @@
 					uni.hideTabBar({})
 				}
 				if (newValue === false) {
-					uni.showTabBar({})
+					setTimeout(function() {
+						uni.showTabBar({})
+					}, 400)
 				}
 			}
 		},
 		created() {
-			this.$getCapsuleSite()
+			this.getCapsuleSite()
 		},
 		data() {
 			return {
@@ -78,6 +80,12 @@
 		},
 		methods: {
 			...mapMutations('m_children', ['updateChildrenInfo', 'updateChildrenSemester']),
+			getCapsuleSite() {
+				let res = uni.getMenuButtonBoundingClientRect()
+				this.capsuleBottom = res.bottom + 5
+				this.capsuleMiddle = res.left
+				this.capsuleWidth = res.width
+			},
 			//学期选择
 			pickerConfirm(e) {
 				if (e.value[0] != this.semester) {

+ 8 - 8
gradepkg/ability-chart/ability-chart.vue

@@ -15,22 +15,22 @@
 			<view class="data-box-item" style="background-color: #4169E1;">
 				<view class="item-text">考试成绩波动对比:</view>
 				<view class="item-text" style="font-size: 50rpx;">{{mainExamUndulate>=quizExamUndulate?'小考稳定':'大考稳定'}}</view>
-				<view class="analysis-box">
+				<view class="analysis-box">
+					<view v-if="mainExamUndulate>=quizExamUndulate" class="icon-text-item" style="font-size: 30rpx;">重要考试时沉住气稳住心态</view>
+					<view v-if="mainExamUndulate<quizExamUndulate" class="icon-text-item" style="font-size: 30rpx;">普通考试时也不能掉以轻心</view>
 					<view v-if="mainExamUndulate>=quizExamUndulate" class="t-icon t-icon-jiangbei-4"></view>
 					<view v-if="mainExamUndulate<quizExamUndulate" class="t-icon t-icon-jiangbei-3"></view>
-					<view v-if="mainExamUndulate>=quizExamUndulate" class="icon-text-item">重要考试时沉住气稳住心态</view>
-					<view v-if="mainExamUndulate<quizExamUndulate" class="icon-text-item">普通考试时也不能掉以轻心</view>
 				</view>
 			</view>
 
 			<view class="data-box-item" style="background-color: #ff8caf;">
 				<view class="item-text">考试得分能力对比:</view>
 				<view class="item-text" style="font-size: 50rpx;">{{avgMain>=avgquiz?'大考能力强':'小考能力强'}}</view>
-				<view class="analysis-box">
+				<view class="analysis-box">
+					<view v-if="avgMain<avgquiz" class="icon-text-item" style="font-size: 30rpx;">重要考试要多证明自己能力</view>
+					<view v-if="avgMain>=avgquiz" class="icon-text-item" style="font-size: 30rpx;">普通考试要注重得分与练习</view>
 					<view v-if="avgMain<avgquiz" class="t-icon t-icon-jiangbei-4"></view>
 					<view v-if="avgMain>=avgquiz" class="t-icon t-icon-jiangbei-3"></view>
-					<view v-if="avgMain<avgquiz" class="icon-text-item">重要考试要多证明自己能力</view>
-					<view v-if="avgMain>=avgquiz" class="icon-text-item">普通考试要注重得分与练习</view>
 				</view>
 			</view>
 		</view>
@@ -38,7 +38,7 @@
 		<!-- 图表列表 -->
 		<view class="chart-container">
 			<view class="chart-name">
-				<view class="t-icon t-icon-sea"></view>
+				<view class="index" style="background-color: #a5c6ff;"></view>
 				<text class="chart-name-text">重要考试对比</text>
 			</view>
 			<!-- 图表 -->
@@ -50,7 +50,7 @@
 
 		<view class="chart-container">
 			<view class="chart-name">
-				<view class="t-icon t-icon-spruce"></view>
+				<view class="index" style="background-color: #a5c6ff;"></view>
 				<text class="chart-name-text">普通测验记录</text>
 			</view>
 			<!-- 图表 -->

+ 20 - 14
gradepkg/common/chartpage.scss

@@ -15,9 +15,9 @@
 				flex-direction: column;
 				justify-content: space-around;
 				width: 48%;
-				height: 300rpx;
+				height: 280rpx;
 				border-radius: $card-border-radius;
-				padding-top: 15rpx;
+				padding-top: 10rpx;
 		
 				.item-text {
 					margin-left: 20rpx;
@@ -31,16 +31,16 @@
 					align-items: center;
 					
 					.t-icon {
-						width: 150rpx;
-						height: 100rpx;
+						width: 80rpx;
+						height: 80rpx;
 						background-repeat: no-repeat;
 					}
 					.icon-text-item {
-						width: 225rpx;
-						font-size: 32rpx;
+						width: 180rpx;
+						font-size: 35rpx;
 						font-weight: bold;
 						color: #FFFFFF;
-						margin-left: auto;
+						margin-left: 20rpx;
 						margin-right: 20rpx;
 					}
 				}
@@ -113,11 +113,12 @@
 				display: flex;
 				justify-content: flex-start;
 				align-items: center;
-				margin-left: 40rpx;
-				margin-top: 20rpx;
+				margin-left: 45rpx;
+				margin-top: 25rpx;
 		
 				.chart-name-text {
-					font-size: 30rpx;
+					line-height: 45rpx;
+					font-size: 32rpx;
 					font-weight: bold;
 					color: $color-title;
 					margin-left: 15rpx;
@@ -127,16 +128,16 @@
 					display: flex;
 					align-items: center;
 					margin-left: auto;
-					margin-right: 40rpx;
+					margin-right: 45rpx;
 					.btn {
 						margin-right: 10rpx;
-						line-height: 60rpx;
+						line-height: 45rpx;
 						color: $color-mixblue;
 						font-size: 28rpx;
 					}
 					.t-icon{
-						width: 60rpx; 
-						height: 60rpx;
+						width: 42rpx; 
+						height: 42rpx;
 					}
 				}
 			}
@@ -145,5 +146,10 @@
 				width: 100%;
 				height: 550rpx;
 			}
+		}
+		.index{
+			height: 32rpx;
+			width: 10rpx;
+			border-radius: 100rpx;
 		}
 	}

+ 3 - 3
gradepkg/general-chart/general-chart.vue

@@ -20,7 +20,7 @@
 		<!-- 总成绩图表 -->
 		<view class="chart-container">
 			<view class="chart-name">
-				<view class="t-icon t-icon-beach"></view>
+				<view class="index" style="background-color: #3C9CFF;"></view>
 				<text class="chart-name-text">{{semester}} 总成绩对比</text>
 				<!-- 按钮区域 -->
 				<view class="btn-box">
@@ -35,7 +35,7 @@
 		<!-- 单科与平均成绩对比 -->
 		<view class="chart-container">
 			<view class="chart-name">
-				<view class="t-icon t-icon-bridge"></view>
+				<view class="index" style="background-color: #3C9CFF;"></view>
 				<text class="chart-name-text">{{semester}} 单科与平均对比</text>
 				<!-- 按钮区域 -->
 				<view class="btn-box" @click="setSubjectPicker = true">
@@ -53,7 +53,7 @@
 		<!-- 单科成绩走势 -->
 		<view class="chart-container">
 			<view class="chart-name">
-				<view class="t-icon t-icon-cape"></view>
+				<view class="index" style="background-color: #3C9CFF;"></view>
 				<text class="chart-name-text">{{semester}} 单科走势对比</text>
 				<!-- 按钮 -->
 				<view class="btn-box" @click="switchScoreTypePicker = true">

+ 5 - 9
gradepkg/rank-chart/rank-chart.vue

@@ -15,14 +15,10 @@
 			<view class="data-box-item" v-for="(item,index) in analysisData" :key="index"
 				:style="{background: item.color}">
 				<view class="item-text">{{item.title}}</view>
-				<view class="item-text" style="font-size: 50rpx;">{{item.data}}%的同学</view>
+				<view class="item-text" style="font-size: 50rpx;">{{item.data}}% 学生</view>
 				<view class="analysis-box">
-					<view v-if="item.data<40" class="t-icon t-icon-jiangbei-5"></view>
-					<view v-if="item.data>=40 && item.data<70" class="t-icon t-icon-jiangbei-4"></view>
-					<view v-if="item.data>=70" class="t-icon t-icon-jiangbei-3"></view>
-					<view v-if="item.data<40" class="icon-text-item">要加把劲!</view>
-					<view v-if="item.data>=40 && item.data<70" class="icon-text-item">再接再厉!</view>
-					<view v-if="item.data>=70" class="icon-text-item">非常优秀!</view>
+					<view class="icon-text-item">{{item.data>=40?(item.data>=70?'非常优秀!':'努力提升!'):'要加把劲!'}}</view>
+					<view :class="item.data>=40?(item.data>=70?'t-icon t-icon-jiangbei-3':'t-icon t-icon-jiangbei-4'): 't-icon t-icon-jiangbei-5'"></view>
 				</view>
 			</view>
 		</view>
@@ -31,7 +27,7 @@
 		<!-- 总成绩排行走势 -->
 		<view class="chart-container">
 			<view class="chart-name">
-				<view class="t-icon t-icon-fields"></view>
+				<view class="index" style="background-color: #a5c6ff;"></view>
 				<text class="chart-name-text">{{semester}} 排行占比走势对比</text>
 			</view>
 			<view class="charts-box">
@@ -42,7 +38,7 @@
 		<!-- 单科排行走势 -->
 		<view class="chart-container">
 			<view class="chart-name">
-				<view class="t-icon t-icon-forest"></view>
+				<view class="index" style="background-color: #a5c6ff;"></view>
 				<text class="chart-name-text">单科排行占比走势对比</text>
 				<!-- 按钮区域 -->
 				<view class="btn-box" @click="setSubjectPicker = true">

+ 23 - 27
gradepkg/single-chart/single-chart.vue

@@ -12,16 +12,13 @@
 
 		<!-- 数据分析模块 -->
 		<view class="data-box">
-			<view class="data-box-item" v-for="(item,index) in analysisData" :key="index" :style="{background: item.color}">
-				<view class="item-text">{{item.title}}</view>
-				<view class="item-text" style="font-size: 50rpx;">{{item.data/0.01}}%的同学</view>
+			<view class="data-box-item" v-for="(item,index) in analysisData" :key="index"
+				:style="{background: item.color}">
+					<view class="item-text">{{item.title}}</view>
+					<view class="item-text" style="font-size: 50rpx;">{{item.data/0.01}}% 学生</view>
 				<view class="analysis-box">
-					<view v-if="item.data<0.4" class="t-icon t-icon-jiangbei-5"></view>
-					<view v-if="item.data>=0.4 && item.data<0.7" class="t-icon t-icon-jiangbei-4"></view>
-					<view v-if="item.data>=0.7" class="t-icon t-icon-jiangbei-3"></view>
-					<view v-if="item.data<0.4" class="icon-text-item">要加把劲!</view>
-					<view v-if="item.data>=0.4 && item.data<0.7" class="icon-text-item">再接再厉!</view>
-					<view v-if="item.data>=0.7" class="icon-text-item">非常优秀!</view>
+					<view class="icon-text-item">{{item.data>=0.4?(item.data>=0.7?'非常优秀!':'努力提升!'):'要加把劲!'}}</view>
+					<view :class="item.data>=0.4?(item.data>=0.7?'t-icon t-icon-jiangbei-3':'t-icon t-icon-jiangbei-4'): 't-icon t-icon-jiangbei-5'"></view>
 				</view>
 			</view>
 		</view>
@@ -31,7 +28,7 @@
 		<!-- 近期成绩对比自身 -->
 		<view class="chart-container">
 			<view class="chart-name">
-				<view class="t-icon t-icon-castle"></view>
+				<view class="index" style="background-color: #a5c6ff;"></view>
 				<text class="chart-name-text">近期成绩对比</text>
 			</view>
 			<view class="charts-box">
@@ -42,7 +39,7 @@
 		<!-- 单次排行分析 -->
 		<view class="chart-container">
 			<view class="chart-name">
-				<view class="t-icon t-icon-waterfall"></view>
+				<view class="index" style="background-color: #a5c6ff;"></view>
 				<text class="chart-name-text">近期排行占比分析</text>
 			</view>
 			<view class="charts-box" style="margin: 20rpx 0 -20rpx 0;">
@@ -70,31 +67,30 @@
 		data() {
 			return {
 				//分析模块数据
-				analysisData:
-				[{
-					title: '本次考试超过年级中:',
+				analysisData: [{
+					title: '本次超过年级中:',
 					data: '',
 					color: '',
-				},{
-					title: '本次考试超过班级中:',
+				}, {
+					title: '本次超过班级中:',
 					data: '',
 					color: '',
 				}],
-				
-				
+
+
 			};
 		},
 		methods: {
 			//获得分析模块数据
-			getData(){
-				this.analysisData[0].data = 
-				this.gradeData.recentTestChart.recentRank.series[0].data
-				this.analysisData[1].data = 
-				this.gradeData.recentTestChart.recentRank.series[1].data
-				this.analysisData[0].color = 
-				this.gradeData.recentTestChart.recentRank.series[0].color
-				this.analysisData[1].color = 
-				this.gradeData.recentTestChart.recentRank.series[1].color
+			getData() {
+				this.analysisData[0].data =
+					this.gradeData.recentTestChart.recentRank.series[0].data
+				this.analysisData[1].data =
+					this.gradeData.recentTestChart.recentRank.series[1].data
+				this.analysisData[0].color =
+					this.gradeData.recentTestChart.recentRank.series[0].color
+				this.analysisData[1].color =
+					this.gradeData.recentTestChart.recentRank.series[1].color
 			}
 		},
 		onLoad() {

+ 5 - 9
gradepkg/subject-chart/subject-chart.vue

@@ -16,13 +16,9 @@
 				<view class="item-text">{{item.title}}</view>
 				<view class="item-text" style="font-size: 44rpx;">{{item.data.name}}</view>
 				<view class="item-text" style="font-size: 34rpx;">得分率为:  {{item.data.value}}%</view>
-				<view class="analysis-box">
-					<view v-if="item.data.value>=80" class="t-icon t-icon-jiangbei-3"></view>
-					<view v-if="item.data.value<80 && item.data.value>=50" class="t-icon t-icon-jiangbei-4"></view>
-					<view v-if="item.data.value<50" class="t-icon t-icon-jiangbei-5"></view>
-					<view v-if="item.data.value<50" class="icon-text-item">要加把劲!</view>
-					<view v-if="item.data.value<80 && item.data.value>=50" class="icon-text-item">再接再厉!</view>
-					<view v-if="item.data.value>=80" class="icon-text-item">非常优秀!</view>
+				<view class="analysis-box">
+					<view class="icon-text-item">{{item.data.value>=40?(item.data.value>=70?'非常优秀!':'努力提升!'):'要加把劲!'}}</view>
+					<view :class="item.data.value>=40?(item.data.value>=70?'t-icon t-icon-jiangbei-3':'t-icon t-icon-jiangbei-4'): 't-icon t-icon-jiangbei-5'"></view>
 				</view>
 			</view>
 		</view>
@@ -31,7 +27,7 @@
 		<!-- 学期平均 -->
 		<view class="chart-container">
 			<view class="chart-name">
-				<view class="t-icon t-icon-iceberg"></view>
+				<view class="index" style="background-color: #a5c6ff;"></view>
 				<text class="chart-name-text">{{semester}} 科目得分率平均值分析</text>
 			</view>
 			<view class="charts-box">
@@ -42,7 +38,7 @@
 		<!-- 单次考试 -->
 		<view class="chart-container">
 			<view class="chart-name">
-				<view class="t-icon t-icon-mountains"></view>
+				<view class="index" style="background-color: #a5c6ff;"></view>
 				<text class="chart-name-text">最近考试科目得分率分析</text>
 			</view>
 			<view class="charts-box">

+ 18 - 20
main.js

@@ -11,15 +11,30 @@ import uView from '@/uni_modules/uview-ui'
 import Common from './utils/Common.js'
 import APIHandler from './utils/APIHandler.js'
 //挂载公共方法实例
-Vue.prototype.$noMultipleClicks = Common.noMultipleClicks;
-Vue.prototype.$getCapsuleSite = Common.getCapsuleSite;
-Vue.prototype.$getTimeStamp = Common.getTimeStamp;
 Vue.prototype.$getRecentDateArray = Common.getRecentDateArray;
+Vue.prototype.$timestampToTime = Common.timestampToTime;
 //API数据获取与处理
 Vue.prototype.$initGrade = APIHandler.initGrade;
 Vue.prototype.$initHomework = APIHandler.initHomework;
 Vue.prototype.$initHome = APIHandler.initHome;
 Vue.prototype.$initApp = APIHandler.initApp;
+//格式化处理日期时间的方法
+Date.prototype.format = function(fmt) {
+	let o = {
+		"M+": this.getMonth() + 1, //月份
+		"d+": this.getDate(), //日
+		"h+": this.getHours(), //小时
+		"m+": this.getMinutes(), //分
+		"s+": this.getSeconds(), //秒
+		"q+": Math.floor((this.getMonth() + 3) / 3), //季度
+		"S": this.getMilliseconds() //毫秒
+	};
+	if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
+	for (let k in o)
+		if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) :
+			(("00" + o[k]).substr(("" + o[k]).length)));
+	return fmt;
+}
 
 //挂载到uni.$http上方便调用
 uni.$http = $http
@@ -53,23 +68,6 @@ uni.$showMsg = function(title = '请求失败', duration = 1500) {
 		icon: 'none'
 	})
 }
-//封装格式化处理日期时间的方法
-Date.prototype.format = function(fmt) {
-	let o = {
-		"M+": this.getMonth() + 1, //月份
-		"d+": this.getDate(), //日
-		"h+": this.getHours(), //小时
-		"m+": this.getMinutes(), //分
-		"s+": this.getSeconds(), //秒
-		"q+": Math.floor((this.getMonth() + 3) / 3), //季度
-		"S": this.getMilliseconds() //毫秒
-	};
-	if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
-	for (let k in o)
-		if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) :
-			(("00" + o[k]).substr(("" + o[k]).length)));
-	return fmt;
-}
 
 Vue.config.productionTip = false
 

+ 19 - 5
pages.json

@@ -2,8 +2,8 @@
 	"pages": [{
 			"path": "pages/init/init",
 			"style": {
-				"navigationBarTitleText": "",
-				"enablePullDownRefresh": false
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
 			}
 
 		},
@@ -117,7 +117,21 @@
 				}
 
 			}, {
-				"path": "detaillist/detaillist",
+				"path": "detaillist/examlist",
+				"style": {
+					"navigationStyle": "custom",
+					"enablePullDownRefresh": false
+				}
+
+			}, {
+				"path": "detaillist/homeworklist",
+				"style": {
+					"navigationStyle": "custom",
+					"enablePullDownRefresh": false
+				}
+
+			}, {
+				"path": "detaillist/activitylist",
 				"style": {
 					"navigationStyle": "custom",
 					"enablePullDownRefresh": false
@@ -207,8 +221,8 @@
 	"tabBar": {
 		"backgroundColor": "#FFFFFF",
 		"borderStyle": "white",
-		"color": "#bdd2ef",
-		"selectedColor": "#6495ed",
+		"color": "#b5b9c4",
+		"selectedColor": "#4169E1",
 
 		"list": [{
 				"pagePath": "pages/home/home",

+ 1 - 1
pages/common/blockmsg.scss

@@ -26,7 +26,7 @@
 		.block-tag-box{
 			border-radius: 50rpx;
 			border: 1rpx solid $color-mixblue;
-			padding: 8rpx;
+			padding: 5rpx 14rpx;
 			.block-tag{
 				font-size: 22rpx;
 				color: $color-mixblue;

+ 1 - 2
pages/common/mainpage.scss

@@ -10,7 +10,7 @@
 		.card-box {
 			display: flex;
 			flex-flow: row wrap;
-			margin: 0 20rpx 0 20rpx;
+			margin: 0 20rpx 10rpx 20rpx;
 			justify-content: space-between;
 
 			.card-item {
@@ -20,7 +20,6 @@
 				display: flex;
 				flex-direction: column;
 				background-color: #FFF;
-				// box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.05);
 				border-radius: $card-border-radius;
 				
 

+ 3 - 2
pages/grade/grade.vue

@@ -203,13 +203,14 @@
 			}
 		},
 		onLoad() {
-			this.$getTimeStamp()
+			//获取当前时间
+			this.timeStamp = (new Date()).format("hh:mm")
 			//获取成绩数据
 			this.$initGrade()
 		},
 		//刷新页面
 		onPullDownRefresh() {
-			this.$getTimeStamp()
+			this.timeStamp = (new Date()).format("hh:mm")
 			console.log('refresh');
 			setTimeout(function() {
 				uni.stopPullDownRefresh();

+ 9 - 6
pages/home/home.vue

@@ -27,13 +27,13 @@
 			<view class="card-item" @click="navCalendar">
 				<view class="card-info" style="padding-bottom: 0;">
 					<view :class="icon.isRecord" v-if="attendance==='已打卡'"
-						style="width:150rpx;height: 60rpx;background-repeat: no-repeat;"></view>
+						style="width:140rpx;height: 50rpx;"></view>
 					<view :class="icon.noRecord" v-if="attendance==='未打卡'"
-						style="width:150rpx;height: 60rpx;background-repeat: no-repeat;"></view>
+						style="width:140rpx;height: 50rpx;"></view>
 					<view class="t-icon t-icon-weizhidaka-dakachenggong" v-if="attendance==='已打卡'"
-						style="width:60rpx;height: 60rpx;background-repeat: no-repeat;margin-left: auto;"></view>
+						style="width:60rpx;height: 60rpx;margin-left: auto;"></view>
 					<view class="t-icon t-icon-weizhidaka-dakacuowu" v-if="attendance==='未打卡'"
-						style="width:60rpx;height: 60rpx;background-repeat: no-repeat;margin-left: auto;"></view>
+						style="width:60rpx;height: 60rpx;margin-left: auto;"></view>
 				</view>
 				
 				<view class="state-box">
@@ -147,7 +147,7 @@
 		methods: {
 			//页面方法初始化
 			init() {
-				this.$getTimeStamp()
+				this.timeStamp = (new Date()).format("hh:mm")
 				this.$initHome()
 				this.setOpts()
 				this.getNoticeMsg()
@@ -293,7 +293,7 @@
 			align-items: center;
 			justify-content: center;
 			border-radius: 50rpx;
-			height: 65rpx;
+			height: 70rpx;
 			width: 210rpx;
 		}
 	}
@@ -318,4 +318,7 @@
 		align-items: center;
 		justify-content: space-between;
 	}
+	.t-icon{
+		background-repeat: no-repeat;
+	}
 </style>

+ 233 - 92
pages/homework/homework.vue

@@ -9,101 +9,204 @@
 					:inactiveStyle="{fontWeight: 'bold',transform: 'scale(1)'}" lineColor="#4169E1" lineWidth="60">
 				</u-tabs>
 			</view>
-
-			<view class="module-box" v-for="(item,index) in pageData" :key="index" v-if="current == index">
-				<!-- 详情头部卡片 -->
-				<view class="card" :style="{backgroundColor: `${item.color}`}">
+			<!-- 模块卡片 -->
+			<view class="module-box">
+				<!-- 评测 -->
+				<view class="card" style="background-color: #4169E1;" v-if="current == 0">
+					<view class="box">
+						<view class="flex">
+							<text class="card-title">今日评测数:</text>
+							<text class="card-title" style="margin-left: 20rpx;">{{testData.length}}</text>
+						</view>
+						<view class="box" style="margin: 10rpx 0 0 0;">
+							<view class="flex">
+								<text class="card-subtitle">完成数量:</text>
+								<text class="card-subtitle" style="margin-left: 20rpx;">{{testFinish}}</text>
+							</view>
+							<view class="flex">
+								<text class="card-subtitle">完成情况:</text>
+								<text class="card-subtitle" style="margin-left: 20rpx;">{{list[0].level}}</text>
+							</view>
+						</view>
+					</view>
+					<view class="image" :style="{backgroundImage:`url(${list[0].image})`}"></view>
+				</view>
+				<!-- 作业 -->
+				<view class="card" style="background-color: #ff8caf;" v-if="current == 1">
 					<view class="box">
 						<view class="flex">
-							<text class="card-title">今日{{item.name}}数:</text>
-							<text class="card-title" style="margin-left: 20rpx;">{{item.detail.data.length}}</text>
+							<text class="card-title">今日作业数:</text>
+							<text class="card-title" style="margin-left: 20rpx;">{{homeworkData.length}}</text>
 						</view>
 						<view class="box" style="margin: 10rpx 0 0 0;">
 							<view class="flex">
 								<text class="card-subtitle">完成数量:</text>
-								<text class="card-subtitle" style="margin-left: 20rpx;">{{finishData.length}}</text>
+								<text class="card-subtitle" style="margin-left: 20rpx;">{{homeworkFinish}}</text>
 							</view>
 							<view class="flex">
 								<text class="card-subtitle">完成情况:</text>
-								<text class="card-subtitle" style="margin-left: 20rpx;">{{item.level}}</text>
+								<text class="card-subtitle" style="margin-left: 20rpx;">{{list[1].level}}</text>
 							</view>
 						</view>
 					</view>
-					<view class="image" :style="{backgroundImage:`url(${item.image})`}"></view>
+					<view class="image" :style="{backgroundImage:`url(${list[1].image})`}"></view>
+				</view>
+				<!-- 活动 -->
+				<view class="card" style="background-color: #f9c752;" v-if="current == 2">
+					<view class="box">
+						<view class="flex">
+							<text class="card-title">今日活动数:</text>
+							<text class="card-title" style="margin-left: 20rpx;">{{activityData.length}}</text>
+						</view>
+						<view class="box" style="margin: 10rpx 0 0 0;">
+							<view class="flex">
+								<text class="card-subtitle">完成数量:</text>
+								<text class="card-subtitle" style="margin-left: 20rpx;">{{activityFinish}}</text>
+							</view>
+							<view class="flex">
+								<text class="card-subtitle">完成情况:</text>
+								<text class="card-subtitle" style="margin-left: 20rpx;">{{list[2].level}}</text>
+							</view>
+						</view>
+					</view>
+					<view class="image" :style="{backgroundImage:`url(${list[2].image})`}"></view>
 				</view>
 				<!-- 中间标题 -->
 				<view class="flex">
-					<view class="cut-off">{{item.name}}信息</view>
+					<view class="cut-off" v-if="current == 0">评测信息</view>
+					<view class="cut-off" v-if="current == 1">作业信息</view>
+					<view class="cut-off" v-if="current == 2">活动信息</view>
 				</view>
 				<!-- 列表 -->
-				<view class="detail-box" v-if="current == index">
+				<view class="detail-box">
+					<!-- 图表模块 -->
 					<view class="detail-box-item">
 						<view class="item-info">
 							<view class="t-icon t-icon-ceping"></view>
-							<view class="item-text">近七天完成率</view>
+							<view class="item-text">近期完成率数据</view>
 						</view>
-						<!-- 图表部分 -->
 						<view class="charts-box" v-if="current == 0">
-							<qiun-data-charts type="fin-area" :chartData="homeworkData.testData" :loadingType="4"
+							<qiun-data-charts type="fin-area" :chartData="assignment.testData" :loadingType="4"
 								:canvas2d='true' tooltipFormat='HomeworkPercent' canvasId='canvans0980111' />
 						</view>
 						<view class="charts-box" v-if="current == 1">
-							<qiun-data-charts type="fin-area" :chartData="homeworkData.homeworkData" :loadingType="4"
+							<qiun-data-charts type="fin-area" :chartData="assignment.homeworkData" :loadingType="4"
 								:canvas2d='true' tooltipFormat='HomeworkPercent' canvasId='canvans0933511' />
 						</view>
 						<view class="charts-box" v-if="current == 2">
-							<qiun-data-charts type="fin-area" :chartData="homeworkData.activityData" :loadingType="4"
+							<qiun-data-charts type="fin-area" :chartData="assignment.activityData" :loadingType="4"
 								:canvas2d='true' tooltipFormat='HomeworkPercent' canvasId='canvans0531032' />
 						</view>
 					</view>
-					<!-- 完成列表 -->
-					<view class="detail-box-item">
+					<!-- 详情列表 -->
+					<!-- 评测 -->
+					<view class="detail-box-item" v-if="current == 0">
 						<view class="item-info">
-							<view class="t-icon t-icon-shenhe"></view>
-							<view class="item-text">今日已完成</view>
-							<!-- 完成列表展示所有已完成的评测作业和活动信息 -->
+							<view class="t-icon t-icon-daiban"></view>
+							<view class="item-text">评测列表</view>
+							<view class="btn" @click="navData">
+								<view class="t-icon t-icon-fenlei"></view>
+								<view class="msg">详情列表</view>
+							</view>
 						</view>
 						<view style="margin-bottom: 20rpx;">
-							<view class="block-box" v-for="(item,index) in finishData" :key="index">
-								<view class="index" style="height: 100rpx;background-color: #00b894;"></view>
-								<view class="class-block" style="height: 100rpx;width: 90%;">
-									<view class="block-title">{{item.name}}</view>
-									<view class="block-subtitle">科目:</view>
-									<view class="block-tag-box">
-										<view class="block-tag">{{item.subject}}</view>
+							<view class="block-box" v-for="(item,i) in testData" :key="i">
+								<view class="index" :style="{backgroundColor: item.examInfo.progress === 'finish'? '#23b46c':'#4169E1'} "></view>
+
+								<view class="class-block" style="width: 90%;">
+									<view style="width: 40%;">
+										<view class="list-item-title">{{item.examInfo.name}}</view>
 									</view>
-									<view class="block-subtitle">布置老师:</view>
-									<view class="block-tag-box">
-										<view class="block-tag">{{item.teacher}}</view>
+
+									<view style=" display: flex; justify-content: space-between; width: 50%;">
+										<view class="block-tag-box">
+											<view class="block-tag">{{item.examInfo.subjects[0].name}}</view>
+										</view>
+										<view class="block-tag-box">
+											<view class="block-tag">{{item.examInfo.examType.name}}</view>
+										</view>
+										<view class="block-tag-box">
+											<view class="block-tag">
+												{{item.examInfo.progress === 'finish' ? '已完成' : (item.examInfo.progress === 'going' ? '进行中' : '待发布')}}
+											</view>
+										</view>
 									</view>
+
 								</view>
+
 							</view>
 						</view>
 					</view>
-					<!-- 列表 -->
-					<view class="detail-box-item">
+					<!-- 作业 -->
+					<view class="detail-box-item" v-if="current == 1">
 						<view class="item-info">
 							<view class="t-icon t-icon-daiban"></view>
-							<view class="item-text">{{item.detail.title}}</view>
-							<!-- 详情列表展示(评测,活动或者作业)信息 -->
-							<view style="display: flex; align-items: center;margin: 0 5rpx 0 auto;" @click="navData(index)">
+							<view class="item-text">作业列表</view>
+							<view class="btn" @click="navData">
 								<view class="t-icon t-icon-fenlei"></view>
 								<view class="msg">详情列表</view>
 							</view>
 						</view>
-
 						<view style="margin-bottom: 20rpx;">
-							<view class="block-box" v-for="(i,x) in item.detail.data" :key="x">
-								<view class="index" :style="{height: 100+'rpx',backgroundColor: current === 0 ? '#4169E1':(current === 1 ? '#ff8caf': '#f9c752')}"></view>
-								<view class="class-block" style="height: 100rpx; width: 90%;">
-									<view class="block-title">{{i.name}}</view>
-									<view class="block-tag-box">
-										<view class="block-tag">{{i.subject}}</view>
+							<view class="block-box" v-for="(item,i) in homeworkData" :key="i">
+								<view class="index" :style="{backgroundColor: item.work.progress === 'finish'? '#23b46c':'#ff8caf'}" ></view>
+								<view class="class-block" style="width: 90%;justify-content: flex-start;">
+									<view style="display: flex; flex-direction: column;">
+
+										<view style="display: flex;margin-left: 30rpx;align-items: center;">
+											<view class="list-item-title">{{item.work.name}}</view>
+											<view class="block-tag-box" style="margin-left: 40rpx;">
+												<view class="block-tag">{{item.work.scope === 'private' ? '个人':'学校'}}作业
+												</view>
+											</view>
+											<view class="block-tag-box" style="margin-left: 20rpx;">
+												<view class="block-tag">
+													{{item.work.progress === 'finish' ? '已完成' : (item.work.progress === 'going' ? '进行中' : '待发布')}}
+												</view>
+											</view>
+										</view>
+										<rich-text class="block-subtitle" style="margin:10rpx 0 0 30rpx;"
+											:nodes="item.work.description"></rich-text>
 									</view>
-									<view class="block-tag-box">
-										<view class="block-tag">{{i.teacher}}</view>
+								</view>
+							</view>
+						</view>
+					</view>
+					<!-- 活动 -->
+					<view class="detail-box-item" v-if="current == 2">
+						<view class="item-info">
+							<view class="t-icon t-icon-daiban"></view>
+							<view class="item-text">活动列表</view>
+							<view class="btn" @click="navData">
+								<view class="t-icon t-icon-fenlei"></view>
+								<view class="msg">详情列表</view>
+							</view>
+						</view>
+						<view style="margin-bottom: 20rpx;">
+							<view class="block-box" v-for="(item,i) in activityData" :key="i">
+								<view class="index" :style="{ backgroundColor: item.survey.progress === 'finish' || item.vote.progress === 'finish'? '#23b46c':'#f9c752'}" ></view>
+								<view class="class-block" style="width: 90%;justify-content: flex-start;">
+									<view style="display: flex; flex-direction: column;">
+										<view style="display: flex;margin-left: 30rpx;align-items: center;">
+											<view class="list-item-title">
+												{{item.survey.name || item.vote.name}}
+											</view>
+
+											<view class="block-tag-box" style="margin-left: 40rpx;">
+												<view class="block-tag">
+													{{item.survey.scope === 'private' ? '个人':'学校' || item.vote.scope === 'private' ? '个人':'学校'}}活动
+												</view>
+											</view>
+											<view class="block-tag-box" style="margin-left: 20rpx;">
+												<view class="block-tag">
+													{{item.survey.progress === 'finish' || item.vote.progress === 'finish' ? '已完成' : (item.survey.progress === 'going' || item.vote.progress === 'going' ? '进行中' : '待发布')}}
+												</view>
+											</view>
+										</view>
+
+										<rich-text class="block-subtitle" style="margin:10rpx 0 0 30rpx;"
+											:nodes="item.vote.description || item.survey.description"></rich-text>
 									</view>
-									<view class="block-subtitle">{{i.description}}</view>
 								</view>
 							</view>
 						</view>
@@ -123,39 +226,44 @@
 	} from 'vuex'
 	export default {
 		computed: {
-			...mapState('m_chart', ['homeworkData']),
+			...mapState('m_chart', ['assignment']),
 		},
 		data() {
 			return {
 				//模块名
 				list: [{
-					name: '评测详情'
+					name: '评测详情',
+					level: '',
+					image: 'https://ouch-cdn2.icons8.com/yFl5NWU3aVehLBlQf9ctvnZPqtm5U0hqM3IzWvFDCaQ/rs:fit:912:912/czM6Ly9pY29uczgu/b3VjaC1wcm9kLmFz/c2V0cy9wbmcvNzY5/LzY1ZTQxZmZjLTg1/YWQtNDYyMi1hYzU0/LWQ3NDEzZmY2NGI1/YS5wbmc.png',
 				}, {
-					name: '作业详情'
+					name: '作业详情',
+					level: '',
+					image: 'https://ouch-cdn2.icons8.com/AVOwJ9emg_ZOeHvQaunQAZlgeLsG-b1cGhiYvgoJ06g/rs:fit:912:912/czM6Ly9pY29uczgu/b3VjaC1wcm9kLmFz/c2V0cy9wbmcvNTAw/LzI5YjU1YWQ4LWMw/YTEtNDE1MS1iYmQw/LWIyMDdhYmRkOTE0/Mi5wbmc.png',
 				}, {
-					name: '活动详情'
+					name: '活动详情',
+					level: '',
+					image: 'https://ouch-cdn2.icons8.com/LW70TMgW1cGfYeGNSTEp7__kiKVgIhwdZwUmykdLYMY/rs:fit:912:912/czM6Ly9pY29uczgu/b3VjaC1wcm9kLmFz/c2V0cy9wbmcvOTI0/LzU3MWU4ZDZkLTg0/NzEtNGM5YS04MDJk/LTEzNTM5YmZmZTM2/YS5wbmc.png',
 				}],
 				//当前模块
 				current: 0,
 				//页面数据内容
-				pageData: '',
+				testData: {},
+				homeworkData: {},
+				activityData: {},
 				//完成内容
-				finishData: [],
+				testFinish: '',
+				homeworkFinish: '',
+				activityFinish: '',
 				//历史数据
 				historyData: {
-					test: [90, 89, 98, 100, 50, 55, 60],
-					homework: [10, 29, 38, 60, 50, 88, 100],
+					test: [50, 55, 60],
+					homework: [10, 60, 50, 88, 100],
 					activity: [70, 19, 28, 40, 60, 100, 83]
 				},
 				//时间戳
 				timeStamp: '',
 			};
 		},
-		watch: {
-			current() {
-				this.getFinishData()
-			}
-		},
 		onLoad(options) {
 			this.init()
 			if (options.index)
@@ -170,38 +278,32 @@
 		},
 		methods: {
 			...mapMutations('m_chart', ['updateTestArea', 'updateHomeworkArea', 'updateActivityArea']),
-			...mapMutations('m_children', ['updateHomeworkDetail']),
+			...mapMutations('m_children', ['updateDetail']),
 			//初始化页面
 			init() {
-				this.$getTimeStamp()
+				this.timeStamp = (new Date()).format("hh:mm")
 				this.$initHomework()
 				this.saveToStudyChart()
 				this.getLevel()
-				this.getFinishData()
+
 			},
 			//更改模块
-			changeModule(index) {
-				this.current = index.index
+			changeModule(e) {
+				this.current = e.index
 			},
 			//获得评判信息
 			getLevel() {
-				this.pageData[0].level = this.historyData.test[6] >= 40 ? (this.historyData.test[6] >= 70 ? '优秀' : '良好') :
-					'较差'
-				this.pageData[1].level = this.historyData.homework[6] >= 40 ? (this.historyData.homework[6] >= 70 ? '优秀' :
-					'良好') : '较差'
-				this.pageData[2].level = this.historyData.activity[6] >= 40 ? (this.historyData.activity[6] >= 70 ? '优秀' :
-					'良好') : '较差'
-			},
-			//获得完成数量
-			getFinishData() {
-				if (this.current === 0)
-					this.finishData = this.pageData[0].detail.data.filter(x => x.finish === true)
-				if (this.current === 1)
-					this.finishData = this.pageData[1].detail.data.filter(x => x.finish === true)
-				if (this.current === 2)
-					this.finishData = this.pageData[2].detail.data.filter(x => x.finish === true)
+				let testArr = this.historyData.test
+				let homeworkArr = this.historyData.homework
+				let activityArr = this.historyData.activity
+				this.list[0].level = testArr[testArr.length - 1] >= 40 ?
+					(testArr[testArr.length - 1] >= 70 ? '优秀' : '良好') : '较差'
+				this.list[1].level = homeworkArr[homeworkArr.length - 1] >= 40 ?
+					(homeworkArr[homeworkArr.length - 1] >= 70 ? '优秀' : '良好') : '较差'
+				this.list[2].level = activityArr[activityArr.length - 1] >= 40 ?
+					(activityArr[activityArr.length - 1] >= 70 ? '优秀' : '良好') : '较差'
 			},
-			//记录到图表
+			//记录完成率到图表
 			saveToStudyChart() {
 				let temp = {
 					categories: [],
@@ -210,30 +312,57 @@
 						"data": []
 					}]
 				}
-				//时间
-				temp.categories = this.$getRecentDateArray(7)
+				// 测试
+				this.historyData.test.push(parseInt(this.testFinish * 100 / this.testData.length))
+				if (this.historyData.test.length > 7)
+					this.historyData.test.shift()
+				temp.categories = this.$getRecentDateArray(this.historyData.test.length)
 				//数据
 				//解除对象指向同一块内存(拷贝)
 				temp.series[0].data = this.historyData.test
 				let testDataTemp = JSON.parse(JSON.stringify(temp))
 				this.updateTestArea(testDataTemp)
-
+				//作业
+				this.historyData.homework.push(parseInt(this.homeworkFinish * 100 / this.homeworkData
+					.length))
+				if (this.historyData.homework.length > 7)
+					this.historyData.homework.shift()
+				temp.categories = this.$getRecentDateArray(this.historyData.homework.length)
 				temp.series[0].data = this.historyData.homework
 				let homeworkDataTemp = JSON.parse(JSON.stringify(temp))
 				this.updateHomeworkArea(homeworkDataTemp)
-
+				//活动
+				this.historyData.activity.push(parseInt(this.activityFinish * 100 / this.activityData
+					.length))
+				if (this.historyData.activity.length > 7)
+					this.historyData.activity.shift()
+				temp.categories = this.$getRecentDateArray(this.historyData.activity.length)
 				temp.series[0].data = this.historyData.activity
 				let activityDataTemp = JSON.parse(JSON.stringify(temp))
 				this.updateActivityArea(activityDataTemp)
 			},
 			//导航到详情页面
-			navData(index) {
-				this.updateHomeworkDetail(this.pageData[this.current].detail.data)
-				uni.navigateTo({
-					url: `/subpkg/detaillist/detaillist?index=${index}`
-				})
-			}
+			navData() {
+				if (this.current === 0) {
+					this.updateDetail(this.testData)
+					uni.navigateTo({
+						url: `/subpkg/detaillist/examlist`
+					})
+				}
+				if (this.current === 1) {
+					this.updateDetail(this.homeworkData)
+					uni.navigateTo({
+						url: `/subpkg/detaillist/homeworklist`
+					})
+				}
+				if (this.current === 2) {
+					this.updateDetail(this.activityData)
+					uni.navigateTo({
+						url: `/subpkg/detaillist/activitylist`
+					})
+				}
 
+			}
 		}
 	}
 </script>
@@ -241,6 +370,12 @@
 <style lang="scss">
 	@import '@/pages/common/blockmsg.scss';
 
+	.list-item-title {
+		font-size: 30rpx;
+		font-weight: bold;
+		color: $color-title;
+	}
+
 	.home-topinfo {
 		background: linear-gradient($color-yellow, $page-background-color) !important;
 	}
@@ -260,13 +395,13 @@
 			border-radius: $card-border-radius;
 
 			.card-title {
-				font-size: 48rpx;
+				font-size: 50rpx;
 				font-weight: bold;
 				color: #FFF;
 			}
 
 			.card-subtitle {
-				font-size: 28rpx;
+				font-size: 30rpx;
 				color: #FFF;
 			}
 
@@ -357,4 +492,10 @@
 		margin-left: 10rpx;
 		font-size: 30rpx;
 	}
+
+	.btn {
+		display: flex;
+		align-items: center;
+		margin: 0 5rpx 0 auto;
+	}
 </style>

+ 2 - 2
pages/interactive/interactive.vue

@@ -44,11 +44,11 @@
 			}
 		},
 		onLoad() {
-			this.$getTimeStamp()
+			this.timeStamp = (new Date()).format("hh:mm")
 		},
 		//刷新页面
 		onPullDownRefresh() {
-			this.$getTimeStamp()
+			this.timeStamp = (new Date()).format("hh:mm")
 			console.log('refresh');
 			setTimeout(function() {
 				uni.stopPullDownRefresh();

BIN
static/tab-icons/grade.png


BIN
static/tab-icons/home.png


BIN
static/tab-icons/homework.png


BIN
static/tab-icons/interactive.png


BIN
static/tab-icons/interactiveselect.png


BIN
static/tab-icons/my.png


+ 4 - 4
store/chart.js

@@ -10,7 +10,7 @@ export default {
 		gradeData: '',
 		
 		//作业图表数据
-		homeworkData: {
+		assignment: {
 			//评测完成率
 			testData: '',
 			homeworkData: '',
@@ -39,13 +39,13 @@ export default {
 		
 		//更新作业模块数据
 		updateTestArea(state, testData){
-			state.homeworkData.testData = testData
+			state.assignment.testData = testData
 		},
 		updateHomeworkArea(state, homeworkData){
-			state.homeworkData.homeworkData = homeworkData
+			state.assignment.homeworkData = homeworkData
 		},
 		updateActivityArea(state, activityData){
-			state.homeworkData.activityData = activityData
+			state.assignment.activityData = activityData
 		},
 
 	},

+ 4 - 4
store/children.js

@@ -18,7 +18,7 @@ export default {
 			noAttendNum: '',
 		},
 		//评测作业活动内容
-		homeworkDetail: '',
+		detailList: '',
 	}),
 	//模块方法(修改数据)
 	mutations: {
@@ -46,8 +46,8 @@ export default {
 			state.records = records
 		},
 		//更新评测作业活动信息
-		updateHomeworkDetail(state, homeworkDetail) {
-			state.homeworkDetail = homeworkDetail
+		updateDetail(state, detailList) {
+			state.detailList = detailList
 		},
 
 		
@@ -79,6 +79,6 @@ export default {
 	},
 	//模块属性(数据包装)
 	getters: {
-
+		
 	}
 }

+ 14 - 14
subpkg/calendar/calendar.vue

@@ -4,28 +4,28 @@
 
 		<view class="card-box">
 
-			<view class="card-item">
-				<view class="total" v-if="topImage === false">
+			<view class="card-item" v-if="topInfo === false">
+				<view class="total">
 					<view class="total-title">本月打卡</view>
 					<view class="total-content">
 						<view class="number-box">
-							<view class="number">{{calendar.isAttendNum}}</view>
+							<view class="number" style="color: #4169E1;">{{calendar.isAttendNum}}</view>
 							<view class="number-detail">打卡次数</view>
 						</view>
 						<view class="number-box">
-							<view class="number">{{calendar.noAttendNum}}</view>
+							<view class="number" style="color: #ff5959;">{{calendar.noAttendNum}}</view>
 							<view class="number-detail">缺卡次数</view>
 						</view>
 						<view class="number-box">
 							<text class="number"
 								:style="{color: monthAttendQuality==='优秀'?'#4169E1':(monthAttendQuality === '良好'?'#f9c752':'#3B4144')}">{{monthAttendQuality}}</text>
-							<view class="number-detail">本月出勤质量</view>
+							<view class="number-detail">出勤质量</view>
 						</view>
 					</view>
 				</view>
-				<view class="flex" style="justify-content: center;" v-if="topImage === true">
+				<!-- <view class="flex" style="justify-content: center;" >
 					<view class="image" :style="{backgroundImage:`url(${image})`}"></view>
-				</view>
+				</view> -->
 			</view>
 
 			<view class="card-item">
@@ -70,8 +70,8 @@
 		},
 		data() {
 			return {
-				image: 'https://image.meiye.art/pic_1632658822816Dw1wc8QoTOnItNvJI76v6',
-				topImage: false,
+				// image: 'https://image.meiye.art/pic_1632658822816Dw1wc8QoTOnItNvJI76v6',
+				topInfo: false,
 				//当日打卡信息
 				attendance: '',
 				attendanceTime: '',
@@ -91,9 +91,9 @@
 			//选中日期改变回调
 			change(e) {
 				if(e.month != this.month){
-					this.topImage = true
+					this.topInfo = true
 				}else{
-					this.topImage = false
+					this.topInfo = false
 				}
 			},
 			//今日打卡
@@ -185,7 +185,7 @@
 		.total-title {
 			font-size: 32rpx;
 			font-weight: bold;
-			color: #2C2C2C;
+			color: $color-title;
 			margin: 30rpx 30rpx 0rpx 30rpx;
 		}
 
@@ -203,7 +203,7 @@
 				.number {
 					font-size: 46rpx;
 					font-weight: bold;
-					color: #2C2C2C;
+					color: $color-title;
 				}
 
 				.number-detail {
@@ -246,7 +246,7 @@
 			width: auto;
 
 			.msg-text {
-				color: #2C2C2C;
+				color: $color-title;
 				font-weight: bold;
 				font-size: 36rpx;
 				margin-left: 20rpx;

+ 72 - 0
subpkg/common/detailpage.scss

@@ -0,0 +1,72 @@
+.detail-box {
+		margin: -30rpx 20rpx 20rpx 20rpx;
+
+		.detail-item {
+			display: flex;
+			flex-direction: column;
+			border-radius: $card-border-radius;
+			margin-bottom: 20rpx;
+			background-color: #fff;
+			padding: 20rpx;
+				.index{
+					height: 36rpx;
+					width: 10rpx;
+					border-radius: 100rpx;
+				}
+				.name {
+					font-size: 36rpx;
+					line-height: 36rpx;
+					font-weight: bold;
+					margin-left: 15rpx;
+				}
+			}
+
+		.content-box {
+			display: flex;
+			flex-direction: column;
+
+			.subtitle {
+				font-size: 26rpx;
+				color: $color-subtitle;
+			}
+			.subtitle-info{
+				font-size: 30rpx;
+				font-weight: bold;
+				color: $color-title;
+			}
+			
+			.content-detail-box{
+				margin: 20rpx 0;
+				padding: 20rpx;
+				background-color: #f6f6f6;
+				border-radius: $card-border-radius;
+				
+				.content-detail {
+					font-size: 30rpx;
+					font-weight: bold;
+					color: $color-title;
+					word-break: break-all;
+				}
+				.content-subtitle {
+					font-size: 26rpx;
+					color: $color-subtitle;
+				}
+			}
+		}
+	}
+
+	.flex {
+		display: flex;
+		align-items: center;
+	}
+
+	.block-tag-box {
+		border-radius: 6rpx;
+		border: 1rpx solid $color-mixblue;
+		padding: 5rpx 14rpx;
+
+		.block-tag {
+			font-size: 22rpx;
+			color: $color-mixblue;
+		}
+	}

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 71 - 99
subpkg/common/iconfont-weapp-icon.css


+ 25 - 30
subpkg/common/videopage.scss

@@ -1,17 +1,5 @@
 .container{
 	width: 100%;
-	
-		.block-tag-box {
-			margin-left: 40rpx;
-			border-radius: 50rpx;
-			border: 1rpx solid $color-mixblue;
-			padding: 8rpx;
-		
-			.block-tag {
-				font-size: 22rpx;
-				color: $color-mixblue;
-			}
-		}
 		
 		.video-box {
 			width: 100%;
@@ -21,23 +9,27 @@
 			}
 		}
 		
+		.block-tag-box{
+			border-radius: 6rpx;
+			border: 1rpx solid $color-mixblue;
+			padding: 5rpx 14rpx;
+			.block-tag{
+				font-size: 22rpx;
+				color: $color-mixblue;
+			}
+		}
+		
 		.info-box {
 			width: 650rpx;
 			display: flex;
-			flex-direction: column;
+			align-items: center;
 			justify-content: space-between;
 			padding: 30rpx 50rpx;
-			height: 250rpx;
+			height: 160rpx;
 			background-color: #FFF;
 		
-			.info-text {
-				font-size: 30rpx;
-				font-weight: bold;
-				color: $color-title;
-			}
 		
 			.info-name {
-				margin-left: 40rpx;
 				font-size: 40rpx;
 				font-weight: bold;
 				color: $color-title;
@@ -47,6 +39,12 @@
 				font-size: 22rpx;
 				color: $color-subtitle;
 			}
+			
+			.info-msg{
+				font-weight: bold;
+				font-size: 30rpx;
+				color: $color-subtitle;
+			}
 		
 			.info-mini {
 				font-size: 20rpx;
@@ -55,21 +53,18 @@
 				color: $color-title;
 			}
 		}
-		
-		.flex {
+		.flex-box{
 			display: flex;
-			align-items: center;
+			justify-content: space-between;
+			flex-direction: column;
 		}
-		
-		.flex-column {
+		.flex{
 			display: flex;
-			align-items: center;
-			flex-direction: column;
+			justify-content: space-between;
 		}
-		
 		.t-icon {
-			width: 40rpx;
-			height: 40rpx;
+			width: 50rpx;
+			height: 50rpx;
 		}
 	}
 	

+ 107 - 0
subpkg/detaillist/activitylist.vue

@@ -0,0 +1,107 @@
+<template>
+	<view class="container">
+		<!-- 返回按钮 -->
+		<back text="详情列表"></back>
+
+		<view style="margin: 20rpx;">
+			<u-skeleton :rows="detailList.length" :rowsHeight="height" :loading="loading">
+			</u-skeleton>
+		</view>
+
+		<view class="detail-box" v-if="!loading">
+			<view class="detail-item" v-for="(item,index) in detailList" :key="index">
+				<view class="flex" style="width: 100%;height: 90rpx;">
+					<view class="flex" style="margin: -30rpx 0 0 10rpx;">
+						<view class="index"
+							:style="{backgroundColor: item.survey.progress === 'finish'||item.vote.progress === 'finish'? '#23b46c': '#f9c752' }">
+						</view>
+						<view class="name">{{item.survey.name||item.vote.name}}</view>
+					</view>
+
+					<view class="t-icon t-icon-yiwancheng1"
+						v-if="item.survey.progress === 'finish'||item.vote.progress === 'finish'"
+						style="margin-left: auto; width: 90rpx; height: 90rpx;"></view>
+					<view class="t-icon t-icon-jinhangzhong"
+						v-if="item.survey.progress === 'going'||item.vote.progress === 'going'"
+						style="margin-left: auto; width: 90rpx; height: 90rpx;"></view>
+					<view class="t-icon t-icon-daifabu"
+						v-if="item.survey.progress === 'pending'||item.vote.progress === 'pending'"
+						style="margin-left: auto; width: 90rpx; height: 90rpx;"></view>
+				</view>
+				<!-- 正文 -->
+				<view class="content-box">
+					<view style="display:flex;flex-direction: column;padding: 0 20rpx;">
+						<rich-text class="subtitle-info" style="margin-bottom: 15rpx;"
+							:nodes="item.survey.description||item.vote.description">
+						</rich-text>
+						<view class="flex">
+							<view class="subtitle">布置老师:</view>
+							<view class="subtitle-info" style="margin-left: 10rpx;">
+								{{item.survey.creatorId||item.vote.creatorId}}
+							</view>
+							<view class="subtitle" style="margin-left: 20rpx;">截止时间:</view>
+							<view class="subtitle-info" style="margin-left: 10rpx;" v-if="item.survey">
+								{{$timestampToTime(item.survey.endTime)}}
+							</view>
+							<view class="subtitle-info" style="margin-left: 10rpx;" v-if="item.vote">
+								{{$timestampToTime(item.vote.endTime)}}
+							</view>
+						</view>
+					</view>
+					<view class="content-detail-box">
+						<view class="content-detail"></view>
+					</view>
+				</view>
+
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState,
+		mapMutations
+	} from 'vuex'
+	export default {
+		computed: {
+			...mapState('m_children', ['detailList'])
+		},
+		data() {
+			return {
+				//骨架页配置
+				loading: true,
+				height: ['200px', '200px', '200px', '200px', '200px', '200px', '200px', '200px', '200px', '200px'],
+			};
+		},
+		onLoad(options) {
+			uni.$u.sleep(1500).then(() => {
+				this.loading = false
+			})
+		},
+		methods: {
+			openDocument() {
+				//下载并打开文档
+				uni.downloadFile({
+					url: 'https://cdn.zhoukaiwen.com/kevin.pdf',
+					success: function(res) {
+						let filePath = res.tempFilePath;
+						uni.openDocument({
+							filePath: filePath,
+							showMenu: true,
+							success: function(res) {
+								console.log('打开文档成功');
+							}
+						});
+					}
+				})
+			}
+
+
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/subpkg/common/detailpage.scss';
+</style>

+ 0 - 159
subpkg/detaillist/detaillist.vue

@@ -1,159 +0,0 @@
-<template>
-	<view class="container">
-		<!-- 返回按钮 -->
-		<back text="详情列表"></back>
-
-		<view style="margin: 20rpx;">
-			<u-skeleton :rows="homeworkDetail.length" :rowsWidth="width" :rowsHeight="height" :loading="loading">
-			</u-skeleton>
-		</view>
-
-		<view class="detail-box" v-if="!loading">
-			<view class="detail-item" v-for="(item,index) in homeworkDetail" :key="index">
-				<view class="flex" style="width: 100%;">
-					<view class="capsule" :style="{backgroundColor: current == 0 ? '#4169E1':(current == 1 ? '#ff8caf': '#f9c752')}">
-						<view class="t-icon t-icon-buke" v-if="current == 0"></view>
-						<view class="t-icon t-icon-zuoye" v-if="current == 1"></view>
-						<view class="t-icon t-icon-kehugenjin" v-if="current == 2"></view>
-						<view class="name">{{item.name}}</view>
-					</view>
-					
-					<view class="t-icon t-icon-yiwancheng" v-if="item.finish"
-						style="margin-left: auto; width: 80rpx; height: 80rpx;"></view>
-				</view>
-				<!-- 正文 -->
-				<view class="content-box">
-					<view class="flex" style="justify-content: space-between; width: 70%;">
-						<view class="subtitle">布置老师:</view>
-						<view class="block-tag-box">
-							<view class="block-tag">{{item.teacher}}</view>
-						</view>
-						<view class="subtitle">所属学科:</view>
-						<view class="block-tag-box">
-							<view class="block-tag">{{item.subject}}</view>
-						</view>
-					</view>
-					<view class="subtitle">{{item.description}}</view>
-					
-					<view class="content-detail-box">
-						<view class="content-detail">{{item.content}}</view>
-					</view>
-					
-				</view>
-			</view>
-		</view>
-
-	</view>
-</template>
-
-<script>
-	import {
-		mapState,
-		mapMutations
-	} from 'vuex'
-	export default {
-		computed: {
-			...mapState('m_children', ['homeworkDetail'])
-		},
-		data() {
-			return {
-				//骨架页配置
-				loading: true,
-				height: ['160px', '160px', '160px', '160px', '160px', '160px', '160px', '160px', '160px', '160px'],
-				width: ['100%', '100%', '100%', '100%', '100%', '100%', '100%', '100%', '100%', '100%'],
-				current: '',
-			};
-		},
-		onLoad(options) {
-			this.current = options.index
-			console.log(this.current);
-			// 延时
-			uni.$u.sleep(1500).then(() => {
-				this.loading = false
-			})
-		},
-		methods: {
-
-		}
-	}
-</script>
-
-<style lang="scss">
-	.detail-box {
-		margin: -30rpx 20rpx 20rpx 20rpx;
-
-		.detail-item {
-			display: flex;
-			flex-direction: column;
-			border-radius: $card-border-radius;
-			margin-bottom: 20rpx;
-			background-color: #fff;
-			padding: 20rpx;
-			.capsule{
-				margin-left: 10rpx;
-				display: flex;
-				align-items: center;
-				padding: 0 20rpx;
-				background-color: $color-mixblue;
-				border-radius: 100rpx;
-				height: 60rpx;
-				.t-icon {
-					width: 30rpx;
-					height: 30rpx;
-				}
-				
-				.name {
-					font-size: 30rpx;
-					font-weight: bold;
-					color: #FFF;
-					margin-left: 10rpx;
-					line-height: 90rpx;
-				}
-			}
-		}
-
-		.content-box {
-			padding-top: 10rpx;
-			display: flex;
-			flex-direction: column;
-
-			.subtitle {
-				padding: 10rpx 10rpx 10rpx 20rpx;
-				font-size: 26rpx;
-				font-weight: bold;
-				color: $color-title;
-			}
-			
-			.content-detail-box{
-				margin: 20rpx 0 20rpx 0;
-				padding: 20rpx;
-				background-color: #f6f6f6;
-				border-radius: $card-border-radius;
-				
-				.content-detail {
-					font-size: 32rpx;
-					font-weight: bold;
-					color: $color-title;
-					word-break: break-all;
-				}
-			}
-		}
-	}
-
-
-	.flex {
-		display: flex;
-		align-items: center;
-	}
-
-	.block-tag-box {
-		border-radius: 20rpx;
-		border: 1rpx solid $color-mixblue;
-		padding: 6rpx;
-
-		.block-tag {
-			font-size: 22rpx;
-			color: $color-mixblue;
-		}
-	}
-</style>

+ 101 - 0
subpkg/detaillist/examlist.vue

@@ -0,0 +1,101 @@
+<template>
+	<view class="container">
+		<!-- 返回按钮 -->
+		<back text="详情列表"></back>
+
+		<view style="margin: 20rpx;">
+			<u-skeleton :rows="detailList.length" :rowsHeight="height" :loading="loading">
+			</u-skeleton>
+		</view>
+
+		<view class="detail-box" v-if="!loading">
+			<view class="detail-item" v-for="(item,index) in detailList" :key="index">
+				<view class="flex" style="width: 100%;height: 90rpx;">
+					<view class="flex" style="margin: -30rpx 0 0 10rpx;">
+						<view class="index" :style="{backgroundColor: item.examInfo.progress === 'finish'? '#23b46c': '#4169E1' }"></view>
+						<view class="name">{{item.examInfo.name}}</view>
+					</view>
+
+					<view class="t-icon t-icon-yiwancheng1" v-if="item.examInfo.progress === 'finish'"
+						style="margin-left: auto; width: 90rpx; height: 90rpx;"></view>
+					<view class="t-icon t-icon-jinhangzhong" v-if="item.examInfo.progress === 'going'"
+						style="margin-left: auto; width: 90rpx; height: 90rpx;"></view>
+					<view class="t-icon t-icon-daifabu" v-if="item.examInfo.progress === 'pending'"
+						style="margin-left: auto; width: 90rpx; height: 90rpx;"></view>
+				</view>
+				<!-- 正文 -->
+				<view class="content-box">
+					<view style="display:flex;flex-direction: column;padding: 0 20rpx;">
+						<view class="flex" style="margin-bottom: 15rpx;">
+							<view class="block-tag-box">
+								<view class="block-tag">{{item.examInfo.subjects[0].name}}</view>
+							</view>
+							<view class="block-tag-box" style="margin-left: 20rpx;">
+								<view class="block-tag">{{item.examInfo.examType.name}}</view>
+							</view>
+						</view>
+						<view class="flex">
+							<view class="subtitle">布置老师:</view>
+							<view class="subtitle-info" style="margin-left: 10rpx;">{{item.examInfo.creatorId}}</view>
+							<view class="subtitle" style="margin-left: 20rpx;">截止时间:</view>
+							<view class="subtitle-info" style="margin-left: 10rpx;">{{$timestampToTime(item.examInfo.endTime)}}</view>
+						</view>
+					</view>
+
+					<view class="content-detail-box">
+						<view class="content-detail">{{item.examInfo.papers[0].name}}</view>
+					</view>
+				</view>
+
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import {
+		mapState,
+		mapMutations
+	} from 'vuex'
+	export default {
+		computed: {
+			...mapState('m_children', ['detailList'])
+		},
+		data() {
+			return {
+				//骨架页配置
+				loading: true,
+				height: ['200px', '200px', '200px', '200px', '200px', '200px', '200px', '200px', '200px', '200px'],
+			};
+		},
+		onLoad(options) {
+			uni.$u.sleep(1500).then(() => {
+				this.loading = false
+			})
+		},
+		methods: {
+			openDocument() {
+				//下载并打开文档
+				uni.downloadFile({
+					url: 'https://cdn.zhoukaiwen.com/kevin.pdf',
+					success: function(res) {
+						var filePath = res.tempFilePath;
+						uni.openDocument({
+							filePath: filePath,
+							success: function(res) {
+								console.log('打开文档成功');
+							}
+						});
+					}
+				})
+			}
+			
+			
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/subpkg/common/detailpage.scss';
+</style>

+ 108 - 0
subpkg/detaillist/homeworklist.vue

@@ -0,0 +1,108 @@
+<template>
+	<view class="container">
+		<!-- 返回按钮 -->
+		<back text="详情列表"></back>
+
+		<view style="margin: 20rpx;">
+			<u-skeleton :rows="detailList.length" :rowsHeight="height" :loading="loading">
+			</u-skeleton>
+		</view>
+
+		<view class="detail-box" v-if="!loading">
+			<view class="detail-item" v-for="(item,index) in detailList" :key="index">
+				<view class="flex" style="width: 100%;height: 90rpx;">
+					<view class="flex" style="margin: -30rpx 0 0 10rpx;">
+						<view class="index" :style="{backgroundColor: item.work.progress === 'finish'? '#23b46c': '#ff8caf' }"></view>
+						<view class="name">{{item.work.name}}</view>
+					</view>
+				
+					<view class="t-icon t-icon-yiwancheng1" v-if="item.work.progress === 'finish'"
+						style="margin-left: auto; width: 90rpx; height: 90rpx;"></view>
+					<view class="t-icon t-icon-jinhangzhong" v-if="item.work.progress === 'going'"
+						style="margin-left: auto; width: 90rpx; height: 90rpx;"></view>
+					<view class="t-icon t-icon-daifabu" v-if="item.work.progress === 'pending'"
+						style="margin-left: auto; width: 90rpx; height: 90rpx;"></view>
+				</view>
+				<!-- 正文 -->
+				<view class="content-box">
+
+					<view style="display:flex;flex-direction: column;padding: 0 20rpx;">
+						<rich-text class="subtitle-info" style="margin-bottom: 15rpx;" :nodes="item.work.description"></rich-text>
+						<view class="flex">
+							<view class="subtitle">布置老师:</view>
+							<view class="subtitle-info" style="margin-left: 10rpx;">{{item.work.creatorId}}</view>
+							<view class="subtitle" style="margin-left: 20rpx;">截止时间:</view>
+							<view class="subtitle-info" style="margin-left: 10rpx;">{{$timestampToTime(item.work.endTime)}}</view>
+						</view>
+						
+					</view>
+
+					<view class="content-detail-box">
+						<view class="attachment-box" @click="openDocument">
+							<view class="t-icon t-icon-WORD"></view>
+							<view style="display: flex;flex-direction: column;margin-left: 20rpx;">
+								<view class="content-detail">文件名: {{item.work.attachments[0].name}}</view>
+								<view class="content-subtitle">文件大小: {{item.work.attachments[0].size/8/1024}}KB</view>
+							</view>
+						</view>
+					</view>
+				</view>
+
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import {
+		mapState,
+		mapMutations
+	} from 'vuex'
+	export default {
+		computed: {
+			...mapState('m_children', ['detailList'])
+		},
+		data() {
+			return {
+				//骨架页配置
+				loading: true,
+				height: ['200px', '200px', '200px', '200px', '200px', '200px', '200px', '200px', '200px', '200px'],
+			};
+		},
+		onLoad(options) {
+			uni.$u.sleep(1500).then(() => {
+				this.loading = false
+			})
+		},
+		methods: {
+			openDocument() {
+				//下载并打开文档
+				uni.downloadFile({
+					url: 'https://cdn.zhoukaiwen.com/kevin.pdf',
+					success: function(res) {
+						var filePath = res.tempFilePath;
+						uni.openDocument({
+							filePath: filePath,
+							success: function(res) {
+								console.log('打开文档成功');
+							}
+						});
+					}
+				})
+			}
+			
+			
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/subpkg/common/detailpage.scss';
+	.attachment-box{
+		display: flex;
+		align-items: center;
+		padding: 10rpx;
+		border-radius: $card-border-radius;
+	}
+</style>

+ 0 - 1
subpkg/guide/accesspage.vue

@@ -34,7 +34,6 @@
 		},
 		methods: {
 			...mapMutations('m_parent', ['updateParentDetail']),
-
 			//获取用户手机号
 			async getPhoneNumber(e) {
 				if (e.detail.errMsg !== "getPhoneNumber:ok") {

+ 16 - 1
subpkg/login/login.vue

@@ -11,7 +11,7 @@
 			</view>
 
 			<view class="form-box">
-				<button @click="$noMultipleClicks(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;">
@@ -95,6 +95,21 @@
 					}
 				});
 			},
+			// 处理多次点击
+			noMultipleClicks(methods) {
+				//复制this对象指向当时的this,防止找不到原来的对象
+				let that = this;
+				if (that.noClick) {
+					that.noClick = false;
+					//点击方法
+					methods();
+					setTimeout(function() {
+						that.noClick = true;
+					}, 2000)
+				} else {
+					uni.$showMsg('正在加载中', 500)
+				}
+			}
 
 		},
 	}

+ 44 - 30
subpkg/video/livepage.vue

@@ -1,37 +1,36 @@
-<template>
+<template>
 	<view class="container">
 		<back text="课程直播"></back>
+		<!-- 视频资源 -->
 		<view class="video-box">
-			<video class="video" id="classVideo" :src="video" controls></video>
+			<video class="video" id="classVideo" :src="videoSrc" controls></video>
 		</view>
+		<!-- 信息模块 -->
 		<view class="info-box">
-			<view class="flex" style="justify-content: space-between;">
-				<view class="flex">
-					<view class="info-text">当前科目:</view>
-					<view class="info-name">{{classInfo.name}}</view>
-				</view>
-				<view class="flex">
-					<view class="info-time">时间: {{classInfo.time}}</view>
-				</view>
-			</view>
-			<view class="flex">
-				<view class="info-text">授课老师:</view>
-				<view class="block-tag-box">
-					<view class="block-tag">{{classInfo.teacher}}</view>
+			<view class="flex-box" style="width: 68%;height: 100%;">
+				<view class="info-name">{{classInfo.title}}</view>
+				<view style="display: flex;flex-direction: column;">
+					<view class="info-time">课程时间:</view>
+					<view style="display: flex;">
+						<view class="info-msg" style="margin-right: 20rpx;">{{today}}</view>
+						<view class="info-msg">{{classInfo.time}}</view>
+					</view>
 				</view>
 			</view>
-			<view class="flex" style="justify-content: space-around;">
-				<view class="flex-column">
-					<view class="t-icon t-icon-tongzhihuotixing"></view>
-					<view class="info-mini">通知</view>
-				</view>
-				<view class="flex-column">
-					<view class="t-icon t-icon-baocun"></view>
-					<view class="info-mini">保存</view>
+			<view class="flex-box" style=" width: 32%;height: 100%;">
+				<view class="flex">
+					<view class="block-tag-box">
+						<view class="block-tag">{{classInfo.name}}</view>
+					</view>
+
+					<view class="block-tag-box">
+						<view class="block-tag">{{classInfo.teacher}}</view>
+					</view>
 				</view>
-				<view class="flex-column">
-					<view class="t-icon t-icon-fenxiang"></view>
-					<view class="info-mini">分享</view>
+
+				<view class="flex" style="margin: 0 10rpx;">
+					<view class="t-icon t-icon-baocun" @click="saveVideo"></view>
+					<view class="t-icon t-icon-fenxiang" ></view>
 				</view>
 			</view>
 		</view>
@@ -52,19 +51,34 @@
 		},
 		data() {
 			return {
-				video: 'https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/%E7%AC%AC1%E8%AE%B2%EF%BC%88uni-app%E4%BA%A7%E5%93%81%E4%BB%8B%E7%BB%8D%EF%BC%89-%20DCloud%E5%AE%98%E6%96%B9%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B@20200317.mp4',
+				videoSrc: 'https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/%E7%AC%AC1%E8%AE%B2%EF%BC%88uni-app%E4%BA%A7%E5%93%81%E4%BB%8B%E7%BB%8D%EF%BC%89-%20DCloud%E5%AE%98%E6%96%B9%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B@20200317.mp4',
 				classInfo: '',
+				today: '',
 			};
 		},
 		onLoad(options) {
 			this.classInfo = this.classList[options.info]
-			console.log(this.classInfo);
+			this.getToday()
 			this.videoContext = uni.createVideoContext('classVideo')
 		},
-		methods: {}
+		methods: {
+			getToday() {
+				this.today = (new Date()).format("yyyy-MM-dd")
+			},
+			saveVideo(){
+				console.log('点击保存');
+				let that = this
+				uni.saveVideoToPhotosAlbum({
+					filePath: that.videoSrc,
+					success: function() {
+						console.log('保存成功')
+					}
+				})
+			}
+		}
 	}
 </script>
 
 <style lang="scss">
-@import '@/subpkg/common/videopage.scss';
+	@import '@/subpkg/common/videopage.scss';
 </style>

+ 44 - 29
subpkg/video/videopage.vue

@@ -1,37 +1,36 @@
 <template>
 	<view class="container">
 		<back text="课程回放"></back>
+		<!-- 视频资源 -->
 		<view class="video-box">
-			<video class="video" id="classVideo" :src="video" controls></video>
+			<video class="video" id="classVideo" :src="videoSrc" controls></video>
 		</view>
+		<!-- 信息模块 -->
 		<view class="info-box">
-			<view class="flex" style="justify-content: space-between;">
-				<view class="flex">
-					<view class="info-text">当前科目:</view>
-					<view class="info-name">{{classInfo.name}}</view>
-				</view>
-				<view class="flex">
-					<view class="info-time">时间: {{classInfo.time}}</view>
-				</view>
-			</view>
-			<view class="flex">
-				<view class="info-text">授课老师:</view>
-				<view class="block-tag-box">
-					<view class="block-tag">{{classInfo.teacher}}</view>
+			<view class="flex-box" style="width: 68%;height: 100%;">
+				<view class="info-name">{{classInfo.title}}</view>
+				<view style="display: flex;flex-direction: column;">
+					<view class="info-time">课程时间:</view>
+					<view style="display: flex;">
+						<view class="info-msg" style="margin-right: 20rpx;">{{today}}</view>
+						<view class="info-msg">{{classInfo.time}}</view>
+					</view>
 				</view>
 			</view>
-			<view class="flex" style="justify-content: space-around;">
-				<view class="flex-column">
-					<view class="t-icon t-icon-tongzhihuotixing"></view>
-					<view class="info-mini">通知</view>
-				</view>
-				<view class="flex-column">
-					<view class="t-icon t-icon-baocun"></view>
-					<view class="info-mini">保存</view>
+			<view class="flex-box" style=" width: 32%;height: 100%;">
+				<view class="flex">
+					<view class="block-tag-box">
+						<view class="block-tag">{{classInfo.name}}</view>
+					</view>
+
+					<view class="block-tag-box">
+						<view class="block-tag">{{classInfo.teacher}}</view>
+					</view>
 				</view>
-				<view class="flex-column">
-					<view class="t-icon t-icon-fenxiang"></view>
-					<view class="info-mini">分享</view>
+
+				<view class="flex" style="margin: 0 10rpx;">
+					<view class="t-icon t-icon-baocun" @click="saveVideo"></view>
+					<view class="t-icon t-icon-fenxiang" ></view>
 				</view>
 			</view>
 		</view>
@@ -52,19 +51,35 @@
 		},
 		data() {
 			return {
-				video: 'https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/%E7%AC%AC1%E8%AE%B2%EF%BC%88uni-app%E4%BA%A7%E5%93%81%E4%BB%8B%E7%BB%8D%EF%BC%89-%20DCloud%E5%AE%98%E6%96%B9%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B@20200317.mp4',
+				videoSrc: 'https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/%E7%AC%AC1%E8%AE%B2%EF%BC%88uni-app%E4%BA%A7%E5%93%81%E4%BB%8B%E7%BB%8D%EF%BC%89-%20DCloud%E5%AE%98%E6%96%B9%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B@20200317.mp4',
 				classInfo: '',
+				today: '',
 			};
 		},
 		onLoad(options) {
 			this.classInfo = this.classList[options.info]
-			console.log(this.classInfo);
+			this.getToday()
 			this.videoContext = uni.createVideoContext('classVideo')
 		},
-		methods: {}
+		methods: {
+			getToday() {
+				this.today = (new Date()).format("yyyy-MM-dd")
+			},
+			saveVideo(){
+				console.log('点击保存');
+				let that = this
+				uni.saveVideoToPhotosAlbum({
+					filePath: that.videoSrc,
+					success: function() {
+						console.log('保存成功')
+					}
+				})
+			}
+		}
 	}
 </script>
 
 <style lang="scss">
-@import '@/subpkg/common/videopage.scss';
+	@import '@/subpkg/common/videopage.scss';
 </style>
+

+ 1 - 1
subpkg/z-calendar/dateBox.vue

@@ -5,7 +5,7 @@
 			<view class="calendar_date" :class="{ isSelected: dateInfo.isSelected }" :style="{
 						height: cellHeight + 'rpx',
 						width: cellHeight + 'rpx',
-						color: swiperMode === 'open' ? dateInfo.type === 'cur' ? '#2C2C2C' : '#959595' : '#2C2C2C',
+						color: swiperMode === 'open' ? dateInfo.type === 'cur' ? '#3B4144' : '#959595' : '#3B4144',
 						backgroundColor: dateInfo.isSelected ? dateActiveColor : ''
 					}" @tap="chooseDate(dateInfo, dateIndex)">
 				<view class="calendar_date__number">{{ dateInfo.date }}</view>

+ 1 - 1
subpkg/z-calendar/zsy-calendar.vue

@@ -611,7 +611,7 @@
 	.calendar_info .title {
 		font-size: 32rpx;
 		font-weight: bold;
-		color: #2C2C2C;
+		color: $color-title;
 	}
 
 	.calendar_info .desc {

+ 8 - 12
uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js

@@ -1,5 +1,5 @@
 // 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性
-const color = ["#4169E1", "#ff5959", "#f9c752", "#bdd2ef", "#00b894", "#ff8caf", "#FC8452", "#9A60B4"];
+const color = ["#4169E1", "#ff5959", "#f9c752", "#bdd2ef", "#23b46c", "#ff8caf", "#FC8452", "#9A60B4"];
 // 提示窗配置
 const tooltip = {
 	"showBox": true,
@@ -46,8 +46,10 @@ const markLine = {
 		"labelBgOpacity": 0,
 		"yAxisIndex": 0
 	}]
-}
-
+};
+const padding = [
+	0, 10, 20, 5
+]
 
 //事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改
 const formatDateTime = (timeStamp, returnType) => {
@@ -143,9 +145,7 @@ const cfu = {
 		"timing": "easeOut",
 		"duration": 500,
 		"color": color,
-		"padding": [
-			0, 10, 15, 5
-		],
+		"padding": padding,
 		"dataLabel": false,
 		"fontSize": 12,
 		"xAxis": X,
@@ -165,9 +165,7 @@ const cfu = {
 		"timing": "easeOut",
 		"duration": 500,
 		"color": color,
-		"padding": [
-			0, 10, 15, 5
-		],
+		"padding": padding,
 		"dataLabel": false,
 		"fontSize": 12,
 		"xAxis": X,
@@ -190,9 +188,7 @@ const cfu = {
 		"timing": "easeOut",
 		"duration": 500,
 		"color": color,
-		"padding": [
-			0, 10, 15, 5
-		],
+		"padding": padding,
 		"dataLabel": false,
 		"fontSize": 12,
 		"xAxis": X,

+ 1 - 2
uni_modules/uview-ui/components/u-skeleton/u-skeleton.vue

@@ -14,11 +14,10 @@
 						}" :class="[animate && 'animate']"></view>
 				<view class="u-skeleton__wrapper__content__rows" :class="[animate && 'animate']"
 					v-for="(item, index) in rowsArray" :key="index" :style="{
-							 width: item.width,
+							 width: 100 + '%',
 							 height: item.height,
 							 marginTop: item.marginTop
 						}">
-
 				</view>
 			</view>
 		</view>

+ 1 - 1
uni_modules/uview-ui/libs/config/color.js

@@ -6,7 +6,7 @@ const color = {
     default: '#909399',
     warning: '#f9c752',
     error: '#f56c6c',
-    success: '#5ac725',
+    success: '#23b46c',
     mainColor: '#303133',
     contentColor: '#606266',
     tipsColor: '#909399',

+ 1 - 1
uni_modules/uview-ui/theme.scss

@@ -20,7 +20,7 @@ $u-warning-dark: #f1a532;
 $u-warning-disabled: #f9d39b;
 $u-warning-light: #fdf6ec;
 
-$u-success: #5ac725;
+$u-success: #23b46c;
 $u-success-dark: #53c21d;
 $u-success-disabled: #a9e08f;
 $u-success-light: #f5fff0;

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 836 - 164
utils/APIHandler.js


+ 19 - 35
utils/Common.js

@@ -1,30 +1,3 @@
-// 处理多次点击
-function noMultipleClicks(methods) {
-	//复制this对象指向当时的this,防止找不到原来的对象
-	let that = this;
-
-	if (that.noClick) {
-		that.noClick = false;
-		//点击方法
-		methods();
-		setTimeout(function() {
-			that.noClick = true;
-		}, 2000)
-	} else {
-		uni.$showMsg('正在加载中', 500)
-	}
-}
-//获取胶囊位置信息
-function getCapsuleSite() {
-	let res = uni.getMenuButtonBoundingClientRect()
-	this.capsuleBottom = res.bottom + 5
-	this.capsuleMiddle = res.left
-	this.capsuleWidth = res.width
-}
-//处理更新时间
-function getTimeStamp() {
-	this.timeStamp = (new Date()).format("hh:mm")
-}
 //获取近几天时间数组
 function getRecentDateArray(day) {
 	let recentDate = new Array();
@@ -34,12 +7,23 @@ function getRecentDateArray(day) {
 		recentDate.push(dayTime.format("MM-dd"));
 	}
 	return recentDate
-}
-
-//导出并在Main.js中全局注册
-export default {
-	noMultipleClicks, //禁止多次点击
-	getCapsuleSite, //获取胶囊位置信息
-	getTimeStamp, //处理更新时间
-	getRecentDateArray //获取近几天时间数组
+}
+//时间戳转换为时间
+function timestampToTime(timestamp) {
+	timestamp = timestamp ? timestamp : null;
+	let date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
+	let Y = date.getFullYear() + '-';
+	let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+	let D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ';
+	let h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
+	let m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
+	let s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
+	// return Y + M + D + h + m + s;
+	return M + D + h + m;
+}
+
+//导出并在Main.js中全局注册
+export default {
+	getRecentDateArray, //获取近几天时间数组
+	timestampToTime,
 }