学习?学个屁 3 viikkoa sitten
vanhempi
commit
ac322593e7

+ 17 - 8
node_modules/.vue-global-types/vue_3.5_0.d.ts

@@ -15,13 +15,13 @@ export {};
 	type __VLS_PickNotAny<A, B> = __VLS_IsAny<A> extends true ? B : A;
 	type __VLS_SpreadMerge<A, B> = Omit<A, keyof B> & B;
 	type __VLS_WithComponent<N0 extends string, LocalComponents, Self, N1 extends string, N2 extends string, N3 extends string> =
-		N1 extends keyof LocalComponents ? N1 extends N0 ? Pick<LocalComponents, N0 extends keyof LocalComponents ? N0 : never> : { [K in N0]: LocalComponents[N1] } :
-		N2 extends keyof LocalComponents ? N2 extends N0 ? Pick<LocalComponents, N0 extends keyof LocalComponents ? N0 : never> : { [K in N0]: LocalComponents[N2] } :
-		N3 extends keyof LocalComponents ? N3 extends N0 ? Pick<LocalComponents, N0 extends keyof LocalComponents ? N0 : never> : { [K in N0]: LocalComponents[N3] } :
+		N1 extends keyof LocalComponents ? { [K in N0]: LocalComponents[N1] } :
+		N2 extends keyof LocalComponents ? { [K in N0]: LocalComponents[N2] } :
+		N3 extends keyof LocalComponents ? { [K in N0]: LocalComponents[N3] } :
 		Self extends object ? { [K in N0]: Self } :
-		N1 extends keyof __VLS_GlobalComponents ? N1 extends N0 ? Pick<__VLS_GlobalComponents, N0 extends keyof __VLS_GlobalComponents ? N0 : never> : { [K in N0]: __VLS_GlobalComponents[N1] } :
-		N2 extends keyof __VLS_GlobalComponents ? N2 extends N0 ? Pick<__VLS_GlobalComponents, N0 extends keyof __VLS_GlobalComponents ? N0 : never> : { [K in N0]: __VLS_GlobalComponents[N2] } :
-		N3 extends keyof __VLS_GlobalComponents ? N3 extends N0 ? Pick<__VLS_GlobalComponents, N0 extends keyof __VLS_GlobalComponents ? N0 : never> : { [K in N0]: __VLS_GlobalComponents[N3] } :
+		N1 extends keyof __VLS_GlobalComponents ? { [K in N0]: __VLS_GlobalComponents[N1] } :
+		N2 extends keyof __VLS_GlobalComponents ? { [K in N0]: __VLS_GlobalComponents[N2] } :
+		N3 extends keyof __VLS_GlobalComponents ? { [K in N0]: __VLS_GlobalComponents[N3] } :
 		{};
 	type __VLS_FunctionalComponentCtx<T, K> = __VLS_PickNotAny<'__ctx' extends keyof __VLS_PickNotAny<K, {}>
 		? K extends { __ctx?: infer Ctx } ? NonNullable<Ctx> : never : any
@@ -83,6 +83,10 @@ export {};
 			}
 		>
 	>;
+	type __VLS_EmitsToProps<T> = __VLS_PrettifyGlobal<{
+		[K in string & keyof T as `on${Capitalize<K>}`]?:
+			(...args: T[K] extends (...args: infer P) => any ? P : T[K] extends null ? any[] : never) => any;
+	}>;
 	type __VLS_ResolveEmits<
 		Comp,
 		Emits,
@@ -90,10 +94,16 @@ export {};
 		NormalizedEmits = __VLS_NormalizeEmits<Emits> extends infer E ? string extends keyof E ? {} : E : never,
 	> = __VLS_SpreadMerge<NormalizedEmits, TypeEmits>;
 	type __VLS_ResolveDirectives<T> = {
-		[K in Exclude<keyof T, keyof __VLS_GlobalDirectives> & string as `v${Capitalize<K>}`]: T[K];
+		[K in keyof T & string as `v${Capitalize<K>}`]: T[K];
 	};
 	type __VLS_PrettifyGlobal<T> = { [K in keyof T as K]: T[K]; } & {};
+	type __VLS_WithDefaultsGlobal<P, D> = {
+		[K in keyof P as K extends keyof D ? K : never]-?: P[K];
+	} & {
+		[K in keyof P as K extends keyof D ? never : K]: P[K];
+	};
 	type __VLS_UseTemplateRef<T> = Readonly<import('vue').ShallowRef<T | null>>;
