dm-design/web/merchant/js/level-settings.js

115 lines
3.7 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 initLevelSettings() {
console.log('等级设置页面已初始化');
// 设置外部点击监听器
setupOutsideClickListener();
}
// 切换下拉框显示/隐藏
function toggleDropdown() {
const options = document.getElementById('stallOptions');
const arrow = document.querySelector('.multiselect-arrow');
if (options && arrow) {
if (options.classList.contains('show')) {
options.classList.remove('show');
arrow.classList.remove('rotated');
} else {
options.classList.add('show');
arrow.classList.add('rotated');
}
}
}
// 全选/取消全选功能
function selectAll(checkbox) {
const allCheckboxes = document.querySelectorAll('#stallOptions input[type="checkbox"]:not([value="all"])');
if (checkbox.checked) {
allCheckboxes.forEach(cb => cb.checked = true);
} else {
allCheckboxes.forEach(cb => cb.checked = false);
}
updateSelection();
}
// 更新选择状态和显示文本
function updateSelection() {
const allCheckbox = document.querySelector('input[value="all"]');
const otherCheckboxes = document.querySelectorAll('#stallOptions input[type="checkbox"]:not([value="all"])');
const selectedText = document.querySelector('.multiselect-selected');
if (!allCheckbox || !selectedText) return;
const checkedBoxes = Array.from(otherCheckboxes).filter(cb => cb.checked);
const allChecked = checkedBoxes.length === otherCheckboxes.length;
// 更新"全部"复选框状态
allCheckbox.checked = allChecked;
// 更新显示文本
if (checkedBoxes.length === 0) {
selectedText.textContent = '请选择摊位名称...';
} else if (allChecked) {
selectedText.textContent = '全部';
} else if (checkedBoxes.length === 1) {
selectedText.textContent = checkedBoxes[0].value;
} else {
selectedText.textContent = `已选择${checkedBoxes.length}个摊位`;
}
}
// 点击外部关闭下拉框的事件监听器
function setupOutsideClickListener() {
document.addEventListener('click', function(event) {
const container = document.querySelector('.multiselect-container');
if (container && !container.contains(event.target)) {
const options = document.getElementById('stallOptions');
const arrow = document.querySelector('.multiselect-arrow');
if (options && arrow) {
options.classList.remove('show');
arrow.classList.remove('rotated');
}
}
});
}
// 页面清理函数(当页面被关闭时调用)
function cleanupLevelSettings() {
// 移除事件监听器等清理工作
console.log('等级设置页面已清理');
}
// 打开等级明细页面
function openLevelDetails(merchantName) {
// 打开新的tab页面显示该商户的等级明细
const tabTitle = `${merchantName} - 等级设置明细`;
if (typeof window.openTab === 'function') {
window.openTab(tabTitle, 'level-details');
} else {
console.error('openTab函数未找到');
}
}
// 打开批量等级编辑页面
function openBatchLevelEdit() {
const tabTitle = '批量会员等级编辑';
if (typeof window.openTab === 'function') {
window.openTab(tabTitle, 'batch-level-edit');
} else {
console.error('openTab函数未找到');
}
}
// 将函数暴露到全局作用域以便HTML中的onclick可以调用
window.toggleDropdown = toggleDropdown;
window.selectAll = selectAll;
window.updateSelection = updateSelection;
window.openLevelDetails = openLevelDetails;
window.openBatchLevelEdit = openBatchLevelEdit;