lsc vor 2 Wochen
Ursprung
Commit
dfbee7bb5e
1 geänderte Dateien mit 44 neuen und 15 gelöschten Zeilen
  1. 44 15
      src/App.vue

+ 44 - 15
src/App.vue

@@ -14,6 +14,7 @@ const Current = userCurrent()
 const name = ref('')
 const isShow = ref(true)
 const setTimeState = ref(null)
+const topUserInfo = ref({})
 
 onMounted(() => {
   // 通过 code 获取登录信息
@@ -153,31 +154,59 @@ const userInfo2 = (data) => {
 }
 
 const setStateUserinfo = (userid) => {
+  selectUser(userid)
   // setTimeState
-  setTimeState.value = setInterval(() => {
-    if (JSON.stringify(top.US.userInfo) != '{}') {
-      // store.user = top.US.userInfo
-      settimeoutUserinfo()
-      clearInterval(setTimeState.value)
-    }
-  }, 1000)
+  // setTimeState.value = setInterval(() => {
+  //   if (JSON.stringify(top.US.userInfo) != '{}') {
+  //     // store.user = top.US.userInfo
+  //     settimeoutUserinfo()
+  //     clearInterval(setTimeState.value)
+  //   }
+  // }, 1000)
 }
 
 const settimeoutUserinfo = () => {
   setTimeout(() => {
     isShow.value = false
     console.log("top.US.userInfo", top.US.userInfo)
-    // store.setUserInfo(top.US.userInfo) 
-    U.A.Request(top.US.Config.pbl + "selectUser?userid=" + d.data[0][0].userid, [], function (res) { //US.userInfo.userid
-        if (res.value == null || res.value[0].length == 0) {
-          top.US.userInfo = res.value[0][0]
-          top.U.UF.Cookie.set("cocoroboLoginType=2");
-          store.setUserInfo(res.value[0][0]) 
-        }
-    })
+    store.setUserInfo(top.US.userInfo) 
   }, 1000)
 }
 
+// 优化selectUser,结合settimeoutUserinfo的逻辑,统一用户信息拉取和存储
+const selectUser = (uid) => {
+    // 优先使用已存在的用户信息
+    var userInfo = topUserInfo.value;
+    var panId = userInfo && userInfo.accountNumber;
+    if (panId) {
+        return;
+    }
+
+    // 拉取用户信息并处理
+    const requestUser = () => {
+        U.A.Request(`${top.US.Config.pbl}selectUser?userid=${uid}`, [], function (res) {
+            if (res && res.value && res.value.length && res.value[0].length && res.value[0][0].userid) {
+                // 拉取成功,存储用户信息
+                isShow.value = false;
+                top.US.userInfo = res.value[0][0];
+                topUserInfo.value = res.value[0][0];
+                top.U.UF.Cookie.set("cocoroboLoginType=2");
+                store.setUserInfo(res.value[0][0]);
+            } else {
+                top.U.alert("获取用户信息失败,正在重试!");
+                requestUser();
+            }
+        }, [], { "type": "GET", "withCredentials": true });
+    };
+
+    try {
+        requestUser();
+    } catch (error) {
+        top.U.alert("登录失败,正在重试!");
+        requestUser();
+    }
+}
+
 const getUrlParam = (urlStr, urlKey) => {
   const url = new URL(urlStr) // 字符串转换成url格式
   const paramsStr = url.search.slice(1) // 获取'?'后面的参数字符串