// 等级设置页面的Tab系统JavaScript逻辑
// 初始化页面
document.addEventListener('DOMContentLoaded', function() {
initializeSidebar();
initializeSidebarSearch();
// 默认打开等级设置Tab
openLevelSettingsTab();
});
// 打开等级设置Tab(从member-tabs.js调用)
function openLevelSettingsTab() {
if (typeof memberTabManager !== 'undefined') {
memberTabManager.showDefaultContent();
// 创建等级设置tab
const content = generateLevelSettingsContent();
memberTabManager.createTab('level-settings', '等级设置', content, false);
}
}
// 生成等级设置表格内容
function generateLevelSettingsContent() {
return `
等级设置
|
摊位名称
|
是否启用会员
|
会员等级
|
操作
|
| 时尚服装店 |
|
lv1, lv2, lv3, lv4 |
|
| 数码电子城 |
|
lv1, lv2, lv3 |
|
| 美食餐厅 |
|
lv1, lv2, lv3, lv4 |
|
| 家居生活馆 |
|
lv1, lv2 |
|
| 运动健身店 |
|
lv1, lv2, lv3, lv4 |
|
`;
}
// 摊位筛选相关功能
let selectedStalls = [];
let dropdownOpen = false;
function toggleStallDropdown() {
const dropdown = document.getElementById('stall-dropdown-list');
const button = document.getElementById('stall-dropdown-btn');
if (dropdown && button) {
dropdownOpen = !dropdownOpen;
if (dropdownOpen) {
dropdown.classList.remove('hidden');
// 添加点击外部关闭功能
setTimeout(() => {
document.addEventListener('click', closeDropdownOnClickOutside);
}, 0);
} else {
dropdown.classList.add('hidden');
document.removeEventListener('click', closeDropdownOnClickOutside);
}
}
}
function closeDropdownOnClickOutside(event) {
const dropdown = document.getElementById('stall-dropdown-list');
const button = document.getElementById('stall-dropdown-btn');
if (dropdown && button && !dropdown.contains(event.target) && !button.contains(event.target)) {
dropdown.classList.add('hidden');
dropdownOpen = false;
document.removeEventListener('click', closeDropdownOnClickOutside);
}
}
function updateSelectedStalls() {
const checkboxes = document.querySelectorAll('#stall-dropdown-list input[type="checkbox"]');
selectedStalls = [];
checkboxes.forEach(checkbox => {
if (checkbox.checked) {
selectedStalls.push(checkbox.value);
}
});
updateDropdownText();
updateSelectedStallsDisplay();
}
function updateDropdownText() {
const dropdownText = document.getElementById('dropdown-text');
if (dropdownText) {
if (selectedStalls.length === 0) {
dropdownText.textContent = '请选择摊位名称...';
} else if (selectedStalls.length === 1) {
dropdownText.textContent = selectedStalls[0];
} else {
dropdownText.textContent = `已选择 ${selectedStalls.length} 个摊位`;
}
}
}
function updateSelectedStallsDisplay() {
const selectedDiv = document.getElementById('selected-stalls');
if (!selectedDiv) return;
selectedDiv.innerHTML = '';
selectedStalls.forEach(stall => {
const tag = document.createElement('span');
tag.className = 'inline-flex items-center px-2 py-1 rounded-md text-xs font-medium bg-green-100 text-green-800';
tag.innerHTML = `
${stall}
`;
selectedDiv.appendChild(tag);
});
}
function removeSelectedStall(stallName) {
selectedStalls = selectedStalls.filter(stall => stall !== stallName);
// 更新checkbox状态
const checkboxes = document.querySelectorAll('#stall-dropdown-list input[type="checkbox"]');
checkboxes.forEach(checkbox => {
if (checkbox.value === stallName) {
checkbox.checked = false;
}
});
updateDropdownText();
updateSelectedStallsDisplay();
}
function filterStallTable() {
const tableRows = document.querySelectorAll('#tab-content-area tbody tr');
if (selectedStalls.length === 0) {
// 如果没有选择任何摊位,显示所有行
tableRows.forEach(row => {
row.style.display = '';
});
showNotification('已显示所有摊位', 'info');
} else {
// 根据选择的摊位筛选表格行
let visibleCount = 0;
tableRows.forEach(row => {
const stallNameCell = row.querySelector('td:first-child');
if (stallNameCell) {
const stallName = stallNameCell.textContent.trim();
if (selectedStalls.includes(stallName)) {
row.style.display = '';
visibleCount++;
} else {
row.style.display = 'none';
}
}
});
showNotification(`已筛选显示 ${visibleCount} 个摊位`, 'success');
}
}
// 导出函数
window.openLevelSettingsTab = openLevelSettingsTab;
window.generateLevelSettingsContent = generateLevelSettingsContent;
window.openBatchLevelEditTab = openBatchLevelEditTab;
window.toggleStallDropdown = toggleStallDropdown;
window.updateSelectedStalls = updateSelectedStalls;
window.removeSelectedStall = removeSelectedStall;
window.filterStallTable = filterStallTable;