소스 검색

fix: 保存切换的身份

lxf 1 주 전
부모
커밋
79d50f996c
3개의 변경된 파일45개의 추가작업 그리고 5개의 파일을 삭제
  1. 8 0
      src/api/modules/mine.js
  2. 24 4
      src/views/old_mini/dev_login.vue
  3. 13 1
      src/views/old_mini/mine/index.vue

+ 8 - 0
src/api/modules/mine.js

@@ -6,4 +6,12 @@ module.exports = {
         url: config.base_dev_url + "z_agricultural_store/register",
         type: "post",
     },
+    getSessionStore: {
+        url: config.base_dev_url + "mini_session_store/get/{key}",
+        type: "get",
+    },
+    saveSessionStore: {
+        url: config.base_dev_url + "mini_session_store/save",
+        type: "post",
+    },
 }

+ 24 - 4
src/views/old_mini/dev_login.vue

@@ -17,12 +17,24 @@ let userId = route.query.userId;
 onMounted(async () => {
     const token = route.query.token
     const targetUrl = route.query.targetUrl ? route.query.targetUrl : '/home';
+    
+    // 先从 session 获取保存的角色
+    let savedRole = null;
+    
     if (!token) {
         const { data } = await VE_API.system.devLogin({ userId: userId });
         store.dispatch(`app/${SET_TOKEN}`, data.token);
         store.dispatch(`app/${SET_USER_ROLES}`, data.roles);
-        // 如果 roles 中包含 2,赋值 2,否则赋值 0
-        const curRole = Array.isArray(data.roles) && data.roles.includes(2) ? 2 : 0;
+        
+        const sessionRes = await VE_API.mine.getSessionStore({ key: "cur_role" });
+        if (sessionRes && sessionRes.data) {
+            savedRole = sessionRes.data.val;
+        }
+        // 优先使用保存的角色,如果保存的角色在 roles 中,则使用保存的角色,否则如果 roles 中包含 2,赋值 2,否则赋值 0
+        let curRole = 0;
+        if (savedRole !== null && Array.isArray(data.roles) && data.roles.includes(savedRole)) {
+            curRole = savedRole;
+        }
         store.dispatch(`app/${SET_USER_CUR_ROLE}`, curRole);
         localStorage.setItem("localUserInfo", JSON.stringify(data));
     }
@@ -34,8 +46,16 @@ onMounted(async () => {
     if(route.query.roles){
         const roles = JSON.parse(route.query.roles);
         store.dispatch(`app/${SET_USER_ROLES}`, roles);
-        // 如果 roles 中包含 2,赋值 2,否则赋值 0
-        const curRole = Array.isArray(roles) && roles.includes(2) ? 2 : 0;
+        
+        const sessionRes = await VE_API.mine.getSessionStore({ key: "cur_role" });
+        if (sessionRes && sessionRes.data) {
+            savedRole = sessionRes.data.val;
+        }
+        // 优先使用保存的角色,如果保存的角色在 roles 中,则使用保存的角色,否则如果 roles 中包含 2,赋值 2,否则赋值 0
+        let curRole = 0;
+        if (savedRole !== null && Array.isArray(roles) && roles.includes(savedRole)) {
+            curRole = savedRole;
+        }
         store.dispatch(`app/${SET_USER_CUR_ROLE}`, curRole);
     }
     await getFarmList();

+ 13 - 1
src/views/old_mini/mine/index.vue

@@ -86,10 +86,22 @@ onMounted(() => {
 });
 
 const show = ref(false);
-const onSelect = (item) => {
+// 切换身份角色
+const onSelect = async (item) => {
     show.value = false;
+
     store.dispatch(`app/${SET_USER_CUR_ROLE}`, item.id);
     localStorage.setItem('SET_USER_CUR_ROLE',item.id)
+    
+    // 保存到 session
+    try {
+        await VE_API.mine.saveSessionStore({
+            val: item.id,
+            key: "cur_role"
+        });
+    } catch (error) {
+        console.error('保存角色到 session 失败:', error);
+    }
     window.location.reload()
 };