181 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			181 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| 
								 | 
							
								// 批量编辑第一步 - 店铺选择页面
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let shopList = [
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        id: 'shop_001',
							 | 
						||
| 
								 | 
							
								        name: '时尚服装店',
							 | 
						||
| 
								 | 
							
								        enabled: true,
							 | 
						||
| 
								 | 
							
								        levels: ['lv1', 'lv2', 'lv3', 'lv4'],
							 | 
						||
| 
								 | 
							
								        memberCount: 1250
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        id: 'shop_002',
							 | 
						||
| 
								 | 
							
								        name: '数码电子城',
							 | 
						||
| 
								 | 
							
								        enabled: false,
							 | 
						||
| 
								 | 
							
								        levels: ['lv1', 'lv2', 'lv3'],
							 | 
						||
| 
								 | 
							
								        memberCount: 850
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        id: 'shop_003',
							 | 
						||
| 
								 | 
							
								        name: '美食餐厅',
							 | 
						||
| 
								 | 
							
								        enabled: true,
							 | 
						||
| 
								 | 
							
								        levels: ['lv1', 'lv2', 'lv3', 'lv4'],
							 | 
						||
| 
								 | 
							
								        memberCount: 2100
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        id: 'shop_004',
							 | 
						||
| 
								 | 
							
								        name: '家居生活馆',
							 | 
						||
| 
								 | 
							
								        enabled: false,
							 | 
						||
| 
								 | 
							
								        levels: ['lv1', 'lv2'],
							 | 
						||
| 
								 | 
							
								        memberCount: 650
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        id: 'shop_005',
							 | 
						||
| 
								 | 
							
								        name: '运动健身店',
							 | 
						||
| 
								 | 
							
								        enabled: true,
							 | 
						||
| 
								 | 
							
								        levels: ['lv1', 'lv2', 'lv3', 'lv4'],
							 | 
						||
| 
								 | 
							
								        memberCount: 980
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        id: 'shop_006',
							 | 
						||
| 
								 | 
							
								        name: '母婴用品店',
							 | 
						||
| 
								 | 
							
								        enabled: true,
							 | 
						||
| 
								 | 
							
								        levels: ['lv1', 'lv2', 'lv3'],
							 | 
						||
| 
								 | 
							
								        memberCount: 750
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        id: 'shop_007',
							 | 
						||
| 
								 | 
							
								        name: '图书文具店',
							 | 
						||
| 
								 | 
							
								        enabled: false,
							 | 
						||
| 
								 | 
							
								        levels: ['lv1', 'lv2'],
							 | 
						||
| 
								 | 
							
								        memberCount: 420
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        id: 'shop_008',
							 | 
						||
| 
								 | 
							
								        name: '宠物用品店',
							 | 
						||
| 
								 | 
							
								        enabled: true,
							 | 
						||
| 
								 | 
							
								        levels: ['lv1', 'lv2', 'lv3'],
							 | 
						||
| 
								 | 
							
								        memberCount: 380
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let selectedShops = [];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 页面初始化
							 | 
						||
| 
								 | 
							
								document.addEventListener('DOMContentLoaded', function() {
							 | 
						||
| 
								 | 
							
								    renderShopList();
							 | 
						||
| 
								 | 
							
								    updateSelectionSummary();
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 渲染店铺列表
							 | 
						||
| 
								 | 
							
								function renderShopList() {
							 | 
						||
| 
								 | 
							
								    const shopListContainer = document.getElementById('shop-list');
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    const html = shopList.map(shop => `
							 | 
						||
| 
								 | 
							
								        <div class="shop-card ${selectedShops.includes(shop.id) ? 'selected' : ''}" 
							 | 
						||
| 
								 | 
							
								             onclick="toggleShop('${shop.id}')">
							 | 
						||
| 
								 | 
							
								            <div class="checkbox">
							 | 
						||
| 
								 | 
							
								                <input type="checkbox" ${selectedShops.includes(shop.id) ? 'checked' : ''} 
							 | 
						||
| 
								 | 
							
								                       onchange="toggleShop('${shop.id}')" onclick="event.stopPropagation()">
							 | 
						||
| 
								 | 
							
								            </div>
							 | 
						||
| 
								 | 
							
								            <div class="shop-info">
							 | 
						||
| 
								 | 
							
								                <div class="shop-name">${shop.name}</div>
							 | 
						||
| 
								 | 
							
								                <div class="shop-status">
							 | 
						||
| 
								 | 
							
								                    <span class="status-dot ${shop.enabled ? 'enabled' : 'disabled'}"></span>
							 | 
						||
| 
								 | 
							
								                    ${shop.enabled ? '会员功能已启用' : '会员功能未启用'}
							 | 
						||
| 
								 | 
							
								                    <span style="margin-left: 10px;">会员数: ${shop.memberCount}</span>
							 | 
						||
| 
								 | 
							
								                </div>
							 | 
						||
| 
								 | 
							
								                <div class="shop-levels">当前等级: ${shop.levels.join(', ')}</div>
							 | 
						||
| 
								 | 
							
								            </div>
							 | 
						||
| 
								 | 
							
								        </div>
							 | 
						||
| 
								 | 
							
								    `).join('');
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    shopListContainer.innerHTML = html;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 切换店铺选择状态
							 | 
						||
| 
								 | 
							
								function toggleShop(shopId) {
							 | 
						||
| 
								 | 
							
								    const index = selectedShops.indexOf(shopId);
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    if (index === -1) {
							 | 
						||
| 
								 | 
							
								        selectedShops.push(shopId);
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        selectedShops.splice(index, 1);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    renderShopList();
							 | 
						||
| 
								 | 
							
								    updateSelectionSummary();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 全选
							 | 
						||
| 
								 | 
							
								function selectAll() {
							 | 
						||
| 
								 | 
							
								    selectedShops = shopList.map(shop => shop.id);
							 | 
						||
| 
								 | 
							
								    renderShopList();
							 | 
						||
| 
								 | 
							
								    updateSelectionSummary();
							 | 
						||
| 
								 | 
							
								    showNotification('已全选所有店铺', 'info');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 全不选
							 | 
						||
| 
								 | 
							
								function selectNone() {
							 | 
						||
| 
								 | 
							
								    selectedShops = [];
							 | 
						||
| 
								 | 
							
								    renderShopList();
							 | 
						||
| 
								 | 
							
								    updateSelectionSummary();
							 | 
						||
| 
								 | 
							
								    showNotification('已取消选择所有店铺', 'info');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 反选
							 | 
						||
| 
								 | 
							
								function selectReverse() {
							 | 
						||
| 
								 | 
							
								    const allShopIds = shopList.map(shop => shop.id);
							 | 
						||
| 
								 | 
							
								    selectedShops = allShopIds.filter(id => !selectedShops.includes(id));
							 | 
						||
| 
								 | 
							
								    renderShopList();
							 | 
						||
| 
								 | 
							
								    updateSelectionSummary();
							 | 
						||
| 
								 | 
							
								    showNotification('已反选店铺', 'info');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 仅选择已启用会员功能的店铺
							 | 
						||
| 
								 | 
							
								function selectEnabled() {
							 | 
						||
| 
								 | 
							
								    selectedShops = shopList.filter(shop => shop.enabled).map(shop => shop.id);
							 | 
						||
| 
								 | 
							
								    renderShopList();
							 | 
						||
| 
								 | 
							
								    updateSelectionSummary();
							 | 
						||
| 
								 | 
							
								    const count = selectedShops.length;
							 | 
						||
| 
								 | 
							
								    showNotification(`已选择 ${count} 个启用会员功能的店铺`, 'info');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 更新选择摘要
							 | 
						||
| 
								 | 
							
								function updateSelectionSummary() {
							 | 
						||
| 
								 | 
							
								    const count = selectedShops.length;
							 | 
						||
| 
								 | 
							
								    document.getElementById('selected-count').textContent = count;
							 | 
						||
| 
								 | 
							
								    document.getElementById('btn-count').textContent = count;
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    const nextBtn = document.getElementById('next-btn');
							 | 
						||
| 
								 | 
							
								    if (count > 0) {
							 | 
						||
| 
								 | 
							
								        nextBtn.disabled = false;
							 | 
						||
| 
								 | 
							
								        nextBtn.classList.remove('btn-disabled');
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        nextBtn.disabled = true;
							 | 
						||
| 
								 | 
							
								        nextBtn.classList.add('btn-disabled');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 下一步
							 | 
						||
| 
								 | 
							
								function nextStep() {
							 | 
						||
| 
								 | 
							
								    if (selectedShops.length === 0) {
							 | 
						||
| 
								 | 
							
								        showNotification('请至少选择一个店铺', 'warning');
							 | 
						||
| 
								 | 
							
								        return;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    // 将选中的店铺信息存储到sessionStorage
							 | 
						||
| 
								 | 
							
								    const selectedShopData = shopList.filter(shop => selectedShops.includes(shop.id));
							 | 
						||
| 
								 | 
							
								    sessionStorage.setItem('batchEditSelectedShops', JSON.stringify(selectedShopData));
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    // 跳转到第二步
							 | 
						||
| 
								 | 
							
								    navigateTo('batch-edit-step2.html');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 导出函数到全局
							 | 
						||
| 
								 | 
							
								window.toggleShop = toggleShop;
							 | 
						||
| 
								 | 
							
								window.selectAll = selectAll;
							 | 
						||
| 
								 | 
							
								window.selectNone = selectNone;
							 | 
						||
| 
								 | 
							
								window.selectReverse = selectReverse;
							 | 
						||
| 
								 | 
							
								window.selectEnabled = selectEnabled;
							 | 
						||
| 
								 | 
							
								window.nextStep = nextStep;
							 |