import { ref, computed } from 'vue' export interface PlatformUser { userId: string userName: string userRole: string tenantId: string orgId: string token?: string } export const ROLE_LABELS: Record = { ADMIN: '系统管理员', RECEPTIONIST: '受理员', ASSESSOR: '评估员', PLANNER: '方案制定员', DISPATCHER: '调度员', STAFF: '服务人员', SETTLER: '结算员', SUPERVISOR: '监管员', REVIEWER: '复核员', } const STORAGE_KEY = 'hss_platform_user' const TOKEN_KEY = 'hss_token' const currentUser = ref(null) function loadUser(): PlatformUser | null { try { const stored = localStorage.getItem(STORAGE_KEY) return stored ? JSON.parse(stored) : null } catch { return null } } function saveUser(user: PlatformUser) { localStorage.setItem(STORAGE_KEY, JSON.stringify(user)) if (user.token) localStorage.setItem(TOKEN_KEY, user.token) currentUser.value = user } function clearUser() { localStorage.removeItem(STORAGE_KEY) localStorage.removeItem(TOKEN_KEY) currentUser.value = null } export function usePlatformAuth() { if (!currentUser.value) { currentUser.value = loadUser() } const isLoggedIn = computed(() => !!currentUser.value) const user = computed(() => currentUser.value) /** 保存登录/注册返回的用户信息 */ function setAuth(data: { token: string; userId: number | string; name: string; role: string }) { saveUser({ userId: String(data.userId), userName: data.name, userRole: data.role, tenantId: '1', orgId: '1', token: data.token, }) } function logout() { clearUser() } function getToken(): string { return localStorage.getItem(TOKEN_KEY) || currentUser.value?.token || '' } function getAuthHeaders(): Record { const token = getToken() const u = currentUser.value return { 'Authorization': token ? 'Bearer ' + token : '', 'X-Tenant-Id': u?.tenantId || '1', 'X-Org-Id': u?.orgId || '1', 'Content-Type': 'application/json', } } return { isLoggedIn, user, setAuth, logout, getAuthHeaders, getToken } }