zzp 2 роки тому
батько
коміт
a43a75cb47
100 змінених файлів з 1337 додано та 950 видалено
  1. 10 2
      config/api.js
  2. 6 1
      pages.json
  3. 8 56
      pages/index/index.vue
  4. 43 11
      pages/user/index.vue
  5. 8 11
      pagesMain/contractInfo.vue
  6. 48 14
      pagesMain/couponList.vue
  7. 2 2
      pagesMain/evaluateList.vue
  8. 115 70
      pagesMain/openMember.vue
  9. 5 3
      pagesMain/orderList.vue
  10. 4 1
      pagesMain/payResultNo.vue
  11. 1 1
      pagesMain/studentList.vue
  12. 222 0
      pagesMain/subscribeInfo.vue
  13. 39 35
      pagesMember/courseForm.vue
  14. 1 1
      pagesMember/leaveForm.vue
  15. 62 14
      pagesMember/myClassDetail.vue
  16. 1 1
      pagesMember/subscribelForm.vue
  17. 12 6
      pagesMember/venueDetail.vue
  18. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  19. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  20. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  21. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
  22. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/index.js.map
  23. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/member/index.js.map
  24. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/index.js.map
  25. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/contractInfo.js.map
  26. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/couponList.js.map
  27. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/evaluateList.js.map
  28. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/memberCardList.js.map
  29. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/openMember.js.map
  30. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/orderList.js.map
  31. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/payResult.js.map
  32. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/payResultNo.js.map
  33. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/shareInfo.js.map
  34. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/studentList.js.map
  35. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/subscribeInfo.js.map
  36. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/subscribeList.js.map
  37. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/classDetail.js.map
  38. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/courseForm.js.map
  39. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/evaluateForm.js.map
  40. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/leaveForm.js.map
  41. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/myClassDetail.js.map
  42. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/subscribelForm.js.map
  43. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/subscribelSuccess.js.map
  44. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/venueDetail.js.map
  45. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/venueMore.js.map
  46. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-action-sheet/u-action-sheet.js.map
  47. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-avatar/u-avatar.js.map
  48. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-button/u-button.js.map
  49. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-calendar/u-calendar.js.map
  50. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-card/u-card.js.map
  51. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-cell-group/u-cell-group.js.map
  52. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-cell-item/u-cell-item.js.map
  53. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-checkbox/u-checkbox.js.map
  54. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-divider/u-divider.js.map
  55. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-empty/u-empty.js.map
  56. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-form-item/u-form-item.js.map
  57. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-form/u-form.js.map
  58. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-icon/u-icon.js.map
  59. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-image/u-image.js.map
  60. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-input/u-input.js.map
  61. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-line-progress/u-line-progress.js.map
  62. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-loading/u-loading.js.map
  63. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-mask/u-mask.js.map
  64. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-modal/u-modal.js.map
  65. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-navbar/u-navbar.js.map
  66. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-picker/u-picker.js.map
  67. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-popup/u-popup.js.map
  68. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-rate/u-rate.js.map
  69. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-read-more/u-read-more.js.map
  70. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-section/u-section.js.map
  71. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-select/u-select.js.map
  72. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-swiper/u-swiper.js.map
  73. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-tabs-swiper/u-tabs-swiper.js.map
  74. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-top-tips/u-top-tips.js.map
  75. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-upload/u-upload.js.map
  76. 1 0
      unpackage/dist/dev/mp-weixin/app.json
  77. 21 22
      unpackage/dist/dev/mp-weixin/common/main.js
  78. 1 1
      unpackage/dist/dev/mp-weixin/common/runtime.js
  79. 197 196
      unpackage/dist/dev/mp-weixin/common/vendor.js
  80. 42 98
      unpackage/dist/dev/mp-weixin/pages/index/index.js
  81. 0 1
      unpackage/dist/dev/mp-weixin/pages/index/index.json
  82. 0 0
      unpackage/dist/dev/mp-weixin/pages/index/index.wxml
  83. 4 0
      unpackage/dist/dev/mp-weixin/pages/index/index.wxss
  84. 39 40
      unpackage/dist/dev/mp-weixin/pages/login/index.js
  85. 39 42
      unpackage/dist/dev/mp-weixin/pages/member/index.js
  86. 80 49
      unpackage/dist/dev/mp-weixin/pages/user/index.js
  87. 0 0
      unpackage/dist/dev/mp-weixin/pages/user/index.wxml
  88. 42 48
      unpackage/dist/dev/mp-weixin/pagesMain/contractInfo.js
  89. 1 1
      unpackage/dist/dev/mp-weixin/pagesMain/contractInfo.wxml
  90. 54 41
      unpackage/dist/dev/mp-weixin/pagesMain/couponList.js
  91. 0 0
      unpackage/dist/dev/mp-weixin/pagesMain/couponList.wxml
  92. 17 0
      unpackage/dist/dev/mp-weixin/pagesMain/couponList.wxss
  93. 38 41
      unpackage/dist/dev/mp-weixin/pagesMain/evaluateList.js
  94. 0 0
      unpackage/dist/dev/mp-weixin/pagesMain/evaluateList.wxml
  95. 1 1
      unpackage/dist/dev/mp-weixin/pagesMain/evaluateList.wxss
  96. 35 38
      unpackage/dist/dev/mp-weixin/pagesMain/memberCardList.js
  97. 133 97
      unpackage/dist/dev/mp-weixin/pagesMain/openMember.js
  98. 2 1
      unpackage/dist/dev/mp-weixin/pagesMain/openMember.json
  99. 0 0
      unpackage/dist/dev/mp-weixin/pagesMain/openMember.wxml
  100. 3 4
      unpackage/dist/dev/mp-weixin/pagesMain/openMember.wxss

+ 10 - 2
config/api.js

@@ -1,4 +1,5 @@
-const API_BASE = 'https://xinghuolanqiu.com/newApi'
+// const API_BASE = 'https://xinghuolanqiu.com/newApi'
+const API_BASE = 'http://192.168.1.126:30000'
 // const API_BASE = 'http://192.168.1.117:8089/'
 
 module.exports = {
@@ -17,7 +18,10 @@ module.exports = {
 	//  获取首页轮播图列表
 	getIndexSwiperList: API_BASE + '/v2/home/getRollAdvertisingHomeList',
 	//  获取首页场馆列表
-	getVenueList: API_BASE + '/v2/home/getVenueNearbyList',
+	// v2
+	// getVenueList: API_BASE + '/v2/home/getVenueNearbyList',
+	// v3
+	getVenueList: API_BASE + '/sgai/venue/get4ShortestVenue',
 	//  获取场馆详情
 	getVenueDetail: API_BASE + '/v2/home/getVenueDetailById',
 	//  获取班级详情
@@ -32,6 +36,10 @@ module.exports = {
 	getMemberClassDetail: API_BASE + '/v2/class/getDetail',
 	//  获取我的班级全部请假列表
 	getAllLeaveList: API_BASE + '/v2/class/getAllLeaveList',
+	//  获取评论
+	getSignRemark: API_BASE + '/v2/class/getSignRemark',
+	//  评论
+	setSignRemark: API_BASE + '/v2/class/setSignRemark',
 	//  学员报名
 	enlistStudent: API_BASE + '/v2/class/apply',
 	//  获取可预约学员列表

+ 6 - 1
pages.json

@@ -70,7 +70,7 @@
 		}, {
 			"path": "courseForm",
 			"style": {
-				"navigationBarTitleText": "成长历程"
+				"navigationBarTitleText": "课程评价"
 			}
 		}]
 	}, {
@@ -100,6 +100,11 @@
 			"style": {
 				"navigationBarTitleText": "我的评价"
 			}
+		}, {
+			"path": "subscribeInfo",
+			"style": {
+				"navigationBarTitleText": "预约信息"
+			}
 		}, {
 			"path": "subscribeList",
 			"style": {

+ 8 - 56
pages/index/index.vue

@@ -4,7 +4,7 @@
 		<u-navbar :is-back="false">
 			<view class="slot-wrap">
 				<view @click="show = true">{{ locationText }}</view>
-				<u-select v-model="show" mode="mutil-column-auto" :list="list" @confirm="confirm"></u-select>
+				<!-- <u-select v-model="show" mode="mutil-column-auto" :list="list" @confirm="confirm"></u-select> -->
 			</view>
 		</u-navbar>
 		<!-- 轮播图 -->
@@ -87,60 +87,7 @@
 				swiperList: [],
 				// menberList: [],
 				venueList: [],
-				videoList: [],
-				list: [
-					{
-						value: 1,
-						label: '中国',
-						children: [
-							{
-								value: 2,
-								label: '广东',
-								children: [
-									{
-										value: 3,
-										label: '深圳'
-									},
-									{
-										value: 4,
-										label: '广州',
-										extra: {'aaa':1,'bbb':222}
-									}
-								]
-							},
-							{
-								value: 5,
-								label: '广西',
-								children: [
-									{
-										value: 6,
-										label: '南宁'
-									},
-									{
-										value: 7,
-										label: '桂林'
-									}
-								]
-							}
-						]
-					},
-					{
-						value: 8,
-						label: '美国',
-						children: [
-							{
-								value: 9,
-								label: '纽约',
-								children: [
-									{
-										value: 10,
-										label: '皇后街区'
-									}
-								]
-							}
-						]
-					}
-				]
+				videoList: []
 			}
 		},
 		onLoad(options) {
@@ -221,7 +168,8 @@
 				})
 				// 附件场馆
 				NET.request(API.getVenueList, uni.getStorageSync('locationData'), 'POST').then(res => {
-					this.venueList = res.data
+					const venueData = res.data
+					this.venueList = venueData.length <= 4 ? venueData : venueData.slice(0,4)
 				}).catch(error => {
 					this.$refs.uTips.show({
 						title: error.message,
@@ -369,6 +317,10 @@
 					}
 
 					.info-text {
+						max-width: 60vw;
+						overflow: hidden;
+						white-space: nowrap;
+						text-overflow: ellipsis;
 						color: #999999;
 						line-height: 18px;
 

+ 43 - 11
pages/user/index.vue

@@ -26,7 +26,7 @@
 							<view>剩余&nbsp;{{item.days}}&nbsp;天到期</view>
 						</view>
 					</view>
-					<view class="member-handle">{{item.status == 2 ? '立即开通' : '立即续费'}}&nbsp;<u-icon name="arrow-right"></u-icon>
+					<view class="member-handle">{{item.days === 0 ? '立即开通' : '立即续费'}}&nbsp;<u-icon name="arrow-right"></u-icon>
 					</view>
 				</view>
 			</template>
@@ -104,14 +104,14 @@
 					},
 					{
 						label: '预约体验',
-						path: 'subscribeList',
-						icon: API.getServerImg + 'yuyue.png'
-					},
-					{
-						label: '订阅通知',
-						path: 'sendMessage',
+						path: 'subscribeInfo',
 						icon: API.getServerImg + 'yuyue.png'
 					},
+					// {
+					// 	label: '订阅通知',
+					// 	path: 'sendMessage',
+					// 	icon: API.getServerImg + 'yuyue.png'
+					// },
 					{
 						label: '退出登录',
 						path: 'logout',
@@ -129,6 +129,7 @@
 			if (!this.userData.headImage || !this.userData.nickName) {
 				this.userInfoShow = true
 			}
+			// 获取可购买会员卡学员列表
 			NET.request(API.getAllStudentList, {}, 'POST').then(res => {
 				this.studentList = res.data
 			}).catch(error => {
@@ -137,6 +138,7 @@
 					type: 'warning',
 				})
 			})
+			// 获取我的账户
 			NET.request(API.getMemberInfo, {}, 'POST').then(res => {
 				this.memberInfo = res.data
 			}).catch(error => {
@@ -145,6 +147,7 @@
 					type: 'warning',
 				})
 			})
