做几方面优化

This commit is contained in:
hero920103 committed 2026-09-25 00:27:15 +08:00
1 parent eafa5e1cf4
commit 92403171d4
14 files changed
+2142 -258

No files matched your search

+28 -1
View File
@@ -171,6 +171,22 @@ export async function logoutSSO() {
window.location.href = `${AUTH_BASE}/logout?${params.toString()}`;
}
/**
* 取「当前登录的那一家企业」的名称。
*
* userinfo 的 tenants 是该账号可进入的全部企业,只能用于做企业切换列表;
* 顶部展示必须是当前会话选中的企业(tid),不能把全部企业名拼接。
* 取值顺序:后端 tenant_name → 按 tid 在 tenants 中匹配 → 兜底第一家。
*/
export function resolveTenantName(data) {
if (!data) return '';
if (data.tenant_name) return data.tenant_name;
const list = data.tenants || [];
const hit = list.find((t) => String(t.tid) === String(data.tid));
if (hit) return hit.tenant_name || '';
return list.length ? (list[0].tenant_name || '') : '';
}
/**
* 确保本地存在完整的用户信息(含 id / group_id)。
*
@@ -199,7 +215,7 @@ export async function ensureUserInfo() {
name: data.name || data.nickname || '',
group_id: data.group_id || '',
tid: data.tid || '',
tenant_name: (data.tenants || []).map((t) => t.tenant_name).join('、'),
tenant_name: resolveTenantName(data),
avatar: data.avatar || '',
type: 'backend'
};
@@ -235,5 +251,16 @@ export async function switchTenant(tid) {
const data = await res.json().catch(() => ({}));
if (!res.ok || data.code !== 200) throw new Error(data.msg || "切换企业失败");
if (data.data?.tokens) setTokens(data.data.tokens);
// 切换后同步本地缓存的企业信息,避免顶部仍显示切换前的企业名
try {
const info = await fetchUserInfo();
const raw = localStorage.getItem('userInfo');
const merged = raw ? JSON.parse(raw) : {};
merged.tid = info.tid || tid;
merged.tenant_name = resolveTenantName(info);
localStorage.setItem('userInfo', JSON.stringify(merged));
} catch (e) {
// 同步失败不阻断切换结果
}
return data.data;
}