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

175 lines
5.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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