From e1b028d486713eaf55aaf35fbf334aa568059c0d Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期二, 14 四月 2026 15:46:54 +0800
Subject: [PATCH] 项目复制

---
 src/views/h5/login/redirect.vue |  245 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 245 insertions(+), 0 deletions(-)

diff --git a/src/views/h5/login/redirect.vue b/src/views/h5/login/redirect.vue
new file mode 100644
index 0000000..31ac4a7
--- /dev/null
+++ b/src/views/h5/login/redirect.vue
@@ -0,0 +1,245 @@
+<template>
+  <div class="wx-login-container">
+    <div class="loading-wrapper">
+      <div class="wechat-icon">
+        <svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
+          <path d="M717.5 595.8c-15.7 8.3-32.6 13.9-50.4 15.7-12.6 1.3-25.3-0.4-37.6-2.9-19-3.8-36.9-10.8-53.5-20.7-3.6-2.2-7.2-4.4-10.7-6.8-19.5-13.6-36.5-29.9-50.8-49-6.5-8.6-12.1-17.9-16.9-27.5-4.8-9.7-8.3-19.8-10.6-30.3-2.2-10.1-3.2-20.3-3-30.6 0.1-5.3 0.4-10.5 1.1-15.8 1.7-12.6 5.1-24.7 10.1-36.3 6.1-14.1 14.2-27 24.4-38.5 13.9-15.6 30.4-28.1 49.3-37.2 12.9-6.3 26.5-10.6 40.6-12.8 14.1-2.2 28.4-2.2 42.6 0.1 14.2 2.3 27.8 6.7 40.7 13.1 18.9 9.2 35.4 21.7 49.3 37.3 10.2 11.5 18.3 24.5 24.4 38.5 5 11.6 8.4 23.8 10.1 36.3 0.7 5.3 1 10.5 1.1 15.8 0.2 10.3-0.8 20.5-3 30.6-2.3 10.5-5.8 20.6-10.6 30.3-4.8 9.6-10.4 18.9-16.9 27.5-14.3 19.1-31.3 35.4-50.8 49-3.5 2.4-7.1 4.6-10.7 6.8-16.6 9.9-34.5 16.9-53.5 20.7-12.3 2.5-25 4.2-37.6 2.9z" fill="#07C160"/>
+          <path d="M395.6 380.4c0 54.7 26.5 103.5 67.6 134.4-3.6 9.8-7.9 19.2-12.8 28.1-4.9 8.9-10.4 17.4-16.6 25.4-6.2 8-13.1 15.4-20.6 22.2-7.5 6.8-15.7 12.8-24.4 17.9-8.7 5.1-18 9.3-27.6 12.5-9.6 3.2-19.6 5.3-29.8 6.3-10.2 1-20.5 0.9-30.6-0.4-10.1-1.3-20-3.8-29.4-7.4-9.4-3.6-18.3-8.3-26.6-14-8.3-5.7-15.9-12.2-22.7-19.6-6.8-7.4-12.7-15.5-17.6-24.3-4.9-8.8-8.8-18.2-11.5-28-2.7-9.8-4.2-19.9-4.5-30.2-0.3-10.3 0.8-20.5 3.2-30.5 2.4-10 6.1-19.6 10.9-28.7 4.8-9.1 10.7-17.5 17.5-25.2 6.8-7.7 14.5-14.5 22.9-20.4 8.4-5.9 17.5-10.8 27.1-14.6 9.6-3.8 19.7-6.4 30-7.9 10.3-1.5 20.8-1.8 31.2-0.7 10.4 1.1 20.6 3.6 30.3 7.4 9.7 3.8 18.8 8.8 27.1 15 8.3 6.2 15.8 13.4 22.4 21.5 6.6 8.1 12.2 16.9 16.6 26.3 4.4 9.4 7.6 19.3 9.5 29.6z" fill="#07C160"/>
+        </svg>
+      </div>
+      12222222223333
+      <div class="sub-text" v-if="!errorFlag">
+        寰俊鎺堟潈涓�
+        <span class="dots">
+          <span class="dot"></span>
+          <span class="dot"></span>
+          <span class="dot"></span>
+        </span>
+      </div>
+      <div v-else class="sub-text">鎺堟潈澶辫触</div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { tokenUtils } from '@/utils/axios.js';
+import { useLoginStore } from '@/stores/login.js'
+import { storeToRefs } from 'pinia';
+export default {
+  setup() {
+    const { lastRouteInfo } = storeToRefs(useLoginStore())
+    return { lastRouteInfo }
+  },
+  data() {
+    return {
+      redirectCount: 0,
+      errorMessage: ''
+    }
+  },
+  watch() {
+
+  },
+  computed: {
+    code() {
+      return this.$route.query.code
+    },
+    state() {
+      return this.$route.query.state
+    }
+  },
+  created() {
+    if (this.code && this.state) {
+      this.authSuccess()
+    } else {
+      this.redirectUrl()
+      this.redirectCount = localStorage.getItem('weChatRedirectCount') || 0
+      this.redirectCount = Number(this.redirectCount) + 1
+      localStorage.setItem('weChatRedirectCount', redirectCount)
+    }
+  },
+  methods: {
+    redirectUrl() {
+      if (this.redirectCount > 1) {
+        this.errorFlag = true
+        return
+      }
+      const params = {
+        targetId: '',
+        redirectUrl: encodeURIComponent(window.location.href),
+      }
+      this.$axios.get('/system/auth/staff/checkin/wx-auth-redirect', { params }).then(res => {
+        if (res.data.code == 0) {
+          window.location.replace(res.data.data)
+        } else {
+          this.errorFlag = true
+          this.$message.error(res.data.msg)
+        }
+      })
+    },
+    authSuccess() {
+      const params = {
+        targetId: '',
+        code: this.code,
+        state: this.state
+      }
+      this.$axios.get('/system/auth/staff/checkin/auth-success/null', { params }).then(res => {
+        if (res.data.code == 0) {
+          const resData = res.data.data || {}
+          if (resData.userId) {
+            tokenUtils.setTokens(resData.accessToken, resData.refreshToken)
+            const path = localStorage.getItem('verify_url')
+            if (path) {
+              this.$router.replace(path)
+            } else {
+              this.$router.replace('/h5/noVerAccess')
+            }
+          } else {
+            this.$router.replace({ 
+              path: '/h5/bind', 
+              query: { 
+                state: resData.state, 
+                openid: resData.openid,
+                code: resData.code
+              } 
+            })
+          }
+        } else {
+          this.$message.error(res.data.msg)
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.wx-login-container {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  min-height: 100vh;
+  background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
+}
+
+.loading-wrapper {
+  text-align: center;
+  padding: 60px 40px;
+}
+
+.wechat-icon {
+  width: 100px;
+  height: 100px;
+  margin: 0 auto 30px;
+  animation: iconPulse 2s ease-in-out infinite;
+}
+
+.wechat-icon svg {
+  width: 100%;
+  height: 100%;
+  filter: drop-shadow(0 8px 16px rgba(7, 193, 96, 0.3));
+}
+
+@keyframes iconPulse {
+  0%, 100% {
+    transform: scale(1);
+  }
+  50% {
+    transform: scale(1.1);
+  }
+}
+
+.loading-text {
+  font-size: 28px;
+  font-weight: 600;
+  color: #333;
+  margin-bottom: 16px;
+  display: inline-block;
+}
+
+.text-item {
+  display: inline-block;
+  opacity: 0;
+  animation: textFadeIn 0.5s ease-out forwards;
+}
+
+.text-item:nth-child(1) {
+  animation-delay: 0.2s;
+}
+
+.text-item:nth-child(2) {
+  animation-delay: 0.4s;
+}
+
+.text-item:nth-child(3) {
+  animation-delay: 0.6s;
+}
+
+.text-item:nth-child(4) {
+  animation-delay: 0.8s;
+}
+
+@keyframes textFadeIn {
+  from {
+    opacity: 0;
+    transform: translateY(20px);
+  }
+  to {
+    opacity: 1;
+    transform: translateY(0);
+  }
+}
+
+.dots {
+  display: inline-block;
+  margin-left: 8px;
+  vertical-align: middle;
+}
+
+.dot {
+  display: inline-block;
+  width: 6px;
+  height: 6px;
+  background: #07C160;
+  border-radius: 50%;
+  margin: 0 3px;
+  animation: dotBounce 1.4s ease-in-out infinite both;
+}
+
+.dot:nth-child(1) {
+  animation-delay: -0.32s;
+}
+
+.dot:nth-child(2) {
+  animation-delay: -0.16s;
+}
+
+.dot:nth-child(3) {
+  animation-delay: 0;
+}
+
+@keyframes dotBounce {
+  0%, 80%, 100% {
+    transform: scale(0);
+    opacity: 0.5;
+  }
+  40% {
+    transform: scale(1);
+    opacity: 1;
+  }
+}
+
+.sub-text {
+  font-size: 18px;
+  color: #999;
+  animation: fadeInOut 2s ease-in-out infinite;
+}
+
+@keyframes fadeInOut {
+  0%, 100% {
+    opacity: 0.5;
+  }
+  50% {
+    opacity: 1;
+  }
+}
+</style>

--
Gitblit v1.8.0