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