+			// 获取订阅模板
 			NET.request(API.getTemplate, {}, 'POST').then(res => {
 				this.templateList = res.data || []
 			}).catch(error => {
@@ -157,11 +160,16 @@
 		methods: {
 			//  跳转开通会员
 			goToMemberCard(site) {
+				// 跳转所有场馆页
 				uni.navigateTo({
-					url: '/pagesMain/memberCardList' + (this.memberInfo.status == 0 ? '' : '?studentId=' + site.studentId +
-						'&studentName=' + site.studentName + (site.venueId ? '&venueId=' + site.venueId + '&venueName=' + site.venueName :
-							''))
-				});
+					url: '/pagesMember/venueMore'
+				})
+				// pagesMember/venueMore
+				// uni.navigateTo({
+				// 	url: '/pagesMain/memberCardList' + (this.memberInfo.status == 0 ? '' : '?studentId=' + site.studentId +
+				// 		'&studentName=' + site.studentName + (site.venueId ? '&venueId=' + site.venueId + '&venueName=' + site.venueName :
+				// 			''))
+				// });
 			},
 			//  跳转我的各列表界面
 			goToHandle(site) {
@@ -176,12 +184,36 @@
 							// })
 						},
 					})
+				} else if(site.path == 'subscribelForm') {
+					uni.navigateTo({
+						url: '/pagesMember/' + site.path
+					});
+				// 	 try {
+				// 			uni.scanCode({
+				// 				onlyFromCamera: true,
+				// 				success: function (res) {
+				// 					console.log(res)
+				// 				},
+				// 				fail: function (res) {
+				// 					this.$refs.uTips.show({
+				// 						title: "调用摄像头失败",
+				// 						type: 'warning',
+				// 					})
+				// 				},
+				// 			});
+				// 		} catch {
+				// 			this.$refs.uTips.show({
+				// 				title: "调用摄像头失败",
+				// 				type: 'warning',
+				// 			})
+				// 		}
 				} else if(site.path == 'logout'){
 					uni.removeStorageSync('token')
 					uni.navigateTo({
 						url: '/pages/login/index'
 					});
 				}else {
+					console.log('/pagesMain/' + site.path);
 					uni.navigateTo({
 						url: '/pagesMain/' + site.path
 					});

+ 8 - 11
pagesMain/contractInfo.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="content">
-		<rich-text :nodes="contractInfo.url" class="web-view"></rich-text>
+		<rich-text v-for="(item,index) in contractInfo" :key="index" :nodes="item.url" class="web-view"></rich-text>
 		<u-cell-group style="width: 100%; float: left;">
 			<u-cell-item title="乙方签字" :arrow="false" :title-style="{width: '100%'}" required>
 				<view class="canvas-container" slot="label">
@@ -11,7 +11,7 @@
 			</u-cell-item>
 		</u-cell-group>
 		<view class="handle-fix-box" style="height:100px">
-			<u-button style="margin-bottom: 10px;display: block;" type="warning" shape="circle" :ripple="true" :custom-style="customStyle" @click="submitContract0()">其他方式支付</u-button>
+			<u-button style="margin-bottom: 10px;display: block;" type="warning" shape="circle" :ripple="true" :disabled="!ifSign" :custom-style="customStyle" @click="submitContract0()">其他方式支付</u-button>
 			<u-button type="warning" shape="circle" :ripple="true" :custom-style="customStyle" :disabled="!ifSign" @click="submitContract()">确定支付</u-button>
 		</view>
 		<u-top-tips ref="uTips"></u-top-tips>
@@ -35,14 +35,11 @@
 		data() {
 			return {
 				orderInfo: {
-					id: '',
+					cardIds: '',
 					couponId: '',
 					studentId: '',
 				},
-				contractInfo: {
-					id: '',
-					url: '',
-				},
+				contractInfo: [],
 				ifSign: false,
 				signUrl: '',
 				realPayAmount: '',
@@ -61,7 +58,7 @@
 		},
 		onLoad(options) {
 			this.orderInfo = {
-				id: options.memberCardId,
+				cardIds: options.memberCardId.split(','),
 				couponId: options.couponId,
 				studentId: options.studentId,
 			}
@@ -77,7 +74,7 @@
 			//  获取数据
 			getContractInfo(parentName, sex) {
 				NET.request(API.getContractInfo, {
-					cardId: this.orderInfo.id,
+					cardIds: this.orderInfo.cardIds,
 					studentId: this.orderInfo.studentId,
 					parentName: parentName,
 					sex: sex,
@@ -145,10 +142,10 @@
 							success: (uploadFileRes) => {
 								that.signUrl = JSON.parse(uploadFileRes.data).data.id
 								NET.request(API.submitContractForm, {
-									contractId: that.contractInfo.id,
+									contractIds: that.contractInfo.map(item => { return item.id }),
 									fileId: that.signUrl,
 								}, 'POST').then(res => {
-									that.toPayOther(res.data.id)
+									that.toPayOther(res.data.map(item => { return item.id }))
 								}).catch(error => {
 									that.$refs.uTips.show({
 										title: error.message,

+ 48 - 14
pagesMain/couponList.vue

@@ -7,22 +7,32 @@
 				<scroll-view scroll-y class="scroll-box" @scrolltolower="handleLoadMore" :refresher-enabled="true"
 				 :refresher-triggered="triggered" :refresher-threshold="100" refresher-background="white" @refresherrefresh="onRefresh"
 				 @refresherrestore="onRestore">
-					<u-card :show-head="false" :show-foot="false" padding="0px" margin="10px" borderRadius="40" v-for="(site, index2) in item.tableList"
-					 :key="index2" class="class-card">
-						<view class="class-content" slot="body">
-							<view class="class-info-img">
-								<u-image width="60px" height="60px" :src="site.url" shape="circle"></u-image>
+				 <template v-if="current != 3">
+					 <u-card :show-head="false" :show-foot="false" padding="0px" margin="10px" borderRadius="40" v-for="(site, index2) in item.tableList"
+					  :key="index2" class="class-card">
+					 	<view class="class-content" slot="body">
+					 		<view class="class-info-img">
+					 			<u-image width="60px" height="60px" :src="site.url" shape="circle"></u-image>
+					 		</view>
+					 		<view class="class-info-content">
+					 			<view class="class-info-label">{{site.name}}¥{{site.amount}}</view>
+					 			<view class="class-info-text">{{site.typeValue}}&nbsp;&nbsp;{{site.content}}</view>
+					 			<view class="class-info-text">{{site.endDate}}&nbsp;&nbsp;到期</view>
+					 		</view>
+					 		<view class="card-mask" v-if="index1 == 1"></view>
+					 		<view class="out-date" v-if="index1 == 2">已用</view>
+					 	</view>
+					 </u-card>
+					 <u-divider v-if="item.isOver" bg-color="transparent">没有更多了</u-divider>
+				 </template>
+					<template v-else>
+						<view class="content-info">
+							<view class="share-img">
+								<u-image width="60vw" height="60vw" :src="shareUrl" ></u-image>
+								<view class="share-class">共5节课</view>
 							</view>
-							<view class="class-info-content">
-								<view class="class-info-label">{{site.name}}¥{{site.amount}}</view>
-								<view class="class-info-text">{{site.typeValue}}&nbsp;&nbsp;{{site.content}}</view>
-								<view class="class-info-text">{{site.endDate}}&nbsp;&nbsp;到期</view>
-							</view>
-							<view class="card-mask" v-if="index1 == 1"></view>
-							<view class="out-date" v-if="index1 == 2">已用</view>
 						</view>
-					</u-card>
-					<u-divider v-if="item.isOver" bg-color="transparent">没有更多了</u-divider>
+					</template>
 				</scroll-view>
 			</swiper-item>
 		</swiper>
@@ -62,6 +72,11 @@
 					isOver: false,
 					pageIndex: 1,
 					tableList: [],
+				},{
+					name: '赠送课时券',
+					isOver: false,
+					pageIndex: 1,
+					tableList: [],
 				}],
 				current: 0,
 				swiperCurrent: 0,
@@ -89,6 +104,7 @@
 				this.$refs.uTabs.setFinishCurrent(current);
 				this.swiperCurrent = current;
 				this.current = current;
+				console.log(this.current);
 			},
 			//  下拉刷新
 			onRefresh() {
@@ -212,4 +228,22 @@
 			}
 		}
 	}
+	.content-info {
+		width: 100%;
+		height: 100%;
+		float: left;
+		position: relative;
+		
+		.share-img {
+			top: 40%;
+			left: 50%;
+			transform: translate(-50%, -50%);
+			position: absolute;
+			
+			.share-class {
+				margin-top: 20rpx;
+				text-align: center;
+			}
+		}
+	}
 </style>

+ 2 - 2
pagesMain/evaluateList.vue

@@ -22,7 +22,7 @@
 				<view class="class-content" slot="foot" style="display: flex;">
 					<view class="class-foot-label">评价信息:</view>
 					<view class="class-foot-content">
-						<u-rate :count="5" v-model="item.level" :active-color="mainColor" disabled></u-rate>
+						<u-rate :count="10" v-model="item.level" :active-color="mainColor" disabled></u-rate>
 						<view class="class-foot-text">{{item.content}}</view>
 					</view>
 				</view>
@@ -155,7 +155,7 @@
 				}
 
 				.class-foot-label {
-					width: 60px;
+					width: 70px;
 					color: #999999;
 				}
 

+ 115 - 70
pagesMain/openMember.vue

@@ -1,27 +1,30 @@
 <template>
 	<view class="content">
 		<template v-if="memberCardList.length">
-			<view class="card-list" v-for="i in memberCardList">
-				<view class="card-label">{{memberInfo.typeValue}}</view>
-				<view class="card-num">¥{{memberInfo.originalAmount ? memberInfo.originalAmount : 0}}</view>
+			<view class="card-list" v-for="(item,index) in memberCardList" :key="index">
+				<view class="card-label" style="height:20rpx;">卡名: {{item.typeValue}}</view>
+				<view class="card-label">使用时间: {{ item.startDate }}~{{ item.endDate }}</view>
+				<view class="card-num">¥{{ item.sellingPrice }}</view>
 				<view class="card-icon iconfont iconzu4931"></view>
 			</view>
 		</template>
 		<u-form :model="form" label-width="140" style="width: 100%; float: left;">
-			<u-form-item label="选择场馆" :right-icon="venueEdit ? 'arrow-right' : ''" required @click.native="venueShow = venueEdit ? true : false">
+	<!-- 		<u-form-item label="选择场馆" :right-icon="venueEdit ? 'arrow-right' : ''" required @click.native="venueShow = venueEdit ? true : false">
 				<text>{{venueName}}</text>
-			</u-form-item>
-			<u-form-item label="使用时间">
+			</u-form-item> -->
+		<!-- 	<u-form-item label="使用时间">
 				<text>{{memberInfo.startDate + '~' + memberInfo.endDate}}</text>
-			</u-form-item>
+			</u-form-item> -->
 			<u-form-item label="学员姓名" :right-icon="studentEdit ? 'arrow-right' : ''" required @click.native="studentShow = studentEdit ? true : false">
 				<text>{{studentName}}</text>
 			</u-form-item>
-			<u-form-item label="优惠金额" right-icon="arrow-right" @click.native="couponShow = true">
-				<text>{{couponId ? '-¥' + memberInfo.discountsAmount : ''}}</text>
+			<u-form-item label="优惠金额" right-icon="arrow-right" @click.native="handleCouponClick">
+				<!-- <text>{{couponId ? '-¥' + memberInfo.discountsAmount : ''}}</text> -->
+				<text>{{ '¥' + discountsAmount || 0 }}</text>
 			</u-form-item>
 			<u-form-item label="实际金额">
-				<text>{{'¥' + (memberInfo.realPayAmount ? memberInfo.realPayAmount : 0)}}</text>
+				<!-- <text>{{'¥' + (memberInfo.realPayAmount ? memberInfo.realPayAmount : 0)}}</text> -->
+				<text> {{ '¥' + ( discountsAmount ? getRealPrice : realPayAmount ) }}</text>
 			</u-form-item>
 			<u-form-item label="家长名称" required>
 				<u-input v-model="form.parentName" placeholder="请输入家长姓名" />
@@ -30,47 +33,55 @@
 				<text>{{form.sex}}</text>
 			</u-form-item>
 		</u-form>
-		<u-popup v-model="couponShow" mode="bottom" border-radius="30" closeable>
-			<scroll-view scroll-y style="height:300px;margin: 30px 0 15px 0;">
-				<u-card :show-head="false" :show-foot="false" padding="0px" margin="0px 30px 20px 30px" borderRadius="40" v-for="(item, index) in couponList"
-				 :key="index" class="class-card" @click="selectCoupon(item)">
-					<view class="class-content" slot="body">
-						<view class="class-info-img">
-							<u-image width="60px" height="60px" :src="item.url" shape="circle"></u-image>
-						</view>
-						<view class="class-info-content">
-							<view class="class-info-label">{{item.name}}¥{{item.amount}}</view>
-							<view class="class-info-text">{{item.typeValue}}&nbsp;&nbsp;{{item.content}}</view>
-							<view class="class-info-text">{{item.endDate}}&nbsp;&nbsp;到期</view>
-						</view>
-					</view>
-				</u-card>
-			</scroll-view>
-		</u-popup>
 		<view class="handle-fix-box">
-			<u-button type="warning" shape="circle" :ripple="true" :custom-style="customStyle" @click="toPay()">确定支付¥{{memberInfo.realPayAmount ? memberInfo.realPayAmount : 0}}</u-button>
+			<u-button type="warning" shape="circle" :ripple="true" :custom-style="customStyle" @click="toPay()">确定支付¥{{ discountsAmount ? getRealPrice : realPayAmount }}</u-button>
 		</view>
-		<u-popup v-model="venueShow" mode="bottom" border-radius="30">
+		<!-- 学员 -->
+		<u-popup v-model="studentShow" mode="bottom" border-radius="30">
 			<scroll-view scroll-y class="student-box">
 				<u-card :title="item.studentName" title-size="32" :head-style="cardStyle" :head-border-bottom="false" :show-foot="false"
-				 margin="10px" borderRadius="20" v-for="(item, index) in venueList" :key="index" @click="selectVenue(item)">
+				 margin="10px" borderRadius="20" v-for="(item, index) in studentList" :key="index" @click="selectStudent(item)">
 					<view class="student-card" slot="body">
-						<view class="class-info-text">{{item.venueName}}</view>
+						<view class="class-info-text">性别:{{item.sex}}&nbsp;&nbsp;年龄:{{item.age}}</view>
 					</view>
 				</u-card>
 			</scroll-view>
+			<u-button type="warning" shape="circle" :ripple="true" :custom-style="{...customStyle,margin:'15px',float: 'left',width: 'calc(100% - 30px)'}"
+			 @click="goToSubscribelForm()">新增学员</u-button>
 		</u-popup>
-		<u-popup v-model="studentShow" mode="bottom" border-radius="30">
+		<!-- 优惠券 -->
+		<u-popup v-model="couponShow" mode="bottom" border-radius="30" closeable>
+			<scroll-view scroll-y style="height:300px;margin: 30px 0 15px 0;">
+				<template v-if="couponList.length">
+					<u-card :show-head="false" :show-foot="false" padding="0px" margin="0px 30px 20px 30px" borderRadius="40" v-for="(item, index) in couponList"
+					 :key="index" class="class-card" @click="selectCoupon(item)">
+						<view class="class-content" slot="body">
+							<view class="class-info-img">
+								<u-image width="60px" height="60px" :src="item.url" shape="circle"></u-image>
+							</view>
+							<view class="class-info-content">
+								<view class="class-info-label">{{item.name}}¥{{item.amount}}</view>
+								<view class="class-info-text">{{item.typeValue}}&nbsp;&nbsp;{{item.content}}</view>
+								<view class="class-info-text">{{item.endDate}}&nbsp;&nbsp;到期</view>
+							</view>
+						</view>
+					</u-card>
+				</template>
+				<template v-else>
+					<u-empty mode="coupon"></u-empty>
+				</template>
+			</scroll-view>
+		</u-popup>
+		<!-- 场馆(废弃) -->
+		<u-popup v-model="venueShow" mode="bottom" border-radius="30">
 			<scroll-view scroll-y class="student-box">
 				<u-card :title="item.studentName" title-size="32" :head-style="cardStyle" :head-border-bottom="false" :show-foot="false"
-				 margin="10px" borderRadius="20" v-for="(item, index) in studentList" :key="index" @click="selectStudent(item)">
+				 margin="10px" borderRadius="20" v-for="(item, index) in venueList" :key="index" @click="selectVenue(item)">
 					<view class="student-card" slot="body">
-						<view class="class-info-text">性别:{{item.sex}}&nbsp;&nbsp;年龄:{{item.age}}</view>
+						<view class="class-info-text">{{item.venueName}}</view>
 					</view>
 				</u-card>
 			</scroll-view>
-			<u-button type="warning" shape="circle" :ripple="true" :custom-style="{...customStyle,margin:'15px',float: 'left',width: 'calc(100% - 30px)'}"
-			 @click="goToSubscribelForm()">新增学员</u-button>
 		</u-popup>
 		<u-action-sheet :list="sexList" v-model="sexShow" @click="setSex"></u-action-sheet>
 		<u-top-tips ref="uTips"></u-top-tips>
@@ -88,12 +99,20 @@
 			...mapGetters([
 				'mainColor',
 				'customStyle',
-			])
+			]),
+			getRealPrice() {
+				return this.realPayAmount - this.discountsAmount
+			},
 		},
 		data() {
 			return {
+				cardIds: "",
 				memberCardType: '',
 				memberCardList: [],
+				// 优惠金额
+				discountsAmount: 0,
+				// 实际金额
+				realPayAmount: 0,
 				memberInfo: {
 					id: '',
 					originalAmount: '',
@@ -115,7 +134,9 @@
 					fontWeight: 'bold'
 				},
 				studentEdit: true,
+				// 选中的学员
 				studentId: '',
+				// 选中的学员名字
 				studentName: '',
 				studentShow: false,
 				studentList: [],
@@ -135,7 +156,15 @@
 		},
 		onLoad(options) {
 			this.memberCardList = JSON.parse(decodeURIComponent(options.cardinfo))
-			console.log(this.memberCardList);
+			this.cardIds = this.memberCardList.map(item => { return item.id }).join(',')
+			console.log(this.cardIds);
+			// 计算实际金额
+			let price = 0
+			this.memberCardList.map(item => { return item.sellingPrice }).forEach(item => {
+				price += item
+			})
+			this.realPayAmount = price
+			// this.getMemberInfo(1)
 			// if (options.venueId) {
 			// 	this.venueEdit = false
 			// 	this.venueId = options.venueId
@@ -154,14 +183,15 @@
 			// }
 		},
 		onShow() {
-			NET.request(API.getAllVenueList, uni.getStorageSync('locationData'), 'POST').then(res => {
-				this.venueList = res.data
-			}).catch(error => {
-				this.$refs.uTips.show({
-					title: error.message,
-					type: 'warning',
-				})
-			})
+			// 场馆信息
+			// NET.request(API.getAllVenueList, uni.getStorageSync('locationData'), 'POST').then(res => {
+			// 	this.venueList = res.data
+			// }).catch(error => {
+			// 	this.$refs.uTips.show({
+			// 		title: error.message,
+			// 		type: 'warning',
+			// 	})
+			// })
 			NET.request(API.getAllStudentList, {}, 'POST').then(res => {
 				this.studentList = res.data
 			}).catch(error => {
@@ -170,17 +200,16 @@
 					type: 'warning',
 				})
 			})
-		},
-		onReady() {
-			NET.request(API.getParentInfo, {}, 'POST').then(res => {
-				this.form.parentName = res.data.parentName
-				this.form.sex = res.data.sex
-			}).catch(error => {
-				this.$refs.uTips.show({
-					title: error.message,
-					type: 'warning',
-				})
-			})
+			// 家长信息
+			// NET.request(API.getParentInfo, {}, 'POST').then(res => {
+			// 	this.form.parentName = res.data.parentName
+			// 	this.form.sex = res.data.sex
+			// }).catch(error => {
+			// 	this.$refs.uTips.show({
+			// 		title: error.message,
+			// 		type: 'warning',
+			// 	})
+			// })
 		},
 		methods: {
 			//  获取数据
@@ -215,9 +244,11 @@
 			},
 			//  获取优惠券
 			getCouponList() {
-				this.couponId = ''
+				// this.couponId = ''
+				// 仅显示能使用的优惠券 
+				const ids = this.memberCardList.map(item => { return item.id })
 				NET.request(API.getUsableCouponList, {
-					id: this.memberInfo.id,
+					ids: ids,
 					studentId: this.studentId
 				}, 'POST').then(res => {
 					this.couponList = res.data.row
@@ -228,26 +259,39 @@
 					})
 				})
 			},
