141 lines
4.4 KiB
JavaScript
141 lines
4.4 KiB
JavaScript
|
|
// 等级设置页面 - H5版本
|
|||
|
|
|
|||
|
|
let selectedStalls = [];
|
|||
|
|
let dropdownOpen = false;
|
|||
|
|
|
|||
|
|
// 切换摊位下拉框
|
|||
|
|
function toggleStallDropdown() {
|
|||
|
|
const dropdown = document.getElementById('stall-dropdown-list');
|
|||
|
|
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.contains(event.target) && !button.contains(event.target)) {
|
|||
|
|
dropdown.classList.add('hidden');
|
|||
|
|
dropdownOpen = false;
|
|||
|
|
document.removeEventListener('click', closeDropdownOnClickOutside);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 选择摊位
|
|||
|
|
function selectStall(stallName) {
|
|||
|
|
const checkbox = event.target.previousElementSibling || event.target.querySelector('input');
|
|||
|
|
|
|||
|
|
if (checkbox) {
|
|||
|
|
checkbox.checked = !checkbox.checked;
|
|||
|
|
|
|||
|
|
if (checkbox.checked && !selectedStalls.includes(stallName)) {
|
|||
|
|
selectedStalls.push(stallName);
|
|||
|
|
} else if (!checkbox.checked && selectedStalls.includes(stallName)) {
|
|||
|
|
selectedStalls = selectedStalls.filter(stall => stall !== stallName);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
updateSelectedStallsDisplay();
|
|||
|
|
updateDropdownText();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 更新下拉框按钮文字
|
|||
|
|
function updateDropdownText() {
|
|||
|
|
const button = document.getElementById('stall-dropdown-btn');
|
|||
|
|
if (selectedStalls.length === 0) {
|
|||
|
|
button.textContent = '请选择摊位名称...';
|
|||
|
|
} else if (selectedStalls.length === 1) {
|
|||
|
|
button.textContent = selectedStalls[0];
|
|||
|
|
} else {
|
|||
|
|
button.textContent = `已选择 ${selectedStalls.length} 个摊位`;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 更新已选摊位显示
|
|||
|
|
function updateSelectedStallsDisplay() {
|
|||
|
|
const container = document.getElementById('selected-stalls');
|
|||
|
|
container.innerHTML = '';
|
|||
|
|
|
|||
|
|
selectedStalls.forEach(stall => {
|
|||
|
|
const tag = document.createElement('span');
|
|||
|
|
tag.className = 'filter-tag';
|
|||
|
|
tag.innerHTML = `${stall} <span class="close" onclick="removeStall('${stall}')">×</span>`;
|
|||
|
|
container.appendChild(tag);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 移除选中的摊位
|
|||
|
|
function removeStall(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;
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
updateSelectedStallsDisplay();
|
|||
|
|
updateDropdownText();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 查询摊位
|
|||
|
|
function queryStalls() {
|
|||
|
|
const tableRows = document.querySelectorAll('#stalls-table-body 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');
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 批量编辑
|
|||
|
|
function batchEdit() {
|
|||
|
|
// 跳转到批量编辑第一步:店铺选择页面
|
|||
|
|
navigateTo('batch-edit-step1.html');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 查看等级明细
|
|||
|
|
function viewLevelDetail(stallName) {
|
|||
|
|
const encodedName = encodeURIComponent(stallName);
|
|||
|
|
navigateTo(`level-detail.html?stall=${encodedName}`);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 导出函数到全局
|
|||
|
|
window.toggleStallDropdown = toggleStallDropdown;
|
|||
|
|
window.selectStall = selectStall;
|
|||
|
|
window.removeStall = removeStall;
|
|||
|
|
window.queryStalls = queryStalls;
|
|||
|
|
window.batchEdit = batchEdit;
|
|||
|
|
window.viewLevelDetail = viewLevelDetail;
|