Browse Source

2023-11-14实战营报名

zhiquz 1 năm trước cách đây
mục cha
commit
649be2f1af

+ 1 - 1
apis/order.js

@@ -33,7 +33,7 @@ export const _API_GetExpressTrack = data => request.get('/order/get_express', da
 export const _API_mergeOrder = data => request.get('/order/search_order', data) // 合并订单
 export const _API_destory = data => request.get('/order/destory', data) // 不需要审核的作废订单
 
-/*线上实战营*/
+/*实战营报名*/
 export const _API_payment = data => request.post('/pays/pays ', data) // 报名支付
 export const _API_SearchStatus = data => request.post('/pays/GetStatus', data) // 查询支付状态
 export const GetEnrollUserAddress = data => request.post('/pays/GetAddress', data) // 报名前获取收货地址

+ 3 - 3
pages/address-manage/address-manage.vue

@@ -4,7 +4,7 @@
 		<view class="AddressTop">
 			<view class="AddressTop-left">
 				<image src="../../static/icon/search.png" class="AddressTop-left-search" />
-				<input v-model="search_name" type="text" class="AddressTop-left-input" placeholder="输入姓名或手机号" />
+				<input v-model="search_name" type="text" class="AddressTop-left-input" placeholder="输入姓名或手机号后四位" />
 				<image v-if="search_name" src="../../static/icon/cha.png" class="AddressTop-left-clear"
 					@click="search_name = '';toSearchAddress()" />
 			</view>
@@ -17,9 +17,9 @@
 					<text class="color spec">{{ item.con_name.slice(0,4) }}</text>
 					<text class="color">{{ item.con_mobile }}</text>
 				</view>
-				<view v-if="item.nickname" class="AddressList-item-desc color">
+			<!-- 	<view v-if="item.nickname" class="AddressList-item-desc color">
 					昵称:{{ item.nickname.slice(0, 6) }}/{{ item.phone }}
-				</view>
+				</view> -->
 				<view class="AddressList-item-info">
 					<view class="info-text color">{{ item | getAddressString }}</view>
 					<image src="../../static/icon/arrow.png" class="info-arrow"></image>

+ 1 - 1
pages/index-my/index-my.vue

@@ -90,7 +90,7 @@
 		// 	url: 'address-manage/address-manage'
 		// },
 		{
-			name: '线上实战营',
+			name: '实战营报名',
 			icon: '8.png',
 			url: 'payment/payment'
 		},

+ 3 - 3
pages/index/index.vue

@@ -148,7 +148,7 @@
 					index: 0
 				},
 				total: 0,
-				screenState: 0 // 0白屏 1 正常  2 只显示线上实战营
+				screenState: 0 // 0白屏 1 正常  2 只显示实战营
 			};
 		},
 		onLoad() {
@@ -215,7 +215,7 @@
 				}
 				let teamModules = []
 				teamModules.push({
-					name: '线上实战营',
+					name: '实战营报名',
 					icon: require(`@/${requireBaseUrl}3_4.png`),
 					url: 'payment/payment'
 				})
@@ -474,7 +474,7 @@
 
 						// 获取用户状态
 						this.$store.commit('userinfo/UPDATA_USERINFO', res.data); // 获取用户状态后保存在 vuex 中
