|
@@ -10,7 +10,7 @@
|
|
|
<view class="o-order-name">
|
|
|
<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" v-if="item.orderStatus == 2">已使用</view>
|
|
|
<view class="item-order-status" v-if="item.orderStatus == 3">已到期</view>
|
|
@@ -49,7 +49,11 @@
|
|
|
<image :src="item.orderProInfoList[0].productImage" mode=""></image>
|
|
|
</view>
|
|
|
<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>
|
|
@@ -61,17 +65,19 @@
|
|
|
<view class="line"></view>
|
|
|
<!-- 待付款 -->
|
|
|
<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="pay-btn" v-if="selected == 4">凭证</view>
|
|
|
</view>
|
|
|
<!-- 待使用 -->
|
|
|
<view class="o-order-tips" v-if="item.orderStatus == 1">
|
|
|
- 限04.23 06:00-08:00使用,过期作废
|
|
|
+ 限{{ item.orderProInfoList[0].frameTimeStr }}使用,过期作废
|
|
|
</view>
|
|
|
</view>
|
|
|
<zs-empty v-if="orderList.length == 0"></zs-empty>
|
|
@@ -79,33 +85,51 @@
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
-import { ref, onMounted } from 'vue'
|
|
|
+import { ref, onMounted, onUnmounted } from 'vue'
|
|
|
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 { RouterUtils } from '@/utils/util'
|
|
|
+import { RouterUtils, TipsUtils } from '@/utils/util'
|
|
|
const selected = ref(0)
|
|
|
const orderTypeList = ref(['全部', '待付款', '待使用', '已使用', '退款/售后'])
|
|
|
|
|
|
onLoad((option) => {
|
|
|
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(() => {
|
|
|
getOrderList()
|
|
|
})
|
|
|
const selectedItem = (i) => {
|
|
|
selected.value = i
|
|
|
- if (i == 0) {
|
|
|
+ if (selected.value == 0) {
|
|
|
orderFormData.value.orderStatus = null
|
|
|
- } else if (i == 1) {
|
|
|
+ } else if (selected.value == 1) {
|
|
|
orderFormData.value.orderStatus = 0
|
|
|
- } else if (i == 2) {
|
|
|
+ } else if (selected.value == 2) {
|
|
|
orderFormData.value.orderStatus = 1
|
|
|
- } else if (i == 3) {
|
|
|
+ } else if (selected.value == 3) {
|
|
|
orderFormData.value.orderStatus = 2
|
|
|
- }else if (i == 4) {
|
|
|
+ } else if (selected.value == 4) {
|
|
|
orderFormData.value.orderStatus = null
|
|
|
- orderFormData.value.orAfterSale=1
|
|
|
+ orderFormData.value.orAfterSale = 1
|
|
|
}
|
|
|
getOrderList()
|
|
|
}
|
|
@@ -114,45 +138,88 @@ const selectedItem = (i) => {
|
|
|
const orderFormData = ref({
|
|
|
pageNum: 1,
|
|
|
pageSize: 10,
|
|
|
- orderStatus:null,
|
|
|
+ orderStatus: null,
|
|
|
orAfterSale: 0
|
|
|
})
|
|
|
const orderList = ref([])
|
|
|
-const downTime = ref(null)
|
|
|
// 订单状态 0-待付款 1-待使用 2-已使用 3-已到期 4-已取消 5-待退款 6已退款
|
|
|
const getOrderList = () => {
|
|
|
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) => {
|
|
|
+ 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) {
|
|
|
- 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>
|
|
|
|
|
|
<style lang="less" scoped>
|