-			//  选择优惠券
+			// 
+			handleCouponClick() {
+				if(!this.studentId) {
+					this.$refs.uTips.show({
+						title: '请先选择学员~',
+						type: 'warning',
+					})
+					return
+				}
+				this.couponShow = true
+			},
+			// 选择优惠券
 			selectCoupon(item) {
 				this.couponId = item.id
+				this.discountsAmount = item.amount
 				this.couponShow = false
-				this.getMemberInfo(2)
+				// this.getMemberInfo(2)
 			},
-			//  选择场馆
+			// 选择场馆
 			selectVenue(item) {
 				this.venueId = item.id
 				this.venueName = item.venueName
 				this.venueShow = false
 				this.getMemberInfo(1)
 			},
-			//  选择学员
+			// 选择学员
 			selectStudent(item) {
 				this.studentId = item.studentId
 				this.studentName = item.studentName
 				this.studentShow = false
-				this.couponId = ''
-				this.getMemberInfo(1)
+				// this.couponId = ''
+				// this.getMemberInfo(1)
+				this.getCouponList()
 			},
 			//  设置性别
 			setSex(index) {
@@ -277,7 +321,7 @@
 					return
 				}
 				uni.navigateTo({
-					url: '/pagesMain/contractInfo?memberCardId=' + this.memberInfo.id + '&couponId=' + this.couponId + '&studentId=' +
+					url: '/pagesMain/contractInfo?memberCardId=' + this.cardIds + '&couponId=' + this.couponId + '&studentId=' +
 						this.studentId + '&realPayAmount=' + this.memberInfo.realPayAmount + '&parentName=' + this.form.parentName +
 						'&sex=' + this.form.sex
 				});
