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;
|