(() => { // 展开/收起子菜单 document.querySelectorAll('.nav-item.has-children').forEach(group => { const btn = group.querySelector('.nav-item-btn'); const caret = btn.querySelector('.caret'); const children = group.querySelector('.nav-children'); btn.addEventListener('click', () => { children.classList.toggle('open'); caret.classList.toggle('rotate'); }); }); // 侧边栏折叠功能 const sidebar = document.getElementById('sidebar'); const toggleBtn = document.getElementById('sidebar-toggle'); if (sidebar && toggleBtn) { // 从 localStorage 恢复状态 const isCollapsed = localStorage.getItem('sidebar-collapsed') === 'true'; if (isCollapsed) { sidebar.classList.add('collapsed'); } toggleBtn.addEventListener('click', () => { sidebar.classList.toggle('collapsed'); const collapsed = sidebar.classList.contains('collapsed'); localStorage.setItem('sidebar-collapsed', collapsed); toggleBtn.title = collapsed ? '展开菜单' : '收起菜单'; // 触发窗口 resize 事件,让图表立即重绘 setTimeout(() => { window.dispatchEvent(new Event('resize')); }, 310); // 等待侧边栏动画完成 (300ms) }); // 设置初始 title toggleBtn.title = sidebar.classList.contains('collapsed') ? '展开菜单' : '收起菜单'; } // 二级菜单点击时自动缩进侧边栏功能 // 检查是否启用了此功能(默认启用) const autoCollapseOnSubmenu = localStorage.getItem('sidebar-auto-collapse') !== 'false'; if (autoCollapseOnSubmenu) { const dropdownItems = document.querySelectorAll('.dropdown-item'); dropdownItems.forEach(item => { item.addEventListener('click', () => { // 延迟执行,确保路由跳转完成后再缩进 setTimeout(() => { if (sidebar && !sidebar.classList.contains('collapsed')) { sidebar.classList.add('collapsed'); localStorage.setItem('sidebar-collapsed', 'true'); if (toggleBtn) { toggleBtn.title = '展开菜单'; } // 触发窗口 resize 事件,让图表立即重绘 setTimeout(() => { window.dispatchEvent(new Event('resize')); }, 310); } }, 100); }); }); } // 添加键盘快捷键切换功能 document.addEventListener('keydown', (e) => { // Ctrl + B 切换侧边栏 if (e.ctrlKey && e.key === 'b') { e.preventDefault(); if (sidebar && toggleBtn) { toggleBtn.click(); } } }); })();