From b966d2bc17e80f7516e76040439de45fefffbe93 Mon Sep 17 00:00:00 2001
From: xiayt <x1027869635@gmail.com>
Date: Thu, 10 Nov 2022 09:01:48 +0800
Subject: [PATCH] fix:二次回退问题修复

---
 src/views/Home/Home.vue             | 22 +++++++++++-----------
 src/views/Service/ServiceBaseKQ.vue | 14 --------------
 src/views/Service/ServiceKQ.vue     | 69 ++++++++++++++++++++++++++++++++++++++++++++++++---------------------
 3 files changed, 59 insertions(+), 46 deletions(-)

diff --git a/src/views/Home/Home.vue b/src/views/Home/Home.vue
index c53f1f1..eddf6ae 100644
--- a/src/views/Home/Home.vue
+++ b/src/views/Home/Home.vue
@@ -12,7 +12,7 @@
                 {{ schoolNamesChoose.schoolName }}<img src="@/assets/Travel/change.png" />
               </div>
             </div>
-            <p class="phone">{{ phoneDesensitization(userInfo.phone,'*') }}</p>
+            <p class="phone">{{ phoneDesensitization(userInfo.phone, '*') }}</p>
           </div>
         </div>
         <HomeScan v-if="!isWechat"></HomeScan>
@@ -91,7 +91,7 @@ export default {
       showChildList: false,
       showSchool: false,
       schoolNamesChoose: '',
-      isWechat:false
+      isWechat: false,
     }
   },
 
@@ -106,9 +106,9 @@ export default {
       this.schoolNamesChoose = JSON.parse(schoolNamesChoose)
     }
     let isWechat = localStorage.getItem('isWechat')
-      if(isWechat==1){
-        this.isWechat = true
-      }
+    if (isWechat == 1) {
+      this.isWechat = true
+    }
     this.centerNo = localStorage.getItem('centerNo')
     this.getUserInfo()
     this.againRZ()
@@ -183,20 +183,20 @@ export default {
     },
     //五星少年
     handleStars() {
-      this.$router.push({name: 'stars'})
+      this.$router.push({ name: 'stars' })
     },
     // 清除缓存
     handleClearCache() {
       this.$toast.loading({
-        message: '正在清除',
+        message: '清除成功,正在重新登录',
         duration: 1000,
         forbidClick: true,
       })
+      localStorage.removeItem('schoolNamesChoose')
+      localStorage.removeItem('schoolNames')
+      localStorage.removeItem('centerNo')
       setTimeout(() => {
-        this.$toast('清除成功')
-        localStorage.removeItem('schoolNamesChoose')
-        localStorage.removeItem('schoolNames')
-        this.getUserInfo()
+        this.$router.replace({ path: '/' })
       }, 1000)
     },
     // 获取用户信息
diff --git a/src/views/Service/ServiceBaseKQ.vue b/src/views/Service/ServiceBaseKQ.vue
index 180c5e5..e22ca7b 100644
--- a/src/views/Service/ServiceBaseKQ.vue
+++ b/src/views/Service/ServiceBaseKQ.vue
@@ -98,20 +98,6 @@ export default {
       loading: false,
     }
   },
