194 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			194 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
// 批量编辑第三步 - 确认预览页面
 | 
						|
 | 
						|
let selectedShops = [];
 | 
						|
let levelData = [];
 | 
						|
 | 
						|
// 页面初始化
 | 
						|
document.addEventListener('DOMContentLoaded', function() {
 | 
						|
    loadStoredData();
 | 
						|
    generatePreview();
 | 
						|
    updateSummaryStats();
 | 
						|
});
 | 
						|
 | 
						|
// 加载存储的数据
 | 
						|
function loadStoredData() {
 | 
						|
    // 加载选中的店铺
 | 
						|
    const storedShops = sessionStorage.getItem('batchEditSelectedShops');
 | 
						|
    if (storedShops) {
 | 
						|
        selectedShops = JSON.parse(storedShops);
 | 
						|
    } else {
 | 
						|
        showNotification('未找到选中的店铺数据,请重新操作', 'error');
 | 
						|
        setTimeout(() => {
 | 
						|
            navigateTo('batch-edit-step1.html');
 | 
						|
        }, 2000);
 | 
						|
        return;
 | 
						|
    }
 | 
						|
 | 
						|
    // 加载等级设置数据
 | 
						|
    const storedLevels = sessionStorage.getItem('batchEditLevelData');
 | 
						|
    if (storedLevels) {
 | 
						|
        levelData = JSON.parse(storedLevels);
 | 
						|
    } else {
 | 
						|
        showNotification('未找到等级设置数据,请重新设置', 'error');
 | 
						|
        setTimeout(() => {
 | 
						|
            navigateTo('batch-edit-step2.html');
 | 
						|
        }, 2000);
 | 
						|
        return;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
// 生成预览表格
 | 
						|
function generatePreview() {
 | 
						|
    const tableBody = document.getElementById('preview-table-body');
 | 
						|
    
 | 
						|
    const html = selectedShops.map(shop => {
 | 
						|
        const beforeLevels = shop.levels.join(', ');
 | 
						|
        const afterLevels = levelData.map(level => level.level).join(', ');
 | 
						|
        
 | 
						|
        return `
 | 
						|
            <tr>
 | 
						|
                <td>
 | 
						|
                    <div class="shop-name">${shop.name}</div>
 | 
						|
                </td>
 | 
						|
                <td>
 | 
						|
                    <div class="levels-before">${beforeLevels}</div>
 | 
						|
                </td>
 | 
						|
                <td>
 | 
						|
                    <div class="levels-after">${afterLevels}</div>
 | 
						|
                    <div class="change-indicator">
 | 
						|
                        <span class="change-arrow">→</span>
 | 
						|
                        <span>新设置</span>
 | 
						|
                    </div>
 | 
						|
                </td>
 | 
						|
                <td>
 | 
						|
                    <div class="member-count">${shop.memberCount} 人</div>
 | 
						|
                </td>
 | 
						|
            </tr>
 | 
						|
        `;
 | 
						|
    }).join('');
 | 
						|
    
 | 
						|
    tableBody.innerHTML = html;
 | 
						|
}
 | 
						|
 | 
						|
// 更新摘要统计
 | 
						|
function updateSummaryStats() {
 | 
						|
    const shopCount = selectedShops.length;
 | 
						|
    const totalMembers = selectedShops.reduce((sum, shop) => sum + shop.memberCount, 0);
 | 
						|
    
 | 
						|
    document.getElementById('shop-count').textContent = shopCount;
 | 
						|
    document.getElementById('member-count').textContent = totalMembers.toLocaleString();
 | 
						|
}
 | 
						|
 | 
						|
// 上一步 - 返回修改
 | 
						|
function previousStep() {
 | 
						|
    navigateTo('batch-edit-step2.html');
 | 
						|
}
 | 
						|
 | 
						|
// 确认提交
 | 
						|
function confirmSubmit() {
 | 
						|
    const shopCount = selectedShops.length;
 | 
						|
    const totalMembers = selectedShops.reduce((sum, shop) => sum + shop.memberCount, 0);
 | 
						|
    
 | 
						|
    const message = `确定要为 ${shopCount} 个店铺的 ${totalMembers.toLocaleString()} 名会员应用新的等级设置吗?\n\n此操作不可撤销,请谨慎确认。`;
 | 
						|
    
 | 
						|
    confirmAction(message, () => {
 | 
						|
        executeSubmit();
 | 
						|
    });
 | 
						|
}
 | 
						|
 | 
						|
// 执行提交
 | 
						|
function executeSubmit() {
 | 
						|
    // 隐藏操作按钮,显示进度
 | 
						|
    document.getElementById('action-buttons').style.display = 'none';
 | 
						|
    document.getElementById('submit-progress').style.display = 'block';
 | 
						|
    
 | 
						|
    simulateSubmitProgress();
 | 
						|
}
 | 
						|
 | 
						|
// 模拟提交进度
 | 
						|
function simulateSubmitProgress() {
 | 
						|
    const progressFill = document.getElementById('progress-fill');
 | 
						|
    const progressText = document.getElementById('progress-text');
 | 
						|
    
 | 
						|
    const steps = [
 | 
						|
        { progress: 10, text: '验证店铺数据...' },
 | 
						|
        { progress: 25, text: '备份现有设置...' },
 | 
						|
        { progress: 40, text: '应用等级设置...' },
 | 
						|
        { progress: 60, text: '更新会员等级...' },
 | 
						|
        { progress: 80, text: '发送通知消息...' },
 | 
						|
        { progress: 95, text: '清理缓存数据...' },
 | 
						|
        { progress: 100, text: '操作完成!' }
 | 
						|
    ];
 | 
						|
    
 | 
						|
    let currentStep = 0;
 | 
						|
    
 | 
						|
    const updateProgress = () => {
 | 
						|
        if (currentStep < steps.length) {
 | 
						|
            const step = steps[currentStep];
 | 
						|
            progressFill.style.width = step.progress + '%';
 | 
						|
            progressText.textContent = step.text;
 | 
						|
            
 | 
						|
            currentStep++;
 | 
						|
            
 | 
						|
            // 模拟不同步骤的处理时间
 | 
						|
            const delay = currentStep === steps.length ? 1000 : Math.random() * 1000 + 500;
 | 
						|
            setTimeout(updateProgress, delay);
 | 
						|
        } else {
 | 
						|
            // 提交完成
 | 
						|
            onSubmitComplete();
 | 
						|
        }
 | 
						|
    };
 | 
						|
    
 | 
						|
    updateProgress();
 | 
						|
}
 | 
						|
 | 
						|
// 提交完成处理
 | 
						|
function onSubmitComplete() {
 | 
						|
    // 清理存储的数据
 | 
						|
    sessionStorage.removeItem('batchEditSelectedShops');
 | 
						|
    sessionStorage.removeItem('batchEditLevelData');
 | 
						|
    
 | 
						|
    // 显示成功消息
 | 
						|
    const shopCount = selectedShops.length;
 | 
						|
    const totalMembers = selectedShops.reduce((sum, shop) => sum + shop.memberCount, 0);
 | 
						|
    
 | 
						|
    showNotification(
 | 
						|
        `批量设置成功!已为 ${shopCount} 个店铺的 ${totalMembers.toLocaleString()} 名会员应用新的等级设置。`, 
 | 
						|
        'success',
 | 
						|
        5000
 | 
						|
    );
 | 
						|
    
 | 
						|
    // 延迟跳转回等级设置主页
 | 
						|
    setTimeout(() => {
 | 
						|
        navigateTo('level-settings.html');
 | 
						|
    }, 3000);
 | 
						|
}
 | 
						|
 | 
						|
// 生成操作日志(用于后续可能的撤销功能)
 | 
						|
function generateOperationLog() {
 | 
						|
    const operationLog = {
 | 
						|
        timestamp: new Date().toISOString(),
 | 
						|
        operation: 'batch_level_edit',
 | 
						|
        affectedShops: selectedShops.map(shop => ({
 | 
						|
            shopId: shop.id,
 | 
						|
            shopName: shop.name,
 | 
						|
            beforeLevels: shop.levels,
 | 
						|
            afterLevels: levelData.map(level => level.level),
 | 
						|
            memberCount: shop.memberCount
 | 
						|
        })),
 | 
						|
        newLevelSettings: levelData,
 | 
						|
        summary: {
 | 
						|
            shopCount: selectedShops.length,
 | 
						|
            totalMembers: selectedShops.reduce((sum, shop) => sum + shop.memberCount, 0)
 | 
						|
        }
 | 
						|
    };
 | 
						|
    
 | 
						|
    // 在实际项目中,这里会将日志发送到服务器
 | 
						|
    console.log('操作日志:', operationLog);
 | 
						|
    
 | 
						|
    return operationLog;
 | 
						|
}
 | 
						|
 | 
						|
// 导出函数到全局
 | 
						|
window.previousStep = previousStep;
 | 
						|
window.confirmSubmit = confirmSubmit; |