// Tab系统管理 - 会员管理模块 // Tab管理器类 class MemberTabManager { constructor() { this.tabs = []; this.activeTabId = ''; this.tabCounter = 0; } // 创建新tab createTab(id, title, content, canClose = true) { // 检查tab是否已存在 const existingTab = this.tabs.find(tab => tab.id === id); if (existingTab) { this.showTab(id); return existingTab; } const tab = { id: id, title: title, content: content, canClose: canClose }; this.tabs.push(tab); this.renderTabs(); this.showTab(id); return tab; } // 关闭tab closeTab(tabId) { const tabIndex = this.tabs.findIndex(tab => tab.id === tabId); if (tabIndex === -1) return; const tab = this.tabs[tabIndex]; if (!tab.canClose) return; this.tabs.splice(tabIndex, 1); // 如果关闭的是当前激活的tab,切换到其他tab if (this.activeTabId === tabId) { if (this.tabs.length > 0) { this.showTab(this.tabs[this.tabs.length - 1].id); } else { this.showDefaultContent(); } } this.renderTabs(); } // 显示指定tab showTab(tabId) { const tab = this.tabs.find(t => t.id === tabId); if (!tab) return; this.activeTabId = tabId; // 更新tab激活状态 document.querySelectorAll('.tab-item').forEach(tabEl => { if (tabEl.dataset.tabId === tabId) { tabEl.classList.add('border-green-500', 'text-green-600'); tabEl.classList.remove('border-transparent', 'text-gray-500'); } else { tabEl.classList.remove('border-green-500', 'text-green-600'); tabEl.classList.add('border-transparent', 'text-gray-500'); } }); // 更新内容区域 const contentArea = document.getElementById('tab-content-area'); if (contentArea) { contentArea.innerHTML = tab.content; } // 显示tab容器 this.showTabContainer(); } // 渲染tab导航 renderTabs() { const tabNav = document.getElementById('tab-nav'); if (!tabNav) return; tabNav.innerHTML = ''; this.tabs.forEach(tab => { const tabElement = document.createElement('div'); tabElement.className = `tab-item flex items-center px-4 py-3 border-b-2 cursor-pointer transition-colors ${ this.activeTabId === tab.id ? 'border-green-500 text-green-600' : 'border-transparent text-gray-500 hover:text-gray-700' }`; tabElement.dataset.tabId = tab.id; tabElement.innerHTML = ` ${tab.title} ${tab.canClose ? ` ` : ''} `; tabElement.addEventListener('click', () => this.showTab(tab.id)); tabNav.appendChild(tabElement); }); } // 显示tab容器 showTabContainer() { const tabContainer = document.getElementById('tab-container'); if (tabContainer) { tabContainer.classList.remove('hidden'); tabContainer.classList.add('fade-in'); } } // 显示默认内容 showDefaultContent() { const tabContainer = document.getElementById('tab-container'); if (tabContainer) { const contentArea = document.getElementById('tab-content-area'); if (contentArea) { contentArea.innerHTML = `
会员管理
请从左侧菜单选择功能
| 摊位名称 | 是否启用会员 | 会员等级 | 操作 | 
|---|---|---|---|
| 时尚服装店 | lv1, lv2, lv3, lv4 | ||
| 数码电子城 | lv1, lv2, lv3 | ||
| 美食餐厅 | lv1, lv2, lv3, lv4 | ||
| 家居生活馆 | lv1, lv2 | ||
| 运动健身店 | lv1, lv2, lv3, lv4 | 
| 等级名称 | 所需成长值 | 会员人数 | 会员权益 | 
|---|---|---|---|
| ${level.name} | ${level.growth} | ${level.members} | ${level.benefits} | 
| 等级 | 等级名称 | 成长值范围 | 开启会员折扣 | 折扣率(%) | 开启积分兑换 | 开启生日优惠券 | 生日优惠券操作 | 开启生日双倍积分 | 
|---|---|---|---|---|---|---|---|---|
| ${level.level} | 
                                        
                                        -
                                        
                                     | 
| 等级 | 等级名称 | 成长值范围 | 开启会员折扣 | 折扣率(%) | 开启积分兑换 | 开启生日优惠券 | 生日优惠券操作 | 开启生日双倍积分 | 
|---|---|---|---|---|---|---|---|---|
| ${level.level} | 
                                        
                                        -
                                        
                                     | 
会员总数
1,247
今日新增
23
| 所属摊位 | 用户ID | 用户头像 | 用户昵称 | 手机号 | 会员等级 | 生日 | 注册时间 | 操作 | |
|---|---|---|---|---|---|---|---|---|---|
| ${member.stall} | ${member.id} |  | ${member.nickname} | ${member.phone} | ${member.level} | ${member.birthday} | ${member.registerTime} | 
会员成长值
${memberData.growth}
会员积分
${memberData.points}
会员优惠券
${memberData.coupons}
| 变化时间 | 成长值增加 | 关联订单 | 详情 | 
|---|---|---|---|
| ${item.time} | +${item.growth} | ${item.orderId || '无'} | 
| 优惠券名称 | 发放日期 | 有效期 | 优惠券内容 | 
|---|---|---|---|
| ${coupon.name} | ${coupon.issueDate} | ${coupon.expiryDate} | ${coupon.content} |