259 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			259 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
|  | // 全局状态管理
 | ||
|  | let currentExpandedMenus = []; | ||
|  | let currentSelectedMenuItem = ''; | ||
|  | 
 | ||
|  | // DOM 加载完成后初始化
 | ||
|  | document.addEventListener('DOMContentLoaded', function() { | ||
|  |     console.log('大数集市商户端初始化完成'); | ||
|  |      | ||
|  |     // 初始化菜单状态
 | ||
|  |     initializeMenus(); | ||
|  |      | ||
|  |     // 初始化开关状态
 | ||
|  |     initializeSwitches(); | ||
|  |      | ||
|  |     // 添加搜索功能
 | ||
|  |     initializeSearch(); | ||
|  | }); | ||
|  | 
 | ||
|  | // 菜单展开/收起功能
 | ||
|  | function toggleMenu(menuId) { | ||
|  |     const arrow = document.getElementById(menuId + '-arrow'); | ||
|  |     const submenu = document.getElementById(menuId + '-submenu'); | ||
|  |      | ||
|  |     if (currentExpandedMenus.includes(menuId)) { | ||
|  |         // 收起菜单
 | ||
|  |         currentExpandedMenus = currentExpandedMenus.filter(id => id !== menuId); | ||
|  |          | ||
|  |         if (arrow) { | ||
|  |             arrow.classList.remove('rotate-180'); | ||
|  |         } | ||
|  |          | ||
|  |         if (submenu) { | ||
|  |             submenu.classList.add('hidden'); | ||
|  |         } | ||
|  |     } else { | ||
|  |         // 展开菜单
 | ||
|  |         currentExpandedMenus.push(menuId); | ||
|  |          | ||
|  |         if (arrow) { | ||
|  |             arrow.classList.add('rotate-180'); | ||
|  |         } | ||
|  |          | ||
|  |         if (submenu) { | ||
|  |             submenu.classList.remove('hidden'); | ||
|  |             submenu.classList.add('fade-in'); | ||
|  |         } | ||
|  |     } | ||
|  |      | ||
|  |     console.log('菜单状态更新:', menuId, currentExpandedMenus); | ||
|  | } | ||
|  | 
 | ||
|  | // 显示等级设置页面
 | ||
|  | function showLevelSettings() { | ||
|  |     // 隐藏默认内容
 | ||
|  |     const defaultContent = document.getElementById('default-content'); | ||
|  |     const levelSettingsContent = document.getElementById('level-settings-content'); | ||
|  |      | ||
|  |     if (defaultContent) { | ||
|  |         defaultContent.classList.add('hidden'); | ||
|  |     } | ||
|  |      | ||
|  |     if (levelSettingsContent) { | ||
|  |         levelSettingsContent.classList.remove('hidden'); | ||
|  |         levelSettingsContent.classList.add('fade-in'); | ||
|  |     } | ||
|  |      | ||
|  |     currentSelectedMenuItem = 'level-settings'; | ||
|  |     console.log('切换到等级设置页面'); | ||
|  | } | ||
|  | 
 | ||
|  | // 显示默认页面
 | ||
|  | function showDefaultContent() { | ||
|  |     const defaultContent = document.getElementById('default-content'); | ||
|  |     const levelSettingsContent = document.getElementById('level-settings-content'); | ||
|  |      | ||
|  |     if (levelSettingsContent) { | ||
|  |         levelSettingsContent.classList.add('hidden'); | ||
|  |     } | ||
|  |      | ||
|  |     if (defaultContent) { | ||
|  |         defaultContent.classList.remove('hidden'); | ||
|  |         defaultContent.classList.add('fade-in'); | ||
|  |     } | ||
|  |      | ||
|  |     currentSelectedMenuItem = ''; | ||
|  |     console.log('切换到默认页面'); | ||
|  | } | ||
|  | 
 | ||
|  | // 开关切换功能
 | ||
