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