ソースを参照

Merge pull request #228 from John-Hong/John/release-2.15.0/KIP-11452

fix(KIP-11452): [DE][C端]临时停车,用户A先查询车牌A,用户B对车牌A缴费完成,用户A在三分钟倒计时以后,刷新页面会…
Tron 2 年 前
コミット
bfeeb0b46c
1 ファイル変更79 行追加58 行削除
  1. 79 58
      src/pages/parkingFee/mixins/parkingFeeDetail.js

+ 79 - 58
src/pages/parkingFee/mixins/parkingFeeDetail.js

@@ -309,8 +309,14 @@ export default {
           // 支付成功
           return
         }
-        this.kerryPayment(res.sessionId);
+        if(res?.sessionId) {
+          this.kerryPayment(res.sessionId);
+          return
+        }
+        // 如果接口返回异常,重置当前页面数据
+        this.reCreateParkOrder()
       } catch (err) {
+        // 网络异常返回首页
         if(err ==='ERR_NETWORK') {
           setTimeout(() => {
             this.clearOrderTimeEvent()
@@ -320,6 +326,8 @@ export default {
             });  
           }, 2900)
         } else {
+          // 如果接口返回异常,重置当前页面数据
+          this.reCreateParkOrder()
           this.btnLoading = false
           this.isPay = false
         }
@@ -486,7 +494,10 @@ export default {
         this.$store.dispatch('order/orderInit', {
           gateId: this.$route.query?.gateId,
           vehicleNo: this.$route.query?.vehicleNo,
-          endlessLoop: this.endlessLoop
+          endlessLoop: this.endlessLoop,
+          callback: (res) => {
+            this.orderInitCallBack(res)
+          },
         })
         this.btnLoading = false;
         this.isPay = false
@@ -523,61 +534,7 @@ export default {
           gateId: this.$route.query?.gateId,
           endlessLoop: this.endlessLoop,
           callback: (res) => {
-            setTimeout(() => {
-              this.$store.dispatch('clearUnlicensed');
-            }, 700);
-            // 如果 无牌车扫码出场扫码 无需缴费,直接展示无需缴费页面
-            if(/unlicensedOut/.test(res.code) && res?.unlicensed) {
-              this.clearOrderTimeEvent()
-              this.$router.replace({
-                path: 'parkingFeeMsg?type=pay',
-              });
-              return
-            }
-            // 如果是无需缴费的话,提示用户无需缴费
-            if (res?.orderDetail?.parkingRecord?.totalFee <= 0) {
-              this.$store.dispatch('order/orderInitRule', res.orderDetail);
-                setTimeout(() => {
-                  Dialog.alert({
-                    message: '当前无需缴费',
-                    confirmButtonColor: '#333',
-                  }).then(() => {
-                    this.clearOrderTimeEvent()
-                    this.$router.back()
-                  });
-                }, 1000)
-              return
-            }
-            if ( /CAR_NOT_FOUND|INOUT_FAILED/.test(res.code) ) {
-              setTimeout(() => {
-                this.clearOrderTimeEvent()
-                this.$router.replace({
-                  path: 'parkingFeeMsg',
-                  query: {
-                    type: 'outFail'
-                  }
-                })  
-              }, 300)
-              return;
-            }
-            if (/NOT_FOUND|PARKING_RECORD_NOT_FOUND/.test(res.code)) {
-              // 当前车辆没有查到账单
-              this.clearOrderTimeEvent()
-              this.$router.replace({
-                path: 'parkingFeePayment',
-                query: {
-                  msg: res.langMessage,
-                  vehicleNo: this.$route.query.vehicleNo,
-                },
-              });
-              return
-            }
-            if (/LOCAL_PARK_ERROR|INTERNAL_SERVER_ERROR|VALIDATION_FAILED|PLEASE_SCAN_QRCODE/g.test(res.code)) {
-              setTimeout(() => {
-                this.clearOrderTimeEvent()
-                this.$router.back()
-              }, 3000)
-            }
+            this.orderInitCallBack(res)
           },
           enquiryFarePolling: () => {
             this.orderTimeEvent = setInterval(() => {
@@ -687,7 +644,10 @@ export default {
       this.$store.dispatch('order/orderInit', {
         gateId: this.$route.query?.gateId,
         vehicleNo: this.$route.query?.vehicleNo,
-        endlessLoop: this.endlessLoop
+        endlessLoop: this.endlessLoop,
+        callback: (res) => {
+          this.orderInitCallBack(res)
+        },
       })
       // 重新创建订单
       // this.createParkOrder();
@@ -744,6 +704,67 @@ export default {
         clearInterval(this.orderTimeEvent);
         this.orderTime = null
       }  
+    },
+    orderInitCallBack(res) {
+      try {
+        setTimeout(() => {
+          this.$store.dispatch('clearUnlicensed');
+        }, 700);
+        // 如果 无牌车扫码出场扫码 无需缴费,直接展示无需缴费页面
+        if(/unlicensedOut/.test(res.code) && res?.unlicensed) {
+          this.clearOrderTimeEvent()
+          this.$router.replace({
+            path: 'parkingFeeMsg?type=pay',
+          });
+          return
+        }
+        // 如果是无需缴费的话,提示用户无需缴费
+        if (res?.orderDetail?.parkingRecord?.totalFee <= 0) {
+          this.$store.dispatch('order/orderInitRule', res.orderDetail);
+            setTimeout(() => {
+              Dialog.alert({
+                message: '当前无需缴费',
+                confirmButtonColor: '#333',
+              }).then(() => {
+                this.clearOrderTimeEvent()
+                this.$router.back()
+              });
+            }, 1000)
+          return
+        }
+        if ( /CAR_NOT_FOUND|INOUT_FAILED/.test(res.code) ) {
+          setTimeout(() => {
+            this.clearOrderTimeEvent()
+            this.$router.replace({
+              path: 'parkingFeeMsg',
+              query: {
+                type: 'outFail'
+              }
+            })  
+          }, 300)
+          return;
+        }
+        if (/NOT_FOUND|PARKING_RECORD_NOT_FOUND/.test(res.code)) {
+          // 当前车辆没有查到账单
+          this.clearOrderTimeEvent()
+          this.$router.replace({
+            path: 'parkingFeePayment',
+            query: {
+              msg: res.langMessage,
+              vehicleNo: this.$route.query.vehicleNo,
+            },
+          });
+          return
+        }
+        if (/LOCAL_PARK_ERROR|INTERNAL_SERVER_ERROR|VALIDATION_FAILED|PLEASE_SCAN_QRCODE/g.test(res.code)) {
+          setTimeout(() => {
+            this.clearOrderTimeEvent()
+            this.$router.back()
+          }, 3000)
+        }
+      } catch (err) {
+      console.log('查费接口返回异常', err);
+      }
     }
   },
   destroyed() {