@@ -329,9 +373,9 @@
 				width: 100%;
 				margin-bottom: 10px;
 				float: left;
-				font-size: 18px;
-				font-weight: bold;
-				line-height: 20px;
+				font-size: 14px;
+				// font-weight: bold;
+				// line-height: 20px;
 			}
 
 			.card-num {
@@ -343,7 +387,7 @@
 			}
 
 			.card-icon {
-				font-size: 80px;
+				font-size: 100px;
 				color: $mainColor;
 				position: absolute;
 				right: -15px;
@@ -374,6 +418,7 @@
 				font-size: 16px;
 				color: #000000;
 				word-break: break-all;
+				margin-bottom: 5px;
 			}
 
 			.class-info-text {

+ 5 - 3
pagesMain/orderList.vue

@@ -93,9 +93,11 @@
 					page: this.pageIndex,
 					size: 10,
 				}, 'POST').then(res => {
-					this.triggered = false
-					this.tableList = this.tableList.concat(res.data.row)
-					this.isOver = res.data.row.length != 10
+					if(res.data) {
+						this.triggered = false
+						this.tableList = this.tableList.concat(res.data.row)
+						this.isOver = res.data.row.length != 10
+					}
 				}).catch(error => {
 					this.triggered = false
 					this.$refs.uTips.show({

+ 4 - 1
pagesMain/payResultNo.vue

@@ -49,7 +49,10 @@
 		methods: {
 			//  返回
 			goBack() {
-				uni.navigateBack()
+				// uni.navigateBack()
+				uni.reLaunch({
+					url: '/pages/index/index'
+				});
 			},
 		},
 	}

+ 1 - 1
pagesMain/studentList.vue

@@ -18,7 +18,7 @@
 			</u-card>
 			<u-divider v-if="isOver" bg-color="transparent">没有更多了</u-divider>
 		</scroll-view>
-		<view class="handle-fix-box" style="height:40rpx">
+		<view class="handle-fix-box">
 			<u-button type="warning" shape="circle" :ripple="true" :custom-style="customStyle" @click="goToSubscribelForm()">新增学员</u-button>
 		</view>
 		<u-top-tips ref="uTips"></u-top-tips>

+ 222 - 0
pagesMain/subscribeInfo.vue

@@ -0,0 +1,222 @@
+<template>
+	<view class="content">
+		<u-form :model="subscribelForm" ref="subscribelForm" label-width="140">
+			<u-form-item label="学生姓名" prop="studentName" required>
+				<u-input v-model="subscribelForm.studentName" placeholder="请输入学生姓名" />
+			</u-form-item>
+			<!-- <u-form-item label="家长姓名" prop="fatherName" required>
+				<u-input v-model="subscribelForm.fatherName" placeholder="请输入家长姓名" />
+			</u-form-item> -->
+			<u-form-item label="学生性别" prop="sex" required>
+				<u-input v-model="subscribelForm.sex" placeholder="请选择学生性别" :select-open="sexShow" type="select" @click="sexShow = true" />
+			</u-form-item>
+			<u-form-item label="学生年龄" prop="age" required>
+				<u-input v-model="subscribelForm.age" placeholder="请输入学生年龄" type="number" />
+			</u-form-item>
+			<u-form-item label="学生班级" prop="grade" required>
+				<u-input v-model="subscribelForm.grade" placeholder="请输入学生班级" />
+			</u-form-item>
+			<!-- <u-form-item label="学生生日" prop="birthday" required>
+				<u-input v-model="subscribelForm.birthday" placeholder="请选择学生生日" :select-open="birthdayShow" type="select" @click="birthdayShow = true" />
+			</u-form-item> -->
+	<!-- 		<u-form-item label="手机号码" prop="phone" required>
+				<u-input v-model="subscribelForm.phone" type="number" placeholder="请输入手机号码" />
+			</u-form-item> -->
+			<u-form-item label="体验日期" placeholder="请选择体验日期" prop="experience">
+				<u-input v-model="subscribelForm.experience" :select-open="experienceShow" type="select" @click="experienceShow = true" />
+				</u-form-item>
+			<u-form-item label="上课教练" placeholder="请选择上课教练" prop="coach">
+					<u-input v-model="subscribelForm.coach" type="select" @click="coachShow = true" />
+			</u-form-item>
+		</u-form>
+		<!-- 性别 -->
+		<u-action-sheet :list="sexList" v-model="sexShow" @click="setSex"></u-action-sheet>
+		<!-- 教练 -->
+		<u-action-sheet :list="coachList" v-model="coachShow" @click="HandleChooseCoachClick"></u-action-sheet>
+		<!-- 学生生日 -->
+		<u-picker v-model="birthdayShow" mode="time" :params="params" @confirm="setBirthday"></u-picker>
+		<!-- 体验日期 -->
+		<u-calendar v-model="experienceShow" mode="date" :active-bg-color="mainColor" btn-type="error" availableText="有课"
+		 :available="availableList" @change="setExperience" max-date="2300-12-31"></u-calendar>
+		<view class="handle-fix-box">
+			<u-button type="warning" shape="circle" :ripple="true" :custom-style="customStyle" @click="submitForm()">保存</u-button>
+		</view>
+		<u-top-tips ref="uTips"></u-top-tips>
+	</view>
+</template>
+
+<script>
+	import {
+		mapGetters
+	} from 'vuex'
+	const NET = require('@/utils/request')
+	const API = require('@/config/api')
+	export default {
+		computed: {
+			...mapGetters([
+				'mainColor',
+				'customStyle',
+			])
+		},
+		data() {
+			return {
+				subscribelForm: {
+					studentName: '',
+					sex: '',
+					age: '',
+					grade: '',
+					experience: '',
+					coachId: '',
+					coach: ''
+				},
+				rules: {
+					studentName: [{
+						required: true,
+						message: '请输入学生姓名',
+						trigger: 'change'
+					}],
+					fatherName: [{
+						required: true,
+						message: '请输入家长姓名',
+						trigger: 'change'
+					}],
+					sex: [{
+						required: true,
+						message: '请选择学生性别',
+						trigger: 'change'
+					}],
+					age: [{
+						required: true,
+						message: '请输入学生年龄',
+						trigger: 'change'
+					}],
+					birthday: [{
+						required: true,
+						message: '请选择学生生日',
+						trigger: 'change'
+					}],
+					phone: [{
+							required: true,
+							message: '请输入手机号码',
+							trigger: 'change'
+						},
+						{
+							pattern: /^1[0-9]{10}$/g,
+							transform(value) {
+								return String(value);
+							},
+							message: '请输入正确格式的手机号码'
+						},
+					],
+				},
+				sexShow: false,
+				sexList: [{
+						text: '男'
+					},
+					{
+						text: '女'
+					}
+				],
+				birthdayShow: false,
+				params: {
+					year: true,
+					month: true,
+					day: true,
+					hour: false,
+					minute: false,
+					second: false
+				},
+				experienceShow: false,
+				availableList: [],
+				coachShow: false, 
+				coachList: [{
+					  id: 1,
+						text: '大代礼'
+					},
+					{
+						id: 2,
+						text: '冀朝明'
+					}
+				],
+			}
+		},
+		onLoad(options) {
+			// this.subscribelForm.phone = uni.getStorageSync('userData').phone
+		},
+		onReady() {
+			this.$refs.subscribelForm.setRules(this.rules);
+		},
+		methods: {
+			//  设置性别
+			setSex(index) {
+				this.subscribelForm.sex = this.sexList[index].text
+			},
+			//  设置生日
+			setBirthday(object) {
+				this.subscribelForm.birthday = object.year + '-' + object.month + '-' + object.day
+			},
+			//  设置体验日期
+			setExperience(object) {
+				let date = object.year + '-' + object.month + '-' + object.day
+				if (this.availableList.filter(site => site == date).length) {
+					this.subscribelForm.experience = date
+				} else {
+					this.subscribelForm.experience = ''
+					this.$refs.uTips.show({
+						title: '请选择可用日期',
+						type: 'error',
+					})
+				}
+			},
+			//  选择教练
+			HandleChooseCoachClick(index) {
+				this.subscribelForm.coachId = this.coachList[index].id
+				this.subscribelForm.coach = this.coachList[index].text
+				console.log(this.subscribelForm)
+			},
+			//  提交表单
+			submitForm() {
+				this.$refs.subscribelForm.validate(valid => {
+					if (valid) {
+						NET.request(API.submitStudentForm, this.subscribelForm, 'POST').then(res => {
+							this.$refs.uTips.show({
+								title: '新增成功',
+								type: 'success',
+							})
+							setTimeout(() => {
+								uni.redirectTo({
+									url: '/pagesMember/subscribelSuccess'
+								});
+							}, 1000)
+						}).catch(error => {
+							this.$refs.uTips.show({
+								title: error.message,
+								type: 'warning',
+							})
+						})
+					}
+				});
+			},
+		},
+	}
+</script>
+
+<style>
+	page {
+		width: 100%;
+		height: 100%;
+		position: relative;
+	}
+</style>
+<style lang="scss" scoped>
+	@import "@/static/css/themes.scss";
+
+	.content {
+		width: 100%;
+		float: left;
+		padding: 0 15px 60px 15px;
+		box-sizing: border-box;
+
+	}
+</style>
+

+ 39 - 35
pagesMember/courseForm.vue

@@ -1,13 +1,16 @@
 <template>
 	<view class="content">
 		<u-form :model="form" ref="form" label-width="140">
-			<u-form-item label="评价内容" prop="content" required>
-				<u-input v-model="form.content" placeholder="请输入评价内容" type="textarea" auto-height :height="100" />
+			<u-form-item label="评价星级" prop="star">
+				<u-rate :count="10" v-model="form.star" :size="40" :gutter="10" :active-color="mainColor"></u-rate>
 			</u-form-item>
-			<u-form-item label="上传附件" label-position="top">
+			<u-form-item label="评价内容" prop="remark" required>
+				<u-input v-model="form.remark" placeholder="请输入评价内容" />
+			</u-form-item>
+	<!-- 		<u-form-item label="上传附件" label-position="top">
 				<u-upload max-count="5" :multiple="false" :action="uploadUrl" :header="uploadHeader" @on-success="uploadSuccess"
 				 @on-error="uploadError" @on-remove="uploadRemove"></u-upload>
-			</u-form-item>
+			</u-form-item> -->
 		</u-form>
 		<view class="handle-fix-box">
 			<u-button type="warning" shape="circle" :ripple="true" :custom-style="customStyle" @click="submitForm()">提交</u-button>
@@ -25,20 +28,22 @@
 	export default {
 		computed: {
 			...mapGetters([
+				'mainColor',
 				'customStyle',
 			])
 		},
 		data() {
 			return {
-				classId: '',
 				form: {
-					content: '',
-					fileId: [],
-				},
-				uploadUrl: API.uploadFile,
-				uploadHeader: {
-					Authorization: uni.getStorageSync('token')
+					signId: '',
+					star: 10,
+					remark: '',
+					isCoach: false
 				},
+				// uploadUrl: API.uploadFile,
+				// uploadHeader: {
+				// 	Authorization: uni.getStorageSync('token')
+				// },
 				rules: {
 					content: [{
 						required: true,
@@ -49,38 +54,17 @@
 			}
 		},
 		onLoad(options) {
-			this.classId = options.id
+			this.form.signId = parseInt(options.id)
 		},
 		onReady() {
 			this.$refs.form.setRules(this.rules);
 		},
 		methods: {
-			//  文件上传成功回调
-			uploadSuccess(res, index, lists, name) {
-				this.form.fileId.push(res.data.id)
-				this.$refs.uTips.show({
-					title: '文件上传成功',
-					type: 'success',
-				})
-				return true
-			},
-			//  文件上传失败回调
-			uploadError(res, index, lists, name) {
-				this.$refs.uTips.show({
-					title: '文件上传失败',
-					type: 'warning',
-				})
-			},
-			//  移除文件回调
-			uploadRemove(index, lists, name) {
-				this.form.fileId.splice(index, 1)
-			},
 			//  提交表单
 			submitForm() {
 				this.$refs.form.validate(valid => {
 					if (valid) {
-						NET.request(API.submitGrowForm, {
-							id: this.classId,
+						NET.request(API.setSignRemark, {
 							...this.form
 						}, 'POST').then(res => {
 							this.$refs.uTips.show({
@@ -98,7 +82,27 @@
 						})
 					}
 				});
-			},
+			}
+			// //  文件上传成功回调
+			// uploadSuccess(res, index, lists, name) {
+			// 	this.form.fileId.push(res.data.id)
+			// 	this.$refs.uTips.show({
+			// 		title: '文件上传成功',
+			// 		type: 'success',
+			// 	})
+			// 	return true
+			// },
+			// //  文件上传失败回调
+			// uploadError(res, index, lists, name) {
+			// 	this.$refs.uTips.show({
+			// 		title: '文件上传失败',
+			// 		type: 'warning',
+			// 	})
+			// },
+			// //  移除文件回调
+			// uploadRemove(index, lists, name) {
+			// 	this.form.fileId.splice(index, 1)
+			// },
 		},
 	}
 </script>

+ 1 - 1
pagesMember/leaveForm.vue

@@ -177,7 +177,7 @@
 						NET.request(API.submitLevelForm, {
 							classId: this.classId,
 							studentId: this.studentId,
-							...this.form
+							...{ ...this.form, leaveType:  this.form.leaveType == '事假' ?  1 : 2  }
 						}, 'POST').then(res => {
 							this.$refs.uTips.show({
 								title: '请假成功',

+ 62 - 14
pagesMember/myClassDetail.vue

@@ -1,23 +1,32 @@
 <template>
 	<view class="content">
+		<u-card title="剩余课时" :show-foot="false" title-size="32" margin="0px 0px 10px 0px" :head-style="cardStyle">
+			<view slot="body">{{ residue }}</view>
+		</u-card>
 		<u-card title="签到记录" sub-title="查看更多" :show-foot="false" title-size="32" margin="0px 0px 10px 0px" :head-style="cardStyle"
 		 @head-click="getSignInList">
 			<view class="signIn-box" slot="body">
-				<view class="signIn-col" v-for="(item, index) in classInfo.signInList" :key="index">
-					<u-icon name="bookmark" color="#666666" size="64" v-if="!item.status"></u-icon>
-					<u-icon name="bookmark-fill" :color="mainColor" size="64" v-else></u-icon>
+				<view class="signIn-col" v-for="(item, index) in signInList" :key="index" @click="handleSignClick(item.id,index)">
+					<u-icon name="bookmark" :color="signIndex === index ? '#41b0fe' : '#666666'" size="64" v-if="!item.status"></u-icon>
+					<u-icon name="bookmark-fill" :color="signIndex === index ? '#41b0fe' : mainColor" size="64" v-else></u-icon>
 					<view class="signIn-date">{{item.date}}</view>
 				</view>
 			</view>
 		</u-card>
-		<u-card title="成长经历" :show-foot="false" title-size="32" margin="0px 0px 10px 0px" :head-style="cardStyle">
-			<u-cell-group slot="body" :border="false" style="padding: 0px;">
+		<u-card v-if="Object.keys(rateRecordInfo).length && rateRecordInfo.userRemark" title="课程评价" :show-foot="false" title-size="32" margin="0px 0px 10px 0px" :head-style="cardStyle">
+		<!-- 	<u-cell-group slot="body" :border="false" style="padding: 0px;">
 				<u-cell-item :title="(item.type? '家长' : '教练') + '-' + item.name" :value="item.time" :label="item.content" v-for="(item, index) in classInfo.growList"
 				 :key="index" :arrow="false" :title-style="cellTitleStyle"></u-cell-item>
-			</u-cell-group>
+			</u-cell-group> -->
+			<view slot="body">
+				<u-rate :count="10" :current="rateRecordInfo.star" :size="40" :gutter="10" :active-color="mainColor" isClick></u-rate>
+				<view class="rate-info">学生评价: {{ rateRecordInfo.userRemark }}</view>
+				<view class="rate-info" v-if="rateRecordInfo.coachRemark">教练回复: {{ rateRecordInfo.coachRemark }}</view>
+			</view>
 		</u-card>
-		<view class="handle-fix-box">
-			<u-button type="warning" shape="circle" :ripple="true" :custom-style="customStyle" @click="goToCourseForm()">填写历程</u-button>
+		<!-- <view class="handle-fix-box" v-if="Object.keys(rateRecordInfo).length"> -->
+		<view class="handle-fix-box" v-if="Object.keys(rateRecordInfo).length && !rateRecordInfo.userRemark">
+			<u-button type="warning" shape="circle" :ripple="true" :custom-style="customStyle" @click="goToCourseForm()">填写评价</u-button>
 		</view>
 		<u-calendar v-model="signInShow" mode="date" :active-bg-color="mainColor" btn-type="error" availableText="未签到"
 		 activeText="已签到" :available="availableList" :activeList="activeList" :handleStatus="false"></u-calendar>
@@ -41,13 +50,17 @@
 		data() {
 			return {
 				classId: '',
-				classInfo: {
-					growList: [],
-					signInList: [],
-				},
+				signIndex: 0,
 				signInShow: false,
+				// 签到记录
+				signInList: [],
 				availableList: [],
 				activeList: [],
+				rateRecordInfo: {},
+				// 签到id
+				recordId: 0,
+				// 剩余课时数
+				residue: 0,
 				cardStyle: {
 					fontWeight: 'bold'
 				},
@@ -62,6 +75,7 @@
 		},
 		onShow() {
 			this.initialize()
+			this.signIndex = 0
 		},
 		onPullDownRefresh() {
 			this.initialize()
@@ -72,16 +86,31 @@
 		methods: {
 			//  获取初始化数据
 			initialize() {
+				// 获取会员服务班级详情
 				NET.request(API.getMemberClassDetail, {
 					id: this.classId
 				}, 'POST').then(res => {
-					this.classInfo = res.data
+					this.residue = res.data.residue
+					this.signInList = res.data.signInList
+					if(res.data.signInList.length) {
+						const result = res.data.signInList
+						if(result[0].status == 1) {
+							this.recordId = id
+							NET.request(API.getSignRemark, {id: id}, 'POST').then( res => {
+									this.rateRecordInfo = { ...res.data }
+								}
+							)
+						} else {
+							this.rateRecordInfo = {}
+						}
+					}
 				}).catch(error => {
 					this.$refs.uTips.show({
 						title: error.message,
 						type: 'warning',
 					})
 				})
+				//  获取我的班级全部请假列表 
 				NET.request(API.getAllLeaveList, {
 					id: this.classId
 				}, 'POST').then(res => {
@@ -98,13 +127,26 @@
 					})
 				})
 			},
+			// 根据签到时间显示不同评价
+			handleSignClick(id,index) {
+				this.signIndex = index
+				if(id) {
+					this.recordId = id
+					NET.request(API.getSignRemark, {id: id}, 'POST').then( res => {
+							this.rateRecordInfo = { ...res.data }
+						}
+					)
+				} else {
+					this.rateRecordInfo = {}
+				}
+			},
 			getSignInList(index) {
 				this.signInShow = true
 			},
 			//  跳转历程表单
 			goToCourseForm() {
 				uni.navigateTo({
-					url: '/pagesMember/courseForm?id=' + this.classId
+					url: '/pagesMember/courseForm?id=' + this.recordId
 				});
 			},
 		},
@@ -146,4 +188,10 @@
 			padding: 26rpx 0;
 		}
 	}
+	.rate-info {
+		width: 100%;
+		margin-top: 20rpx;
+		margin-left: 5rpx;
+		word-wrap: break-word;
+	}
 </style>

+ 1 - 1
pagesMember/subscribelForm.vue

@@ -121,7 +121,7 @@
 			}
 		},
 		onLoad(options) {
-			this.subscribelForm.phone = uni.getStorageSync('userData').phone
+			// this.subscribelForm.phone = uni.getStorageSync('userData').phone
 		},
 		onReady() {
 			this.$refs.subscribelForm.setRules(this.rules);

+ 12 - 6
pagesMember/venueDetail.vue

@@ -15,7 +15,9 @@
 		<u-section title="会员开通" font-size="32" :right="false" :show-line="false" class="title-box"></u-section>
 		<view class="menber-box">
 			<view class="menber-col" v-for="(item, index) in menberList" :key="index">
-				<view class="menber-label">{{item.typeValue}}</view>
+				<view class="menber-label">卡名: {{ item.typeValue }}</view>
+				<view class="menber-label">售价: ¥ {{ item.sellingPrice }}</view>
+				<view class="menber-label">使用时间: {{ item.startDate }}~{{ item.endDate }}</view>
 				<!-- <u-button type="warning" shape="circle" :ripple="true" :custom-style="{...handleCustomStyle, float: 'left', marginLeft: ''}" size="mini" @click="goToPay(item)">点击开通</u-button> -->
 				<u-checkbox v-model="item.checked" active-color="#ff6e3e" @change="changeCardClick(item)">选择</u-checkbox>
 				<view class="menber-icon iconfont iconzu4931"></view>
@@ -163,11 +165,15 @@
 					})
 				})
 				// 会员卡
-				NET.request(API.getMemberCardList, {}, 'POST').then(res => {
+				NET.request(API.getMemberCardList, {venueId:this.venueId}, 'POST').then(res => {
 					this.menberList = res.data.map(item => {
 						return {
+							id: item.id,
 							type: item.type,
 							typeValue: item.typeValue,
+							sellingPrice: item.sellingPrice,
+							startDate: item.startDate,
+							endDate: item.endDate,
 							checked: false
 						}
 					})
@@ -181,7 +187,7 @@
 			},
 			//  选择会员卡
 			changeCardClick(cardItem) {
-				const cardItemIndex = this.checkedCardList.findIndex( item => item.typeValue === cardItem.typeValue )
+				const cardItemIndex = this.checkedCardList.findIndex( item => item.id === cardItem.id )
 				if(cardItemIndex === -1) {
 					this.checkedCardList.push(cardItem)
 				} else {
@@ -315,11 +321,11 @@
 		
 				.menber-label {
 					width: 100%;
-					margin-bottom: 10px;
+					margin-bottom: 5px;
 					float: left;
 					font-size: 14px;
 					font-weight: bold;
-					line-height: 20px;
+					// line-height: 20px;
 				}
 		
 				.menber-num {
@@ -331,7 +337,7 @@
 				}
 		
 				.menber-icon {
-					font-size: 80px;
+					font-size: 100px;
 					color: $mainColor;
 					position: absolute;
 					right: -5px;

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/index.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/member/index.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/index.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/contractInfo.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/couponList.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/evaluateList.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/memberCardList.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/openMember.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/orderList.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/payResult.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/payResultNo.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/shareInfo.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/studentList.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/subscribeInfo.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMain/subscribeList.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/classDetail.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/courseForm.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/evaluateForm.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/leaveForm.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/myClassDetail.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/subscribelForm.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/subscribelSuccess.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/venueDetail.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMember/venueMore.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-action-sheet/u-action-sheet.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-avatar/u-avatar.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-button/u-button.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-calendar/u-calendar.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-card/u-card.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-cell-group/u-cell-group.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-cell-item/u-cell-item.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-checkbox/u-checkbox.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-divider/u-divider.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-empty/u-empty.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-form-item/u-form-item.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-form/u-form.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-icon/u-icon.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-image/u-image.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-input/u-input.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-line-progress/u-line-progress.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-loading/u-loading.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-mask/u-mask.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-modal/u-modal.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-navbar/u-navbar.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-picker/u-picker.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-popup/u-popup.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-rate/u-rate.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-read-more/u-read-more.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-section/u-section.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-select/u-select.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-swiper/u-swiper.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-tabs-swiper/u-tabs-swiper.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-top-tips/u-top-tips.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-upload/u-upload.js.map


+ 1 - 0
unpackage/dist/dev/mp-weixin/app.json

@@ -28,6 +28,7 @@
         "couponList",
         "shareInfo",
         "evaluateList",
+        "subscribeInfo",
         "subscribeList",
         "memberCardList",
         "openMember",

Різницю між файлами не показано, бо вона завелика
+ 21 - 22
unpackage/dist/dev/mp-weixin/common/main.js


Різницю між файлами не показано, бо вона завелика
+ 1 - 1
unpackage/dist/dev/mp-weixin/common/runtime.js


+ 197 - 196
unpackage/dist/dev/mp-weixin/common/vendor.js

@@ -324,7 +324,7 @@ var promiseInterceptor = {
 
 
 var SYNC_API_RE =
-/^\$|Window$|WindowStyle$|sendHostEvent|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getLocale|setLocale/;
+/^\$|Window$|WindowStyle$|sendHostEvent|sendNativeEvent|restoreGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getLocale|setLocale/;
 
 var CONTEXT_API_RE = /^create|Manager$/;
 
@@ -589,14 +589,6 @@ var getSystemInfo = {
   } };
 
 
-var showActionSheet = {
-  args: function args(fromArgs) {
-    if (typeof fromArgs === 'object') {
-      fromArgs.alertText = fromArgs.title;
-    }
-  } };
-
-
 // import navigateTo from 'uni-helpers/navigate-to'
 
 var protocols = {
@@ -604,8 +596,7 @@ var protocols = {
   // navigateTo,  // 由于在微信开发者工具的页面参数,会显示__id__参数,因此暂时关闭mp-weixin对于navigateTo的AOP
   previewImage: previewImage,
   getSystemInfo: getSystemInfo,
-  getSystemInfoSync: getSystemInfo,
-  showActionSheet: showActionSheet };
+  getSystemInfoSync: getSystemInfo };
 
 var todos = [
 'vibrate',
@@ -2230,9 +2221,9 @@ function normalizeComponent (
 /***/ }),
 
 /***/ 12:
-/*!***************************************!*\
-  !*** E:/spark-student/store/index.js ***!
-  \***************************************/
+/*!**********************************************!*\
+  !*** F:/小程序客户端/spark-student/store/index.js ***!
+  \**********************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -2913,7 +2904,7 @@ Store.prototype.hasModule = function hasModule (path) {
   return this._modules.isRegistered(path)
 };
 
-Store.prototype[[104,111,116,85,112,100,97,116,101].map(function (item) {return String.fromCharCode(item)}).join('')] = function (newOptions) {
+Store.prototype[[104,111,116,85,112,100,97,116,101].map(item =>String.fromCharCode(item)).join('')] = function (newOptions) {
   this._modules.update(newOptions);
   resetStore(this, true);
 };
@@ -3546,9 +3537,9 @@ module.exports = index_cjs;
 /***/ }),
 
 /***/ 14:
-/*!******************************************!*\
-  !*** E:/spark-student/uview-ui/index.js ***!
-  \******************************************/
+/*!*************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/index.js ***!
+  \*************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -3693,9 +3684,9 @@ var install = function install(Vue) {
 /***/ }),
 
 /***/ 15:
-/*!*****************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/mixin/mixin.js ***!
-  \*****************************************************/
+/*!************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/mixin/mixin.js ***!
+  \************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -3749,9 +3740,9 @@ var install = function install(Vue) {
 /***/ }),
 
 /***/ 16:
-/*!*******************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/request/index.js ***!
-  \*******************************************************/
+/*!**************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/request/index.js ***!
+  \**************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -3930,9 +3921,9 @@ new Request();exports.default = _default;
 /***/ }),
 
 /***/ 17:
-/*!************************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/deepMerge.js ***!
-  \************************************************************/
+/*!*******************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/deepMerge.js ***!
+  \*******************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -3971,9 +3962,9 @@ deepMerge;exports.default = _default;
 /***/ }),
 
 /***/ 18:
-/*!************************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/deepClone.js ***!
-  \************************************************************/
+/*!*******************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/deepClone.js ***!
+  \*******************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -4005,9 +3996,9 @@ deepClone;exports.default = _default;
 /***/ }),
 
 /***/ 19:
