// 会员查看页面 - H5版本 let memberData = []; let filteredData = []; let sortOrder = {}; let selectedMembers = new Set(); // 页面初始化 document.addEventListener('DOMContentLoaded', function() { loadMemberData(); }); // 加载会员数据 function loadMemberData() { // 使用模拟数据 memberData = [ { id: 1, name: '张三', phone: '138****1234', level: 'LV2', points: 1250, joinDate: '2024-01-15' }, { id: 2, name: '李四', phone: '139****5678', level: 'LV3', points: 2800, joinDate: '2024-02-20' }, { id: 3, name: '王五', phone: '137****9012', level: 'LV1', points: 580, joinDate: '2024-03-10' }, { id: 4, name: '赵六', phone: '136****3456', level: 'LV4', points: 5200, joinDate: '2024-01-08' }, { id: 5, name: '钱七', phone: '135****7890', level: 'LV2', points: 1580, joinDate: '2024-02-15' }, { id: 6, name: '孙八', phone: '134****2345', level: 'LV1', points: 420, joinDate: '2024-03-20' }, { id: 7, name: '周九', phone: '133****6789', level: 'LV3', points: 3200, joinDate: '2024-01-25' }, { id: 8, name: '吴十', phone: '132****0123', level: 'LV4', points: 4800, joinDate: '2024-02-10' } ]; filteredData = [...memberData]; renderTable(); } // 渲染表格 function renderTable() { const tableBody = document.getElementById('member-table-body'); tableBody.innerHTML = filteredData.map(member => ` ${member.name} ${member.phone} ${member.level} ${member.points} ${member.joinDate} `).join(''); updateSelectedCount(); } // 筛选会员 function filterMembers() { const levelFilter = document.getElementById('level-filter').value; const searchText = document.getElementById('member-search').value.toLowerCase(); filteredData = memberData.filter(member => { const matchLevel = !levelFilter || member.level === levelFilter; const matchSearch = !searchText || member.name.toLowerCase().includes(searchText) || member.phone.includes(searchText); return matchLevel && matchSearch; }); renderTable(); updateSelectAllState(); showNotification(`筛选结果:${filteredData.length} 名会员`, 'info'); } // 表格排序 function sortTable(column) { const isAscending = sortOrder[column] !== 'asc'; sortOrder = {}; // 重置其他列的排序状态 sortOrder[column] = isAscending ? 'asc' : 'desc'; filteredData.sort((a, b) => { let valueA = a[column]; let valueB = b[column]; // 处理数字类型 if (column === 'points') { valueA = parseInt(valueA); valueB = parseInt(valueB); } // 处理日期类型 if (column === 'joinDate') { valueA = new Date(valueA); valueB = new Date(valueB); } if (valueA < valueB) { return isAscending ? -1 : 1; } if (valueA > valueB) { return isAscending ? 1 : -1; } return 0; }); renderTable(); updateSelectAllState(); showNotification(`按${getColumnName(column)}${isAscending ? '升序' : '降序'}排列`, 'info'); } // 获取列名中文 function getColumnName(column) { const names = { 'name': '姓名', 'phone': '手机号', 'level': '等级', 'points': '积分', 'joinDate': '加入时间' }; return names[column] || column; } // 查看会员详情 function viewMemberDetail(memberId) { const member = memberData.find(m => m.id === memberId); if (member) { // 这里可以跳转到会员详情页面,或者显示弹窗 showNotification(`查看会员:${member.name} 的详情`, 'info'); console.log('会员详情:', member); } } // 批量选择相关功能 function toggleSelectAll() { const selectAllCheckbox = document.getElementById('select-all'); const memberCheckboxes = document.querySelectorAll('.member-checkbox'); if (selectAllCheckbox.checked) { // 全选当前页面显示的会员 filteredData.forEach(member => { selectedMembers.add(member.id); }); memberCheckboxes.forEach(checkbox => { checkbox.checked = true; }); } else { // 取消全选 selectedMembers.clear(); memberCheckboxes.forEach(checkbox => { checkbox.checked = false; }); } updateSelectedCount(); } // 切换单个会员选择状态 function toggleMemberSelection(memberId) { console.log('toggleMemberSelection called, memberId:', memberId); if (selectedMembers.has(memberId)) { selectedMembers.delete(memberId); console.log('Member removed from selection'); } else { selectedMembers.add(memberId); console.log('Member added to selection'); } console.log('Selected members:', Array.from(selectedMembers)); updateSelectedCount(); updateSelectAllState(); } // 更新选中数量显示 function updateSelectedCount() { const selectedCount = selectedMembers.size; const countElement = document.getElementById('selected-count'); const batchEditBtn = document.getElementById('batch-edit-btn'); countElement.textContent = `已选择 ${selectedCount} 位会员`; batchEditBtn.disabled = selectedCount === 0; } // 更新全选checkbox状态 function updateSelectAllState() { const selectAllCheckbox = document.getElementById('select-all'); const currentPageMemberIds = filteredData.map(member => member.id); const selectedCurrentPageCount = currentPageMemberIds.filter(id => selectedMembers.has(id)).length; if (selectedCurrentPageCount === 0) { selectAllCheckbox.checked = false; selectAllCheckbox.indeterminate = false; } else if (selectedCurrentPageCount === currentPageMemberIds.length) { selectAllCheckbox.checked = true; selectAllCheckbox.indeterminate = false; } else { selectAllCheckbox.checked = false; selectAllCheckbox.indeterminate = true; } } // 打开批量编辑弹窗 function openBatchEditModal() { console.log('openBatchEditModal called, selectedMembers size:', selectedMembers.size); if (selectedMembers.size === 0) { showNotification('请先选择要编辑的会员', 'warning'); return; } // 显示选中的会员列表 const selectedMembersList = document.getElementById('selected-members-list'); const selectedMembersData = memberData.filter(member => selectedMembers.has(member.id)); console.log('selectedMembersData:', selectedMembersData); selectedMembersList.innerHTML = selectedMembersData.map(member => `
${member.name} (${member.phone}) - 当前等级: ${member.level}
` ).join(''); // 重置表单 document.getElementById('new-level').value = ''; document.getElementById('batch-edit-remark').value = ''; // 显示弹窗 const modal = document.getElementById('batch-edit-modal'); console.log('Modal element:', modal); if (modal) { modal.style.display = 'flex'; console.log('Modal display set to flex'); } else { console.error('Modal element not found!'); } } // 关闭批量编辑弹窗 function closeBatchEditModal() { document.getElementById('batch-edit-modal').style.display = 'none'; } // 确认批量编辑 function confirmBatchEdit() { const newLevel = document.getElementById('new-level').value; const remark = document.getElementById('batch-edit-remark').value; if (!newLevel) { showNotification('请选择新的会员等级', 'warning'); return; } // 执行批量编辑 const selectedMembersData = memberData.filter(member => selectedMembers.has(member.id)); let updatedCount = 0; selectedMembersData.forEach(member => { if (member.level !== newLevel) { member.level = newLevel; updatedCount++; } }); // 重新渲染表格 renderTable(); // 关闭弹窗 closeBatchEditModal(); // 清除选择 selectedMembers.clear(); document.getElementById('select-all').checked = false; updateSelectedCount(); // 显示成功消息 const message = remark ? `批量编辑完成:${updatedCount}位会员等级已更新为${newLevel}。备注:${remark}` : `批量编辑完成:${updatedCount}位会员等级已更新为${newLevel}`; showNotification(message, 'success'); console.log('批量编辑完成:', { updatedCount, newLevel, remark, selectedMembers: selectedMembersData.map(m => ({ id: m.id, name: m.name })) }); } // 导出函数到全局 window.filterMembers = filterMembers; window.sortTable = sortTable; window.viewMemberDetail = viewMemberDetail; window.toggleSelectAll = toggleSelectAll; window.toggleMemberSelection = toggleMemberSelection; window.openBatchEditModal = openBatchEditModal; window.closeBatchEditModal = closeBatchEditModal; window.confirmBatchEdit = confirmBatchEdit;