(function() { var KEYS = ['access_token','refresh_token','username','real_name','shop_no','shop_id','role']; function getAuthUser() { var token = localStorage.getItem('flutter.access_token'); var username = localStorage.getItem('flutter.username'); if (!token || !username) return null; return { username: username, realName: localStorage.getItem('flutter.real_name') || '', role: localStorage.getItem('flutter.role') || '', shopNo: localStorage.getItem('flutter.shop_no') || '', }; } function doLogout() { KEYS.forEach(function(k) { localStorage.removeItem('flutter.' + k); }); location.reload(); } function toggleUserMenu() { var el = document.getElementById('userDropdown'); if (el) el.classList.toggle('open'); } // 点击外部关闭 dropdown document.addEventListener('click', function(e) { var menu = document.getElementById('userDropdown'); if (!menu) return; var navUser = menu.closest('.nav-user'); if (navUser && !navUser.contains(e.target)) menu.classList.remove('open'); }); function renderNav() { var cta = document.getElementById('nav-cta'); if (!cta) return; var user = getAuthUser(); if (user) { var display = user.realName || user.username; var initial = display.charAt(0).toUpperCase(); var roleMap = { admin: '管理员', user: '成员', readonly: '只读' }; var roleLabel = roleMap[user.role] || user.role; cta.innerHTML = '
'; } else { cta.innerHTML = '登录' + '免费试用'; } if (window.lucide) lucide.createIcons(); } // 暴露给 onclick 调用 window.toggleUserMenu = toggleUserMenu; window.doLogout = doLogout; document.addEventListener('DOMContentLoaded', function() { renderNav(); if (window.lucide) lucide.createIcons(); // 页内锚点平滑滚动 document.querySelectorAll('a[href^="#"]').forEach(function(a) { a.addEventListener('click', function(e) { var id = a.getAttribute('href'); if (!id || id.length < 2) return; var target = document.querySelector(id); if (target) { e.preventDefault(); target.scrollIntoView({ behavior: 'smooth', block: 'start' }); } }); }); }); })();