dm-design/web/merchant/js/batch-level-edit.js

175 lines
5.3 KiB
JavaScript
Raw Normal View History

2025-08-01 08:40:17 +00:00
/**
* 批量会员等级编辑功能模块
* 提供批量编辑多个摊位的会员等级配置
*/
// 页面初始化函数
function initBatchLevelEdit() {
console.log('批量等级编辑页面已初始化');
// 初始化摊位选择状态
updateStallSelection();
// 绑定表单事件
bindFormEvents();
}
// 绑定表单事件
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 config = [];
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
};
config.push(levelData);
});
return config;
}
// 添加优惠券(重用现有功能)
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 cleanupBatchLevelEdit() {
console.log('清理批量等级编辑页面');
// 清理事件监听器等资源
}
// 暴露到全局作用域供HTML调用
window.selectAllStalls = selectAllStalls;
window.updateStallSelection = updateStallSelection;
window.saveBatchLevelEdit = saveBatchLevelEdit;
window.addCoupon = addCoupon;