-/*!*******************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/test.js ***!
-  \*******************************************************/
+/*!**************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/test.js ***!
+  \**************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -4279,9 +4270,9 @@ module.exports = g;
 /***/ }),
 
 /***/ 20:
-/*!**************************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/queryParams.js ***!
-  \**************************************************************/
+/*!*********************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/queryParams.js ***!
+  \*********************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -4348,9 +4339,9 @@ queryParams;exports.default = _default;
 /***/ }),
 
 /***/ 21:
-/*!********************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/route.js ***!
-  \********************************************************/
+/*!***************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/route.js ***!
+  \***************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -4445,9 +4436,9 @@ route;exports.default = _default;
 /***/ }),
 
 /***/ 22:
-/*!*************************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/timeFormat.js ***!
-  \*************************************************************/
+/*!********************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/timeFormat.js ***!
+  \********************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -4508,9 +4499,9 @@ timeFormat;exports.default = _default;
 /***/ }),
 
 /***/ 23:
-/*!***********************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/timeFrom.js ***!
-  \***********************************************************/
+/*!******************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/timeFrom.js ***!
+  \******************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -4565,9 +4556,9 @@ timeFrom;exports.default = _default;
 /***/ }),
 
 /***/ 24:
-/*!****************************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/colorGradient.js ***!
-  \****************************************************************/
+/*!***********************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/colorGradient.js ***!
+  \***********************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -4675,9 +4666,9 @@ function rgbToHex(rgb) {
 /***/ }),
 
 /***/ 25:
