dm-design/商家端web/index.html

720 lines
27 KiB
HTML
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.

<!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-store"></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>
<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>