-  watch: {
-    $route: {
-      immediate: true,
-      handler() {
-        // 设置tabbar状态
-        let showTab = this.$route.query.showTab
-        this.tabName = showTab || 'KQ'
-        // document.title = showTab == 'ZZY' ? '周周营' : '红色网上游——柯桥研学'
-        this.$nextTick(() => {
-          this.$refs.tabs.resize()
-        })
-      },
-    },
-  },
   mounted() {
     console.log('base mounted')
     // alert('servicebase show')
diff --git a/src/views/Service/ServiceKQ.vue b/src/views/Service/ServiceKQ.vue
index 3dd959f..d7d8445 100644
--- a/src/views/Service/ServiceKQ.vue
+++ b/src/views/Service/ServiceKQ.vue
@@ -4,7 +4,7 @@
 
 <script>
 import ServiceBasekq from './ServiceBaseKQ.vue'
-const userData = require('@/views/answerRank/data.json');
+const userData = require('@/views/answerRank/data.json')
 export default {
   name: 'ServiceKQ',
   data() {
@@ -16,29 +16,44 @@ export default {
   mounted() {
     console.log('xst mounted')
     this.checkAuth()
+    //二次回退
+    const sUserAgent = window.navigator.userAgent.toLowerCase()
+    const bIsAlipayMini = sUserAgent.indexOf('miniprogram') > -1 && sUserAgent.indexOf('alipay') > -1
+    if (bIsAlipayMini) {
+      console.log('我来自支付宝,popstate')
+      window.addEventListener('popstate', this.listenerPopstate, true)
+    } else {
+      console.log('我来自浙里办,popstate')
+      window.addEventListener('popstate', this.listenerPopstate, true)
+    }
   },
-  activated() {
-    console.log('KQ activated')
-    this.checkAuth()
+  //销毁监听
+  destroyed() {
+    console.log('销毁支付宝监听')
+    window.removeEventListener('popstate', this.listenerPopstate, true)
   },
   methods: {
+    //支付宝二次回退方法,addEventListener和removeEventListener一定要调用方法,不然无效
+    listenerPopstate() {
+      ZWJSBridge.close()
+    },
     checkAuth() {
       let centerNo = localStorage.getItem('centerNo')
       let ticket = this.common.getUrlParam('ticket') //浙里办app访问
       let ticketId = this.common.getUrlParam('ticketId') //浙里办微信小程序访问
       // alert(location.href)
       // alert(ticketId)
-      if (ticket) {
-        this.getCenterByTicket(ticket)
-      } else if (ticketId) {
-        // alert('getCenterByTicketId')
-        this.getCenterByTicketId(ticketId)
-        localStorage.setItem('isWechat',1)
-      } else if (centerNo) {
+      if (centerNo) {
         // alert('有中台编号:' + centerNo)
         this.centerNo = centerNo
         localStorage.setItem('centerNo', centerNo)
         this.getUserInfo()
+      } else if (ticket) {
+        this.getCenterByTicket(ticket)
+      } else if (ticketId) {
+        // alert('getCenterByTicketId')
+        this.getCenterByTicketId(ticketId)
+        localStorage.setItem('isWechat', 1)
       } else {
         const sUserAgent = window.navigator.userAgent.toLowerCase()
         const dtdreamweb = sUserAgent.indexOf('dtdreamweb') > -1
@@ -51,7 +66,7 @@ export default {
           window.location.href = `https://puser.zjzwfw.gov.cn/sso/alipay.do?action=ssoLogin&servicecode=82a7a71edb794fc285895f9e33290ddc`
         } else {
           alert('非浙里办渠道访问,显示测试用户数据')
-          console.log('非浙里办渠道访问,显示测试用户数据',userData)
+          console.log('非浙里办渠道访问,显示测试用户数据', userData)
           this.centerNo = '2022031508525674030748540013076'
           localStorage.setItem('centerNo', '2022031508525674030748540013076')
           let userInfo = JSON.stringify(userData)
@@ -125,14 +140,26 @@ export default {
     },
     reLoad() {
       console.log('reload')
-      ZWJSBridge.confirm({
-        title: '警告',
-        buttonLabels: ['重新载入'],
-        message: '用户身份验证失败,请重新加载',
-      }).then((res) => {
-        const sUserAgent = window.navigator.userAgent.toLowerCase()
-        const dtdreamweb = sUserAgent.indexOf('dtdreamweb') > -1
-        const miniprogram = sUserAgent.indexOf('miniprogram') > -1 && sUserAgent.indexOf('alipay') > -1
+      const sUserAgent = window.navigator.userAgent.toLowerCase()
+      const dtdreamweb = sUserAgent.indexOf('dtdreamweb') > -1
+      const miniprogram = sUserAgent.indexOf('miniprogram') > -1 && sUserAgent.indexOf('alipay') > -1
+      if (localStorage.getItem('reloadCount') == 2) {
+        localStorage.setItem('reloadCount', 1)
+        ZWJSBridge.confirm({
+          title: '警告',
+          buttonLabels: ['重新载入'],
+          message: '用户身份验证失败,请重新加载',
+        }).then((res) => {
+          if (dtdreamweb) {
+            // alert('浙里办')
+            window.location.href = `https://puser.zjzwfw.gov.cn/sso/mobile.do?action=oauth&scope=1&servicecode=82a7a71edb794fc285895f9e33290ddc`
+          } else if (miniprogram) {
+            // alert('支付宝')
+            window.location.href = `https://puser.zjzwfw.gov.cn/sso/alipay.do?action=ssoLogin&servicecode=82a7a71edb794fc285895f9e33290ddc`
+          }
+        })
+      } else {
+        localStorage.setItem('reloadCount', 2)
         if (dtdreamweb) {
           // alert('浙里办')
           window.location.href = `https://puser.zjzwfw.gov.cn/sso/mobile.do?action=oauth&scope=1&servicecode=82a7a71edb794fc285895f9e33290ddc`
@@ -140,7 +167,7 @@ export default {
           // alert('支付宝')
           window.location.href = `https://puser.zjzwfw.gov.cn/sso/alipay.do?action=ssoLogin&servicecode=82a7a71edb794fc285895f9e33290ddc`
         }
-      })
+      }
     },
     // 获取用户信息
     getUserInfo: function() {
--
libgit2 0.21.0