From 6f7d07bad2b1af2664f3190bb3e92b0819c46864 Mon Sep 17 00:00:00 2001 From: 陶杰 <1378534974@qq.com> Date: 星期三, 18 十二月 2024 09:49:06 +0800 Subject: [PATCH] 1.只有待付款的订单启用倒计时,避免频繁请求接口 --- pages/order/order.vue | 125 +++++++++++++++++++++++++++-------------- 1 files changed, 81 insertions(+), 44 deletions(-) diff --git a/pages/order/order.vue b/pages/order/order.vue index 3a628f1..f0a667a 100644 --- a/pages/order/order.vue +++ b/pages/order/order.vue @@ -46,53 +46,18 @@ this.query.status = options.status || '' this.listApi = `/api/customer/order/list` await this.getList() + + console.log('order-list-query',this.query.status) + if(this.query.status=='PENDING'){ + this.getPendingTimer() + } - this.timer = setInterval(async () => { - - let res = await this.$http.request('get', `/api/order/time/now`, { - params: {} - }) - let serverTime=res.data; - - //倒计时 - var nowdate = serverTime - 1000 * 60 * 15 - // 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}` - item.bctime = `${parseInt(alltime / 60) < 10 ? '0' : ''}${parseInt(alltime / 60)}:${tt < 10 ? '0' : ''}${tt}` - change = true - } - } - } - if (change) - this.$forceUpdate() - }, 1000) + onShow() { + // console.log("onshow") }, onReachBottom() { this.getMore() @@ -104,6 +69,69 @@ }, methods: { + changeStatus(item) { + this.query.status = item.value || ''; + this.refreshList(); + if(item.value=='PENDING'){ + this.getPendingTimer() + }else{ + if(this.timer){ + clearTimeout(this.timer) + this.timer=null + } + } + + }, + + getPendingTimer(){ + + this.timer = setInterval(async () => { + + let res = await this.$http.request('get', `/api/order/time/now`, { + params: {} + }) + let serverTime=res.data; + + //倒计时 + var nowdate = serverTime - 1000 * 60 * 15 + // 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}` + item.bctime = `${parseInt(alltime / 60) < 10 ? '0' : ''}${parseInt(alltime / 60)}:${tt < 10 ? '0' : ''}${tt}` + change = true + + } + } + } + if (change) + this.$forceUpdate() + }, 1000) + }, openbrand(item) { console.log(item) @@ -447,11 +475,20 @@ </view> </view> <view class="status-list m-t-12 flex flex-wrap-normal"> - <view v-for="each of status" :key="each.value" @click.stop="(e)=>{ + <!-- <view v-for="each of status" :key="each.value" @click.stop="(e)=>{ query.status = each.value || ''; refreshList(); + if(query.status!='PENDING'){ + timer && clearTimeout(this.timer) + timer=null + }else{ + getPendingTimer() + } }" class="status-each" :class="[query.status===each.value?'cur':'']"> {{ each.name }} + </view> --> + <view v-for="each of status" :key="each.value" @click.stop="changeStatus(each)" class="status-each" :class="[query.status===each.value?'cur':'']"> + {{ each.name }} </view> </view> <no-data v-if="!list||list.length===0" style="width: 100%;" class="m-t-12"></no-data> -- Gitblit v1.9.3