-/*!*******************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/guid.js ***!
-  \*******************************************************/
+/*!**************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/guid.js ***!
+  \**************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -4727,9 +4718,9 @@ guid;exports.default = _default;
 /***/ }),
 
 /***/ 26:
-/*!********************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/color.js ***!
-  \********************************************************/
+/*!***************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/color.js ***!
+  \***************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -4775,9 +4766,9 @@ color;exports.default = _default;
 /***/ }),
 
 /***/ 27:
-/*!************************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/type2icon.js ***!
-  \************************************************************/
+/*!*******************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/type2icon.js ***!
+  \*******************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -4821,9 +4812,9 @@ type2icon;exports.default = _default;
 /***/ }),
 
 /***/ 28:
-/*!**************************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/randomArray.js ***!
-  \**************************************************************/
+/*!*********************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/randomArray.js ***!
+  \*********************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -4839,9 +4830,9 @@ randomArray;exports.default = _default;
 /***/ }),
 
 /***/ 29:
-/*!**********************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/addUnit.js ***!
-  \**********************************************************/
+/*!*****************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/addUnit.js ***!
+  \*****************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -4868,7 +4859,7 @@ function addUnit() {var value = arguments.length > 0 && arguments[0] !== undefin
 __webpack_require__.r(__webpack_exports__);
 /* WEBPACK VAR INJECTION */(function(global) {/*!
  * Vue.js v2.6.11
- * (c) 2014-2022 Evan You
+ * (c) 2014-2021 Evan You
  * Released under the MIT License.
  */
 /*  */
@@ -8948,10 +8939,10 @@ function updateChildComponent (
     // keep a copy of raw propsData
     vm.$options.propsData = propsData;
   }
-  
+
   // fixed by xxxxxx update properties(mp runtime)
   vm._$updateProperties && vm._$updateProperties(vm);
-  
+
   // update listeners
   listeners = listeners || emptyObject;
   var oldListeners = vm.$options._parentListeners;
@@ -9477,12 +9468,12 @@ function initProps (vm, propsOptions) {
       defineReactive$$1(props, key, value, function () {
         if (!isRoot && !isUpdatingChildComponent) {
           {
-            if(vm.mpHost === 'mp-baidu' || vm.mpHost === 'mp-kuaishou' || vm.mpHost === 'mp-xhs'){//百度、快手、小红书 observer 在 setData callback 之后触发,直接忽略该 warn
+            if(vm.mpHost === 'mp-baidu' || vm.mpHost === 'mp-kuaishou'){//百度、快手 observer 在 setData callback 之后触发,直接忽略该 warn
                 return
             }
             //fixed by xxxxxx __next_tick_pending,uni://form-field 时不告警
             if(
-                key === 'value' && 
+                key === 'value' &&
                 Array.isArray(vm.$options.behaviors) &&
                 vm.$options.behaviors.indexOf('uni://form-field') !== -1
               ){
@@ -9494,7 +9485,7 @@ function initProps (vm, propsOptions) {
             var $parent = vm.$parent;
             while($parent){
               if($parent.__next_tick_pending){
-                return  
+                return
               }
               $parent = $parent.$parent;
             }
@@ -9822,10 +9813,10 @@ function initMixin (Vue) {
     initEvents(vm);
     initRender(vm);
     callHook(vm, 'beforeCreate');
-    !vm._$fallback && initInjections(vm); // resolve injections before data/props  
+    !vm._$fallback && initInjections(vm); // resolve injections before data/props
     initState(vm);
     !vm._$fallback && initProvide(vm); // resolve provide after data/props
-    !vm._$fallback && callHook(vm, 'created');      
+    !vm._$fallback && callHook(vm, 'created');
 
     /* istanbul ignore if */
     if ( true && config.performance && mark) {
@@ -10324,6 +10315,7 @@ function _diff(current, pre, path, result) {
                 var currentType = type(currentValue);
                 var preType = type(preValue);
                 if (currentType != ARRAYTYPE && currentType != OBJECTTYPE) {
+                    // NOTE 此处将 != 修改为 !==。涉及地方太多恐怕测试不到,如果出现数据对比问题,将其修改回来。
                     if (currentValue !== pre[key]) {
                         setResult(result, (path == '' ? '' : path + ".") + key, currentValue);
                     }
@@ -10550,7 +10542,7 @@ function mountComponent$1(
       }
     }
   }
-  
+
   !vm._$fallback && callHook(vm, 'beforeMount');
 
   var updateComponent = function () {
@@ -10683,9 +10675,10 @@ function internalMixin(Vue) {
 
   Vue.prototype.$emit = function(event) {
     if (this.$scope && event) {
-      (this.$scope['_triggerEvent'] || this.$scope['triggerEvent']).call(this.$scope, event, {
-        __args__: toArray(arguments, 1)
-      });
+      (this.$scope['_triggerEvent'] || this.$scope['triggerEvent'])
+        .call(this.$scope, event, {
+          __args__: toArray(arguments, 1)
+        })
     }
     return oldEmit.apply(this, arguments)
   };
@@ -10750,7 +10743,7 @@ function internalMixin(Vue) {
       target = this;
     }
     // 解决动态属性添加
-    Vue.set(target, key, value);
+    Vue.set(target, key, value)
   };
 
   Vue.prototype.__set_sync = function(target, key, value) {
@@ -10758,7 +10751,7 @@ function internalMixin(Vue) {
       target = this;
     }
     // 解决动态属性添加
-    Vue.set(target, key, value);
+    Vue.set(target, key, value)
   };
 
   Vue.prototype.__get_orig = function(item) {
@@ -10891,7 +10884,7 @@ Vue.prototype.__patch__ = patch;
 // public mount method
 Vue.prototype.$mount = function(
     el ,
-    hydrating 
+    hydrating
 ) {
     return mountComponent$1(this, el, hydrating)
 };
@@ -10908,9 +10901,9 @@ internalMixin(Vue);
 /***/ }),
 
 /***/ 30:
-/*!*********************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/random.js ***!
-  \*********************************************************/
+/*!****************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/random.js ***!
+  \****************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -10929,9 +10922,9 @@ random;exports.default = _default;
 /***/ }),
 
 /***/ 31:
-/*!*******************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/trim.js ***!
-  \*******************************************************/
+/*!**************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/trim.js ***!
+  \**************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -10955,9 +10948,9 @@ trim;exports.default = _default;
 /***/ }),
 
 /***/ 32:
-/*!********************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/toast.js ***!
-  \********************************************************/
+/*!***************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/toast.js ***!
+  \***************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -10976,9 +10969,9 @@ toast;exports.default = _default;
 /***/ }),
 
 /***/ 33:
-/*!************************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/getParent.js ***!
-  \************************************************************/
+/*!*******************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/getParent.js ***!
+  \*******************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -11033,18 +11026,18 @@ function getParent(name, keys) {
 
 /***/ }),
 
-/***/ 338:
+/***/ 331:
 /*!**********************************************************!*\
   !*** ./node_modules/@babel/runtime/regenerator/index.js ***!
   \**********************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
-module.exports = __webpack_require__(/*! regenerator-runtime */ 339);
+module.exports = __webpack_require__(/*! regenerator-runtime */ 332);
 
 /***/ }),
 
-/***/ 339:
+/***/ 332:
 /*!************************************************************!*\
   !*** ./node_modules/regenerator-runtime/runtime-module.js ***!
   \************************************************************/
@@ -11075,7 +11068,7 @@ var oldRuntime = hadRuntime && g.regeneratorRuntime;
 // Force reevalutation of runtime.js.
 g.regeneratorRuntime = undefined;
 
-module.exports = __webpack_require__(/*! ./runtime */ 340);
+module.exports = __webpack_require__(/*! ./runtime */ 333);
 
 if (hadRuntime) {
   // Restore the original runtime.
@@ -11092,36 +11085,7 @@ if (hadRuntime) {
 
 /***/ }),
 
-/***/ 34:
-/*!**********************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/$parent.js ***!
-  \**********************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });exports.default = $parent; // 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法
-// this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx
-// 这里默认值等于undefined有它的含义,因为最顶层元素(组件)的$parent就是undefined,意味着不传name
-// 值(默认为undefined),就是查找最顶层的$parent
-function $parent() {var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
-  var parent = this.$parent;
-  // 通过while历遍,这里主要是为了H5需要多层解析的问题
-  while (parent) {
-    // 父组件
-    if (parent.$options && parent.$options.name !== name) {
-      // 如果组件的name不相等,继续上一级寻找
-      parent = parent.$parent;
-    } else {
-      return parent;
-    }
-  }
-  return false;
-}
-
-/***/ }),
-
-/***/ 340:
+/***/ 333:
 /*!*****************************************************!*\
   !*** ./node_modules/regenerator-runtime/runtime.js ***!
   \*****************************************************/
