690 lines
25 KiB
HTML
690 lines
25 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>大妈集市商户端</title>
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
||
<style>
|
||
* {
|
||
margin: 0;
|
||
padding: 0;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
body {
|
||
font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", 微软雅黑, Arial, sans-serif;
|
||
background-color: #f5f5f5;
|
||
color: #333;
|
||
}
|
||
|
||
/* 顶部导航栏 */
|
||
.top-nav {
|
||
background-color: rgb(9, 84, 43);
|
||
height: 50px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
padding: 0 20px;
|
||
color: white;
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
z-index: 1000;
|
||
}
|
||
|
||
.nav-brand {
|
||
font-size: 18px;
|
||
font-weight: 600;
|
||
color: white;
|
||
text-decoration: none;
|
||
}
|
||
|
||
.nav-left {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 15px;
|
||
}
|
||
|
||
.nav-right {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 15px;
|
||
}
|
||
|
||
.nav-icon {
|
||
width: 24px;
|
||
height: 24px;
|
||
cursor: pointer;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
color: white;
|
||
}
|
||
|
||
.nav-avatar {
|
||
width: 32px;
|
||
height: 32px;
|
||
border-radius: 50%;
|
||
background-color: #28a745;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
cursor: pointer;
|
||
font-size: 14px;
|
||
}
|
||
|
||
/* 侧边栏 */
|
||
.sidebar {
|
||
position: fixed;
|
||
left: 0;
|
||
top: 50px;
|
||
width: 200px;
|
||
height: calc(100vh - 50px);
|
||
background-color: white;
|
||
border-right: 1px solid #e8e8e8;
|
||
overflow-y: auto;
|
||
z-index: 999;
|
||
}
|
||
|
||
.menu-search {
|
||
padding: 15px;
|
||
border-bottom: 1px solid #f0f0f0;
|
||
}
|
||
|
||
.search-input {
|
||
width: 100%;
|
||
height: 32px;
|
||
padding: 0 10px;
|
||
border: 1px solid #d9d9d9;
|
||
border-radius: 4px;
|
||
font-size: 12px;
|
||
background-color: #fafafa;
|
||
}
|
||
|
||
.menu-list {
|
||
list-style: none;
|
||
padding: 0;
|
||
}
|
||
|
||
.menu-item {
|
||
border-bottom: 1px solid #f0f0f0;
|
||
}
|
||
|
||
.menu-link {
|
||
display: flex;
|
||
align-items: center;
|
||
padding: 12px 20px;
|
||
color: #666;
|
||
text-decoration: none;
|
||
font-size: 14px;
|
||
transition: all 0.3s;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.menu-link:hover {
|
||
background-color: #f5f5f5;
|
||
color: #1890ff;
|
||
}
|
||
|
||
.menu-link.active {
|
||
background-color: #e6f7ff;
|
||
color: #1890ff;
|
||
}
|
||
|
||
.menu-icon {
|
||
width: 16px;
|
||
height: 16px;
|
||
margin-right: 10px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-size: 12px;
|
||
}
|
||
|
||
.menu-text {
|
||
flex: 1;
|
||
}
|
||
|
||
.menu-arrow {
|
||
font-size: 12px;
|
||
transition: transform 0.3s;
|
||
}
|
||
|
||
.menu-item.expanded .menu-arrow {
|
||
transform: rotate(90deg);
|
||
}
|
||
|
||
.submenu-item.expanded .menu-arrow {
|
||
transform: rotate(90deg);
|
||
}
|
||
|
||
.submenu {
|
||
background-color: #fafafa;
|
||
display: none;
|
||
}
|
||
|
||
.menu-item.expanded .submenu {
|
||
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 {
|
||
padding: 8px 20px 8px 46px;
|
||
font-size: 13px;
|
||
color: #666;
|
||
display: block;
|
||
text-decoration: none;
|
||
transition: all 0.3s;
|
||
}
|
||
|
||
.submenu-link:hover {
|
||
background-color: #e6f7ff;
|
||
color: #1890ff;
|
||
}
|
||
|
||
.submenu-icon {
|
||
width: 6px;
|
||
height: 6px;
|
||
background-color: #ccc;
|
||
border-radius: 50%;
|
||
margin-right: 8px;
|
||
display: inline-block;
|
||
}
|
||
|
||
/* 主内容区域 */
|
||
.main-content {
|
||
margin-left: 200px;
|
||
margin-top: 50px;
|
||
height: calc(100vh - 50px);
|
||
background-color: white;
|
||
padding: 24px;
|
||
position: relative;
|
||
}
|
||
|
||
.content-placeholder, #contentFrame {
|
||
height: 100%;
|
||
}
|
||
|
||
.content-placeholder {
|
||
text-align: center;
|
||
color: #999;
|
||
font-size: 16px;
|
||
margin-top: 50px;
|
||
}
|
||
|
||
.breadcrumb {
|
||
margin-bottom: 20px;
|
||
padding: 10px 0;
|
||
border-bottom: 1px solid #f0f0f0;
|
||
font-size: 14px;
|
||
color: #666;
|
||
}
|
||
|
||
/* 响应式设计 */
|
||
@media (max-width: 768px) {
|
||
.sidebar {
|
||
transform: translateX(-100%);
|
||
transition: transform 0.3s;
|
||
}
|
||
|
||
.sidebar.open {
|
||
transform: translateX(0);
|
||
}
|
||
|
||
.main-content {
|
||
margin-left: 0;
|
||
}
|
||
|
||
.nav-toggle {
|
||
display: block;
|
||
}
|
||
}
|
||
|
||
.nav-toggle {
|
||
display: none;
|
||
background: none;
|
||
border: none;
|
||
color: white;
|
||
font-size: 18px;
|
||
cursor: pointer;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<!-- 顶部导航栏 -->
|
||
<nav class="top-nav">
|
||
<div class="nav-left">
|
||
<button class="nav-toggle" onclick="toggleSidebar()">
|
||
<i class="fas fa-bars"></i>
|
||
</button>
|
||
<a href="#" class="nav-brand">大妈集市商户端</a>
|
||
</div>
|
||
<div class="nav-right">
|
||
<div class="nav-icon">
|
||
<i class="fas fa-cog"></i>
|
||
</div>
|
||
<div class="nav-icon">
|
||
<i class="fas fa-expand"></i>
|
||
</div>
|
||
<div class="nav-avatar">
|
||
<i class="fas fa-user"></i>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<!-- 侧边栏 -->
|
||
<aside class="sidebar" id="sidebar">
|
||
<div class="menu-search">
|
||
<input type="text" class="search-input" placeholder="快速搜索菜单">
|
||
</div>
|
||
|
||
<ul class="menu-list">
|
||
<li class="menu-item">
|
||
<a href="#" class="menu-link active">
|
||
<span class="menu-icon">
|
||
<i class="fas fa-home"></i>
|
||
</span>
|
||
<span class="menu-text">首页</span>
|
||
</a>
|
||
</li>
|
||
|
||
<li class="menu-item">
|
||
<div class="menu-link" onclick="toggleTopLevelSubmenu(this)">
|
||
<span class="menu-icon">
|
||
<i class="fas fa-user-cog"></i>
|
||
</span>
|
||
<span class="menu-text">账号权限管理</span>
|
||
<span class="menu-arrow">
|
||
<i class="fas fa-chevron-right"></i>
|
||
</span>
|
||
</div>
|
||
<div class="submenu">
|
||
<a href="#" class="submenu-link" onclick="loadContent('./1 权限管理/子经营者管理.html', this)">
|
||
<span class="submenu-icon"></span>
|
||
子经营者管理
|
||
</a>
|
||
<a href="#" class="submenu-link" onclick="loadContent('./1 权限管理/商户管理.html', this)">
|
||
<span class="submenu-icon"></span>
|
||
商户管理
|
||
</a>
|
||
</div>
|
||
</li>
|
||
|
||
<li class="menu-item">
|
||
<div class="menu-link" onclick="toggleTopLevelSubmenu(this)">
|
||
<span class="menu-icon">
|
||
<i class="fas fa-clipboard-list"></i>
|
||
</span>
|
||
<span class="menu-text">订单管理</span>
|
||
<span class="menu-arrow">
|
||
<i class="fas fa-chevron-right"></i>
|
||
</span>
|
||
</div>
|
||
<div class="submenu">
|
||
<a href="#" class="submenu-link" onclick="loadContent('./订单管理/市场订单管理.html', this)">
|
||
<span class="submenu-icon"></span>
|
||
市场订单管理
|
||
</a>
|
||
<a href="#" class="submenu-link" onclick="loadContent('./订单管理/市场店铺订单管理.html', this)">
|
||
<span class="submenu-icon"></span>
|
||
市场店铺订单管理
|
||
</a>
|
||
</div>
|
||
</li>
|
||
|
||
<li class="menu-item">
|
||
<a href="#" class="menu-link" onclick="loadContent('./商品管理/商品管理.html', this)">
|
||
<span class="menu-icon">
|
||
<i class="fas fa-box"></i>
|
||
</span>
|
||
<span class="menu-text">商品管理</span>
|
||
</a>
|
||
</li>
|
||
|
||
<li class="menu-item">
|
||
<div class="menu-link" onclick="toggleTopLevelSubmenu(this)">
|
||
<span class="menu-icon">
|
||
<i class="fas fa-analytics"></i>
|
||
</span>
|
||
<span class="menu-text">数据分析</span>
|
||
<span class="menu-arrow">
|
||
<i class="fas fa-chevron-right"></i>
|
||
</span>
|
||
</div>
|
||
<div class="submenu">
|
||
<a href="#" class="submenu-link" onclick="loadContent('./数据分析/订单分析.html', this)">
|
||
<span class="submenu-icon"></span>
|
||
订单分析
|
||
</a>
|
||
<a href="#" class="submenu-link" onclick="loadContent('./数据分析/商品分析.html', this)">
|
||
<span class="submenu-icon"></span>
|
||
商品分析
|
||
</a>
|
||
<a href="#" class="submenu-link" onclick="loadContent('./数据分析/客户分析.html', this)">
|
||
<span class="submenu-icon"></span>
|
||
客户分析
|
||
</a>
|
||
</div>
|
||
</li>
|
||
|
||
|
||
<li class="menu-item">
|
||
<div class="menu-link" onclick="toggleTopLevelSubmenu(this)">
|
||
<span class="menu-icon">
|
||
<i class="fas fa-users"></i>
|
||
</span>
|
||
<span class="menu-text">会员营销工具管理</span>
|
||
<span class="menu-arrow">
|
||
<i class="fas fa-chevron-right"></i>
|
||
</span>
|
||
</div>
|
||
<div class="submenu">
|
||
<a href="#" class="submenu-link">
|
||
<span class="submenu-icon"></span>
|
||
会员管理
|
||
</a>
|
||
<a href="#" class="submenu-link">
|
||
<span class="submenu-icon"></span>
|
||
积分管理
|
||
</a>
|
||
</div>
|
||
</li>
|
||
|
||
|
||
<li class="menu-item">
|
||
<div class="menu-link" onclick="toggleTopLevelSubmenu(this)">
|
||
<span class="menu-icon">
|
||
<i class="fas fa-file-alt"></i>
|
||
</span>
|
||
<span class="menu-text">内容管理</span>
|
||
<span class="menu-arrow">
|
||
<i class="fas fa-chevron-right"></i>
|
||
</span>
|
||
</div>
|
||
<div class="submenu">
|
||
<a href="#" class="submenu-link" onclick="loadContent('./内容管理/公告管理.html', this)">
|
||
<span class="submenu-icon"></span>
|
||
公告管理
|
||
</a>
|
||
<a href="#" class="submenu-link" onclick="loadContent('./内容管理/购物须知管理.html', this)">
|
||
<span class="submenu-icon"></span>
|
||
购物须知管理
|
||
</a>
|
||
<a href="#" class="submenu-link" onclick="loadContent('./内容管理/轮播图管理.html', this)">
|
||
<span class="submenu-icon"></span>
|
||
轮播图管理
|
||
</a>
|
||
</div>
|
||
</li>
|
||
|
||
<li class="menu-item">
|
||
<div class="menu-link" onclick="toggleTopLevelSubmenu(this)">
|
||
<span class="menu-icon">
|
||
<i class="fas fa-award"></i>
|
||
</span>
|
||
<span class="menu-text">品牌管理</span>
|
||
<span class="menu-arrow">
|
||
<i class="fas fa-chevron-right"></i>
|
||
</span>
|
||
</div>
|
||
<div class="submenu">
|
||
<div class="submenu-item">
|
||
<div class="submenu-link" onclick="toggleSubmenu(this, event);">
|
||
<span class="submenu-icon"></span>
|
||
<span class="menu-text">订单管理</span>
|
||
<span class="menu-arrow">
|
||
<i class="fas fa-chevron-right"></i>
|
||
</span>
|
||
</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>
|
||
<a href="#" class="submenu-link" onclick="loadContent('./品牌管理/品牌信息.html', this)">
|
||
<span class="submenu-icon"></span>
|
||
品牌信息
|
||
</a>
|
||
<div class="submenu-item">
|
||
<div class="submenu-link" onclick="toggleSubmenu(this, event);">
|
||
<span class="submenu-icon"></span>
|
||
<span class="menu-text">分销管理</span>
|
||
<span class="menu-arrow">
|
||
<i class="fas fa-chevron-right"></i>
|
||
</span>
|
||
</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 class="submenu-item">
|
||
<div class="submenu-link" onclick="toggleSubmenu(this, event);">
|
||
<span class="submenu-icon"></span>
|
||
<span class="menu-text">数据分析</span>
|
||
<span class="menu-arrow">
|
||
<i class="fas fa-chevron-right"></i>
|
||
</span>
|
||
</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>
|
||
<a href="#" class="submenu-link" onclick="loadContent('./品牌管理/数据分析/品牌分销全景分析.html', this);" style="padding-left: 70px;">
|
||
<span class="submenu-icon"></span>
|
||
品牌分销全景分析
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</aside>
|
||
|
||
<!-- 主内容区域 -->
|
||
<main class="main-content">
|
||
<div class="content-placeholder" id="contentPlaceholder">
|
||
<h2>欢迎使用大妈集市商户端管理系统</h2>
|
||
<p style="margin-top: 20px; color: #666;">此区域用于显示具体的页面内容</p>
|
||
</div>
|
||
|
||
<iframe id="contentFrame" style="width: 100%; height: 100%; border: none; display: none;"></iframe>
|
||
</main>
|
||
|
||
<script>
|
||
// 切换侧边栏显示/隐藏(移动端)
|
||
function toggleSidebar() {
|
||
const sidebar = document.getElementById('sidebar');
|
||
sidebar.classList.toggle('open');
|
||
}
|
||
|
||
// 切换顶级菜单展开/收起
|
||
function toggleTopLevelSubmenu(element) {
|
||
console.log('toggleTopLevelSubmenu called', element);
|
||
const menuItem = element.parentElement;
|
||
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
|
||
function loadContent(url, clickedElement) {
|
||
const contentPlaceholder = document.getElementById('contentPlaceholder');
|
||
const contentFrame = document.getElementById('contentFrame');
|
||
|
||
// 隐藏占位内容,显示iframe
|
||
contentPlaceholder.style.display = 'none';
|
||
contentFrame.style.display = 'block';
|
||
|
||
// 加载指定URL到iframe
|
||
contentFrame.src = url;
|
||
|
||
// 移除所有菜单高亮
|
||
document.querySelectorAll('.menu-link, .submenu-link').forEach(l => {
|
||
l.classList.remove('active');
|
||
});
|
||
|
||
// 添加当前点击菜单项的高亮
|
||
if (clickedElement) {
|
||
clickedElement.classList.add('active');
|
||
}
|
||
|
||
// 动态调整iframe高度以适应内容
|
||
contentFrame.onload = function() {
|
||
// 确保iframe内容正确显示
|
||
try {
|
||
const iframeContentHeight = contentFrame.contentDocument.body.scrollHeight;
|
||
contentFrame.style.height = iframeContentHeight + 'px';
|
||
} catch (e) {
|
||
// 跨域情况下无法访问iframe内容高度,使用父容器高度
|
||
contentFrame.style.height = 'calc(100vh - 50px - 40px)'; // 减去顶部导航栏和padding的高度
|
||
}
|
||
};
|
||
}
|
||
|
||
// 菜单搜索功能
|
||
document.querySelector('.search-input').addEventListener('input', function(e) {
|
||
console.log('Search input event triggered', e.target.value);
|
||
const searchText = e.target.value.toLowerCase();
|
||
const menuItems = document.querySelectorAll('.menu-item');
|
||
console.log('Found', menuItems.length, 'menu items');
|
||
|
||
menuItems.forEach(item => {
|
||
const menuText = item.querySelector('.menu-text');
|
||
if (menuText) {
|
||
const text = menuText.textContent.toLowerCase();
|
||
console.log('Checking menu text:', text);
|
||
if (text.includes(searchText) || searchText === '') {
|
||
item.style.display = 'block';
|
||
console.log('Display set to block for:', text);
|
||
} else {
|
||
item.style.display = 'none';
|
||
console.log('Display set to none for:', text);
|
||
}
|
||
}
|
||
});
|
||
});
|
||
|
||
// 菜单点击高亮
|
||
document.querySelectorAll('.menu-link, .submenu-link').forEach(link => {
|
||
link.addEventListener('click', function(e) {
|
||
// 对于没有特殊onclick处理的链接才添加高亮
|
||
if (!this.getAttribute('onclick') || !this.getAttribute('onclick').includes('loadContent')) {
|
||
// 移除所有高亮
|
||
document.querySelectorAll('.menu-link, .submenu-link').forEach(l => {
|
||
l.classList.remove('active');
|
||
});
|
||
// 添加当前高亮
|
||
this.classList.add('active');
|
||
}
|
||
});
|
||
});
|
||
// 添加错误监听器以便调试
|
||
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>
|
||
</body>
|
||
</html> |