做几方面优化
This commit is contained in:
1 parent
eafa5e1cf4
commit
92403171d4
14 files changed
+2142
-258
No files matched your search
@@ -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;
|
||||
}
|
||||
Reference in new issue
Block a user