armg 6 hari lalu
induk
melakukan
491dff271c
3 mengubah file dengan 50 tambahan dan 34 penghapusan
  1. 35 14
      src/router/index.ts
  2. 13 19
      src/utils/index.ts
  3. 2 1
      src/views/AIDesign/index.vue

+ 35 - 14
src/router/index.ts

@@ -104,20 +104,29 @@ router.beforeEach((to, from, next) => {
   try {
     //先判断企微环境
     checkWxWorkEnvAndUserCache();
-    //验证时间戳和token
-    initGuidInfo();
-    const isLoggedIn = checkLoginStatus();
-    if (isLoggedIn) {
-      next();
-      return;
-    }
     // 获取并处理 loginType,区分登录方式
-    const { loginType, wxid } = to.query;
+    const { loginType, wxid, WecomType } = to.query;
     const isNewLoginMode = loginType && String(loginType) === '2';
-    if (isNewLoginMode) {
+    // 保证本次会话的登录方式不变
+    if(isNewLoginMode){
+      sessionStorage.setItem("isNewLoginMode",String(isNewLoginMode));
+    }
+    if (sessionStorage.getItem("isNewLoginMode") === 'true') {
+      window.localStorage.setItem('loginMode', 'wxidLogin');
+      if (WecomType) {
+        window.localStorage.setItem('agentFrom', getAgentFrom(WecomType));
+        window.localStorage.setItem('agentFromAI', getAgentFrom(WecomType));
+      }
+      //验证时间戳和token
+      initGuidInfo();
+      const isLoggedIn = checkLoginStatus();
+      if (isLoggedIn) {
+        // debugger
+        next();
+        return;
+      }
       if (wxid) {
         // 新登录方式:loginType存在且等于2
-        sessionStorage.setItem('loginMode', 'wxidLogin');
         console.log('-----当前为【新登录方式】,执行强制登录校验');
         handleNewLoginMode(to, next, wxid);
       } else {
@@ -125,8 +134,20 @@ router.beforeEach((to, from, next) => {
         next({ path: "/error" });
       }
     } else {
+      const org_loginMode = window.localStorage.getItem('loginMode');
+      if (org_loginMode != 'codeLogin') {
+        window.localStorage.clear();
+      }
       // 旧登录方式:无loginType / loginType≠2
-      sessionStorage.setItem('loginMode', 'codeLogin');
+      window.localStorage.setItem('loginMode', 'codeLogin');
+      //验证时间戳和token
+      initGuidInfo();
+      const isLoggedIn = checkLoginStatus();
+      if (isLoggedIn) {
+        // debugger
+        next();
+        return;
+      }
       console.log('🔑 当前为【旧登录方式】,执行原有企微登录逻辑');
       handleOldWecomLoginMode(to, next);
     }
@@ -160,10 +181,8 @@ function handleNewLoginMode(to, next, wxId) {
           console.log("res=", res)
           window.localStorage.setItem('AIToken', res.Data.token);
           window.localStorage.setItem('isRefreshProvider', res.Data.isRefreshProvider);
-          const { WecomType } = to.query;
-          window.localStorage.setItem('agentFrom', getAgentFrom(parseInt(WecomType)));
-          window.localStorage.setItem('agentFromAI', getAgentFrom(parseInt(WecomType)));
           console.log(`新登录成功,Token已缓存,即将进入 ${to.path}`);
+          // debugger
           next();
         } else {
           throw new Error('新登录失败,未获取到Token');
@@ -195,6 +214,7 @@ function handleOldWecomLoginMode(to, next) {
   if (finalCode) {
     doWecomLogin(finalCode)
       .then(() => {
+        // debugger
         next();
         console.log(`登录成功,即将进入 ${to.path}`);
       })
@@ -202,6 +222,7 @@ function handleOldWecomLoginMode(to, next) {
         next({ path: "/error" });
       });
   } else {
+    // debugger
     console.log(`访问 ${to.path} 需登录,正在跳转到授权页面`);
     getQyCode();
   }

+ 13 - 19
src/utils/index.ts

@@ -90,28 +90,22 @@ export const getWecomTypeName = (agentFrom: string) => {
   }
 }
 
-export const getAgentFrom = (WecomType: number) => {
-  switch (WecomType) {
-    case 0://经销商
-      return 'ssb';
-    case 1://好邦手
-      return 'hbs';
-    case 2://服务商
-      return 'stoneLikePaint';
-    case 3://金牌店
-      return 'goldShop';
-    case 4://导购
-      return 'dg';
-    case 5://新零售客服
-      return 'xlskf';
-    default:
-      return 'xlskf'; // 默认为经销商
-  }
-}
+export const getAgentFrom = (WecomType: unknown): string => {
+  const typeNum = Number(WecomType);
+  const typeMap = {
+    0: 'ssb',          // 经销商
+    1: 'hbs',          // 好邦手
+    2: 'stoneLikePaint',// 服务商
+    3: 'goldShop',     // 金牌店
+    4: 'dg',           // 导购
+    5: 'xlskf'         // 新零售客服
+  };
+  return typeMap[typeNum as keyof typeof typeMap] || 'xlskf';
+};
 
 
 export const toLBHome = () => {
-  const loginMode = sessionStorage.getItem("loginMode")
+  const loginMode = window.localStorage.getItem("loginMode")
   if (loginMode === 'wxidLogin') {
     let baseUrl: string = "";
     process.env.VUE_APP_BASE_API == "/api/"

+ 2 - 1
src/views/AIDesign/index.vue

@@ -111,7 +111,7 @@ export default class extends Vue {
   // }
   // 入口新判断
   created() {
-    this.loginMode = sessionStorage.getItem("loginMode") || 'codeLogin';
+    this.loginMode = window.localStorage.getItem("loginMode") || 'codeLogin';
     getWxconfig();
     const agentFrom = window.localStorage.getItem('agentFrom');
     // 经销商随身邦,好邦手进去,默认在内墙空间;服务商进去,默认外墙空间
@@ -135,6 +135,7 @@ export default class extends Vue {
   }
   // 点击事件处理
   handleDesignClick(type) {
+    console.log("=====点击事件处理====")
     if (type === 'outside') {
       // 外墙设计页
       this.$router.push("/AIDesign/design");