// 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); }); const allowedTenants = data.tenants || []; document.querySelectorAll(".workspace-nav-item").forEach(el => { el.style.display = allowedTenants.includes(el.dataset.tenant) ? "" : "none"; }); }); } window.toggleUserMenu = (user) => { let menu = document.getElementById("userMenu"); if (menu) { menu.remove(); return; } const avatar = document.querySelector("#userAvatar"); const rect = avatar.getBoundingClientRect(); menu = document.createElement("div"); menu.id = "userMenu"; 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 || "")}
请从左侧选择项目查看台账