175 lines
5.3 KiB
JavaScript
175 lines
5.3 KiB
JavaScript
/**
|
||
* 批量会员等级编辑功能模块
|
||
* 提供批量编辑多个摊位的会员等级配置
|
||
*/
|
||
|
||
// 页面初始化函数
|
||
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; |