|  | @@ -10,7 +10,7 @@
 | 
											
												
													
														|  |  			<view class="o-order-name">
 |  |  			<view class="o-order-name">
 | 
											
												
													
														|  |  				<view class="order-name">场地:{{ item.orderProInfoList[0].address || '--' }}</view>
 |  |  				<view class="order-name">场地:{{ item.orderProInfoList[0].address || '--' }}</view>
 | 
											
												
													
														|  |  				<!-- 待付款 -->
 |  |  				<!-- 待付款 -->
 | 
											
												
													
														|  | -				<view class="order-status" v-if="item.orderStatus == 0">待支付(剩余{{ downTime }})</view>
 |  | 
 | 
											
												
													
														|  | 
 |  | +				<view class="order-status" v-if="item.orderStatus == 0">待支付(剩余{{ item.downTime }})</view>
 | 
											
												
													
														|  |  				<view class="item-order-status" style="color:#FB5B5B;" v-if="item.orderStatus == 1">待使用</view>
 |  |  				<view class="item-order-status" style="color:#FB5B5B;" v-if="item.orderStatus == 1">待使用</view>
 | 
											
												
													
														|  |  				<view class="item-order-status" v-if="item.orderStatus == 2">已使用</view>
 |  |  				<view class="item-order-status" v-if="item.orderStatus == 2">已使用</view>
 | 
											
												
													
														|  |  				<view class="item-order-status" v-if="item.orderStatus == 3">已到期</view>
 |  |  				<view class="item-order-status" v-if="item.orderStatus == 3">已到期</view>
 | 
											
										
											
												
													
														|  | @@ -49,7 +49,11 @@
 | 
											
												
													
														|  |  							<image :src="item.orderProInfoList[0].productImage" mode=""></image>
 |  |  							<image :src="item.orderProInfoList[0].productImage" mode=""></image>
 | 
											
												
													
														|  |  						</view>
 |  |  						</view>
 | 
											
												
													
														|  |  						<view class="single-name">
 |  |  						<view class="single-name">
 | 
											
												
													
														|  | -							<view class="item-single-name textHidden">{{ item.orderProInfoList[0].productName }}</view>
 |  | 
 | 
											
												
													
														|  | 
 |  | +							<view class="item-single-name textHidden" v-if="item.orderType!=1">{{ item.orderProInfoList[0].productName }}</view>
 | 
											
												
													
														|  | 
 |  | +							<view class="item-single-name" v-else>
 | 
											
												
													
														|  | 
 |  | +								<!-- {{ item.orderProInfoList[0].productName }} -->
 | 
											
												
													
														|  | 
 |  | +								  <view class="textHidden" v-for="name in item.orderProInfoList" :key="name.id">{{ name.productName }}</view>
 | 
											
												
													
														|  | 
 |  | +							</view>
 | 
											
												
													
														|  |  						</view>
 |  |  						</view>
 | 
											
												
													
														|  |  					</view>
 |  |  					</view>
 | 
											
												
													
														|  |  				</view>
 |  |  				</view>
 | 
											
										
											
												
													
														|  | @@ -61,17 +65,19 @@
 | 
											
												
													
														|  |  			<view class="line"></view>
 |  |  			<view class="line"></view>
 | 
											
												
													
														|  |  			<!-- 待付款 -->
 |  |  			<!-- 待付款 -->
 | 
											
												
													
														|  |  			<view class="o-order-btn">
 |  |  			<view class="o-order-btn">
 | 
											
												
													
														|  | -				<view class="cancel-btn" v-if="selected == 1">取消订单</view>
 |  | 
 | 
											
												
													
														|  | -				<view class="pay-btn" v-if="selected == 1">付款</view>
 |  | 
 | 
											
												
													
														|  | 
 |  | +				<view class="cancel-btn" v-if="item.orderStatus == 0" @click.stop="cancelOrder(item)">取消订单</view>
 | 
											
												
													
														|  | 
 |  | +				<view class="pay-btn" v-if="item.orderStatus == 0">付款</view>
 | 
											
												
													
														|  |  				<!-- 售后/退款 -->
 |  |  				<!-- 售后/退款 -->
 | 
											
												
													
														|  | -				<view class="pay-btn" v-if="selected == 3">评价</view>
 |  | 
 | 
											
												
													
														|  | 
 |  | +				<view class="pay-btn" v-if="item.orderStatus == 2"
 | 
											
												
													
														|  | 
 |  | +					@click="RouterUtils.to_page(`/pages/index/writeComments/index?siteId=${item.addressSiteId}&orderId=${item.orderId}`)">
 | 
											
												
													
														|  | 
 |  | +					评价</view>
 | 
											
												
													
														|  |  				<!-- 已使用 -->
 |  |  				<!-- 已使用 -->
 | 
											
												
													
														|  |  				<view class="cancel-btn" v-if="selected == 4">申请退款</view>
 |  |  				<view class="cancel-btn" v-if="selected == 4">申请退款</view>
 | 
											
												
													
														|  |  				<view class="pay-btn" v-if="selected == 4">凭证</view>
 |  |  				<view class="pay-btn" v-if="selected == 4">凭证</view>
 | 
											
												
													
														|  |  			</view>
 |  |  			</view>
 | 
											
												
													
														|  |  			<!-- 待使用 -->
 |  |  			<!-- 待使用 -->
 | 
											
												
													
														|  |  			<view class="o-order-tips" v-if="item.orderStatus == 1">
 |  |  			<view class="o-order-tips" v-if="item.orderStatus == 1">
 | 
											
												
													
														|  | -				限04.23 06:00-08:00使用,过期作废
 |  | 
 | 
											
												
													
														|  | 
 |  | +				限{{ item.orderProInfoList[0].frameTimeStr }}使用,过期作废
 | 
											
												
													
														|  |  			</view>
 |  |  			</view>
 | 
											
												
													
														|  |  		</view>
 |  |  		</view>
 | 
											
												
													
														|  |  		<zs-empty v-if="orderList.length == 0"></zs-empty>
 |  |  		<zs-empty v-if="orderList.length == 0"></zs-empty>
 | 
											
										
											
												
													
														|  | @@ -79,33 +85,51 @@
 | 
											
												
													
														|  |  </template>
 |  |  </template>
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  <script lang="ts" setup>
 |  |  <script lang="ts" setup>
 | 
											
												
													
														|  | -import { ref, onMounted } from 'vue'
 |  | 
 | 
											
												
													
														|  | 
 |  | +import { ref, onMounted, onUnmounted } from 'vue'
 | 
											
												
													
														|  |  import { http } from '@/utils/http'
 |  |  import { http } from '@/utils/http'
 | 
											
												
													
														|  | -import { onLoad } from '@dcloudio/uni-app';
 |  | 
 | 
											
												
													
														|  | 
 |  | +import { onLoad, onReachBottom } from '@dcloudio/uni-app';
 | 
											
												
													
														|  |  import zsEmpty from '@/components/zs-empty/index.vue'
 |  |  import zsEmpty from '@/components/zs-empty/index.vue'
 | 
											
												
													
														|  | -import { RouterUtils } from '@/utils/util'
 |  | 
 | 
											
												
													
														|  | 
 |  | +import { RouterUtils, TipsUtils } from '@/utils/util'
 | 
											
												
													
														|  |  const selected = ref(0)
 |  |  const selected = ref(0)
 | 
											
												
													
														|  |  const orderTypeList = ref(['全部', '待付款', '待使用', '已使用', '退款/售后'])
 |  |  const orderTypeList = ref(['全部', '待付款', '待使用', '已使用', '退款/售后'])
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  onLoad((option) => {
 |  |  onLoad((option) => {
 | 
											
												
													
														|  |  	selected.value = option.selIndex
 |  |  	selected.value = option.selIndex
 | 
											
												
													
														|  | 
 |  | +	if (selected.value == 0) {
 | 
											
												
													
														|  | 
 |  | +		orderFormData.value.orderStatus = null
 | 
											
												
													
														|  | 
 |  | +	} else if (selected.value == 1) {
 | 
											
												
													
														|  | 
 |  | +		orderFormData.value.orderStatus = 0
 | 
											
												
													
														|  | 
 |  | +	} else if (selected.value == 2) {
 | 
											
												
													
														|  | 
 |  | +		orderFormData.value.orderStatus = 1
 | 
											
												
													
														|  | 
 |  | +	} else if (selected.value == 3) {
 | 
											
												
													
														|  | 
 |  | +		orderFormData.value.orderStatus = 2
 | 
											
												
													
														|  | 
 |  | +	} else if (selected.value == 4) {
 | 
											
												
													
														|  | 
 |  | +		orderFormData.value.orderStatus = null
 | 
											
												
													
														|  | 
 |  | +		orderFormData.value.orAfterSale = 1
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  |  })
 |  |  })
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +onReachBottom(() => {
 | 
											
												
													
														|  | 
 |  | +	orderFormData.value.pageNum++;
 | 
											
												
													
														|  | 
 |  | +	getOrderList()
 | 
											
												
													
														|  | 
 |  | +})
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  onMounted(() => {
 |  |  onMounted(() => {
 | 
											
												
													
														|  |  	getOrderList()
 |  |  	getOrderList()
 | 
											
												
													
														|  |  })
 |  |  })
 | 
											
												
													
														|  |  const selectedItem = (i) => {
 |  |  const selectedItem = (i) => {
 | 
											
												
													
														|  |  	selected.value = i
 |  |  	selected.value = i
 | 
											
												
													
														|  | -	if (i == 0) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +	if (selected.value == 0) {
 | 
											
												
													
														|  |  		orderFormData.value.orderStatus = null
 |  |  		orderFormData.value.orderStatus = null
 | 
											
												
													
														|  | -	} else if (i == 1) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +	} else if (selected.value == 1) {
 | 
											
												
													
														|  |  		orderFormData.value.orderStatus = 0
 |  |  		orderFormData.value.orderStatus = 0
 | 
											
												
													
														|  | -	} else if (i == 2) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +	} else if (selected.value == 2) {
 | 
											
												
													
														|  |  		orderFormData.value.orderStatus = 1
 |  |  		orderFormData.value.orderStatus = 1
 | 
											
												
													
														|  | -	} else if (i == 3) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +	} else if (selected.value == 3) {
 | 
											
												
													
														|  |  		orderFormData.value.orderStatus = 2
 |  |  		orderFormData.value.orderStatus = 2
 | 
											
												
													
														|  | -	}else if (i == 4) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +	} else if (selected.value == 4) {
 | 
											
												
													
														|  |  		orderFormData.value.orderStatus = null
 |  |  		orderFormData.value.orderStatus = null
 | 
											
												
													
														|  | -		orderFormData.value.orAfterSale=1
 |  | 
 | 
											
												
													
														|  | 
 |  | +		orderFormData.value.orAfterSale = 1
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  	getOrderList()
 |  |  	getOrderList()
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
										
											
												
													
														|  | @@ -114,45 +138,88 @@ const selectedItem = (i) => {
 | 
											
												
													
														|  |  const orderFormData = ref({
 |  |  const orderFormData = ref({
 | 
											
												
													
														|  |  	pageNum: 1,
 |  |  	pageNum: 1,
 | 
											
												
													
														|  |  	pageSize: 10,
 |  |  	pageSize: 10,
 | 
											
												
													
														|  | -	orderStatus:null,
 |  | 
 | 
											
												
													
														|  | 
 |  | +	orderStatus: null,
 | 
											
												
													
														|  |  	orAfterSale: 0
 |  |  	orAfterSale: 0
 | 
											
												
													
														|  |  })
 |  |  })
 | 
											
												
													
														|  |  const orderList = ref([])
 |  |  const orderList = ref([])
 | 
											
												
													
														|  | -const downTime = ref(null)
 |  | 
 | 
											
												
													
														|  |  // 订单状态 0-待付款 1-待使用 2-已使用 3-已到期 4-已取消 5-待退款 6已退款
 |  |  // 订单状态 0-待付款 1-待使用 2-已使用 3-已到期 4-已取消 5-待退款 6已退款
 | 
											
												
													
														|  |  const getOrderList = () => {
 |  |  const getOrderList = () => {
 | 
											
												
													
														|  |  	http.post('/order/pageOrders', orderFormData.value, { loading: true }).then((res) => {
 |  |  	http.post('/order/pageOrders', orderFormData.value, { loading: true }).then((res) => {
 | 
											
												
													
														|  | -		orderList.value = res.result.records
 |  | 
 | 
											
												
													
														|  | 
 |  | +		if (orderFormData.value.pageNum == 1) {
 | 
											
												
													
														|  | 
 |  | +			orderList.value = res.result.records
 | 
											
												
													
														|  | 
 |  | +		} else {
 | 
											
												
													
														|  | 
 |  | +			orderList.value = [...orderList.value, ...res.result.records]
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  |  		orderList.value.forEach((item) => {
 |  |  		orderList.value.forEach((item) => {
 | 
											
												
													
														|  | 
 |  | +			const [datePart, timePart] = item.createTime.split(' ');
 | 
											
												
													
														|  | 
 |  | +			const [year, month, day] = datePart.split('-').map(Number);
 | 
											
												
													
														|  | 
 |  | +			const [hours, minutes, seconds] = timePart.split(':').map(Number);
 | 
											
												
													
														|  | 
 |  | +			item.createTime = new Date(year, month - 1, day, hours, minutes, seconds);
 | 
											
												
													
														|  |  			if (item.orderStatus == 0) {
 |  |  			if (item.orderStatus == 0) {
 | 
											
												
													
														|  | -				const createTime = new Date(item.orderProInfoList[0].createTime);
 |  | 
 | 
											
												
													
														|  | -				const endTime = new Date(createTime.getTime() + 15 * 60 * 1000);
 |  | 
 | 
											
												
													
														|  | -				const remainingTime = endTime - new Date();
 |  | 
 | 
											
												
													
														|  | -				if (remainingTime > 0) {
 |  | 
 | 
											
												
													
														|  | -					const minutes = Math.floor(remainingTime / (1000 * 60));
 |  | 
 | 
											
												
													
														|  | -					const seconds = Math.floor((remainingTime % (1000 * 60)) / 1000);
 |  | 
 | 
											
												
													
														|  | -					downTime.value = `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
 |  | 
 | 
											
												
													
														|  | -					const timer = setInterval(() => {
 |  | 
 | 
											
												
													
														|  | -						const now = new Date();
 |  | 
 | 
											
												
													
														|  | -						const newRemainingTime = endTime - now;
 |  | 
 | 
											
												
													
														|  | -						if (newRemainingTime <= 0) {
 |  | 
 | 
											
												
													
														|  | -							clearInterval(timer);
 |  | 
 | 
											
												
													
														|  | -							downTime.value = "00:00";
 |  | 
 | 
											
												
													
														|  | -							return;
 |  | 
 | 
											
												
													
														|  | -						}
 |  | 
 | 
											
												
													
														|  | -						const newMinutes = Math.floor(newRemainingTime / (1000 * 60));
 |  | 
 | 
											
												
													
														|  | -						const newSeconds = Math.floor((newRemainingTime % (1000 * 60)) / 1000);
 |  | 
 | 
											
												
													
														|  | -						downTime.value = `${newMinutes.toString().padStart(2, '0')}:${newSeconds.toString().padStart(2, '0')}`;
 |  | 
 | 
											
												
													
														|  | -					}, 1000);
 |  | 
 | 
											
												
													
														|  | -				} else {
 |  | 
 | 
											
												
													
														|  | -					downTime.value = "00:00";
 |  | 
 | 
											
												
													
														|  | -				}
 |  | 
 | 
											
												
													
														|  | 
 |  | +				item.downTime = "";
 | 
											
												
													
														|  | 
 |  | +				item.timer = null;
 | 
											
												
													
														|  | 
 |  | +				startCountdown(item);
 | 
											
												
													
														|  |  			}
 |  |  			}
 | 
											
												
													
														|  |  		})
 |  |  		})
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  	})
 |  |  	})
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  | 
 |  | +// 倒计时
 | 
											
												
													
														|  | 
 |  | +let callCount = 0;
 | 
											
												
													
														|  | 
 |  | +const startCountdown = (item) => {
 | 
											
												
													
														|  | 
 |  | +	if (item.timer) {
 | 
											
												
													
														|  | 
 |  | +		clearInterval(item.timer);
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	const endTime = new Date(item.epxTime);
 | 
											
												
													
														|  | 
 |  | +	const remainingTime = endTime - new Date();
 | 
											
												
													
														|  | 
 |  | +	if (remainingTime > 0) {
 | 
											
												
													
														|  | 
 |  | +		const minutes = Math.floor(remainingTime / (1000 * 60));
 | 
											
												
													
														|  | 
 |  | +		const seconds = Math.floor((remainingTime % (1000 * 60)) / 1000);
 | 
											
												
													
														|  | 
 |  | +		item.downTime = `${minutes.toString().padStart(2, '0')}分${seconds.toString().padStart(2, '0')}秒`;
 | 
											
												
													
														|  | 
 |  | +		item.timer = setInterval(() => {
 | 
											
												
													
														|  | 
 |  | +			const now = new Date();
 | 
											
												
													
														|  | 
 |  | +			const newRemainingTime = endTime - now;
 | 
											
												
													
														|  | 
 |  | +			if (newRemainingTime <= 0) {
 | 
											
												
													
														|  | 
 |  | +				clearInterval(item.timer);
 | 
											
												
													
														|  | 
 |  | +				item.downTime = "00:00";
 | 
											
												
													
														|  | 
 |  | +				if (callCount < 3) {
 | 
											
												
													
														|  | 
 |  | +					callCount++;
 | 
											
												
													
														|  | 
 |  | +					getOrderList();
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +				return;
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +			const newMinutes = Math.floor(newRemainingTime / (1000 * 60));
 | 
											
												
													
														|  | 
 |  | +			const newSeconds = Math.floor((newRemainingTime % (1000 * 60)) / 1000);
 | 
											
												
													
														|  | 
 |  | +			item.downTime = `${newMinutes.toString().padStart(2, '0')}分${newSeconds.toString().padStart(2, '0')}秒`;
 | 
											
												
													
														|  | 
 |  | +		}, 1000);
 | 
											
												
													
														|  | 
 |  | +	} else {
 | 
											
												
													
														|  | 
 |  | +		item.downTime = "00:00";
 | 
											
												
													
														|  | 
 |  | +		if (callCount < 3) {
 | 
											
												
													
														|  | 
 |  | +			callCount++;
 | 
											
												
													
														|  | 
 |  | +			getOrderList();
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +const cancelOrder = async (e: any) => {
 | 
											
												
													
														|  | 
 |  | +	let res: any = await TipsUtils.tips_alert('确定取消订单吗?', true)
 | 
											
												
													
														|  | 
 |  | +	if (res.confirm) {
 | 
											
												
													
														|  | 
 |  | +		http.put(`/order/cancelOrder?orderId=${e.orderId}`, {}, { loading: true }).then((res: any) => {
 | 
											
												
													
														|  | 
 |  | +			TipsUtils.tips_toast('订单已取消')
 | 
											
												
													
														|  | 
 |  | +			getOrderList()
 | 
											
												
													
														|  | 
 |  | +		})
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +onUnmounted(() => {
 | 
											
												
													
														|  | 
 |  | +	orderList.value.forEach(item => {
 | 
											
												
													
														|  | 
 |  | +		if (item.timer) {
 | 
											
												
													
														|  | 
 |  | +			clearInterval(item.timer);
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	});
 | 
											
												
													
														|  | 
 |  | +});
 | 
											
												
													
														|  |  </script>
 |  |  </script>
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  <style lang="less" scoped>
 |  |  <style lang="less" scoped>
 |