综述: 优化分销商管理页面交互功能和菜单搜索功能
- 在index.html中为分销管理添加了二级子菜单结构,改善了用户界面 - 增强了菜单项展开/收起的控制逻辑,提供了更好的交互体验 - 实现了菜单搜索功能,支持按文本内容过滤菜单项 - 添加了JavaScript错误监听器用于调试和错误追踪 - 修改了toggleSubmenu函数,优化了菜单展开/收起的行为控制
This commit is contained in:
parent
e2c7950e5f
commit
bc240f414c
|
|
@ -156,6 +156,10 @@
|
||||||
transform: rotate(90deg);
|
transform: rotate(90deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.submenu-item.expanded .menu-arrow {
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
|
||||||
.submenu {
|
.submenu {
|
||||||
background-color: #fafafa;
|
background-color: #fafafa;
|
||||||
display: none;
|
display: none;
|
||||||
|
|
@ -165,6 +169,39 @@
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.submenu-item {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submenu-item.expanded > .submenu {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submenu .submenu {
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 确保二级子菜单也能正确显示 */
|
||||||
|
.menu-item.expanded .submenu-item.expanded > .submenu,
|
||||||
|
.submenu-item.expanded > .submenu {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 特别为分销管理的嵌套子菜单提供显示规则 */
|
||||||
|
.menu-item.expanded .submenu .submenu-item.expanded .submenu {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 确保在品牌管理展开的情况下,分销管理的子菜单能正确显示 */
|
||||||
|
.menu-item.expanded .submenu .submenu-item .submenu {
|
||||||
|
display: none; /* 默认隐藏 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-item.expanded .submenu .submenu-item.expanded .submenu {
|
||||||
|
display: block; /* 只有在展开时才显示 */
|
||||||
|
}
|
||||||
|
|
||||||
.submenu-link {
|
.submenu-link {
|
||||||
padding: 8px 20px 8px 46px;
|
padding: 8px 20px 8px 46px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
|
@ -286,7 +323,7 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="menu-item">
|
<li class="menu-item">
|
||||||
<div class="menu-link" onclick="toggleSubmenu(this)">
|
<div class="menu-link" onclick="toggleTopLevelSubmenu(this)">
|
||||||
<span class="menu-icon">
|
<span class="menu-icon">
|
||||||
<i class="fas fa-user-cog"></i>
|
<i class="fas fa-user-cog"></i>
|
||||||
</span>
|
</span>
|
||||||
|
|
@ -308,7 +345,7 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="menu-item">
|
<li class="menu-item">
|
||||||
<div class="menu-link" onclick="toggleSubmenu(this)">
|
<div class="menu-link" onclick="toggleTopLevelSubmenu(this)">
|
||||||
<span class="menu-icon">
|
<span class="menu-icon">
|
||||||
<i class="fas fa-clipboard-list"></i>
|
<i class="fas fa-clipboard-list"></i>
|
||||||
</span>
|
</span>
|
||||||
|
|
@ -343,7 +380,7 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="menu-item">
|
<li class="menu-item">
|
||||||
<div class="menu-link" onclick="toggleSubmenu(this)">
|
<div class="menu-link" onclick="toggleTopLevelSubmenu(this)">
|
||||||
<span class="menu-icon">
|
<span class="menu-icon">
|
||||||
<i class="fas fa-analytics"></i>
|
<i class="fas fa-analytics"></i>
|
||||||
</span>
|
</span>
|
||||||
|
|
@ -370,7 +407,7 @@
|
||||||
|
|
||||||
|
|
||||||
<li class="menu-item">
|
<li class="menu-item">
|
||||||
<div class="menu-link" onclick="toggleSubmenu(this)">
|
<div class="menu-link" onclick="toggleTopLevelSubmenu(this)">
|
||||||
<span class="menu-icon">
|
<span class="menu-icon">
|
||||||
<i class="fas fa-users"></i>
|
<i class="fas fa-users"></i>
|
||||||
</span>
|
</span>
|
||||||
|
|
@ -393,7 +430,7 @@
|
||||||
|
|
||||||
|
|
||||||
<li class="menu-item">
|
<li class="menu-item">
|
||||||
<div class="menu-link" onclick="toggleSubmenu(this)">
|
<div class="menu-link" onclick="toggleTopLevelSubmenu(this)">
|
||||||
<span class="menu-icon">
|
<span class="menu-icon">
|
||||||
<i class="fas fa-file-alt"></i>
|
<i class="fas fa-file-alt"></i>
|
||||||
</span>
|
</span>
|
||||||
|
|
@ -419,7 +456,7 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="menu-item">
|
<li class="menu-item">
|
||||||
<div class="menu-link" onclick="toggleSubmenu(this)">
|
<div class="menu-link" onclick="toggleTopLevelSubmenu(this)">
|
||||||
<span class="menu-icon">
|
<span class="menu-icon">
|
||||||
<i class="fas fa-award"></i>
|
<i class="fas fa-award"></i>
|
||||||
</span>
|
</span>
|
||||||
|
|
@ -437,14 +474,25 @@
|
||||||
<span class="submenu-icon"></span>
|
<span class="submenu-icon"></span>
|
||||||
品牌市场订单
|
品牌市场订单
|
||||||
</a>
|
</a>
|
||||||
<a href="#" class="submenu-link" onclick="loadContent('./品牌管理/分销商管理.html', this)">
|
<div class="submenu-item">
|
||||||
<span class="submenu-icon"></span>
|
<div class="submenu-link" onclick="toggleSubmenu(this, event);">
|
||||||
分销商管理
|
<span class="submenu-icon"></span>
|
||||||
</a>
|
<span class="menu-text">分销管理</span>
|
||||||
<a href="#" class="submenu-link" onclick="loadContent('./品牌管理/分销订单与佣金管理.html', this)">
|
<span class="menu-arrow">
|
||||||
<span class="submenu-icon"></span>
|
<i class="fas fa-chevron-right"></i>
|
||||||
分销订单与佣金管理
|
</span>
|
||||||
</a>
|
</div>
|
||||||
|
<div class="submenu">
|
||||||
|
<a href="#" class="submenu-link" onclick="loadContent('./品牌管理/分销商管理.html', this);" style="padding-left: 70px;">
|
||||||
|
<span class="submenu-icon"></span>
|
||||||
|
分销商管理
|
||||||
|
</a>
|
||||||
|
<a href="#" class="submenu-link" onclick="loadContent('./品牌管理/分销订单与佣金管理.html', this);" style="padding-left: 70px;">
|
||||||
|
<span class="submenu-icon"></span>
|
||||||
|
分销订单与佣金管理
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
@ -467,10 +515,58 @@
|
||||||
sidebar.classList.toggle('open');
|
sidebar.classList.toggle('open');
|
||||||
}
|
}
|
||||||
|
|
||||||
// 切换子菜单展开/收起
|
// 切换顶级菜单展开/收起
|
||||||
function toggleSubmenu(element) {
|
function toggleTopLevelSubmenu(element) {
|
||||||
|
console.log('toggleTopLevelSubmenu called', element);
|
||||||
const menuItem = element.parentElement;
|
const menuItem = element.parentElement;
|
||||||
menuItem.classList.toggle('expanded');
|
console.log('Parent menu item:', menuItem);
|
||||||
|
|
||||||
|
// 切换 expanded 类
|
||||||
|
const isExpanded = menuItem.classList.toggle('expanded');
|
||||||
|
console.log('Menu item expanded state:', isExpanded);
|
||||||
|
|
||||||
|
// 阻止事件冒泡,防止触发父级菜单的点击事件
|
||||||
|
if (event && event.stopPropagation) {
|
||||||
|
event.stopPropagation();
|
||||||
|
} else if (window.event) {
|
||||||
|
window.event.cancelBubble = true;
|
||||||
|
}
|
||||||
|
console.log('Event stopped from propagating');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 切换子菜单展开/收起 - 适用于所有层级
|
||||||
|
function toggleSubmenu(element, event) {
|
||||||
|
console.log('toggleSubmenu called', element);
|
||||||
|
const parentElement = element.parentElement;
|
||||||
|
console.log('Parent element:', parentElement);
|
||||||
|
|
||||||
|
let targetElement;
|
||||||
|
|
||||||
|
// Check if this is a direct submenu item or nested submenu item
|
||||||
|
if (parentElement.classList.contains('submenu-item')) {
|
||||||
|
targetElement = parentElement;
|
||||||
|
console.log('Found submenu-item element');
|
||||||
|
} else {
|
||||||
|
targetElement = parentElement;
|
||||||
|
console.log('Using parent element directly');
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('Target element before toggle:', targetElement);
|
||||||
|
console.log('Target element classList:', targetElement.classList);
|
||||||
|
|
||||||
|
// Toggle expanded class
|
||||||
|
const isExpanded = targetElement.classList.toggle('expanded');
|
||||||
|
console.log('Target element expanded state after toggle:', isExpanded);
|
||||||
|
console.log('Target element classList after toggle:', targetElement.classList);
|
||||||
|
|
||||||
|
// Prevent event bubbling, to avoid triggering parent menu clicks
|
||||||
|
if (event && event.stopPropagation) {
|
||||||
|
event.stopPropagation();
|
||||||
|
console.log('Event stopped from propagating');
|
||||||
|
} else if (window.event) {
|
||||||
|
window.event.cancelBubble = true;
|
||||||
|
console.log('Event cancelBubble set to true');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 加载内容到iframe
|
// 加载内容到iframe
|
||||||
|
|
@ -510,17 +606,22 @@
|
||||||
|
|
||||||
// 菜单搜索功能
|
// 菜单搜索功能
|
||||||
document.querySelector('.search-input').addEventListener('input', function(e) {
|
document.querySelector('.search-input').addEventListener('input', function(e) {
|
||||||
|
console.log('Search input event triggered', e.target.value);
|
||||||
const searchText = e.target.value.toLowerCase();
|
const searchText = e.target.value.toLowerCase();
|
||||||
const menuItems = document.querySelectorAll('.menu-item');
|
const menuItems = document.querySelectorAll('.menu-item');
|
||||||
|
console.log('Found', menuItems.length, 'menu items');
|
||||||
|
|
||||||
menuItems.forEach(item => {
|
menuItems.forEach(item => {
|
||||||
const menuText = item.querySelector('.menu-text');
|
const menuText = item.querySelector('.menu-text');
|
||||||
if (menuText) {
|
if (menuText) {
|
||||||
const text = menuText.textContent.toLowerCase();
|
const text = menuText.textContent.toLowerCase();
|
||||||
|
console.log('Checking menu text:', text);
|
||||||
if (text.includes(searchText) || searchText === '') {
|
if (text.includes(searchText) || searchText === '') {
|
||||||
item.style.display = 'block';
|
item.style.display = 'block';
|
||||||
|
console.log('Display set to block for:', text);
|
||||||
} else {
|
} else {
|
||||||
item.style.display = 'none';
|
item.style.display = 'none';
|
||||||
|
console.log('Display set to none for:', text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -540,6 +641,16 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
// 添加错误监听器以便调试
|
||||||
|
window.addEventListener('error', function(e) {
|
||||||
|
console.error('JavaScript Error:', e.error);
|
||||||
|
console.error('Error Message:', e.message);
|
||||||
|
console.error('Error Filename:', e.filename);
|
||||||
|
console.error('Error Line Number:', e.lineno);
|
||||||
|
console.error('Error Column Number:', e.colno);
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('Page loaded and scripts initialized');
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Loading…
Reference in New Issue