// projects.js — 重点工作与台账(项目管理 + 任务管理) function applyUserTenants() { fetch("/api/auth/me").then(r => r.json()).then(data => { if (!data.logged_in) { window.location.href = "/login"; return; } const user = data.user; const avatar = document.querySelector("#userAvatar"); avatar.textContent = user.display_name.charAt(0); avatar.title = user.display_name; const nameEl = document.querySelector("#userDisplayName"); if (nameEl) { nameEl.textContent = user.display_name; nameEl.title = user.display_name; } avatar.addEventListener("click", (e) => { e.stopPropagation(); toggleUserMenu(user); }); // 缓存可用工作台列表,供下拉菜单使用 state.allowedTenants = data.tenants || []; updateTenantLabel(); }); } window.toggleTenantMenu = (event) => { event.stopPropagation(); let menu = document.getElementById("tenantMenu"); if (menu) { menu.remove(); return; } const btn = event.currentTarget; const rect = btn.getBoundingClientRect(); const tenants = state.allowedTenants || []; menu = document.createElement("div"); menu.id = "tenantMenu"; menu.className = "fixed bg-white rounded-lg shadow-xl border border-slate-200 py-1 min-w-[160px] z-[9999]"; menu.style.left = Math.min(rect.left - 8, window.innerWidth - 180) + "px"; menu.style.top = rect.bottom + 6 + "px"; menu.innerHTML = `
切换工作台
${esc(user.display_name)}
${esc(user.username || "")}
请从左侧选择项目查看台账