From a4ea10b61135956b23a0a44ddd4620c6ee9b9c02 Mon Sep 17 00:00:00 2001
From: xuxueyang <xuxy@fengyuntec.com>
Date: 星期二, 13 八月 2024 16:10:24 +0800
Subject: [PATCH] update 倒计时
---
sub_pages/customer/shopping/confirm.vue | 1
pages/order/order.vue | 50 +++++++++++++++++++++++--
pages/order/order-detail.vue | 51 ++++++++++++++++++++++++-
3 files changed, 95 insertions(+), 7 deletions(-)
diff --git a/pages/order/order-detail.vue b/pages/order/order-detail.vue
index cec0d14..8167276 100644
--- a/pages/order/order-detail.vue
+++ b/pages/order/order-detail.vue
@@ -6,6 +6,7 @@
dto: {},
showSales: false,
submitForm: {},
+ timer: undefined,
type: '',
// #ifdef PUB_CUSTOMER
type: 'customer',
@@ -14,6 +15,9 @@
type: 'partner',
// #endif
};
+ },
+ onUnload() {
+ this.timer && clearTimeout(this.timer)
},
async onLoad(options) {
console.log('options', options)
@@ -31,6 +35,47 @@
orderItems: []
}
this.showSales = options.showsales && true || false
+ if (this.dto.statusBackend === 'PENDING') {
+ this.timer = setInterval(() => {
+ //倒计时
+ var nowdate = new Date().getTime() - 1000 * 60 * 5
+ var change = false
+
+ //计算倒计时
+ var diff = new Date(this.dto.createTime).getTime() - nowdate
+ console.log('diff', diff)
+ if (diff <= 2000 && true) {
+ //超过了5分钟
+ this.dto.statusBackend = 'CANCEL'
+ this.dto.statusBackendStr = '已取消'
+ this.dto.status = 'CANCEL'
+ this.dto.statusStr = '已取消'
+
+ this.dto.bctime = ''
+ // console.log('change cancel', this.dto)
+ change = true
+ clearInterval(this.timer)
+ this.timer = undefined
+ } else {
+ //相差
+ var alltime = parseInt(diff / 1000)
+ var tt = 0
+ if (alltime > 60) {
+ tt = alltime - parseInt(alltime / 60) * 60
+ } else {
+ tt = alltime
+ }
+ this.dto.bctime = `0${parseInt(alltime / 60)}:${tt<10?'0':''}${tt}`
+ change = true
+
+ }
+
+
+ if (change)
+ this.$forceUpdate()
+ }, 1000)
+ }
+
}
},
@@ -527,13 +572,13 @@
</view>
<view class="button button-1" @click="buttonClick('confirm')" v-if="dto.status ==='RECEIVE'"> 确认收货
</view>
- <view class="button button-1" @click="buttonClick('payAgain')" v-if=" dto.status === 'PENDING'"> 重新支付
+ <view class="button button-1" @click="buttonClick('payAgain')" v-if=" dto.status === 'PENDING'"> 重新支付<span
+ v-if="dto.bctime">({{dto.bctime}})</span>
</view>
<view class="button button-1" @click="buttonClick('evaluate')" v-if=" dto.status === 'EVALUATE'"> 评价
</view>
<!-- ||dto.status=='COMPLETED' -->
- <view class="button button-1" @click="buttonClick('sales')"
- v-if=" dto.status === 'RECEIVE'"> 申请售后
+ <view class="button button-1" @click="buttonClick('sales')" v-if=" dto.status === 'RECEIVE'"> 申请售后
</view>
</view>
<view v-if="showSales">
diff --git a/pages/order/order.vue b/pages/order/order.vue
index 388b2d4..ee974fb 100644
--- a/pages/order/order.vue
+++ b/pages/order/order.vue
@@ -1,11 +1,13 @@
<script>
export default {
+
data() {
return {
type: 'customer',
query: {
status: '',
},
+ timer: undefined,
status: [{
name: '全部',
value: ''
@@ -37,10 +39,50 @@
]
};
},
- onLoad(options) {
+ onUnload() {
+ this.timer && clearTimeout(this.timer)
+ },
+ async onLoad(options) {
this.query.status = options.status || ''
this.listApi = `/api/customer/order/list`
- this.getList()
+ await this.getList()
+ this.timer = setInterval(() => {
+ //倒计时
+ var nowdate = new Date().getTime() - 1000 * 60 * 5
+ var change = false
+ for (var item of this.list) {
+ if (item.statusBackend === 'PENDING') {
+ //计算倒计时
+ var diff = new Date(item.createTime).getTime() - nowdate
+ // console.log('diff', diff, item)
+ if (diff <= 2000 && true) {
+ //超过了5分钟
+ item.statusBackend = 'CANCEL'
+ item.statusBackend = '已取消'
+ item.status = 'CANCEL'
+ item.statusStr = '已取消'
+
+ item.bctime = ''
+ change = true
+
+ } else {
+ //相差
+ var alltime = parseInt(diff / 1000)
+ var tt = 0
+ if (alltime > 60) {
+ tt = alltime - parseInt(alltime / 60) * 60
+ } else {
+ tt = alltime
+ }
+ item.bctime = `0${parseInt(alltime / 60)}:${tt<10?'0':''}${tt}`
+ change = true
+
+ }
+ }
+ }
+ if (change)
+ this.$forceUpdate()
+ }, 1000)
},
onReachBottom() {
this.getMore()
@@ -277,7 +319,7 @@
<view class="value">{{ dto.deliveryName }}</view>
</view>
</view>
-
+
<view class="desc flex" v-if="dto.statusBackend!=='PENDING'&&dto.statusBackend!=='CANCEL'">
<view class="label">
支付时间:
@@ -340,7 +382,7 @@
<view class="button button-0 m-l-a m-r-15" v-if="dto.statusBackend==='PENDING'"
@click="buttonClick(dto,'cancelOrder')">取消订单</view>
<view class="button button-1 m-l-15 m-r-15" v-if="dto.statusBackend==='PENDING'"
- @click="buttonClick(dto,'payAgain')">重新支付</view>
+ @click="buttonClick(dto,'payAgain')">重新支付<span v-if="dto.bctime">({{dto.bctime}})</span></view>
<view class="button button-0 m-l-a m-r-15" @click="buttonClick(dto,'refund')"
v-if="dto.couldRefund">
diff --git a/sub_pages/customer/shopping/confirm.vue b/sub_pages/customer/shopping/confirm.vue
index 01c4631..f6f3a7b 100644
--- a/sub_pages/customer/shopping/confirm.vue
+++ b/sub_pages/customer/shopping/confirm.vue
@@ -49,6 +49,7 @@
// private BigDecimal packing;
if (this.currentInfo.customerDTO && this.currentInfo.customerDTO.partnerId) {
+ //todo 考虑一下,由后台实时获取,如果获取的合伙人id不一样,那么就刷新当前用户信息。
this.$http.request('get', '/api/partner/page/view', {
params: {
id: this.currentInfo.customerDTO.partnerId
--
Gitblit v1.9.3