/** * 批量会员等级编辑功能模块 * 提供批量编辑多个摊位的会员等级配置 */ // 页面初始化函数 function initBatchLevelEdit() { console.log('批量等级编辑页面已初始化'); // 初始化摊位选择状态 updateStallSelection(); // 绑定表单事件 bindFormEvents(); // 初始化新增功能区域的交互事件 initBatchPointRatioSettings(); } // 绑定表单事件 function bindFormEvents() { // 可以在这里添加其他表单事件绑定 console.log('表单事件已绑定'); } // 全选/取消全选摊位 function selectAllStalls(checkbox) { const stallCheckboxes = document.querySelectorAll('.stall-checkbox input[type="checkbox"]:not([value="all"])'); stallCheckboxes.forEach(cb => { cb.checked = checkbox.checked; }); updateStallSelection(); } // 更新摊位选择状态 function updateStallSelection() { const stallCheckboxes = document.querySelectorAll('.stall-checkbox input[type="checkbox"]:not([value="all"])'); const allCheckbox = document.querySelector('.stall-checkbox input[value="all"]'); const countElement = document.getElementById('selectedStallsCount'); let selectedCount = 0; let selectedStalls = []; stallCheckboxes.forEach(cb => { if (cb.checked) { selectedCount++; selectedStalls.push(cb.value); } }); // 更新全选状态 if (allCheckbox) { allCheckbox.checked = selectedCount === stallCheckboxes.length; allCheckbox.indeterminate = selectedCount > 0 && selectedCount < stallCheckboxes.length; } // 更新选择计数显示 if (countElement) { countElement.textContent = `已选择 ${selectedCount} 个摊位`; if (selectedCount > 0) { countElement.textContent += `:${selectedStalls.join('、')}`; } } } // 保存批量等级编辑 function saveBatchLevelEdit() { const selectedStalls = getSelectedStalls(); if (selectedStalls.length === 0) { alert('请至少选择一个摊位'); return; } // 获取等级配置数据 const levelConfig = getLevelConfigData(); // 模拟保存过程 console.log('保存批量等级编辑:', { stalls: selectedStalls, config: levelConfig }); // 显示保存成功提示 alert(`已成功为 ${selectedStalls.length} 个摊位(${selectedStalls.join('、')})批量更新等级配置!`); // 可以在这里添加实际的保存逻辑,比如发送到后端API } // 获取选中的摊位列表 function getSelectedStalls() { const selectedStalls = []; const stallCheckboxes = document.querySelectorAll('.stall-checkbox input[type="checkbox"]:not([value="all"])'); stallCheckboxes.forEach(cb => { if (cb.checked) { selectedStalls.push(cb.value); } }); return selectedStalls; } // 获取等级配置数据 function getLevelConfigData() { const tbody = document.getElementById('batchLevelEditBody'); const rows = tbody.querySelectorAll('tr'); const levelConfig = []; rows.forEach(row => { const cells = row.cells; const level = cells[0].textContent; const levelData = { level: level, name: cells[1].querySelector('input').value, growthRange: { start: parseInt(cells[2].querySelectorAll('input')[0].value), end: parseInt(cells[2].querySelectorAll('input')[1].value) }, memberDiscount: { enabled: cells[3].querySelector('input[type="checkbox"]').checked, rate: parseInt(cells[4].querySelector('input').value) }, pointExchange: cells[5].querySelector('input[type="checkbox"]').checked, birthdayCoupon: cells[6].querySelector('input[type="checkbox"]').checked, birthdayDoublePoints: cells[8].querySelector('input[type="checkbox"]').checked }; levelConfig.push(levelData); }); // 收集积分有效期设置 const validityDays = document.getElementById('batchValidityDays')?.value || 365; // 收集积分兑换比例设置 const spendAmount = document.getElementById('batchSpendAmount')?.value || 1; const earnPoints = document.getElementById('batchEarnPoints')?.value || 1; const deductPoints = document.getElementById('batchDeductPoints')?.value || 100; const deductAmount = document.getElementById('batchDeductAmount')?.value || 1; // 收集单笔订单最大积分使用限制 const limitType = document.querySelector('input[name="batchLimitType"]:checked')?.value || 'none'; const limitPercentage = document.getElementById('batchLimitPercentage')?.value || 50; const limitAmount = document.getElementById('batchLimitAmount')?.value || 100; return { levels: levelConfig, pointValidity: { validityDays: parseInt(validityDays) }, pointRatio: { spendAmount: parseFloat(spendAmount), earnPoints: parseInt(earnPoints), deductPoints: parseInt(deductPoints), deductAmount: parseFloat(deductAmount), limitType: limitType, limitPercentage: parseInt(limitPercentage), limitAmount: parseFloat(limitAmount) } }; } // 添加优惠券(重用现有功能) function addCoupon(level) { // 这里可以调用现有的优惠券添加功能 // 或者实现新的批量优惠券添加逻辑 console.log(`为等级 ${level} 添加优惠券`); // 检查是否已经加载了优惠券弹窗相关功能 if (typeof showCouponModal === 'function') { showCouponModal(level); } else { // 如果没有加载,可以动态加载相关功能 loadCouponModalFunction().then(() => { if (typeof showCouponModal === 'function') { showCouponModal(level); } }); } } // 动态加载优惠券弹窗功能 async function loadCouponModalFunction() { try { // 这里可以动态加载优惠券相关的JavaScript console.log('动态加载优惠券功能...'); // 实际项目中可以通过import或script标签动态加载 } catch (error) { console.error('加载优惠券功能失败:', error); } } // 初始化积分兑换比例设置的交互逻辑 function initBatchPointRatioSettings() { const limitTypeRadios = document.querySelectorAll('input[name="batchLimitType"]'); const percentageContainer = document.querySelector('.batch-percentage-container'); const fixedContainer = document.querySelector('.batch-fixed-container'); if (limitTypeRadios.length === 0) return; // 积分使用限制类型变化事件 limitTypeRadios.forEach(radio => { radio.addEventListener('change', function() { const value = this.value; // 隐藏所有容器 if (percentageContainer) percentageContainer.style.display = 'none'; if (fixedContainer) fixedContainer.style.display = 'none'; // 显示对应的容器 if (value === 'percentage' && percentageContainer) { percentageContainer.style.display = 'flex'; } else if (value === 'fixed' && fixedContainer) { fixedContainer.style.display = 'flex'; } }); }); } // 页面清理函数 function cleanupBatchLevelEdit() { console.log('清理批量等级编辑页面'); // 清理事件监听器等资源 } // 暴露到全局作用域供HTML调用 window.selectAllStalls = selectAllStalls; window.updateStallSelection = updateStallSelection; window.saveBatchLevelEdit = saveBatchLevelEdit; window.addCoupon = addCoupon;