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