+	type __VLS_ProxyRefs<T> = import('vue').ShallowUnwrapRef<T>;
 
 	function __VLS_getVForSourceType<T extends number | string | any[] | Iterable<any>>(source: T): [
 		item: T extends number ? number
@@ -115,7 +125,6 @@ export {};
 		: T extends (...args: any) => any
 			? T
 			: (arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown) => void;
-	function __VLS_makeOptional<T>(t: T): { [K in keyof T]?: T[K] };
 	function __VLS_asFunctionalComponent<T, K = T extends new (...args: any) => any ? InstanceType<T> : unknown>(t: T, instance?: K):
 		T extends new (...args: any) => any ? __VLS_FunctionalComponent<K>
 		: T extends () => any ? (props: {}, ctx?: any) => ReturnType<T>

+ 3 - 3
src/manifest.json

@@ -50,9 +50,9 @@
     "quickapp" : {},
     /* 小程序特有相关 */
     "mp-weixin" : {
-        "appid" : "wx6260718c6fd46efb",
-        "appid" : "wxe70e6c132e5b4c28",
-        //  "appid" : "wxc032a09413289004",
+        // "appid" : "wx6260718c6fd46efb", //已更为商家端
+        // "appid" : "wxe70e6c132e5b4c28", //当前用户端使用
+         "appid" : "wxc032a09413289004",  //嘉年华用来测试支付流程
         "setting" : {
             "urlCheck" : false,
             "minified" : true

+ 20 - 20
src/pages/index/eventsRegister/index.vue

@@ -481,26 +481,26 @@ const submitOrderImpl = () => {
 }
 
 const paymentOrder = (payInfo: object) => {
-	getOrderQuery(orderCode.value, orderId.value)
-	// console.log(payInfo, '支付参数');
-	// uni.requestPayment({
-	// 	provider: 'wxpay',
-	// 	...payInfo,
-	// 	success: function (res) {
-	// 		console.log('支付成功', res);
-	// 		getOrderQuery(orderCode.value, orderId.value)
-	// 	},
-	// 	fail: function (err) {
-	// 		console.log('支付失败', err);
-	// 		if (err.errMsg == 'requestPayment:fail cancel') {
-	// 			RouterUtils.to_page(`/pages/index/toBeUsed/index?orderId=${orderId.value}&orderType=${orderFormData.value.orderType}`)
-	// 			return
-	// 		}else{
-	// 			RouterUtils.to_page(`/pages/index/payError/index?errMsg=${err.errMsg}`)
-	// 		}
-	// 		// TipsUtils.tips_toast('支付失败,请稍后重试');
-	// 	}
-	// });
+	// getOrderQuery(orderCode.value, orderId.value)
+	console.log(payInfo, '支付参数');
+	uni.requestPayment({
+		provider: 'wxpay',
+		...payInfo,
+		success: function (res) {
+			console.log('支付成功', res);
+			getOrderQuery(orderCode.value, orderId.value)
+		},
+		fail: function (err) {
+			console.log('支付失败', err);
+			if (err.errMsg == 'requestPayment:fail cancel') {
+				RouterUtils.to_page(`/pages/index/toBeUsed/index?orderId=${orderId.value}&orderType=${orderFormData.value.orderType}`)
+				return
+			}else{
+				RouterUtils.to_page(`/pages/index/payError/index?errMsg=${err.errMsg}`)
+			}
+			// TipsUtils.tips_toast('支付失败,请稍后重试');
+		}
+	});
 }
 
 const submitOrder = debounce(submitOrderImpl, 500)

+ 21 - 20
src/pages/index/gymDetail/components/popup.vue

@@ -295,26 +295,26 @@ const submitOrderImpl = () => {
 	})
 }
 const paymentOrder = (payInfo: object) => {
-	getOrderQuery(orderCode.value, orderId.value)
-	// console.log(payInfo, '支付参数');
-	// uni.requestPayment({
-	// 	provider: 'wxpay',
-	// 	...payInfo,
-	// 	success: function (res) {
-	// 		console.log('支付成功', res);
-	// 		getOrderQuery(orderCode.value, orderId.value)
-	// 	},
-	// 	fail: function (err) {
-	// 		console.log('支付失败', err);
-	// 		if (err.errMsg == 'requestPayment:fail cancel') {
-	// 			RouterUtils.to_page(`/pages/index/toBeUsed/index?orderId=${orderId.value}&orderType=${orderFormData.value.orderType}`)
-	// 			return
-	// 		}else{
-	// 			RouterUtils.to_page(`/pages/index/payError/index?errMsg=${err.errMsg}`)
-	// 		}
-	// 		// TipsUtils.tips_toast('支付失败,请稍后重试');
-	// 	}
-	// });
+	// getOrderQuery(orderCode.value, orderId.value)
+	console.log(payInfo, '支付参数');
+	uni.requestPayment({
+		provider: 'wxpay',
+		...payInfo,
+		success: function (res) {
+			console.log('支付成功', res);
+			getOrderQuery(orderCode.value, orderId.value)
+		},
+		fail: function (err) {
+			console.log('支付失败', err);
+			if (err.errMsg == 'requestPayment:fail cancel') {
+				RouterUtils.to_page(`/pages/index/toBeUsed/index?orderId=${orderId.value}&orderType=${orderFormData.value.orderType}`)
+				return
+			}else{
+				RouterUtils.to_page(`/pages/index/payError/index?errMsg=${err.errMsg}`)
+			}
+			// TipsUtils.tips_toast('支付失败,请稍后重试');
+		}
+	});
 }
 const submitOrder = debounce(submitOrderImpl, 500)
 
@@ -335,6 +335,7 @@ const getOrderQuery = (orderCode: string, orderId: string, retryCount = 0) => {
 				console.log('查询中,但已达到最大查询次数')
 			} else if (res.result == '100002') {
 				console.log('查询失败')
+				TipsUtils.tips_toast('查询失败')
 			} else if (res.result == '100004') {
 				console.log('支付失败')
 				TipsUtils.tips_toast('支付失败')

+ 20 - 20
src/pages/index/gymPay/index.vue

@@ -497,26 +497,26 @@ const submitOrderImpl = () => {
 }
 
 const paymentOrder = (payInfo: object) => {
-	getOrderQuery(orderCode.value, orderId.value)
-	// console.log(payInfo, '支付参数');
-	// uni.requestPayment({
-	// 	provider: 'wxpay',
-	// 	...payInfo,
-	// 	success: function (res) {
-	// 		console.log('支付成功', res);
-	// 		getOrderQuery(orderCode.value, orderId.value)
-	// 	},
-	// 	fail: function (err) {
-	// 		console.log('支付失败', err);
-	// 		if (err.errMsg == 'requestPayment:fail cancel') {
-	// 			RouterUtils.to_page(`/pages/index/toBeUsed/index?orderId=${orderId.value}&orderType=${orderFormData.value.orderType}`)
-	// 			return
-	// 		}else{
-	// 			RouterUtils.to_page(`/pages/index/payError/index?errMsg=${err.errMsg}`)
-	// 		}
-	// 		// TipsUtils.tips_toast('支付失败,请稍后重试');
-	// 	}
-	// });
+	// getOrderQuery(orderCode.value, orderId.value)
+	console.log(payInfo, '支付参数');
+	uni.requestPayment({
+		provider: 'wxpay',
+		...payInfo,
+		success: function (res) {
+			console.log('支付成功', res);
+			getOrderQuery(orderCode.value, orderId.value)
+		},
+		fail: function (err) {
+			console.log('支付失败', err);
+			if (err.errMsg == 'requestPayment:fail cancel') {
+				RouterUtils.to_page(`/pages/index/toBeUsed/index?orderId=${orderId.value}&orderType=${orderFormData.value.orderType}`)
+				return
+			}else{
+				RouterUtils.to_page(`/pages/index/payError/index?errMsg=${err.errMsg}`)
+			}
+			// TipsUtils.tips_toast('支付失败,请稍后重试');
+		}
+	});
 }
 
 const submitOrder = debounce(submitOrderImpl, 500)

+ 99 - 74
src/pages/index/refundDetail/index.vue

@@ -3,118 +3,143 @@
 		<view class="r-refund-card">
 			<view class="refund-status">
 				<view class="status">退款中</view>
-				<view class="price">¥25.9</view>
+				<view class="price">¥{{ refundOrderInfo?.price.toFixed(2) }}</view>
 			</view>
 			<view class="r-tips">预计04月18日前退回原账户</view>
 			<view class="refund-order-card">
 				<view class="order-total">
-					<view class="total">订单总价(共2件)</view>
-					<view class="price">¥25.9</view>
+					<view class="total">订单总价(共{{refundOrderInfo?.orderNum}}件)</view>
+					<view class="price">¥{{ refundOrderInfo?.price.toFixed(2) }}</view>
 				</view>
-				<view class="preferential-list">
+				<!-- <view class="preferential-list">
 					<view class="">团购优惠</view>
 					<view class="">-¥2.00</view>
-				</view>
+				</view> -->
 				<view class="r-line"></view>
 				<view class="r-pay">
 					<view class="pay">实付金额</view>
-					<view class="price">-¥25.90</view>
+					<view class="price">-¥{{ refundOrderInfo?.price.toFixed(2) }}</view>
 				</view>
 				<view class="r-pay">
 					<view class="pay">退款金额</view>
-					<view class="price">-¥25.90</view>
+					<view class="price">-¥{{ refundOrderInfo?.amount.toFixed(2) }}</view>
 				</view>
 			</view>
 			<view class="">
-				<uni-steps :options="stepsList" active-color="#FDD143" :active="active" direction="column" />
+				<uv-steps :current="refundOrderInfo?.refundStatus" direction="column" activeColor="#c0fa03">
+					<uv-steps-item title="提交申请" :desc="refundOrderInfo?.createTime"></uv-steps-item>
+					<uv-steps-item title="退款受理完成" :desc="refundOrderInfo?.acceptedTime"></uv-steps-item>
+					<uv-steps-item title="到账成功" :desc="'如您未查询到退款信息,请咨询微信客服。'+(refundOrderInfo?.successTime?refundOrderInfo?.successTime:'')"></uv-steps-item>
+				</uv-steps>
 			</view>
 		</view>
 	</view>
 </template>
 
 <script lang="ts" setup>
-	import { ref } from 'vue'
-	const stepsList = ref([
-		{
-			title: '提交申请',
-			desc: '2022-04-18 12:00:00'
-		},
-		{
-			title: '退款受理完成',
-			desc: '2022-04-18 12:00:00'
-		},
-		{
-			title: '微信支付到账成功',
-			desc: '2022-04-18 12:00:00'
-		}
-	])
-	const active = ref(1)
+import { ref,onMounted } from 'vue'
+import { onLoad} from '@dcloudio/uni-app';
+import { http } from '@/utils/http';
+
+onLoad((options:any)=>{
+console.log(options,'携带参数');
+fromData.value.orderId=options.orderId
+fromData.value.orderProInfoId=options.orderProInfoId
+})
+
+onMounted(()=>{
+	getOrderDetail()
+})
+
+const fromData=ref({
+	orderId:'',
+	orderProInfoId:''
+})
+
+const refundOrderInfo=ref({})
+const getOrderDetail=()=>{
+http.get('/order/getRefundsInfo',{data:fromData.value,loading:true}).then((res:any)=>{
+	console.log(res,'订单详情');
+	refundOrderInfo.value=res.result
+})
+}
 </script>
 
 <style lang="less" scoped>
-	.r-refund-card{
-		background: #FFFFFF;
+.r-refund-card {
+	background: #FFFFFF;
+	border-radius: 32rpx;
+	padding: 20rpx;
+	margin-top: 20rpx;
+
+	.refund-status {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+
+		.status {
+			font-weight: bold;
+			font-size: 36rpx;
+			color: #222222;
+		}
+
+		.price {
+			font-weight: 800;
+			font-size: 36rpx;
+			color: #FB5B5B;
+		}
+	}
+
+	.r-tips {
+		margin-top: 20rpx;
+		font-size: 24rpx;
+		color: #AAAAAA;
+	}
+
+	.refund-order-card {
+		margin-top: 20rpx;
+		background: #F6F6F6;
 		border-radius: 32rpx;
 		padding: 20rpx;
-		margin-top: 20rpx;
-		.refund-status{
+
+		.order-total {
 			display: flex;
 			align-items: center;
 			justify-content: space-between;
-			.status{
-				font-weight: bold;
-				font-size: 36rpx;
+
+			.total {
+				font-size: 28rpx;
 				color: #222222;
 			}
-			.price{
-				font-weight: 800;
-				font-size: 36rpx;
-				color: #FB5B5B;
+
+			.price {
+				font-size: 28rpx;
+				color: #222222;
 			}
 		}
-		.r-tips{
+
+		.preferential-list {
 			margin-top: 20rpx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
 			font-size: 24rpx;
-			color: #AAAAAA;
+			color: #FB5B5B;
 		}
-		.refund-order-card{
+
+		.r-line {
 			margin-top: 20rpx;
-			background: #F6F6F6;
-			border-radius: 32rpx;
-			padding: 20rpx;
-			.order-total{
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				.total{
-					font-size: 28rpx;
-					color: #222222;
-				}
-				.price{
-					font-size: 28rpx;
-					color: #222222;
-				}
-			}
-			.preferential-list{
-				margin-top: 20rpx;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				font-size: 24rpx;
-				color: #FB5B5B;
-			}
-			.r-line{
-				margin-top: 20rpx;
-				border: 1rpx solid #FFFFFF;
-			}
-			.r-pay{
-				margin-top: 20rpx;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				font-size: 24rpx;
-				color: #222222;
-			}
+			border: 1rpx solid #FFFFFF;
+		}
+
+		.r-pay {
+			margin-top: 20rpx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			font-size: 24rpx;
+			color: #222222;
 		}
 	}
+}
 </style>

+ 14 - 14
src/pages/index/submitOrder/index.vue

@@ -404,20 +404,20 @@ const submitOrderImpl = () => {
 	})
 }
 const paymentOrder = (payInfo: object) => {
-	getOrderQuery(orderCode.value, orderId.value)
-	// console.log(payInfo, '支付参数');
-	// uni.requestPayment({
-	// 	provider: 'wxpay',
-	// 	...payInfo,
-	// 	success: function (res) {
-	// 		console.log('支付成功', res);
-	// 		getOrderQuery(orderCode.value, orderId.value)
-	// 	},
-	// 	fail: function (err) {
-	// 		console.log('支付失败', err);
-	// 		// TipsUtils.tips_toast('支付失败,请稍后重试');
-	// 	}
-	// });
+	// getOrderQuery(orderCode.value, orderId.value)
+	console.log(payInfo, '支付参数');
+	uni.requestPayment({
+		provider: 'wxpay',
+		...payInfo,
+		success: function (res) {
+			console.log('支付成功', res);
+			getOrderQuery(orderCode.value, orderId.value)
+		},
+		fail: function (err) {
+			console.log('支付失败', err);
+			// TipsUtils.tips_toast('支付失败,请稍后重试');
+		}
+	});
 }
 
 const submitBooking = debounce(submitOrderImpl, 500)  //防抖

+ 137 - 108
src/pages/index/toBeUsed/index.vue

@@ -113,7 +113,8 @@
 				<button class="g-share-btn" open-type="share"></button>
 				邀请好友报名
 			</view>
-			<view class="t-shoping-address-eventInfo" v-if="countdownVisible&&orderDetailInfo?.orderType==3||orderDetailInfo?.orderType==4">
+			<view class="t-shoping-address-eventInfo"
+				v-if="countdownVisible && orderDetailInfo?.orderType == 3 || orderDetailInfo?.orderType == 4">
 				<view class="time">{{ days }}</view>
 				<view class="unit">天</view>
 				<view class="time">{{ hours }}</view>
@@ -136,16 +137,16 @@
 				<view class="download-qrcode" @click="download_qrcode">下载到手机</view>
 			</block>
 			<view v-if="orderDetailInfo?.orderType == 0" style="color: #222;font-size: 26rpx;">通过学校门口闸机时,通过人脸自动核验</view>
-			<view class="t-todeused"  v-for="(item, index) in orderDetailInfo?.proInfoList" :key="item.id">
+			<view class="t-todeused" v-for="(item, index) in orderDetailInfo?.proInfoList" :key="item.id">
 				<view class="todeused">
 					<view class="text">
-						<text v-if="item.orderStatus==0">待付款</text>
-						<text v-if="item.orderStatus==1">待使用</text>
-						<text v-if="item.orderStatus==2">已使用</text>
-						<text v-if="item.orderStatus==3">已到期</text>
-						<text v-if="item.orderStatus==4">已取消</text>
-						<text v-if="item.orderStatus==5">退款中</text>
-						<text v-if="item.orderStatus==6">已退款</text>
+						<text v-if="item.orderStatus == 0">待付款</text>
+						<text v-if="item.orderStatus == 1">待使用</text>
+						<text v-if="item.orderStatus == 2">已使用</text>
+						<text v-if="item.orderStatus == 3">已到期</text>
+						<text v-if="item.orderStatus == 4">已取消</text>
+						<text v-if="item.orderStatus == 5">退款中</text>
+						<text v-if="item.orderStatus == 6">已退款</text>
 					</view>
 					<view class="time">
 						<!-- {{ orderDetailInfo?.appCourses?.endTime || orderDetailInfo?.endTime }} -->
@@ -155,51 +156,16 @@
 				</view>
 				<!-- orderStatus:0-待付款 1-待使用 2-已使用 3-已到期 4-已取消 5-退款中 6已退款 -->
 				<!-- type:0-学校 1-包场 2-无固定场 3-个人赛 4-团队赛 5-课程 6-保险 -->
-				<view class="order-num" @click="RouterUtils.to_page(`/pages/index/tryUseRecord/index?ticketNo=${item.ticketNo}&proInfoList=${JSON.stringify(orderDetailInfo?.proInfoList)}&selectValue=${index}`)">
-					<text v-if="item.type != 6">{{ item.ticketNo }}&nbsp;&nbsp; {{ item.userName }}</text>
-					<zzx-icon v-if="item.type != 6" name="ashRight" size="12"></zzx-icon>
-					<text v-if="item.type != 6 && orderPageInfo?.orderType == 1">{{ item.expireTime }}到期</text>
-				</view>
-			</view>
-		</view>
-		<!-- 已使用已过期展示 -->
-		<!-- <view class="t-qrcode-card" v-if="orderPageInfo?.orderType == 1">
-			<view class="t-todeused" v-for="item in 2" style="border-bottom: 1rpx solid #F0F0F0;">
-				<view class="todeused">
-					<view class="item-todeused">
-						<view class="text">已使用</view>
-						<view class="time">07-25 14:25:45 到期</view>
+				<view style="display: flex;align-items: center;justify-content: space-between;">
+					<view class="order-num" @click="selectOrderInfo(item, index)">
+						<text v-if="item.type != 6">{{ item.ticketNo }}&nbsp;&nbsp; {{ item.userName }}</text>
+						<zzx-icon v-if="item.type != 6" name="ashRight" size="12"></zzx-icon>
+						<!-- <text v-if="item.type != 6 && orderPageInfo?.orderType == 1">{{ item.expireTime }}到期</text> -->
 					</view>
-					<view class="application-btn" @click="refundPopup.open()">申请退款</view>
-				</view>
-				<view class="order-num" @click="RouterUtils.to_page('/pages/index/tryUseRecord/index')">
-					<text>0017 1712 5994 杨锦新</text>
-					<zzx-icon name="ashRight" size="12"></zzx-icon>
-				</view>
-			</view>
-		</view> -->
-		<!-- 学校场地预定订单详情展示 -->
-		<!-- <view class="t-scheduled-card" v-if="orderPageInfo?.orderType == 2">
-			<view class="s-title">预定信息</view>
-			<view class="t-scheduled-list">
-				<view class="item-list">
-					<view class="list-left">场地</view>
-					<view class="list-right">体育馆综合训练馆(观山湖店)</view>
-				</view>
-				<view class="item-list">
-					<view class="list-left">日期</view>
-					<view class="list-right">06-11(今天)</view>
-				</view>
-				<view class="item-list">
-					<view class="list-left">时段</view>
-					<view class="list-right">11:00-12:00</view>
-				</view>
-				<view class="item-list">
-					<view class="list-left">用户</view>
-					<view class="list-right">杨锦新 赵四儿</view>
+					<view class="application-btn" @click="openRefund(item)" v-if="item.orderStatus == 1">申请退款</view>
 				</view>
 			</view>
-		</view> -->
+		</view>
 		<view class="t-address-card">
 			<view class="address">
 				<zzx-icon name="location"></zzx-icon>
@@ -364,38 +330,27 @@
 	<uni-popup ref="refundPopup" :safe-area="false" type="bottom">
 		<view class="refund-detail">
 			<view class="refund-title">申请退款</view>
-			<view class="refund-text">足球五人制闲时1小时</view>
+			<view class="refund-text">{{ refundInfo?.productName }}</view>
 			<view class="refund-num-card">
-				<view class="refund-number">
-					<view class="text">退款数量<text style="color: #AAAAAA ;">(上限2张)</text></view>
+				<!-- <view class="refund-number">
+					<view class="text">退款数量<text style="color: #AAAAAA ;">(上限{{refundNumber?.length}}张)</text></view>
 					<view class="price-stepper">
-						<view class="minus">-</view>
-						<input type="number" />
-						<view class="add">+</view>
+						<view class="minus" @click="refundMinus">-</view>
+						<input type="number" style="text-align: center;" v-model="refundCountTotal" />
+						<view class="add" @click="refundAdd">+</view>
 					</view>
-				</view>
+				</view> -->
 				<!-- 包场 -->
-				<view class="c-scheduled-card">
+				<!-- <view class="c-scheduled-card">
 					<view class="title">退款信息</view>
 					<view class="schedule-address">
 						<view class="text">场馆</view>
-						<view class="name">体育馆综合训练馆(观山湖店)</view>
-					</view>
-					<view class="schedule-address">
-						<view class="text">场次</view>
-						<view class="">
-							<view class="time-box" v-for="item in 3">
-								<view class="time">06-11(周三)11:00-12:00|羽毛球1</view>
-								<view class="time-icon">
-									<zzx-icon name="selected" size="14"></zzx-icon>
-								</view>
-							</view>
-						</view>
+						<view class="name">{{ refundInfo?.address }}</view>
 					</view>
-				</view>
+				</view> -->
 				<view class="refund-price">
 					<view class="p-text">退款金额<text style="color: #AAAAAA ;">(实付金额)</text></view>
-					<view class="p-price">¥45.9</view>
+					<view class="p-price">¥{{ refundInfo?.price }}</view>
 				</view>
 				<view class="refund-account">
 					<view class="a-text">退款账户</view>
@@ -406,9 +361,9 @@
 			<view class="refund-cause-card">
 				<view class="c-title">退款原因<text style="color: #AAAAAA ;">(必选)</text></view>
 				<view class="c-cause-list">
-					<view class="cause-list" v-for="item in 10">
-						<view class="cause">价格不划算</view>
-						<zzx-icon :name="selected ? 'selected' : 'unchecked'" size="14"></zzx-icon>
+					<view class="cause-list" v-for="item in refundList" :key="item.id" @click="selectRefundType(item)">
+						<view class="cause">{{ item.name }}</view>
+						<zzx-icon :name="isSelectType == item.id ? 'selected' : 'unchecked'" size="14"></zzx-icon>
 					</view>
 				</view>
 			</view>
@@ -431,10 +386,29 @@ import { onLoad, onShow, onShareAppMessage, onUnload } from '@dcloudio/uni-app';
 import { http } from '@/utils/http'
 import zsLoading from '@/components/zzx-loading/zzx-loading.vue'
 const qrcode = ref();
-const pricePopup = ref()  //价格
-const refundPopup = ref()  //退款
-const selected = ref(false)
-const orderPageInfo = ref()
+const pricePopup = ref();  //价格
+const refundPopup = ref();  //退款
+const selected = ref(false);
+const orderPageInfo = ref();
+const refundList = ref([{
+	id: 1,
+	name: '价格不划算'
+}, {
+	id: 2,
+	name: '场地无法提供使用'
+}, {
+	id: 3,
+	name: '不需要了'
+}, {
+	id: 4,
+	name: '重新购买'
+}, {
+	id: 5,
+	name: '场馆要求改用其他方式/平台付款'
+}, {
+	id: 6,
+	name: '其他原因'
+}])
 onLoad((option) => {
 	orderPageInfo.value = option
 	console.log(option, '路由参数');
@@ -488,6 +462,65 @@ const hasPendingUsageItems = computed(() => {
 const getStatusText = (status: number): string => {
 	return statusMap[status as keyof typeof statusMap] || ''
 }
+
+// ===========发起退款start===========
+const refundInfo = ref()
+const refundCountTotal = ref(0);
+const refundNumber = ref([])
+const openRefund = (e) => {
+	refundNumber.value = orderDetailInfo?.value.proInfoList.filter(item => item.orderStatus == 1)
+	refundInfo.value = e
+	refundCountTotal.value = 0
+	refundFromData.value.orderProInfoIds = e.id
+	refundPopup?.value.open()
+}
+
+const refundMinus = () => {
+	if (refundCountTotal.value > 0) {
+		refundCountTotal.value--
+	}
+}
+
+const refundAdd = () => {
+	if (refundCountTotal.value > (refundNumber.value.length - 1)) return TipsUtils.tips_toast('已达可退款上限')
+	refundCountTotal.value++
+}
+
+const isSelectType = ref()
+const selectRefundType = (item) => {
+	refundFromData.value.reason = item.name
+	isSelectType.value = item.id
+}
+// 确定退款
+const refundFromData = ref({
+	orderCode: '',
+	orderProInfoIds: '',
+	reason: '',
+})
+const refund_btn = async () => {
+	if (refundFromData.value.reason == '') {
+		return TipsUtils.tips_toast('请选择退款原因')
+	}
+	refundFromData.value.orderCode = orderDetailInfo?.value.orderCode
+	let res: any = await TipsUtils.tips_alert('确定要申请退款吗?', true)
+	if (res.confirm) {
+		http.post('/order/refundOrder', refundFromData.value, { loading: true }).then((res) => {
+			TipsUtils.tips_toast(res.result.message)
+			RouterUtils.to_page(`/pages/index/refundDetail/index?orderId=${orderDetailInfo?.value.id}&orderProInfoId=${refundFromData.value.orderProInfoIds}`)
+		})
+	}
+}
+// ===========发起退款end===========
+
+// 查看子订单状态
+// <!-- orderStatus:0-待付款 1-待使用 2-已使用 3-已到期 4-已取消 5-退款中 6已退款 -->
+const selectOrderInfo = (e:any, i:number) => {
+	if (e.orderStatus == 5 || e.orderStatus == 6) {
+		RouterUtils.to_page(`/pages/index/refundDetail/index?orderId=${orderDetailInfo?.value.id}&orderProInfoId=${e.id}`)
+	} else {
+		RouterUtils.to_page(`/pages/index/tryUseRecord/index?ticketNo=${e.ticketNo}&proInfoList=${JSON.stringify(orderDetailInfo?.value.proInfoList)}&selectValue=${i}`)
+	}
+}
 const download_qrcode = () => { //下载二维码,增加授权判断
 	// #ifdef MP-WEIXIN
 	uni.authorize({
@@ -532,9 +565,6 @@ const download_qrcode = () => { //下载二维码,增加授权判断
 	});
 	// #endif
 }
-const refund_btn = () => {
-	RouterUtils.to_page('/pages/index/refundDetail/index')
-}
 
 const submitBooking = () => {
 	uni.makePhoneCall({
@@ -710,20 +740,20 @@ const submitPay = (e: any) => {
 	})
 }
 const paymentOrder = (payInfo: object) => {
-	getOrderQuery(orderCode.value, orderId.value)
-	// console.log(payInfo, '支付参数');
-	// uni.requestPayment({
-	// 	provider: 'wxpay',
-	// 	...payInfo,
-	// 	success: function (res) {
-	// 		console.log('支付成功', res);
-	// 		getOrderQuery(orderCode.value, orderId.value)
-	// 	},
-	// 	fail: function (err) {
-	// 		console.log('支付失败', err);
-	// 		// TipsUtils.tips_toast('支付失败,请稍后重试');
-	// 	}
-	// });
+	// getOrderQuery(orderCode.value, orderId.value)
+	console.log(payInfo, '支付参数');
+	uni.requestPayment({
+		provider: 'wxpay',
+		...payInfo,
+		success: function (res) {
+			console.log('支付成功', res);
+			getOrderQuery(orderCode.value, orderId.value)
+		},
+		fail: function (err) {
+			console.log('支付失败', err);
+			// TipsUtils.tips_toast('支付失败,请稍后重试');
+		}
+	});
 }
 
 const getOrderQuery = (orderCode: string, orderId: string, retryCount = 0) => {
@@ -1254,18 +1284,17 @@ const getSignUrl = (signFlowId: string) => {
 				line-height: 40rpx;
 			}
 		}
-	}
 
-	.application-btn {
-		width: 152rpx;
-		height: 48rpx;
-		background: #C8FF0C;
-		border-radius: 8rpx;
-		font-size: 28rpx;
-		color: #222222;
-		text-align: center;
-		line-height: 48rpx;
-		margin-top: 20rpx;
+		.application-btn {
+			width: 152rpx;
+			height: 44rpx;
+			background: #C8FF0C;
+			border-radius: 8rpx;
+			font-size: 24rpx;
+			color: #222222;
+			text-align: center;
+			line-height: 44rpx;
+		}
 	}
 }
 

+ 14 - 14
src/pages/mine/orderInfo/index.vue

@@ -157,20 +157,20 @@ const submitPay = (e: any) => {
 	})
 }
 const paymentOrder = (payInfo: object) => {
-	getOrderQuery(orderCode.value, orderId.value)
-	// console.log(payInfo, '支付参数');
-	// uni.requestPayment({
-	// 	provider: 'wxpay',
-	// 	...payInfo,
-	// 	success: function (res) {
-	// 		console.log('支付成功', res);
-	// 		getOrderQuery(orderCode.value, orderId.value)
-	// 	},
-	// 	fail: function (err) {
-	// 		console.log('支付失败', err);
-	// 		// TipsUtils.tips_toast('支付失败,请稍后重试');
-	// 	}
-	// });
+	// getOrderQuery(orderCode.value, orderId.value)
+	console.log(payInfo, '支付参数');
+	uni.requestPayment({
+		provider: 'wxpay',
+		...payInfo,
+		success: function (res) {
+			console.log('支付成功', res);
+			getOrderQuery(orderCode.value, orderId.value)
+		},
+		fail: function (err) {
+			console.log('支付失败', err);
+			// TipsUtils.tips_toast('支付失败,请稍后重试');
+		}
+	});
 }
 
 const getOrderQuery = (orderCode: string, orderId: string, retryCount = 0) => {

+ 2 - 2
src/utils/http/index.ts

@@ -178,9 +178,9 @@ export class HttpClient {
 
 // 创建实例
 export const http = new HttpClient({
-  baseURL: 'http://192.168.0.217:8080/jeecg-boot/app',
+  // baseURL: 'http://192.168.0.217:8080/jeecg-boot/app',
   // baseURL: 'http://192.168.1.166:8080/jeecg-boot/app',
-  // baseURL: 'http://192.168.0.11:8080/jeecg-boot/app',
+  baseURL: 'http://192.168.0.11:8080/jeecg-boot/app',
   // baseURL: 'https://api.qlapp.cn/jeecgboot/app', //生产
   headers: {
     'Content-Type': 'application/json'