/** * 会员详情页面功能 * 包含会员信息展示、成长值明细、积分明细等功能 */ // 当前会员数据 let currentMemberData = null; /** * 初始化会员详情页面 */ function initMemberDetail() { console.log('会员详情页面已初始化'); } /** * 查看会员详情 - 从会员列表页面调用 * @param {string} memberId - 会员ID */ function viewMemberDetail_Detail(memberId) { console.log('打开会员详情页面:', memberId); // 获取会员数据 const memberData = getMemberData(memberId); if (!memberData) { alert('会员信息不存在'); return; } currentMemberData = memberData; // 使用系统的openTab功能打开新标签页 const tabTitle = `会员详情-${memberData.nickname}`; // 检查是否已经打开了该会员的详情页 const existingTab = Array.from(document.querySelectorAll('.tab')).find(tab => tab.querySelector('span').textContent === tabTitle ); if (existingTab) { // 如果已存在,直接激活该标签页 window.switchTab(existingTab.id); return; } // 创建自定义的会员详情标签页 createMemberDetailTab(tabTitle, memberData); } /** * 创建会员详情标签页 * @param {string} tabTitle - 标签页标题 * @param {Object} memberData - 会员数据 */ async function createMemberDetailTab(tabTitle, memberData) { try { // 使用全局的tab计数器 window.tabCounter++; const tabId = `tab-${window.tabCounter}`; const contentId = `content-${window.tabCounter}`; // 创建新的tab const tabBar = document.querySelector('.tab-bar'); const newTab = document.createElement('div'); newTab.className = 'tab'; newTab.id = tabId; newTab.innerHTML = ` ${tabTitle} `; // 添加点击事件 newTab.addEventListener('click', function(e) { if (!e.target.classList.contains('close-btn')) { window.switchTab(tabId); } }); tabBar.appendChild(newTab); // 创建对应的内容区域 const contentArea = document.querySelector('.content-area'); const newContent = document.createElement('div'); newContent.className = 'tab-content'; newContent.id = contentId; // 加载HTML内容 const response = await fetch('pages/member-detail.html'); const htmlContent = await response.text(); newContent.innerHTML = htmlContent; contentArea.appendChild(newContent); // 更新页面内容为具体会员数据 updateMemberDetailContent(newContent, memberData); // 初始化标签页功能 initDetailTabs(newContent); // 激活新创建的tab window.switchTab(tabId); } catch (error) { console.error('创建会员详情标签页失败:', error); alert('打开会员详情失败,请重试'); } } /** * 更新会员详情页面内容 * @param {HTMLElement} container - 页面容器 * @param {Object} memberData - 会员数据 */ function updateMemberDetailContent(container, memberData) { // 更新标题 const title = container.querySelector('.detail-header h2'); if (title) { title.textContent = `会员详情-${memberData.nickname}`; } // 更新头像 const avatar = container.querySelector('.avatar'); if (avatar) { avatar.textContent = memberData.nickname.charAt(0); avatar.className = `avatar large-avatar ${memberData.avatarClass}`; } // 更新基本信息 const nameEl = container.querySelector('.member-name'); if (nameEl) nameEl.textContent = memberData.nickname; const idEl = container.querySelector('.member-id'); if (idEl) idEl.textContent = `会员系统编号:${memberData.systemId}`; const phoneEl = container.querySelector('.member-phone'); if (phoneEl) phoneEl.textContent = `会员手机号:${memberData.phone}`; const birthEl = container.querySelector('.member-birth'); if (birthEl) birthEl.textContent = `会员生日:${memberData.birthday}`; // 更新资产信息 const growthValue = container.querySelector('.asset-item:nth-child(1) .asset-value'); if (growthValue) growthValue.textContent = memberData.growthValue; const pointsValue = container.querySelector('.asset-item:nth-child(2) .asset-value'); if (pointsValue) pointsValue.textContent = memberData.points; const couponsValue = container.querySelector('.asset-item:nth-child(3) .asset-value'); if (couponsValue) couponsValue.textContent = memberData.coupons; } /** * 初始化详情标签页功能 * @param {HTMLElement} container - 页面容器 */ function initDetailTabs(container) { // 确保成长值明细标签页默认激活 const growthTab = container.querySelector('#growthTab'); const pointsTab = container.querySelector('#pointsTab'); const growthHeader = container.querySelector('.tab-header:first-child'); const pointsHeader = container.querySelector('.tab-header:last-child'); if (growthTab && pointsTab && growthHeader && pointsHeader) { growthTab.classList.add('active'); pointsTab.classList.remove('active'); growthHeader.classList.add('active'); pointsHeader.classList.remove('active'); } } /** * 切换详情标签页 * @param {Event} event - 点击事件 * @param {string} tabName - 标签页名称 */ function switchDetailTab(event, tabName) { const container = event.target.closest('.page-content'); if (!container) return; // 移除所有激活状态 const allHeaders = container.querySelectorAll('.tab-header'); const allContents = container.querySelectorAll('.tab-content'); allHeaders.forEach(header => header.classList.remove('active')); allContents.forEach(content => content.classList.remove('active')); // 激活当前标签页 event.target.classList.add('active'); const targetTab = container.querySelector(`#${tabName}Tab`); if (targetTab) { targetTab.classList.add('active'); } } /** * 关闭会员详情标签页 */ function closeMemberDetailTab() { // 获取当前活动的标签页 const activeTab = document.querySelector('.tab-item.active'); if (activeTab) { const tabId = activeTab.getAttribute('data-tab'); closeTab(tabId); } } /** * 获取会员数据 - 模拟数据 * @param {string} memberId - 会员ID * @returns {Object|null} 会员数据 */ function getMemberData(memberId) { const mockMembers = { 'M001': { id: 'M001', nickname: '张三', systemId: '二', phone: '138****1234', birthday: '1990-05-15', avatarClass: 'green-avatar', growthValue: 1250, points: 890, coupons: 5, level: 'LV2', store: '时尚服装店', registerTime: '2024-01-15 14:30:25' }, 'M002': { id: 'M002', nickname: '李四', systemId: '三', phone: '139****5678', birthday: '1985-08-20', avatarClass: 'orange-avatar', growthValue: 800, points: 650, coupons: 3, level: 'LV1', store: '数码电子城', registerTime: '2024-02-20 09:15:30' }, 'M003': { id: 'M003', nickname: '王五', systemId: '四', phone: '136****9012', birthday: '1992-12-08', avatarClass: 'red-avatar', growthValue: 1850, points: 1200, coupons: 8, level: 'LV3', store: '美食餐厅', registerTime: '2024-03-10 16:45:12' }, 'M004': { id: 'M004', nickname: '赵六', systemId: '五', phone: '137****3456', birthday: '1988-03-25', avatarClass: 'purple-avatar', growthValue: 600, points: 420, coupons: 2, level: 'LV1', store: '家居生活馆', registerTime: '2024-04-05 11:20:45' }, 'M005': { id: 'M005', nickname: '孙七', systemId: '六', phone: '135****7890', birthday: '1995-07-12', avatarClass: 'pink-avatar', growthValue: 2500, points: 1800, coupons: 12, level: 'LV4', store: '运动健身店', registerTime: '2024-05-22 13:55:18' }, 'M006': { id: 'M006', nickname: '周八', systemId: '七', phone: '134****2468', birthday: '1991-11-30', avatarClass: 'blue-avatar', growthValue: 1100, points: 750, coupons: 4, level: 'LV2', store: '时尚服装店', registerTime: '2024-06-18 08:35:22' } }; return mockMembers[memberId] || null; } /** * 显示成长值详情弹窗 * @param {string} changeTime - 变化时间 * @param {string} changeValue - 变化值 * @param {string} relatedOrder - 关联订单 */ function showGrowthDetail(changeTime, changeValue, relatedOrder) { const modal = document.getElementById('growthDetailModal'); const content = document.getElementById('growthDetailContent'); if (!modal || !content) return; // 根据是否有关联订单生成不同的内容 let detailContent = ''; if (relatedOrder && relatedOrder !== '无') { // 有关联订单的情况 detailContent = `