@@ -11851,12 +11815,41 @@ function $parent() {var name = arguments.length > 0 && arguments[0] !== undefine
 );
 
 
+/***/ }),
+
+/***/ 34:
+/*!*****************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/$parent.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });exports.default = $parent; // 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法
+// this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx
+// 这里默认值等于undefined有它的含义,因为最顶层元素(组件)的$parent就是undefined,意味着不传name
+// 值(默认为undefined),就是查找最顶层的$parent
+function $parent() {var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
+  var parent = this.$parent;
+  // 通过while历遍,这里主要是为了H5需要多层解析的问题
+  while (parent) {
+    // 父组件
+    if (parent.$options && parent.$options.name !== name) {
+      // 如果组件的name不相等,继续上一级寻找
+      parent = parent.$parent;
+    } else {
+      return parent;
+    }
+  }
+  return false;
+}
+
 /***/ }),
 
 /***/ 35:
-/*!******************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/sys.js ***!
-  \******************************************************/
+/*!*************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/sys.js ***!
+  \*************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -11873,9 +11866,9 @@ function sys() {
 /***/ }),
 
 /***/ 36:
-/*!***********************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/debounce.js ***!
-  \***********************************************************/
+/*!******************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/debounce.js ***!
+  \******************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -11913,9 +11906,9 @@ debounce;exports.default = _default;
 /***/ }),
 
 /***/ 37:
-/*!***********************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/function/throttle.js ***!
-  \***********************************************************/
+/*!******************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/function/throttle.js ***!
+  \******************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -11955,34 +11948,10 @@ throttle;exports.default = _default;
 
 /***/ }),
 
-/***/ 38:
-/*!*******************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/config/config.js ***!
-  \*******************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; // 此版本发布于2020-09-22
-var version = '1.7.3';var _default =
-
-{
-  v: version,
-  version: version,
-  // 主题名称
-  type: [
-  'primary',
-  'success',
-  'info',
-  'error',
-  'warning'] };exports.default = _default;
-
-/***/ }),
-
-/***/ 383:
-/*!******************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/util/emitter.js ***!
-  \******************************************************/
+/***/ 376:
+/*!*************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/util/emitter.js ***!
+  \*************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -12039,10 +12008,34 @@ function _broadcast(componentName, eventName, params) {
 
 /***/ }),
 
+/***/ 38:
+/*!**************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/config/config.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; // 此版本发布于2020-09-22
+var version = '1.7.3';var _default =
+
+{
+  v: version,
+  version: version,
+  // 主题名称
+  type: [
+  'primary',
+  'success',
+  'info',
+  'error',
+  'warning'] };exports.default = _default;
+
+/***/ }),
+
 /***/ 39:
-/*!*******************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/config/zIndex.js ***!
-  \*******************************************************/
+/*!**************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/config/zIndex.js ***!
+  \**************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -12533,10 +12526,10 @@ function resolveLocaleChain(locale) {
 
 /***/ }),
 
-/***/ 419:
-/*!**************************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/util/async-validator.js ***!
-  \**************************************************************/
+/***/ 412:
+/*!*********************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/util/async-validator.js ***!
+  \*********************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -13896,11 +13889,11 @@ Schema.warning = warning;
 Schema.messages = messages;var _default =
 
 Schema;exports.default = _default;
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/node-libs-browser/mock/process.js */ 420)))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/node-libs-browser/mock/process.js */ 413)))
 
 /***/ }),
 
-/***/ 420:
+/***/ 413:
 /*!********************************************************!*\
   !*** ./node_modules/node-libs-browser/mock/process.js ***!
   \********************************************************/
@@ -13931,7 +13924,7 @@ exports.binding = function (name) {
     var path;
     exports.cwd = function () { return cwd };
     exports.chdir = function (dir) {
-        if (!path) path = __webpack_require__(/*! path */ 421);
+        if (!path) path = __webpack_require__(/*! path */ 414);
         cwd = path.resolve(dir, cwd);
     };
 })();
@@ -13945,7 +13938,7 @@ exports.features = {};
 
 /***/ }),
 
-/***/ 421:
+/***/ 414:
 /*!***********************************************!*\
   !*** ./node_modules/path-browserify/index.js ***!
   \***********************************************/
@@ -14255,14 +14248,14 @@ var substr = 'ab'.substr(-1) === 'b'
     }
 ;
 
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node-libs-browser/mock/process.js */ 420)))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node-libs-browser/mock/process.js */ 413)))
 
 /***/ }),
 
-/***/ 436:
-/*!*******************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/util/province.js ***!
-  \*******************************************************/
+/***/ 429:
+/*!**************************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/util/province.js ***!
+  \**************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -14271,10 +14264,10 @@ Object.defineProperty(exports, "__esModule", { value: true });exports.default =
 
 /***/ }),
 
-/***/ 437:
-/*!***************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/util/city.js ***!
-  \***************************************************/
+/***/ 430:
+/*!**********************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/util/city.js ***!
+  \**********************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -14283,10 +14276,10 @@ Object.defineProperty(exports, "__esModule", { value: true });exports.default =
 
 /***/ }),
 
-/***/ 438:
-/*!***************************************************!*\
-  !*** E:/spark-student/uview-ui/libs/util/area.js ***!
-  \***************************************************/
+/***/ 431:
+/*!**********************************************************!*\
+  !*** F:/小程序客户端/spark-student/uview-ui/libs/util/area.js ***!
+  \**********************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -14296,9 +14289,9 @@ Object.defineProperty(exports, "__esModule", { value: true });exports.default =
 /***/ }),
 
 /***/ 46:
-/*!*****************************************!*\
-  !*** E:/spark-student/utils/request.js ***!
-  \*****************************************/
+/*!************************************************!*\
+  !*** F:/小程序客户端/spark-student/utils/request.js ***!
+  \************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -14361,13 +14354,14 @@ module.exports = {
 /***/ }),
 
 /***/ 47:
