Browse Source

Signed-off-by: liuboyan <632697560@qq.com>
1

liuboyan 4 years ago
parent
commit
e9b717de1d
6 changed files with 121 additions and 47 deletions
  1. 4 4
      config/api.js
  2. 8 4
      pages/index/index.vue
  3. 6 4
      pages/user/index.vue
  4. 16 4
      pagesMain/memberCardList.vue
  5. 75 31
      pagesMain/openMember.vue
  6. 12 0
      pagesMain/orderList.vue

+ 4 - 4
config/api.js

@@ -68,15 +68,15 @@ module.exports = {
 	
 	
 	//  获取可购买会员卡列表
-	getMemberCardList: API_BASE + '/v2/student/myCenter/getMemberList',
+	getMemberCardList: API_BASE + '/v2/student/myCenter/getCardTypeList',
 	//  获取可购买会员卡信息
-	getMemberCardInfo: API_BASE + '/v2/student/myCenter/getMemberDetail',
+	getMemberCardInfo: API_BASE + '/v2/student/myCenter/getMemberDetailAfterCoupon',
+	//  获取可购买会员卡所有场馆
+	getAllVenueList: API_BASE + '/v2/student/myCenter/getAllVenueList',
 	//  获取前用户家长信息
 	getParentInfo: API_BASE + '/v2/student/contract/getUserInfo',
 	//  获取可用优惠券列表
 	getUsableCouponList: API_BASE + '/v2/student/myCenter/getOwnCouponList',
-	//  获取可购买会员卡选择优惠券后信息
-	getMemberCardInfoAfterCoupon: API_BASE + '/v2/student/myCenter/getMemberDetailAfterCoupon',
 	//  获取可购买会员卡学员列表
 	getAllStudentList: API_BASE + '/v2/student/myCenter/selectAllStudent',
 	//  获取合同模板

+ 8 - 4
pages/index/index.vue

@@ -9,7 +9,7 @@
 		<view class="menber-box">
 			<view class="menber-col" v-for="(item, index) in menberList" :key="index" @click="goToPay(item)">
 				<view class="menber-label">{{item.typeValue}}</view>
-				<view class="menber-num">¥{{item.amount}}</view>
+				<u-button type="warning" shape="circle" :ripple="true" :custom-style="{...handleCustomStyle, float: 'left', marginLeft: ''}" size="mini" @click="goToPay(item)">点击开通</u-button>
 				<view class="menber-icon iconfont iconzu4931"></view>
 			</view>
 		</view>
@@ -18,7 +18,7 @@
 			<u-section title="附近场馆" font-size="32" :right="false" :show-line="false"></u-section>
 		</view>
 		<view class="venue-box">
-			<u-card :head-border-bottom="false" :show-foot="false" title-size="32" padding="0" margin="10px" v-for="(item, index) in venueList"
+			<u-card :head-border-bottom="false" :foot-border-top="false" title-size="32" padding="0" margin="10px" v-for="(item, index) in venueList"
 			 :key="index" class="venue-card" @click="goToVenueDetail(item)">
 				<view class="venue-content" slot="head" style="padding-top: 10px;">
 					<view class="venue-name">{{item.name}}</view>
@@ -33,6 +33,9 @@
 						{{item.address}}
 					</view>
 				</view>
+				<view class="venue-content" slot="foot" style="text-align: right;">
+					<u-button type="warning" shape="circle" :ripple="true" :custom-style="handleCustomStyle" size="mini" @click="goToVenueDetail(item)">预约</u-button>
+				</view>
 			</u-card>
 		</view>
 		<view class="section-title">
@@ -62,6 +65,7 @@
 		computed: {
 			...mapGetters([
 				'mainColor',
+				'handleCustomStyle',
 			])
 		},
 		data() {
@@ -163,7 +167,7 @@
 			//  跳转开通支付
 			goToPay(site) {
 				uni.navigateTo({
-					url: '/pagesMain/openMember?id=' + site.id
+					url: '/pagesMain/openMember?memberCardType=' + site.type + '&typeValue=' + site.typeValue
 				});
 			},
 			//  跳转场馆详情
@@ -266,7 +270,7 @@
 				display: inline-block;
 
 				.venue-content {
-					padding: 0px 25px 10px 15px;
+					padding: 0px 15px 10px 15px;
 
 					.venue-name {
 						height: 20px;

+ 6 - 4
pages/user/index.vue

@@ -19,14 +19,14 @@
 				</view>
 			</view>
 			<template v-else>
-				<view class="member-card" @click="goToMemberCard()" v-for="(item, index) in studentList" :key="index">
+				<view class="member-card" @click="goToMemberCard(item)" v-for="(item, index) in studentList" :key="index">
 					<view class="member-info">
 						<view class="member-title">{{item.studentName}}</view>
 						<view class="member-text">
 							<view>剩余&nbsp;{{item.days}}&nbsp;天到期</view>
 						</view>
 					</view>
-					<view class="member-handle">立即续费&nbsp;<u-icon name="arrow-right"></u-icon>
+					<view class="member-handle">{{item.status == 2 ? '立即开通' : '立即续费'}}&nbsp;<u-icon name="arrow-right"></u-icon>
 					</view>
 				</view>
 			</template>
@@ -142,9 +142,11 @@
 		},
 		methods: {
 			//  跳转开通会员
-			goToMemberCard() {
+			goToMemberCard(site) {
 				uni.navigateTo({
-					url: '/pagesMain/memberCardList'
+					url: '/pagesMain/memberCardList' + (this.memberInfo.status == 0 ? '' : '?studentId=' + site.studentId +
+						'&studentName=' + site.studentName + (site.venueId ? '&venueId=' + site.venueId + '&venueName=' + site.venueName :
+							''))
 				});
 			},
 			//  跳转我的各列表界面

+ 16 - 4
pagesMain/memberCardList.vue

@@ -2,7 +2,8 @@
 	<view class="content">
 		<view class="card-list" v-for="(item, index) in tableList" :key="index" @click="goToPay(item)">
 			<view class="card-label">{{item.typeValue}}</view>
-			<view class="card-num">¥{{item.amount}}</view>
+			<u-button type="warning" shape="circle" :ripple="true" :custom-style="{...handleCustomStyle, float: 'left', marginLeft: ''}"
+			 size="mini">点击开通</u-button>
 			<view class="card-icon iconfont iconzu4931"></view>
 		</view>
 		<u-top-tips ref="uTips"></u-top-tips>
@@ -17,14 +18,23 @@
 	const API = require('@/config/api')
 	export default {
 		computed: {
-			...mapGetters([])
+			...mapGetters([
+				'handleCustomStyle'
+			])
 		},
 		data() {
 			return {
+				memberInfo: {
+					studentId: '',
+					studentName: '',
+					venueId: '',
+					venueName: ''
+				},
 				tableList: [],
 			}
 		},
-		onLoad() {
+		onLoad(options) {
+			this.memberInfo = options
 			this.getTableList()
 		},
 		onReady() {},
@@ -42,7 +52,9 @@
 			},
 			goToPay(site) {
 				uni.navigateTo({
-					url: '/pagesMain/openMember?id=' + site.id
+					url: '/pagesMain/openMember?memberCardType=' + site.type + '&typeValue=' + site.typeValue + (this.memberInfo.studentId ?
+						'&studentId=' + this.memberInfo.studentId + '&studentName=' + this.memberInfo.studentName : '') + (this.memberInfo
+						.venueName ? '&venueId=' + this.memberInfo.venueId + '&venueName=' + this.memberInfo.venueName : '')
 				});
 			}
 		},

+ 75 - 31
pagesMain/openMember.vue

@@ -2,21 +2,24 @@
 	<view class="content">
 		<view class="card-list">
 			<view class="card-label">{{memberInfo.typeValue}}</view>
-			<view class="card-num">¥{{memberInfo.originalAmount}}</view>
+			<view class="card-num">¥{{memberInfo.originalAmount ? memberInfo.originalAmount : 0}}</view>
 			<view class="card-icon iconfont iconzu4931"></view>
 		</view>
 		<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">
+				<text>{{venueName}}</text>
+			</u-form-item>
 			<u-form-item label="使用时间">
 				<text>{{memberInfo.startDate + '~' + memberInfo.endDate}}</text>
 			</u-form-item>
 			<u-form-item label="优惠金额" right-icon="arrow-right" @click.native="couponShow = true">
 				<text>{{couponId ? '-¥' + memberInfo.discountsAmount : ''}}</text>
 			</u-form-item>
-			<u-form-item label="学员姓名" right-icon="arrow-right" required @click.native="studentShow = true">
+			<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="实际金额" @click.native="studentShow = true">
-				<text>{{'¥' + memberInfo.realPayAmount}}</text>
+			<u-form-item label="实际金额">
+				<text>{{'¥' + (memberInfo.realPayAmount ? memberInfo.realPayAmount : 0)}}</text>
 			</u-form-item>
 			<u-form-item label="家长名称" required>
 				<u-input v-model="form.parentName" placeholder="请输入家长姓名" />
@@ -45,6 +48,16 @@
 		<view class="handle-fix-box">
 			<u-button type="warning" shape="circle" :ripple="true" :custom-style="customStyle" @click="toPay()">确定支付¥{{memberInfo.realPayAmount}}</u-button>
 		</view>
+		<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 venueList" :key="index" @click="selectVenue(item)">
+					<view class="student-card" slot="body">
+						<view class="class-info-text">{{item.venueName}}</view>
+					</view>
+				</u-card>
+			</scroll-view>
+		</u-popup>
 		<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"
@@ -77,8 +90,9 @@
 		},
 		data() {
 			return {
-				memberCardId: '',
+				memberCardType: '',
 				memberInfo: {
+					id: '',
 					originalAmount: '',
 					discountsAmount: '',
 					realPayAmount: '',
@@ -86,12 +100,18 @@
 					endDate: '',
 					startDate: '',
 				},
+				venueEdit: true,
+				venueId: '',
+				venueName: '',
+				venueShow: false,
+				venueList: [],
 				couponId: '',
 				couponShow: false,
 				couponList: [],
 				cardStyle: {
 					fontWeight: 'bold'
 				},
+				studentEdit: true,
 				studentId: '',
 				studentName: '',
 				studentShow: false,
@@ -111,10 +131,32 @@
 			}
 		},
 		onLoad(options) {
-			this.memberCardId = options.id
-			this.getMemberInfo()
+			if (options.venueId) {
+				this.venueEdit = false
+				this.venueId = options.venueId
+				this.venueName = options.venueName
+			}
+			if (options.studentId) {
+				this.studentEdit = false
+				this.studentId = options.studentId
+				this.studentName = options.studentName
+			}
+			this.memberCardType = options.memberCardType
+			if (this.venueId) {
+				this.getMemberInfo(1)
+			} else {
+				this.memberInfo.typeValue = options.typeValue
+			}
 		},
 		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.getAllStudentList, {}, 'POST').then(res => {
 				this.studentList = res.data
 			}).catch(error => {
@@ -126,7 +168,6 @@
 		},
 		onReady() {
 			NET.request(API.getParentInfo, {}, 'POST').then(res => {
-				debugger
 				this.form.parentName = res.data.parentName
 				this.form.sex = res.data.sex
 			}).catch(error => {
@@ -138,21 +179,17 @@
 		},
 		methods: {
 			//  获取数据
-			getMemberInfo() {
+			getMemberInfo(type) {
 				NET.request(API.getMemberCardInfo, {
-					id: this.memberCardId
+					type: this.memberCardType,
+					venueId: this.venueId,
+					couponId: this.couponId,
+					studentId: this.studentId
 				}, 'POST').then(res => {
 					this.memberInfo = res.data
-				}).catch(error => {
-					this.$refs.uTips.show({
-						title: error.message,
-						type: 'warning',
-					})
-				})
-				NET.request(API.getUsableCouponList, {
-					id: this.memberCardId
-				}, 'POST').then(res => {
-					this.couponList = res.data.row
+					if (type == 1) {
+						this.getCouponList()
+					}
 				}).catch(error => {
 					this.$refs.uTips.show({
 						title: error.message,
@@ -160,16 +197,14 @@
 					})
 				})
 			},
-			//  更新数据
-			refreshMemberInfo() {
-				NET.request(API.getMemberCardInfoAfterCoupon, {
-					memberId: this.memberCardId,
-					couponId: this.couponId,
+			//  获取优惠券
+			getCouponList() {
+				this.couponId = ''
+				NET.request(API.getUsableCouponList, {
+					id: this.memberInfo.id,
 					studentId: this.studentId
 				}, 'POST').then(res => {
-					this.memberInfo = res.data
-					this.couponShow = false
-					this.studentShow = false
+					this.couponList = res.data.row
 				}).catch(error => {
 					this.$refs.uTips.show({
 						title: error.message,
@@ -180,13 +215,22 @@
 			//  选择优惠券
 			selectCoupon(item) {
 				this.couponId = item.id
-				this.refreshMemberInfo()
+				this.couponShow = false
+				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.refreshMemberInfo()
+				this.studentShow = false
+				this.getMemberInfo(1)
 			},
 			//  设置性别
 			setSex(index) {
@@ -216,7 +260,7 @@
 					return
 				}
 				uni.navigateTo({
-					url: '/pagesMain/contractInfo?memberCardId=' + this.memberCardId + '&couponId=' + this.couponId + '&studentId=' +
+					url: '/pagesMain/contractInfo?memberCardId=' + this.memberInfo.id + '&couponId=' + this.couponId + '&studentId=' +
 						this.studentId + '&realPayAmount=' + this.memberInfo.realPayAmount + '&parentName=' + this.form.parentName +
 						'&sex=' + this.form.sex
 				});

+ 12 - 0
pagesMain/orderList.vue

@@ -23,6 +23,8 @@
 					</view>
 				</view>
 				<view class="class-content" slot="foot" style="padding-top: 10px;padding-bottom: 10px;text-align: right;">
+					<u-button type="default" shape="circle" :ripple="true" :custom-style="handleDefaultCustomStyle" size="mini"
+					 :hair-line="false" plain @click.stop="checkQRCode(item)">二维码</u-button>
 					<u-button type="default" shape="circle" :ripple="true" :custom-style="handleDefaultCustomStyle" size="mini"
 					 :hair-line="false" plain @click.stop="copyOrderNumber(item)">复制订单号</u-button>
 					<u-button type="warning" shape="circle" :ripple="true" :custom-style="handleCustomStyle" size="mini" @click.stop="checkContract(item)">查看合同</u-button>
@@ -30,6 +32,9 @@
 			</u-card>
 			<u-divider v-if="isOver" bg-color="transparent">没有更多了</u-divider>
 		</scroll-view>
+		<u-modal v-model="qrCodeShow" title="二维码">
+			<u-image :src="qrCodeUrl" mode="aspectFill" height="45vw" width="45vw" style="display: flex; justify-content: center;"></u-image>
+		</u-modal>
 		<u-top-tips ref="uTips"></u-top-tips>
 	</view>
 </template>
@@ -49,6 +54,8 @@
 		},
 		data() {
 			return {
+				qrCodeShow: false,
+				qrCodeUrl: '',
 				triggered: false,
 				isOver: false,
 				pageIndex: 1,
@@ -97,6 +104,11 @@
 					})
 				})
 			},
+			//  查看二维码
+			checkQRCode(item) {
+				this.qrCodeShow = true
+				this.qrCodeUrl = item.qrCodeUrl
+			},
 			//  复制订单号
 			copyOrderNumber(item) {
 				uni.setClipboardData({