批量优化

This commit is contained in:
hero920103 committed 2026-10-03 23:46:55 +08:00
1 parent e3db229f41
commit aa92ca40a2
79 files changed
+7495 -1104

No files matched your search

+47 -3
View File
@@ -4,13 +4,20 @@ const TENANT_KEY = 'app_tenant_name'
const TID_KEY = 'app_tid'
const REFRESH_KEY = 'app_refresh_token'
const SID_KEY = 'app_sid'
const TENANTS_KEY = 'app_tenants'
/** 是否启用统一认证:.env 中配置 VITE_AUTH_MODE=sso */
/**
* 是否启用统一认证(UAC)。
* 统一认证是默认形态(与 Web 端 /auth/login 同一套账号体系);
* 仅在 .env 中显式配置 VITE_AUTH_MODE=legacy 时才回退旧的「租户名 + 账号」直登。
*/
export function isSSOEnabled() {
try {
return (typeof import.meta !== 'undefined' && import.meta.env && import.meta.env.VITE_AUTH_MODE) === 'sso'
const mode =
(typeof import.meta !== 'undefined' && import.meta.env && import.meta.env.VITE_AUTH_MODE) || ''
return String(mode).toLowerCase() !== 'legacy'
} catch (e) {
return false
return true
}
}
@@ -36,6 +43,28 @@ export function setTid(tid) {
export function getTid() {
return Number(uni.getStorageSync(TID_KEY) || 0)
}
/** 统一认证:缓存「该账号可进入的企业」列表,供登录后展示/切换企业 */
export function setTenants(list) {
uni.setStorageSync(TENANTS_KEY, Array.isArray(list) ? list : [])
}
export function getTenants() {
const list = uni.getStorageSync(TENANTS_KEY)
return Array.isArray(list) ? list : []
}
/**
* 取「当前登录的那一家企业」的名称。
* 登录返回的 tenants 是该账号可进入的全部企业,顶部展示必须是当前会话选中的企业。
*/
export function resolveTenantName(info = {}, tid = 0) {
if (info && info.tenant_name) return info.tenant_name
const list = (info && info.tenants) || getTenants()
const hit = list.find((t) => String(t.tid) === String(info.tid || tid))
if (hit) return hit.tenant_name || ''
return list.length ? list[0].tenant_name || '' : ''
}
const REMEMBER_KEY = 'app_remember_me'
const REMEMBER_TENANT_KEY = 'app_remember_tenant'
const REMEMBER_ACCOUNT_KEY = 'app_remember_account'
@@ -74,6 +103,21 @@ export function logout() {
uni.removeStorageSync(USER_KEY)
uni.removeStorageSync(REFRESH_KEY)
uni.removeStorageSync(SID_KEY)
uni.removeStorageSync(TID_KEY)
uni.removeStorageSync(TENANTS_KEY)
}
/**
* 清除「待选企业」阶段的临时登录态。
* 一人多企业时 /auth/login 先签发一枚 tid=0、有效期 10 分钟的待选令牌,
* 用户若放弃选择或切换账号,必须清掉,避免半登录态残留去访问业务接口。
*/
export function clearPendingAuth() {
uni.removeStorageSync(TOKEN_KEY)
uni.removeStorageSync(REFRESH_KEY)
uni.removeStorageSync(SID_KEY)
uni.removeStorageSync(TID_KEY)
uni.removeStorageSync(TENANTS_KEY)
}
/** 是否开启记住账号登录信息 */