From fa3ac93010bea3805438ee3ab0a182bfbf7423da Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期一, 27 五月 2024 16:19:31 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/sys/login/TokenLoginPage.vue |  209 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 209 insertions(+), 0 deletions(-)

diff --git a/src/views/sys/login/TokenLoginPage.vue b/src/views/sys/login/TokenLoginPage.vue
new file mode 100644
index 0000000..d386fb2
--- /dev/null
+++ b/src/views/sys/login/TokenLoginPage.vue
@@ -0,0 +1,209 @@
+<template>
+    <div class="app-loading">
+        <div class="app-loading-wrap">
+            <img src="/resource/img/logo.png" class="app-loading-logo" alt="Logo">
+            <div class="app-loading-dots">
+                <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
+            </div>
+            <div class="app-loading-title">鏅鸿兘涓嵂骞茬嚗鏈烘暟瀛楀寲杞﹂棿</div>
+        </div>
+    </div>
+</template>
+
+
+<script lang="ts">
+  /**
+   * 鍦板潃涓惡甯oken锛岃烦杞嚦姝ら〉闈㈣繘琛岀櫥褰曟搷浣�
+   */
+  import { useRoute, useRouter } from 'vue-router';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { useUserStore } from '/@/store/modules/user';
+  import { useI18n } from '/@/hooks/web/useI18n';
+
+  export default {
+    name: "TokenLogin",
+    setup(){
+      const route = useRoute();
+      let router = useRouter();
+      const {createMessage, notification} = useMessage()
+      const {t} = useI18n();
+      const routeQuery:any = route.query;
+      if(!routeQuery){
+        createMessage.warning('鍙傛暟鏃犳晥')
+      }
+
+      const token = routeQuery['loginToken'];
+      if(!token){
+        createMessage.warning('token鏃犳晥')
+      }
+      const userStore = useUserStore();
+      userStore.ThirdLogin({ token, thirdType:'email' }).then(res => {
+        console.log("res====>doThirdLogin",res)
+        if(res && res.userInfo){
+          requestSuccess(res)
+        }else{
+          requestFailed(res)
+        }
+      });
+
+      function requestFailed (err) {
+        notification.error({
+          message: '鐧诲綍澶辫触',
+          description: ((err.response || {}).data || {}).message || err.message || "璇锋眰鍑虹幇閿欒锛岃绋嶅悗鍐嶈瘯",
+          duration: 4,
+        });
+      }
+
+      function requestSuccess(res){
+        let info = routeQuery.info;
+        if(info){
+          let query = JSON.parse(info)
+          let taskId = query.taskId;
+          let path = '/task/handle/'+taskId
+          router.replace({ path, query })
+          notification.success({
+            message: t('sys.login.loginSuccessTitle'),
+            description: `${t('sys.login.loginSuccessDesc')}: ${res.userInfo.realname}`,
+            duration: 3,
+          });
+        }else{
+          notification.error({
+            message: '鍙傛暟澶辨晥',
+            description: "椤甸潰璺宠浆鍙傛暟涓㈠け锛岃鏌ョ湅鏃ュ織",
+            duration: 4,
+          });
+        }
+      }
+    }
+  }
+</script>
+
+<style scoped>
+
+    html[data-theme='dark'] .app-loading {
+        background-color: #2c344a;
+    }
+
+    html[data-theme='dark'] .app-loading .app-loading-title {
+        color: rgba(255, 255, 255, 0.85);
+    }
+
+    .app-loading {
+        display: flex;
+        width: 100%;
+        height: 100%;
+        justify-content: center;
+        align-items: center;
+        flex-direction: column;
+        background-color: #f4f7f9;
+    }
+
+    .app-loading .app-loading-wrap {
+        position: absolute;
+        top: 50%;
+        left: 50%;
+        display: flex;
+        -webkit-transform: translate3d(-50%, -50%, 0);
+        transform: translate3d(-50%, -50%, 0);
+        justify-content: center;
+        align-items: center;
+        flex-direction: column;
+    }
+
+    .app-loading .dots {
+        display: flex;
+        padding: 98px;
+        justify-content: center;
+        align-items: center;
+    }
+
+    .app-loading .app-loading-title {
+        display: flex;
+        margin-top: 30px;
+        font-size: 30px;
+        color: rgba(0, 0, 0, 0.85);
+        justify-content: center;
+        align-items: center;
+    }
+
+    .app-loading .app-loading-logo {
+        display: block;
+        width: 90px;
+        margin: 0 auto;
+        margin-bottom: 20px;
+    }
+
+    .dot {
+        position: relative;
+        display: inline-block;
+        width: 48px;
+        height: 48px;
+        margin-top: 30px;
+        font-size: 32px;
+        transform: rotate(45deg);
+        box-sizing: border-box;
+        animation: antRotate 1.2s infinite linear;
+    }
+
+    .dot i {
+        position: absolute;
+        display: block;
+        width: 20px;
+        height: 20px;
+        background-color: #0065cc;
+        border-radius: 100%;
+        opacity: 0.3;
+        transform: scale(0.75);
+        animation: antSpinMove 1s infinite linear alternate;
+        transform-origin: 50% 50%;
+    }
+
+    .dot i:nth-child(1) {
+        top: 0;
+        left: 0;
+    }
+
+    .dot i:nth-child(2) {
+        top: 0;
+        right: 0;
+        -webkit-animation-delay: 0.4s;
+        animation-delay: 0.4s;
+    }
+
+    .dot i:nth-child(3) {
+        right: 0;
+        bottom: 0;
+        -webkit-animation-delay: 0.8s;
+        animation-delay: 0.8s;
+    }
+
+    .dot i:nth-child(4) {
+        bottom: 0;
+        left: 0;
+        -webkit-animation-delay: 1.2s;
+        animation-delay: 1.2s;
+    }
+    @keyframes antRotate {
+        to {
+            -webkit-transform: rotate(405deg);
+            transform: rotate(405deg);
+        }
+    }
+    @-webkit-keyframes antRotate {
+        to {
+            -webkit-transform: rotate(405deg);
+            transform: rotate(405deg);
+        }
+    }
+    @keyframes antSpinMove {
+        to {
+            opacity: 1;
+        }
+    }
+    @-webkit-keyframes antSpinMove {
+        to {
+            opacity: 1;
+        }
+    }
+
+</style>

--
Gitblit v1.9.3