/**
 * 批量会员等级编辑功能模块
 * 提供批量编辑多个摊位的会员等级配置
 */

// 页面初始化函数
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;