-						//只显示线上实战营
+						//只显示实战营报名
 						if (res.data.mobile === '18888888888') {
 							// if (res.data.mobile === '15138929587') {
 							this.screenState = 2

+ 400 - 0
pages/payment/payment -_xx_pay.vue

@@ -0,0 +1,400 @@
+<template>
+	<view style="padding-top: 50rpx;">
+		<view class="top" v-if="!showSignup">
+			<image src="https://qnys.chuliu.cc/daweiboshi_szy/1_1615541900_nrG1vctYn8.jpg"
+				mode="widthFix" style="width: 750rpx;margin-bottom: 60rpx;"></image>
+			<view class="title">
+				第{{ data.season }}届大卫博士创业实战营
+			</view>
+			<view class="time">
+				举办时间:{{ data.start + '-' + data.end }}
+			</view>
+			<view v-if="data.status == 1" class="btnSig gray">已报名</view>
+			<view v-else class="btnSig" :class="status ? 'red' : 'gray'" v-throttle="2000" @click="singup">支付{{ data.cost }}元报名</view>
+		</view>
+		<view class="voucher" v-else>
+			<image src="../../static/new_my/bg.png" class="bgImg" mode="widthFix" style="width: 750rpx;"></image>
+			<view class="bgImg">
+				<text style="margin-top: 30rpx;">第{{ data.season }}届大卫博士创业实战营</text>
+			</view>
+			<view class="voucher_con">
+				<view class="voucher_icon">
+					<image src="../../static/icon/success.png" mode="widthFix" style="width: 300rpx;margin-top: 78rpx;">
+					<!-- <image :src="`../../static/icon/${data.pay_status ? 'success' : 'show'}.png`" mode="widthFix" style="width: 300rpx;margin-top: 78rpx;"> -->
+					</image>
+					<view class="success">{{ data.pay_status ? '报名成功' : '获取名额成功,请完成支付' }}</view>
+					<view class="timed">
+						举办时间:{{ data.start+ '-' +data.end }}
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="bottom" v-if="showSignup">
+			<view v-if="data.pay_status " class="bottom-btn" @click="goBack">返回首页</view>
+			<view v-else class="bottom-btn" v-throttle="2000" @click="singup">立即支付</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		_API_payment,
+		_API_SearchStatus,
+		GetEnrollInfo,
+		GetEnrollUserAddress,
+		GetSzyGiftInfo
+	} from '@/apis/order.js';
+	export default {
+		data() {
+			return {
+				status: false,
+				data: {
+					season: '',
+					start: '',
+					end: '',
+					name: '',
+					mobile: '',
+					cost: '',
+					local: ''
+				},
+				noClick: true,
+				showSignup: false,
+			}
+		},
+		onLoad() {
+			this.getInfo()
+		},
+		computed: {
+			userinfo() {
+				return this.$store.state.userinfo
+			}
+		},
+		onPullDownRefresh() {
+			this.getInfo()
+		},
+		methods: {
+			// 查看物流信息
+			toLogistics() {
+				uni.navigateTo({
+					url: "/pages/szy-logistics/szy-logistics?info=" + JSON.stringify(this.logInfo)
+				})
+			},
+			// 返回首页
+			goBack() {
+				uni.switchTab({
+					url: '/pages/index/index'
+				})
+			},
+			// 获取赛季信息
+			getInfo() {
+				GetEnrollInfo().then(res => {
+					if (res.code == 200) {
+						res.data = {
+							cost: 199,
+							end: "2023.11.25",
+							end_time: "2023-11-25 18:00:00",
+							enroll_end_time: "2023-11-21 16:00:00",
+							enroll_start_time: "2023-11-14 10:30:00",
+							limit_num: 100000,
+							num: 0,
+							pay_status: 0,
+							season: 63,
+							start: "2023.10.24",
+							start_time: "2023-11-24 08:00:00",
+							status: 0
+						}
+						this.data = res.data
+						this.data.start = this.getTimes(res.data.start_time)
+						this.data.end = this.getTimes(res.data.end_time)
+						
+						const a = new Date(res.data.enroll_start_time.replace(/-/g,'/')).getTime()
+						const b = new Date(res.data.enroll_end_time.replace(/-/g,'/')).getTime()
+						const now = Date.parse(new Date())
+						if (now > a && now < b &&  res.data.limit_num >  res.data.num) {
+							this.status = true
+						}
+						if (res.data.status == 1) {
+							this.showSignup = true
+						} else {
+							this.showSignup = false
+						}
+					} else {
+						uni.showModal({
+							content: res.message || '获取失败',
+							showCancel: false
+						})
+					}
+				})
+			},
+			getTimes(data) {
+				var time = new Date(data)
+				var year = time.getFullYear()
+				var month = time.getMonth() + 1 < 10 ? '0' + (time.getMonth() + 1) : time.getMonth() + 1;
+				var day = time.getDate() < 10 ? '0' + time.getDate() : time.getDate();
+				var today = year + '.' + month + '.' + day;
+				return today;
+			},
+			// 支付状态
+			SearchStatus() {
+				uni.showLoading({
+				    mask: true
+				})
+				_API_SearchStatus().then(res => {
+					uni.hideLoading()
+					if (res.code == 200) {
+						this.getInfo()
+					} else {
+						uni.showModal({
+							content: res.message || '获取失败',
+							showCancel: false
+						})
+					}
+				})
+			},
+			//WeixinJSBridge判断
+			wxJsPay(data, callback_succ_func, callback_error_func) {
+				if (typeof WeixinJSBridge == 'undefined') {
+					if (document.addEventListener) {
+						document.addEventListener('WeixinJSBridgeReady', this.jsApiCall, false);
+					} else if (document.attachEvent) {
+						document.attachEvent('WeixinJSBridgeReady', this.jsApiCall);
+						document.attachEvent('onWeixinJSBridgeReady', this.jsApiCall);
+					}
+				} else {
+					this.jsApiCall(data, callback_succ_func, callback_error_func);
+				}
+			},
+			//调起支付
+			jsApiCall(data, callback_succ_func, callback_error_func) {
+				let that = this
+				//使用原生的,避免初始化appid问题
+				WeixinJSBridge.invoke(
+					'getBrandWCPayRequest', {
+						appId: data.appId,
+						timeStamp: data.timestamp,
+						nonceStr: data.nonceStr,
+						package: data.package,
+						signType: data.signType,
+						paySign: data.paySign
+					},
+					function(res) {
+						var msg = res.err_msg ? res.err_msg : res.errMsg;
+						switch (msg) {
+							//支付成功时
+							case 'get_brand_wcpay_request:ok':
+								if (callback_succ_func) {
+									uni.showModal({
+										title: '支付成功',
+										showCancel: false
+									})
+									callback_succ_func(res);
+								}
+								break;
+							default:
+								//支付失败时
+								WeixinJSBridge.log('支付失败!' + msg + ',请返回重试.');
+								if (callback_error_func) {
+									callback_error_func({
+										msg: msg
+									});
+								}
+								break;
+						}
+					}
+				);
+			},
+			singup() {
+				if (!this.status && !this.data.status) {
+					return
+				}
+				let that = this
+				_API_payment().then(res => {
+						if (res.code == 200) {
+							let callback_succ_func = res => {
+								uni.showModal({
+									content: '支付成功!',
+									showCancel: false,
+									success: function(res) {
+										that.SearchStatus()
+									}
+								})
+							}
+							let callback_error_func = res => {
+								uni.showModal({
+									content: '支付失败!',
+									showCancel: false
+								})
+							}
+							this.wxJsPay(res.data, callback_succ_func, callback_error_func)
+						} else {
+							uni.showToast({
+								title: res.message || '失败',
+								icon: 'none'
+							})
+							return false;
+						}
+					})
+					.catch(err => {})
+					.finally(() => {
+						setTimeout(() => {}, 3000)
+					})
+			}
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.top {
+		margin: 0 30rpx 0 30rpx;
+		border-radius: 16rpx;
+		background-color: #fff;
+		padding: 40rpx 20rpx 40rpx 20rpx;
+	}
+
+	.title {
+		font-size: 34rpx;
+		font-weight: bold;
+	}
+
+	.time {
+		margin-top: 20rpx;
+		font-size: 32rpx;
+	}
+
+	.btnSig {
+		margin: 50rpx auto 0;
+		width: 600rpx;
+		line-height: 88rpx;
+		border-radius: 44rpx;
+		text-align: center;
+		color: #fff;
+		font-size: 32rpx;
+	}
+	.red {
+		background: linear-gradient(93deg, #FF232C 0%, #FF571B 100%);
+	}
+	.gray {
+		background-color: #E1E1E1;
+	}
+
+	.voucher {
+		hieght: 100vh;
+		min-height: 100vh;
+		width: 100vw;
+		position: relative;
+
+		.bgImg {
+			height: 100vh;
+			width: 100vw;
+			position: fixed;
+			top: 0;
+			left: 0;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			font-size: 46rpx;
+			font-weight: bold;
+
+			text {
+				color: #FFFFFF;
+				margin-top: 10rpx;
+			}
+
+		}
+
+		.voucher_con {
+			position: fixed;
+			height: 85%;
+			width: 100%;
+			bottom: 0;
+			left: 0;
+			background: #fff;
+			border-top-left-radius: 60rpx;
+			border-top-right-radius: 60rpx;
+
+			.line {
+				width: 128rpx;
+				height: 8rpx;
+				background: #f1f3f5;
+				margin: 36rpx auto 0;
+			}
+
+			.title {
+				color: #333;
+				font-size: 38rpx;
+				// margin: 48rpx auto 60rpx;
+				text-align: center;
+				font-weight: bold;
+			}
+
+			.voucher_icon {
+				text-align: center;
+
+				// image {
+				// 	height: 192rpx;
+				// 	width: 192rpx;
+				// 	margin-bottom: 30rpx;
+				// }
+				.success {
+					margin-top: 18rpx;
+					font-size: 48rpx;
+					color: #333;
+					font-weight: bold;
+				}
+
+				.timed {
+					margin-top: 36rpx;
+					font-size: 40rpx;
+					font-weight: bold;
+					color: #FF0000;
+				}
+			}
+
+			.logistics {
+				width: 250rpx;
+				height: 68rpx;
+				margin: 0 auto;
+				background: rgba(255, 244, 243, 0.39);
+				border: 2rpx solid #FB231F;
+				opacity: 1;
+				border-radius: 44rpx;
+				color: #FB231F;
+			}
+
+			.info {
+				margin: 68rpx 50rpx 40rpx 50rpx;
+				color: #333333;
+
+				text {
+					font-size: 32rpx;
+				}
+
+				>view {
+					margin-top: 20rpx;
+				}
+			}
+		}
+	}
+
+	.bottom {
+		position: fixed;
+		bottom: 0;
+		width: 100%;
+		height: 100rpx;
+		padding: 6rpx 30rpx;
+		background-color: #fff;
+		border-top: 1px solid #eeeeee;
+
+		&-btn {
+			color: #fff;
+			text-align: center;
+			font-size: 32rpx;
+			font-weight: bold;
+			line-height: 88rpx;
+			height: 88rpx;
+			background: linear-gradient(90deg, #F30000 0%, #FE4815 100%);
+			opacity: 1;
+			border-radius: 44px;
+		}
+	}
+</style>

+ 34 - 145
pages/payment/payment.vue

@@ -1,55 +1,33 @@
 <template>
 	<view style="padding-top: 50rpx;">
-		<view v-if="!showSignup">
-			<view class="top">
-				<image src="https://qnys.chuliu.cc/daweiboshi_szy/1_1615541900_nrG1vctYn8.jpg"
-					mode="widthFix" style="width: 750rpx;margin-bottom: 60rpx;"></image>
-				<view class="title">
-					第{{ data.season }}届大卫博士创业实战营(线上)
-				</view>
-				<view class="time">
-					举办时间:{{ data.start + '-' + data.end }}
-				</view>
-				<view v-if="data.status == 1" class="btnSig gray">已获取名额</view>
-				<view v-else class="btnSig" :class="status ? 'red' : 'gray'" v-throttle="2000" @click="singup">点击获取名额</view>
+		<view class="top" v-if="!showSignup">
+			<image src="https://qnys.chuliu.cc/daweiboshi_szy/1_1615541900_nrG1vctYn8.jpg"
+				mode="widthFix" style="width: 750rpx;margin-bottom: 60rpx;"></image>
+			<view class="title">
+				第{{ data.season }}届大卫博士创业实战营
+			</view>
+			<view class="time">
+				举办时间:{{ data.start + '-' + data.end }}
 			</view>
+			<view v-if="data.status == 1" class="btnSig gray">已获取名额</view>
+			<view v-else class="btnSig" :class="status ? 'red' : 'gray'" v-throttle="2000" @click="singup">点击获取名额</view>
 		</view>
 		<view class="voucher" v-else>
 			<image src="../../static/new_my/bg.png" class="bgImg" mode="widthFix" style="width: 750rpx;"></image>
 			<view class="bgImg">
-				<text style="margin-top: 30rpx;">第{{ data.season }}届大卫博士创业实战营(线上)</text>
+				<text style="margin-top: 30rpx;">第{{ data.season }}届大卫博士创业实战营</text>
 			</view>
 			<view class="voucher_con">
 				<view class="voucher_icon">
 					<image src="../../static/icon/success.png" mode="widthFix" style="width: 300rpx;margin-top: 78rpx;">
-					<!-- <image :src="`../../static/icon/${data.pay_status ? 'success' : 'show'}.png`" mode="widthFix" style="width: 300rpx;margin-top: 78rpx;"> -->
 					</image>
-					<view class="success">{{ data.pay_status ? '报名成功' : '报名成功,请把钱转给老大' }}</view>
+					<view class="success">获取名额成功,请联系批发商</view>
 					<view class="timed">
 						举办时间:{{ data.start+ '-' +data.end }}
 					</view>
 				</view>
-				<view class="info" v-show="data.pay_status">
-					<view>
-						<text>收货人:</text>
-						<text>{{ info.username }}</text>
-					</view>
-					<view>
-						<text>手机号:</text>
-						<text>{{ info.mobile }}</text>
-					</view>
-					<view>
-						<text>收货地址:</text>
-						<text>{{ info.local }}</text>
-					</view>
-					<navigator url="./information" class="info_btn">编辑地址</navigator>
-				</view>
 			</view>
 		</view>
-		<!-- <view class="bottom" v-if="showSignup">
-			<view class="bottom-btn" @click="goBack">返回首页</view>
-			<view v-else class="bottom-btn" v-throttle="2000" @click="singup">立即支付</view>
-		</view> -->
 	</view>
 </template>
 
@@ -58,20 +36,16 @@
 		_API_payment,
 		_API_SearchStatus,
 		GetEnrollInfo,
-		GetEnrollUserAddress,
-		GetSzyGiftInfo
 	} from '@/apis/order.js';
 	export default {
 		data() {
 			return {
-				showTip: false,
 				status: false,
-				info: {},
 				data: {
 					season: '',
 					start: '',
 					end: '',
-					username: '',
+					name: '',
 					mobile: '',
 					cost: '',
 					local: ''
@@ -80,7 +54,7 @@
 				showSignup: false,
 			}
 		},
-		onShow() {
+		onLoad() {
 			this.getInfo()
 		},
 		computed: {
@@ -92,12 +66,6 @@
 			this.getInfo()
 		},
 		methods: {
-			// 查看物流信息
-			toLogistics() {
-				uni.navigateTo({
-					url: "/pages/szy-logistics/szy-logistics?info=" + JSON.stringify(this.logInfo)
-				})
-			},
 			// 返回首页
 			goBack() {
 				uni.switchTab({
@@ -108,13 +76,25 @@
 			getInfo() {
 				GetEnrollInfo().then(res => {
 					if (res.code == 200) {
-						console.log(res.data)
-						// res.data.status = 1
-						// res.data.pay_status = 1
+						// res.data = {
+						// 	cost: 199,
+						// 	end: "2023.11.25",
+						// 	end_time: "2023-11-25 18:00:00",
+						// 	enroll_end_time: "2023-11-21 16:00:00",
+						// 	enroll_start_time: "2023-11-14 10:30:00", // 报名时间
+						// 	limit_num: 100000,
+						// 	num: 0,
+						// 	pay_status: 1, // 是否支付
+						// 	season: 63,
+						// 	start: "2023.10.24",
+						// 	start_time: "2023-11-24 08:00:00", // 举办时间
+						// 	status: 0 // 是否报名
+						// }
+						// res.data.enroll_start_time = "2023-11-14 10:30:00" // 报名时间
 						this.data = res.data
 						this.data.start = this.getTimes(res.data.start_time)
 						this.data.end = this.getTimes(res.data.end_time)
-						// res.data.enroll_start_time = '2023-10-15 10:30:00'
+						
 						const a = new Date(res.data.enroll_start_time.replace(/-/g,'/')).getTime()
 						const b = new Date(res.data.enroll_end_time.replace(/-/g,'/')).getTime()
 						const now = Date.parse(new Date())
@@ -126,23 +106,6 @@
 						} else {
 							this.showSignup = false
 						}
-						if (res.data.pay_status) {
-							this.getAddress()
-						}
-					} else {
-						uni.showModal({
-							content: res.message || '获取失败',
-							showCancel: false
-						})
-					}
-				})
-			},
-			getAddress() {
-				GetEnrollUserAddress().then(res => {
-					if (res.code === 200) {
-						this.info = res.data
-						const data = res.data
-						this.info.local = data.province + data.city + data.area + data.address
 					} else {
 						uni.showModal({
 							content: res.message || '获取失败',
@@ -152,7 +115,7 @@
 				})
 			},
 			getTimes(data) {
-				var time = new Date(data.replace(/-/g,'/'))
+				var time = new Date(data)
 				var year = time.getFullYear()
 				var month = time.getMonth() + 1 < 10 ? '0' + (time.getMonth() + 1) : time.getMonth() + 1;
 				var day = time.getDate() < 10 ? '0' + time.getDate() : time.getDate();
@@ -176,58 +139,6 @@
 					}
 				})
 			},
-			//WeixinJSBridge判断
-			wxJsPay(data, callback_succ_func, callback_error_func) {
-				if (typeof WeixinJSBridge == 'undefined') {
-					if (document.addEventListener) {
-						document.addEventListener('WeixinJSBridgeReady', this.jsApiCall, false);
-					} else if (document.attachEvent) {
-						document.attachEvent('WeixinJSBridgeReady', this.jsApiCall);
-						document.attachEvent('onWeixinJSBridgeReady', this.jsApiCall);
-					}
-				} else {
-					this.jsApiCall(data, callback_succ_func, callback_error_func);
-				}
-			},
-			//调起支付
-			jsApiCall(data, callback_succ_func, callback_error_func) {
-				let that = this
-				//使用原生的,避免初始化appid问题
-				WeixinJSBridge.invoke(
-					'getBrandWCPayRequest', {
-						appId: data.appId,
-						timeStamp: data.timestamp,
-						nonceStr: data.nonceStr,
-						package: data.package,
-						signType: data.signType,
-						paySign: data.paySign
-					},
-					function(res) {
-						var msg = res.err_msg ? res.err_msg : res.errMsg;
-						switch (msg) {
-							//支付成功时
-							case 'get_brand_wcpay_request:ok':
-								if (callback_succ_func) {
-									uni.showModal({
-										title: '支付成功',
-										showCancel: false
-									})
-									callback_succ_func(res);
-								}
-								break;
-							default:
-								//支付失败时
-								WeixinJSBridge.log('支付失败!' + msg + ',请返回重试.');
-								if (callback_error_func) {
-									callback_error_func({
-										msg: msg
-									});
-								}
-								break;
-						}
-					}
-				);
-			},
 			singup() {
 				if (!this.status && !this.data.status) {
 					return
@@ -258,27 +169,18 @@
 					}
 				})
 			}
-		},
+		}
 	}
 </script>
-<style>
-</style>
+
 <style lang="scss" scoped>
 	.top {
 		margin: 0 30rpx 0 30rpx;
 		border-radius: 16rpx;
 		background-color: #fff;
 		padding: 40rpx 20rpx 40rpx 20rpx;
-		
-	}
-	
-	.tip {
-		font-size: 36rpx;
-		text-align: center;
-		font-weight: bold;
-		margin-top: 30rpx;
-		color: #FB231F;
 	}
+
 	.title {
 		font-size: 34rpx;
 		font-weight: bold;
@@ -400,19 +302,6 @@
 				>view {
 					margin-top: 20rpx;
 				}
-				&_btn {
-					margin: 30rpx auto 0 !important;
-					width: 388rpx;
-					line-height: 80rpx;
-					text-align: center;
-					background: #FFF4F3;
-					border: 2rpx solid #FB231F;
-					opacity: 1;
-					border-radius: 44rpx;
-					font-size: 30rpx;
-					font-weight: bold;
-					color: #FB231F;
-				}
 			}
 		}
 	}

+ 441 - 0
pages/payment/payment_xs.vue

@@ -0,0 +1,441 @@
+<template>
+	<view style="padding-top: 50rpx;">
+		<view v-if="!showSignup">
+			<view class="top">
+				<image src="https://qnys.chuliu.cc/daweiboshi_szy/1_1615541900_nrG1vctYn8.jpg"
+					mode="widthFix" style="width: 750rpx;margin-bottom: 60rpx;"></image>
+				<view class="title">
+					第{{ data.season }}届大卫博士创业实战营(线上)
+				</view>
+				<view class="time">
+					举办时间:{{ data.start + '-' + data.end }}
+				</view>
+				<view v-if="data.status == 1" class="btnSig gray">已获取名额</view>
+				<view v-else class="btnSig" :class="status ? 'red' : 'gray'" v-throttle="2000" @click="singup">点击获取名额</view>
+			</view>
+		</view>
+		<view class="voucher" v-else>
+			<image src="../../static/new_my/bg.png" class="bgImg" mode="widthFix" style="width: 750rpx;"></image>
+			<view class="bgImg">
+				<text style="margin-top: 30rpx;">第{{ data.season }}届大卫博士创业实战营(线上)</text>
+			</view>
+			<view class="voucher_con">
+				<view class="voucher_icon">
+					<image src="../../static/icon/success.png" mode="widthFix" style="width: 300rpx;margin-top: 78rpx;">
+					<!-- <image :src="`../../static/icon/${data.pay_status ? 'success' : 'show'}.png`" mode="widthFix" style="width: 300rpx;margin-top: 78rpx;"> -->
+					</image>
+					<view class="success">{{ data.pay_status ? '报名成功' : '报名成功,请把钱转给老大' }}</view>
+					<view class="timed">
+						举办时间:{{ data.start+ '-' +data.end }}
+					</view>
+				</view>
+				<view class="info" v-show="data.pay_status">
+					<view>
+						<text>收货人:</text>
+						<text>{{ info.username }}</text>
+					</view>
+					<view>
+						<text>手机号:</text>
+						<text>{{ info.mobile }}</text>
+					</view>
+					<view>
+						<text>收货地址:</text>
+						<text>{{ info.local }}</text>
+					</view>
+					<navigator url="./information" class="info_btn">编辑地址</navigator>
+				</view>
+			</view>
+		</view>
+		<!-- <view class="bottom" v-if="showSignup">
+			<view class="bottom-btn" @click="goBack">返回首页</view>
+			<view v-else class="bottom-btn" v-throttle="2000" @click="singup">立即支付</view>
+		</view> -->
+	</view>
+</template>
+
+<script>
+	import {
+		_API_payment,
+		_API_SearchStatus,
+		GetEnrollInfo,
+		GetEnrollUserAddress,
+		GetSzyGiftInfo
+	} from '@/apis/order.js';
+	export default {
+		data() {
+			return {
+				showTip: false,
+				status: false,
+				info: {},
+				data: {
+					season: '',
+					start: '',
+					end: '',
+					username: '',
+					mobile: '',
+					cost: '',
+					local: ''
+				},
+				noClick: true,
+				showSignup: false,
+			}
+		},
+		onShow() {
+			this.getInfo()
+		},
+		computed: {
+			userinfo() {
+				return this.$store.state.userinfo
+			}
+		},
+		onPullDownRefresh() {
+			this.getInfo()
+		},
+		methods: {
+			// 查看物流信息
+			toLogistics() {
+				uni.navigateTo({
+					url: "/pages/szy-logistics/szy-logistics?info=" + JSON.stringify(this.logInfo)
+				})
+			},
+			// 返回首页
+			goBack() {
+				uni.switchTab({
+					url: '/pages/index/index'
+				})
+			},
+			// 获取赛季信息
+			getInfo() {
+				GetEnrollInfo().then(res => {
+					if (res.code == 200) {
+						console.log(res.data)
+						// res.data.status = 1
+						// res.data.pay_status = 1
+						this.data = res.data
+						this.data.start = this.getTimes(res.data.start_time)
+						this.data.end = this.getTimes(res.data.end_time)
+						// res.data.enroll_start_time = '2023-10-15 10:30:00'
+						const a = new Date(res.data.enroll_start_time.replace(/-/g,'/')).getTime()
+						const b = new Date(res.data.enroll_end_time.replace(/-/g,'/')).getTime()
+						const now = Date.parse(new Date())
+						if (now > a && now < b &&  res.data.limit_num >  res.data.num) {
+							this.status = true
+						}
+						if (res.data.status == 1) {
+							this.showSignup = true
+						} else {
+							this.showSignup = false
+						}
+						if (res.data.pay_status) {
+							this.getAddress()
+						}
+					} else {
+						uni.showModal({
+							content: res.message || '获取失败',
+							showCancel: false
+						})
+					}
+				})
+			},
+			getAddress() {
+				GetEnrollUserAddress().then(res => {
+					if (res.code === 200) {
+						this.info = res.data
+						const data = res.data
+						this.info.local = data.province + data.city + data.area + data.address
+					} else {
+						uni.showModal({
+							content: res.message || '获取失败',
+							showCancel: false
+						})
+					}
+				})
+			},
+			getTimes(data) {
+				var time = new Date(data.replace(/-/g,'/'))
+				var year = time.getFullYear()
+				var month = time.getMonth() + 1 < 10 ? '0' + (time.getMonth() + 1) : time.getMonth() + 1;
+				var day = time.getDate() < 10 ? '0' + time.getDate() : time.getDate();
+				var today = year + '.' + month + '.' + day;
+				return today;
+			},
+			// 支付状态
+			SearchStatus() {
+				uni.showLoading({
+				    mask: true
+				})
+				_API_SearchStatus().then(res => {
+					uni.hideLoading()
+					if (res.code == 200) {
+						this.getInfo()
+					} else {
+						uni.showModal({
+							content: res.message || '获取失败',
+							showCancel: false
+						})
+					}
+				})
+			},
+			//WeixinJSBridge判断
+			wxJsPay(data, callback_succ_func, callback_error_func) {
+				if (typeof WeixinJSBridge == 'undefined') {
+					if (document.addEventListener) {
+						document.addEventListener('WeixinJSBridgeReady', this.jsApiCall, false);
+					} else if (document.attachEvent) {
+						document.attachEvent('WeixinJSBridgeReady', this.jsApiCall);
+						document.attachEvent('onWeixinJSBridgeReady', this.jsApiCall);
+					}
+				} else {
+					this.jsApiCall(data, callback_succ_func, callback_error_func);
+				}
+			},
+			//调起支付
+			jsApiCall(data, callback_succ_func, callback_error_func) {
+				let that = this
+				//使用原生的,避免初始化appid问题
+				WeixinJSBridge.invoke(
+					'getBrandWCPayRequest', {
+						appId: data.appId,
+						timeStamp: data.timestamp,
+						nonceStr: data.nonceStr,
+						package: data.package,
+						signType: data.signType,
+						paySign: data.paySign
+					},
+					function(res) {
+						var msg = res.err_msg ? res.err_msg : res.errMsg;
+						switch (msg) {
+							//支付成功时
+							case 'get_brand_wcpay_request:ok':
+								if (callback_succ_func) {
+									uni.showModal({
+										title: '支付成功',
+										showCancel: false
+									})
+									callback_succ_func(res);
+								}
+								break;
+							default:
+								//支付失败时
+								WeixinJSBridge.log('支付失败!' + msg + ',请返回重试.');
+								if (callback_error_func) {
+									callback_error_func({
+										msg: msg
+									});
+								}
+								break;
+						}
+					}
+				);
+			},
+			singup() {
+				if (!this.status && !this.data.status) {
+					return
+				}
+				let that = this
+				uni.showModal({
+					title: '提示',
+					content: '确定要获取名额吗?',
+					success: (res) => {
+						if (res.confirm) {
+							_API_payment().then(res => {
+								if (res.code == 200) {
+										that.SearchStatus()
+									} else {
+										uni.showModal({
+											title: '失败',
+											content: res.message || '获取失败',
+											showCancel: false
+										})
+										return false;
+									}
+								})
+								.catch(err => {})
+								.finally(() => {
+									setTimeout(() => {}, 3000)
+							})
+						}
+					}
+				})
+			}
+		},
+	}
+</script>
+<style>
+</style>
+<style lang="scss" scoped>
+	.top {
+		margin: 0 30rpx 0 30rpx;
+		border-radius: 16rpx;
+		background-color: #fff;
+		padding: 40rpx 20rpx 40rpx 20rpx;
+		
+	}
+	
+	.tip {
+		font-size: 36rpx;
+		text-align: center;
+		font-weight: bold;
+		margin-top: 30rpx;
+		color: #FB231F;
+	}
+	.title {
+		font-size: 34rpx;
+		font-weight: bold;
+	}
+
+	.time {
+		margin-top: 20rpx;
+		font-size: 32rpx;
+	}
+
+	.btnSig {
+		margin: 50rpx auto 0;
+		width: 600rpx;
+		line-height: 88rpx;
+		border-radius: 44rpx;
+		text-align: center;
+		color: #fff;
+		font-size: 32rpx;
+	}
+	.red {
+		background: linear-gradient(93deg, #FF232C 0%, #FF571B 100%);
+	}
+	.gray {
+		background-color: #E1E1E1;
+	}
+
+	.voucher {
+		hieght: 100vh;
+		min-height: 100vh;
+		width: 100vw;
+		position: relative;
+
+		.bgImg {
+			height: 100vh;
+			width: 100vw;
+			position: fixed;
+			top: 0;
+			left: 0;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			font-size: 46rpx;
+			font-weight: bold;
+
+			text {
+				color: #FFFFFF;
+				margin-top: 10rpx;
+			}
+
+		}
+
+		.voucher_con {
+			position: fixed;
+			height: 85%;
+			width: 100%;
+			bottom: 0;
+			left: 0;
+			background: #fff;
+			border-top-left-radius: 60rpx;
+			border-top-right-radius: 60rpx;
+
+			.line {
+				width: 128rpx;
+				height: 8rpx;
+				background: #f1f3f5;
+				margin: 36rpx auto 0;
+			}
+
+			.title {
+				color: #333;
+				font-size: 38rpx;
+				// margin: 48rpx auto 60rpx;
+				text-align: center;
+				font-weight: bold;
+			}
+
+			.voucher_icon {
+				text-align: center;
+
+				// image {
+				// 	height: 192rpx;
+				// 	width: 192rpx;
+				// 	margin-bottom: 30rpx;
+				// }
+				.success {
+					margin-top: 18rpx;
+					font-size: 48rpx;
+					color: #333;
+					font-weight: bold;
+				}
+
+				.timed {
+					margin-top: 36rpx;
+					font-size: 40rpx;
+					font-weight: bold;
+					color: #FF0000;
+				}
+			}
+
+			.logistics {
+				width: 250rpx;
+				height: 68rpx;
+				margin: 0 auto;
+				background: rgba(255, 244, 243, 0.39);
+				border: 2rpx solid #FB231F;
+				opacity: 1;
+				border-radius: 44rpx;
+				color: #FB231F;
+			}
+
+			.info {
+				margin: 68rpx 50rpx 40rpx 50rpx;
+				color: #333333;
+
+				text {
+					font-size: 32rpx;
+				}
+
+				>view {
+					margin-top: 20rpx;
+				}
+				&_btn {
+					margin: 30rpx auto 0 !important;
+					width: 388rpx;
+					line-height: 80rpx;
+					text-align: center;
+					background: #FFF4F3;
+					border: 2rpx solid #FB231F;
+					opacity: 1;
+					border-radius: 44rpx;
+					font-size: 30rpx;
+					font-weight: bold;
+					color: #FB231F;
+				}
+			}
+		}
+	}
+
+	.bottom {
+		position: fixed;
+		bottom: 0;
+		width: 100%;
+		height: 100rpx;
+		padding: 6rpx 30rpx;
+		background-color: #fff;
+		border-top: 1px solid #eeeeee;
+
+		&-btn {
+			color: #fff;
+			text-align: center;
+			font-size: 32rpx;
+			font-weight: bold;
+			line-height: 88rpx;
+			height: 88rpx;
+			background: linear-gradient(90deg, #F30000 0%, #FE4815 100%);
+			opacity: 1;
+			border-radius: 44px;
+		}
+	}
+</style>

+ 330 - 0
pages/payment/payment_xx.vue

@@ -0,0 +1,330 @@
+<template>
+	<view style="padding-top: 50rpx;">
+		<view class="top" v-if="!showSignup">
+			<image src="https://qnys.chuliu.cc/daweiboshi_szy/1_1615541900_nrG1vctYn8.jpg"
+				mode="widthFix" style="width: 750rpx;margin-bottom: 60rpx;"></image>
+			<view class="title">
+				第{{ data.season }}届大卫博士创业实战营
+			</view>
+			<view class="time">
+				举办时间:{{ data.start + '-' + data.end }}
+			</view>
+			<view v-if="data.status == 1" class="btnSig gray">已获取名额</view>
+			<view v-else class="btnSig" :class="status ? 'red' : 'gray'" v-throttle="2000" @click="singup">点击获取名额</view>
+		</view>
+		<view class="voucher" v-else>
+			<image src="../../static/new_my/bg.png" class="bgImg" mode="widthFix" style="width: 750rpx;"></image>
+			<view class="bgImg">
+				<text style="margin-top: 30rpx;">第{{ data.season }}届大卫博士创业实战营</text>
+			</view>
+			<view class="voucher_con">
+				<view class="voucher_icon">
+					<image src="../../static/icon/success.png" mode="widthFix" style="width: 300rpx;margin-top: 78rpx;">
+					</image>
+					<view class="success">获取名额成功,请联系批发商</view>
+					<view class="timed">
+						举办时间:{{ data.start+ '-' +data.end }}
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		_API_payment,
+		_API_SearchStatus,
+		GetEnrollInfo,
+	} from '@/apis/order.js';
+	export default {
+		data() {
+			return {
+				status: false,
+				data: {
+					season: '',
+					start: '',
+					end: '',
+					name: '',
+					mobile: '',
+					cost: '',
+					local: ''
+				},
+				noClick: true,
+				showSignup: false,
+			}
+		},
+		onLoad() {
+			this.getInfo()
+		},
+		computed: {
+			userinfo() {
+				return this.$store.state.userinfo
+			}
+		},
+		onPullDownRefresh() {
+			this.getInfo()
+		},
+		methods: {
+			// 返回首页
+			goBack() {
+				uni.switchTab({
+					url: '/pages/index/index'
+				})
+			},
+			// 获取赛季信息
+			getInfo() {
+				GetEnrollInfo().then(res => {
+					if (res.code == 200) {
+						// res.data = {
+						// 	cost: 199,
+						// 	end: "2023.11.25",
+						// 	end_time: "2023-11-25 18:00:00",
+						// 	enroll_end_time: "2023-11-21 16:00:00",
+						// 	enroll_start_time: "2023-11-14 10:30:00", // 报名时间
+						// 	limit_num: 100000,
+						// 	num: 0,
+						// 	pay_status: 1, // 是否支付
+						// 	season: 63,
+						// 	start: "2023.10.24",
+						// 	start_time: "2023-11-24 08:00:00", // 举办时间
+						// 	status: 0 // 是否报名
+						// }
+						// res.data.enroll_start_time = "2023-11-14 10:30:00" // 报名时间
+						this.data = res.data
+						this.data.start = this.getTimes(res.data.start_time)
+						this.data.end = this.getTimes(res.data.end_time)
+						
+						const a = new Date(res.data.enroll_start_time.replace(/-/g,'/')).getTime()
+						const b = new Date(res.data.enroll_end_time.replace(/-/g,'/')).getTime()
+						const now = Date.parse(new Date())
+						if (now > a && now < b &&  res.data.limit_num >  res.data.num) {
+							this.status = true
+						}
+						if (res.data.status == 1) {
+							this.showSignup = true
+						} else {
+							this.showSignup = false
+						}
+					} else {
+						uni.showModal({
+							content: res.message || '获取失败',
+							showCancel: false
+						})
+					}
+				})
+			},
+			getTimes(data) {
+				var time = new Date(data)
+				var year = time.getFullYear()
+				var month = time.getMonth() + 1 < 10 ? '0' + (time.getMonth() + 1) : time.getMonth() + 1;
+				var day = time.getDate() < 10 ? '0' + time.getDate() : time.getDate();
+				var today = year + '.' + month + '.' + day;
+				return today;
+			},
+			// 支付状态
+			SearchStatus() {
+				uni.showLoading({
+				    mask: true
+				})
+				_API_SearchStatus().then(res => {
+					uni.hideLoading()
+					if (res.code == 200) {
+						this.getInfo()
+					} else {
+						uni.showModal({
+							content: res.message || '获取失败',
+							showCancel: false
+						})
+					}
+				})
+			},
+			singup() {
+				if (!this.status && !this.data.status) {
+					return
+				}
+				let that = this
+				uni.showModal({
+					title: '提示',
+					content: '确定要获取名额吗?',
+					success: (res) => {
+						if (res.confirm) {
+							_API_payment().then(res => {
+								if (res.code == 200) {
+										that.SearchStatus()
+									} else {
+										uni.showModal({
+											title: '失败',
+											content: res.message || '获取失败',
+											showCancel: false
+										})
+										return false;
+									}
+								})
+								.catch(err => {})
+								.finally(() => {
+									setTimeout(() => {}, 3000)
+							})
+						}
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.top {
+		margin: 0 30rpx 0 30rpx;
+		border-radius: 16rpx;
+		background-color: #fff;
+		padding: 40rpx 20rpx 40rpx 20rpx;
+	}
+
+	.title {
+		font-size: 34rpx;
+		font-weight: bold;
+	}
+
+	.time {
+		margin-top: 20rpx;
+		font-size: 32rpx;
+	}
+
+	.btnSig {
+		margin: 50rpx auto 0;
+		width: 600rpx;
+		line-height: 88rpx;
+		border-radius: 44rpx;
+		text-align: center;
+		color: #fff;
+		font-size: 32rpx;
+	}
+	.red {
+		background: linear-gradient(93deg, #FF232C 0%, #FF571B 100%);
+	}
+	.gray {
+		background-color: #E1E1E1;
+	}
+
+	.voucher {
+		hieght: 100vh;
+		min-height: 100vh;
+		width: 100vw;
+		position: relative;
+
+		.bgImg {
+			height: 100vh;
+			width: 100vw;
+			position: fixed;
+			top: 0;
+			left: 0;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			font-size: 46rpx;
+			font-weight: bold;
+
+			text {
+				color: #FFFFFF;
+				margin-top: 10rpx;
+			}
+
+		}
+
+		.voucher_con {
+			position: fixed;
+			height: 85%;
+			width: 100%;
+			bottom: 0;
+			left: 0;
+			background: #fff;
+			border-top-left-radius: 60rpx;
+			border-top-right-radius: 60rpx;
+
+			.line {
+				width: 128rpx;
+				height: 8rpx;
+				background: #f1f3f5;
+				margin: 36rpx auto 0;
+			}
+
+			.title {
+				color: #333;
+				font-size: 38rpx;
+				// margin: 48rpx auto 60rpx;
+				text-align: center;
+				font-weight: bold;
+			}
+
+			.voucher_icon {
+				text-align: center;
+
+				// image {
+				// 	height: 192rpx;
+				// 	width: 192rpx;
+				// 	margin-bottom: 30rpx;
+				// }
+				.success {
+					margin-top: 18rpx;
+					font-size: 48rpx;
+					color: #333;
+					font-weight: bold;
+				}
+
+				.timed {
+					margin-top: 36rpx;
+					font-size: 40rpx;
+					font-weight: bold;
+					color: #FF0000;
+				}
+			}
+
+			.logistics {
+				width: 250rpx;
+				height: 68rpx;
+				margin: 0 auto;
+				background: rgba(255, 244, 243, 0.39);
+				border: 2rpx solid #FB231F;
+				opacity: 1;
+				border-radius: 44rpx;
+				color: #FB231F;
+			}
+
+			.info {
+				margin: 68rpx 50rpx 40rpx 50rpx;
+				color: #333333;
+
+				text {
+					font-size: 32rpx;
+				}
+
+				>view {
+					margin-top: 20rpx;
+				}
+			}
+		}
+	}
+
+	.bottom {
+		position: fixed;
+		bottom: 0;
+		width: 100%;
+		height: 100rpx;
+		padding: 6rpx 30rpx;
+		background-color: #fff;
+		border-top: 1px solid #eeeeee;
+
+		&-btn {
+			color: #fff;
+			text-align: center;
+			font-size: 32rpx;
+			font-weight: bold;
+			line-height: 88rpx;
+			height: 88rpx;
+			background: linear-gradient(90deg, #F30000 0%, #FE4815 100%);
+			opacity: 1;
+			border-radius: 44px;
+		}
+	}
+</style>

+ 1 - 1
store/modules/app.js

@@ -8,7 +8,7 @@ export default {
 		indextabbarHeight: uni.upx2px(98), // 首页 tabbar 高
 		token: uni.getStorageSync('token'),
 		// token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9hcGkuYXBwLmNsaXUuY2NcL2FwaVwvbG9naW5cL2dldF91c2VyX29wZW5pZCIsImlhdCI6MTY5ODgxNTc0OSwiZXhwIjoxNjk5Njc5NzQ5LCJuYmYiOjE2OTg4MTU3NDksImp0aSI6InRMU25oSTdmMHVOZEZFamgiLCJzdWIiOjM5NTE2LCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.9W32gsVAoq1N1P1W38SCc-H8lCqKLxUfhWwHaGWszoM',
-		// token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9hcGkuYXBwLmNsaXUuY2NcL2FwaVwvQ3JlYXRlVG9rZW5UZXN0IiwiaWF0IjoxNjg5NTYyMDcwLCJleHAiOjE2OTA0MjYwNzAsIm5iZiI6MTY4OTU2MjA3MCwianRpIjoicFFsYXE5VjJDM3BYcWNMZiIsInN1YiI6MjMyMTg3LCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.8FZyw5wTXlPLTmQQ9EHLb5XhV7h1dFFYkUazD8SgbJU',
+		// token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9hcGkuYXBwLmNsaXUuY2NcL2FwaVwvbG9naW5cL2dldF91c2VyX29wZW5pZCIsImlhdCI6MTY5OTkyNjc1MCwiZXhwIjoxNzAwNzkwNzUwLCJuYmYiOjE2OTk5MjY3NTAsImp0aSI6IlVRRXZCZzdhYnp4NEJPVksiLCJzdWIiOjc1NjYwLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.U8TYCV6Z6iZFuy9yMf0fLX-H7kvGxMLnlCicJ7akuVY',
 	},
 	mutations: {
 		LOGIN(state, payload) { // 登录 保存 token