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