|  | function toggleSwitch(switchElement) { | ||
|  |     const isChecked = switchElement.checked; | ||
|  |     console.log('开关状态:', isChecked); | ||
|  |      | ||
|  |     // 添加视觉反馈
 | ||
|  |     const slider = switchElement.nextElementSibling; | ||
|  |     if (slider) { | ||
|  |         if (isChecked) { | ||
|  |             slider.style.backgroundColor = '#16a34a'; | ||
|  |         } else { | ||
|  |             slider.style.backgroundColor = '#e5e7eb'; | ||
|  |         } | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | // 初始化菜单状态
 | ||
|  | function initializeMenus() { | ||
|  |     // 会员管理菜单默认展开
 | ||
|  |     toggleMenu('member'); | ||
|  |      | ||
|  |     // 添加首页点击事件
 | ||
|  |     const homeMenuItem = document.querySelector('[onclick*="首页"]'); | ||
|  |     if (homeMenuItem) { | ||
|  |         homeMenuItem.addEventListener('click', showDefaultContent); | ||
|  |     } | ||
|  |      | ||
|  |     console.log('菜单初始化完成'); | ||
|  | } | ||
|  | 
 | ||
|  | // 初始化开关状态
 | ||
|  | function initializeSwitches() { | ||
|  |     const switches = document.querySelectorAll('input[type="checkbox"]'); | ||
|  |     switches.forEach(switchElement => { | ||
|  |         // 为已选中的开关设置正确的样式
 | ||
|  |         if (switchElement.checked) { | ||
|  |             const slider = switchElement.nextElementSibling; | ||
|  |             if (slider) { | ||
|  |                 slider.style.backgroundColor = '#16a34a'; | ||
|  |             } | ||
|  |         } | ||
|  |     }); | ||
|  |      | ||
|  |     console.log('开关初始化完成,共', switches.length, '个开关'); | ||
|  | } | ||
|  | 
 | ||
|  | // 搜索功能
 | ||
|  | function initializeSearch() { | ||
|  |     const searchInput = document.querySelector('input[placeholder*="搜索"]'); | ||
|  |     if (searchInput) { | ||
|  |         searchInput.addEventListener('input', function(e) { | ||
|  |             const searchTerm = e.target.value.toLowerCase(); | ||
|  |             filterMenuItems(searchTerm); | ||
|  |         }); | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | // 过滤菜单项
 | ||
|  | function filterMenuItems(searchTerm) { | ||
|  |     const menuItems = document.querySelectorAll('nav div'); | ||
|  |      | ||
|  |     menuItems.forEach(item => { | ||
|  |         const text = item.textContent.toLowerCase(); | ||
|  |         if (text.includes(searchTerm) || searchTerm === '') { | ||
|  |             item.style.display = ''; | ||
|  |         } else { | ||
|  |             item.style.display = 'none'; | ||
|  |         } | ||
|  |     }); | ||
|  |      | ||
|  |     console.log('搜索筛选:', searchTerm); | ||
|  | } | ||
|  | 
 | ||
|  | // 添加一些实用的辅助函数
 | ||
|  | function showNotification(message, type = 'info') { | ||
|  |     console.log('通知:', message, '类型:', type); | ||
|  |      | ||
|  |     // 创建通知元素
 | ||
|  |     const notification = document.createElement('div'); | ||
|  |     notification.className = `notification ${type}`; | ||
|  |     notification.textContent = message; | ||
|  |     notification.style.cssText = `
 | ||
|  |         position: fixed; | ||
|  |         top: 20px; | ||
|  |         right: 20px; | ||
|  |         padding: 12px 20px; | ||
|  |         border-radius: 6px; | ||
|  |         color: white; | ||
|  |         font-size: 14px; | ||
|  |         z-index: 1000; | ||
|  |         transition: all 0.3s ease; | ||
|  |     `;
 | ||
|  |      | ||
|  |     // 根据类型设置颜色
 | ||
|  |     switch(type) { | ||
|  |         case 'success': | ||
|  |             notification.style.backgroundColor = '#16a34a'; | ||
|  |             break; | ||
|  |         case 'error': | ||
|  |             notification.style.backgroundColor = '#dc2626'; | ||
|  |             break; | ||
|  |         case 'warning': | ||
|  |             notification.style.backgroundColor = '#d97706'; | ||
|  |             break; | ||
|  |         default: | ||
|  |             notification.style.backgroundColor = '#3b82f6'; | ||
|  |     } | ||
|  |      | ||
|  |     document.body.appendChild(notification); | ||
|  |      | ||
|  |     // 3秒后自动消失
 | ||
|  |     setTimeout(() => { | ||
|  |         notification.style.opacity = '0'; | ||
|  |         setTimeout(() => { | ||
|  |             document.body.removeChild(notification); | ||
|  |         }, 300); | ||
|  |     }, 3000); | ||
|  | } | ||
|  | 
 | ||
|  | // 等级明细设置功能
 | ||
|  | function showLevelDetail(shopName) { | ||
|  |     showNotification(`正在设置 ${shopName} 的等级明细`, 'info'); | ||
|  |     console.log('设置等级明细:', shopName); | ||
|  | } | ||
|  | 
 | ||
|  | // 添加表格行的点击事件
 | ||
|  | document.addEventListener('DOMContentLoaded', function() { | ||
|  |     const levelDetailButtons = document.querySelectorAll('button'); | ||
|  |     levelDetailButtons.forEach(button => { | ||
|  |         if (button.textContent.includes('设置等级明细')) { | ||
|  |             button.addEventListener('click', function() { | ||
|  |                 const row = this.closest('tr'); | ||
|  |                 const shopName = row.querySelector('td').textContent; | ||
|  |                 showLevelDetail(shopName); | ||
|  |             }); | ||
|  |         } | ||
|  |     }); | ||
|  | }); | ||
|  | 
 | ||
|  | // 键盘快捷键支持
 | ||
|  | document.addEventListener('keydown', function(e) { | ||
|  |     // ESC键回到首页
 | ||
|  |     if (e.key === 'Escape') { | ||
|  |         showDefaultContent(); | ||
|  |     } | ||
|  |      | ||
|  |     // Ctrl+F 聚焦搜索框
 | ||
|  |     if (e.ctrlKey && e.key === 'f') { | ||
|  |         e.preventDefault(); | ||
|  |         const searchInput = document.querySelector('input[placeholder*="搜索"]'); | ||
|  |         if (searchInput) { | ||
|  |             searchInput.focus(); | ||
|  |         } | ||
|  |     } | ||
|  | }); | ||
|  | 
 | ||
|  | // 窗口大小变化时的响应式处理
 | ||
|  | window.addEventListener('resize', function() { | ||
|  |     const sidebar = document.querySelector('aside'); | ||
|  |     if (window.innerWidth < 768 && sidebar) { | ||
|  |         console.log('切换到移动端布局'); | ||
|  |         // 可以在这里添加移动端特定的逻辑
 | ||
|  |     } | ||
|  | }); | ||
|  | 
 | ||
|  | // 导出一些全局函数供HTML调用
 | ||
|  | window.toggleMenu = toggleMenu; | ||
|  | window.showLevelSettings = showLevelSettings; | ||
|  | window.showDefaultContent = showDefaultContent; | ||
|  | window.toggleSwitch = toggleSwitch; | ||
|  | window.showLevelDetail = showLevelDetail; |