Prechádzať zdrojové kódy

修复登录状态和登录成功页面问题

yuanmingze 3 mesiacov pred
rodič
commit
9db7ab2147
3 zmenil súbory, kde vykonal 25 pridanie a 3 odobranie
  1. 9 1
      src/App.vue
  2. 1 1
      src/router/routes.ts
  3. 15 1
      src/views/login/index.vue

+ 9 - 1
src/App.vue

@@ -1,4 +1,12 @@
 <!-- src/App.vue -->
 <template>
-  <router-view />
+  <RouterView v-slot="{ Component, route }">
+    <!-- 让 KeepAlive 始终存在;只在里面切换需要缓存的组件 -->
+    <KeepAlive>
+      <component v-if="route.meta?.keepAlive" :is="Component" :key="route.name" />
+    </KeepAlive>
+
+    <!-- 不需要缓存的页面:单独渲染一份,不经过 KeepAlive -->
+    <component v-if="!route.meta?.keepAlive" :is="Component" :key="route.fullPath" />
+  </RouterView>
 </template>

+ 1 - 1
src/router/routes.ts

@@ -10,7 +10,7 @@ export const routes: RouteRecordRaw[] = [
     path: '/login',
     name: 'Login',
     component: () => import('@/views/login/index.vue'),
-    meta: { title: '登录', requiresAuth: false },
+    meta: { title: '登录', requiresAuth: false, keepAlive: true },
   },
   {
     path: '/register',

+ 15 - 1
src/views/login/index.vue

@@ -209,13 +209,27 @@ const loginBtn = useDebounceFn(async () => {
     duration: 0,
   })
 
+  // 已提交状态映射
+  const isSubmitStatusMap = ['PENDING']
+  const isSubmitEventStatusMap = [
+    'SUBMITTED',
+    'PENDING_PAYMENT',
+    'PAID',
+    'FINAL_INVOICE_SUBMITTED',
+    'INVOICE_DOWNLOADABLE',
+  ]
+
   try {
     const res: any = await loginEtssmsApi(formData)
     if (res?.access_token) {
       userStore.setAccessToken(res.access_token)
       const statusRes = await getStatusApi({ pushRecordId: formData.pushRecordId })
+      // 修改认证下的状态内容,如果已经提交,跳转到成功页
       if (statusRes.code == 0) {
-        if (statusRes.data.invoiceEventStatus === 'SUBMITTED') {
+        const { invoiceStatus, eventStatus } = statusRes.data
+        const isInvoiceSubmitted = invoiceStatus && isSubmitStatusMap.includes(invoiceStatus)
+        const isEventSubmitted = eventStatus && isSubmitEventStatusMap.includes(eventStatus)
+        if (isInvoiceSubmitted && isEventSubmitted) {
           return router.replace({
             path: '/login-success',
           })