-/*!**************************************!*\
-  !*** E:/spark-student/config/api.js ***!
-  \**************************************/
+/*!*********************************************!*\
+  !*** F:/小程序客户端/spark-student/config/api.js ***!
+  \*********************************************/
 /*! no static exports found */
 /***/ (function(module, exports) {
 
-var API_BASE = 'https://xinghuolanqiu.com/newApi';
+// const API_BASE = 'https://xinghuolanqiu.com/newApi'
+var API_BASE = 'http://192.168.1.126:30000';
 // const API_BASE = 'http://192.168.1.117:8089/'
 
 module.exports = {
@@ -14386,7 +14380,10 @@ module.exports = {
   //  获取首页轮播图列表
   getIndexSwiperList: API_BASE + '/v2/home/getRollAdvertisingHomeList',
   //  获取首页场馆列表
-  getVenueList: API_BASE + '/v2/home/getVenueNearbyList',
+  // v2
+  // getVenueList: API_BASE + '/v2/home/getVenueNearbyList',
+  // v3
+  getVenueList: API_BASE + '/sgai/venue/get4ShortestVenue',
   //  获取场馆详情
   getVenueDetail: API_BASE + '/v2/home/getVenueDetailById',
   //  获取班级详情
@@ -14401,6 +14398,10 @@ module.exports = {
   getMemberClassDetail: API_BASE + '/v2/class/getDetail',
   //  获取我的班级全部请假列表
   getAllLeaveList: API_BASE + '/v2/class/getAllLeaveList',
+  //  获取评论
+  getSignRemark: API_BASE + '/v2/class/getSignRemark',
+  //  评论
+  setSignRemark: API_BASE + '/v2/class/setSignRemark',
   //  学员报名
   enlistStudent: API_BASE + '/v2/class/apply',
   //  获取可预约学员列表
@@ -14471,9 +14472,9 @@ module.exports = {
 /***/ }),
 
 /***/ 5:
-/*!***********************************!*\
-  !*** E:/spark-student/pages.json ***!
-  \***********************************/
+/*!******************************************!*\
+  !*** F:/小程序客户端/spark-student/pages.json ***!
+  \******************************************/
 /*! no static exports found */
 /***/ (function(module, exports) {
 

Різницю між файлами не показано, бо вона завелика
+ 42 - 98
unpackage/dist/dev/mp-weixin/pages/index/index.js


+ 0 - 1
unpackage/dist/dev/mp-weixin/pages/index/index.json

@@ -4,7 +4,6 @@
   "enablePullDownRefresh": true,
   "usingComponents": {
     "u-navbar": "/uview-ui/components/u-navbar/u-navbar",
-    "u-select": "/uview-ui/components/u-select/u-select",
     "u-swiper": "/uview-ui/components/u-swiper/u-swiper",
     "u-image": "/uview-ui/components/u-image/u-image",
     "u-section": "/uview-ui/components/u-section/u-section",

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/index/index.wxml


+ 4 - 0
unpackage/dist/dev/mp-weixin/pages/index/index.wxss

@@ -125,6 +125,10 @@
   line-height: 20px;
 }
 .content .venue-box .venue-card .venue-content .info-text.data-v-57280228 {
+  max-width: 60vw;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
   color: #999999;
   line-height: 18px;
 }

Різницю між файлами не показано, бо вона завелика
+ 39 - 40
unpackage/dist/dev/mp-weixin/pages/login/index.js


Різницю між файлами не показано, бо вона завелика
+ 39 - 42
unpackage/dist/dev/mp-weixin/pages/member/index.js


Різницю між файлами не показано, бо вона завелика
+ 80 - 49
unpackage/dist/dev/mp-weixin/pages/user/index.js


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/user/index.wxml


Різницю між файлами не показано, бо вона завелика
+ 42 - 48
unpackage/dist/dev/mp-weixin/pagesMain/contractInfo.js


+ 1 - 1
unpackage/dist/dev/mp-weixin/pagesMain/contractInfo.wxml

@@ -1 +1 @@
-<view class="content data-v-06aebfc0"><rich-text class="web-view data-v-06aebfc0" nodes="{{contractInfo.url}}"></rich-text><u-cell-group style="width:100%;float:left;" vue-id="cf283634-1" class="data-v-06aebfc0" bind:__l="__l" vue-slots="{{['default']}}"><u-cell-item vue-id="{{('cf283634-2')+','+('cf283634-1')}}" title="乙方签字" arrow="{{false}}" title-style="{{({width:'100%'})}}" required="{{true}}" class="data-v-06aebfc0" bind:__l="__l" vue-slots="{{['label']}}"><view class="canvas-container data-v-06aebfc0" slot="label"><canvas style="width:100%;height:200px;background-color:#FFFFFF;" canvas-id="canvas" id="canvas" disable-scroll="{{true}}" data-event-opts="{{[['touchstart',[['handleTouchStart',['$event']]]],['touchmove',[['handleTouchMove',['$event']]]],['touchend',[['handleTouchEnd',['$event']]]],['touchcancel',[['handleEnd',['$event']]]]]}}" bindtouchstart="__e" bindtouchmove="__e" bindtouchend="__e" bindtouchcancel="__e" class="data-v-06aebfc0"></canvas></view></u-cell-item></u-cell-group><view class="handle-fix-box data-v-06aebfc0" style="height:100px;"><u-button style="margin-bottom:10px;display:block;" vue-id="cf283634-3" type="warning" shape="circle" ripple="{{true}}" custom-style="{{customStyle}}" data-event-opts="{{[['^click',[['submitContract0']]]]}}" bind:click="__e" class="data-v-06aebfc0" bind:__l="__l" vue-slots="{{['default']}}">其他方式支付</u-button><u-button vue-id="cf283634-4" type="warning" shape="circle" ripple="{{true}}" custom-style="{{customStyle}}" disabled="{{!ifSign}}" data-event-opts="{{[['^click',[['submitContract']]]]}}" bind:click="__e" class="data-v-06aebfc0" bind:__l="__l" vue-slots="{{['default']}}">确定支付</u-button></view><u-top-tips vue-id="cf283634-5" data-ref="uTips" class="data-v-06aebfc0 vue-ref" bind:__l="__l"></u-top-tips></view>
+<view class="content data-v-06aebfc0"><block wx:for="{{contractInfo}}" wx:for-item="item" wx:for-index="index" wx:key="index"><rich-text class="web-view data-v-06aebfc0" nodes="{{item.url}}"></rich-text></block><u-cell-group style="width:100%;float:left;" vue-id="cf283634-1" class="data-v-06aebfc0" bind:__l="__l" vue-slots="{{['default']}}"><u-cell-item vue-id="{{('cf283634-2')+','+('cf283634-1')}}" title="乙方签字" arrow="{{false}}" title-style="{{({width:'100%'})}}" required="{{true}}" class="data-v-06aebfc0" bind:__l="__l" vue-slots="{{['label']}}"><view class="canvas-container data-v-06aebfc0" slot="label"><canvas style="width:100%;height:200px;background-color:#FFFFFF;" canvas-id="canvas" id="canvas" disable-scroll="{{true}}" data-event-opts="{{[['touchstart',[['handleTouchStart',['$event']]]],['touchmove',[['handleTouchMove',['$event']]]],['touchend',[['handleTouchEnd',['$event']]]],['touchcancel',[['handleEnd',['$event']]]]]}}" bindtouchstart="__e" bindtouchmove="__e" bindtouchend="__e" bindtouchcancel="__e" class="data-v-06aebfc0"></canvas></view></u-cell-item></u-cell-group><view class="handle-fix-box data-v-06aebfc0" style="height:100px;"><u-button style="margin-bottom:10px;display:block;" vue-id="cf283634-3" type="warning" shape="circle" ripple="{{true}}" disabled="{{!ifSign}}" custom-style="{{customStyle}}" data-event-opts="{{[['^click',[['submitContract0']]]]}}" bind:click="__e" class="data-v-06aebfc0" bind:__l="__l" vue-slots="{{['default']}}">其他方式支付</u-button><u-button vue-id="cf283634-4" type="warning" shape="circle" ripple="{{true}}" custom-style="{{customStyle}}" disabled="{{!ifSign}}" data-event-opts="{{[['^click',[['submitContract']]]]}}" bind:click="__e" class="data-v-06aebfc0" bind:__l="__l" vue-slots="{{['default']}}">确定支付</u-button></view><u-top-tips vue-id="cf283634-5" data-ref="uTips" class="data-v-06aebfc0 vue-ref" bind:__l="__l"></u-top-tips></view>

Різницю між файлами не показано, бо вона завелика
+ 54 - 41
unpackage/dist/dev/mp-weixin/pagesMain/couponList.js


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/mp-weixin/pagesMain/couponList.wxml


+ 17 - 0
unpackage/dist/dev/mp-weixin/pagesMain/couponList.wxss

@@ -98,4 +98,21 @@ page {
   right: 8px;
   bottom: 3px;
 }
+.content-info.data-v-b1261db8 {
+  width: 100%;
+  height: 100%;
+  float: left;
+  position: relative;
+}
+.content-info .share-img.data-v-b1261db8 {
+  top: 40%;
+  left: 50%;
+  -webkit-transform: translate(-50%, -50%);
+          transform: translate(-50%, -50%);
+  position: absolute;
+}
+.content-info .share-img .share-class.data-v-b1261db8 {
+  margin-top: 20rpx;
+  text-align: center;
+}
 

Різницю між файлами не показано, бо вона завелика
+ 38 - 41
unpackage/dist/dev/mp-weixin/pagesMain/evaluateList.js


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/mp-weixin/pagesMain/evaluateList.wxml


+ 1 - 1
unpackage/dist/dev/mp-weixin/pagesMain/evaluateList.wxss

@@ -82,7 +82,7 @@ page {
   color: #000000;
 }
 .content .scroll-box .class-card .class-foot-label.data-v-2dfd9897 {
-  width: 60px;
+  width: 70px;
   color: #999999;
 }
 .content .scroll-box .class-card .class-foot-content.data-v-2dfd9897 {

Різницю між файлами не показано, бо вона завелика
+ 35 - 38
unpackage/dist/dev/mp-weixin/pagesMain/memberCardList.js


Різницю між файлами не показано, бо вона завелика
+ 133 - 97
unpackage/dist/dev/mp-weixin/pagesMain/openMember.js


+ 2 - 1
unpackage/dist/dev/mp-weixin/pagesMain/openMember.json

@@ -4,10 +4,11 @@
     "u-form": "/uview-ui/components/u-form/u-form",
     "u-form-item": "/uview-ui/components/u-form-item/u-form-item",
     "u-input": "/uview-ui/components/u-input/u-input",
+    "u-button": "/uview-ui/components/u-button/u-button",
     "u-popup": "/uview-ui/components/u-popup/u-popup",
     "u-card": "/uview-ui/components/u-card/u-card",
     "u-image": "/uview-ui/components/u-image/u-image",
-    "u-button": "/uview-ui/components/u-button/u-button",
+    "u-empty": "/uview-ui/components/u-empty/u-empty",
     "u-action-sheet": "/uview-ui/components/u-action-sheet/u-action-sheet",
     "u-top-tips": "/uview-ui/components/u-top-tips/u-top-tips"
   }

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
unpackage/dist/dev/mp-weixin/pagesMain/openMember.wxml


+ 3 - 4
unpackage/dist/dev/mp-weixin/pagesMain/openMember.wxss

@@ -62,9 +62,7 @@ page {
   width: 100%;
   margin-bottom: 10px;
   float: left;
-  font-size: 18px;
-  font-weight: bold;
-  line-height: 20px;
+  font-size: 14px;
 }
 .content .card-list .card-num.data-v-8df83678 {
   width: 100%;
@@ -74,7 +72,7 @@ page {
   color: #ff6e3e;
 }
 .content .card-list .card-icon.data-v-8df83678 {
-  font-size: 80px;
+  font-size: 100px;
   color: #ff6e3e;
   position: absolute;
   right: -15px;
@@ -99,6 +97,7 @@ page {
   font-size: 16px;
   color: #000000;
   word-break: break-all;
+  margin-bottom: 5px;
 }
 .content .class-card .class-info-text.data-v-8df83678 {
   color: #999999;

Деякі файли не було показано, через те що забагато файлів було змінено