后台管理页面导航栏修改为侧边
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
--dark-color: #5a5c69;
|
||||
--light-color: #f8f9fc;
|
||||
--sidebar-width: 250px;
|
||||
--sidebar-collapsed-width: 70px;
|
||||
--header-height: 70px;
|
||||
}
|
||||
|
||||
@@ -46,6 +47,29 @@
|
||||
box-shadow: 4px 0 10px rgba(0,0,0,0.1);
|
||||
z-index: 1000;
|
||||
transition: all 0.3s ease;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.sidebar.collapsed {
|
||||
width: var(--sidebar-collapsed-width);
|
||||
}
|
||||
|
||||
.sidebar.collapsed .sidebar-brand-text {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.sidebar.collapsed .sidebar-link-text {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.sidebar.collapsed .sidebar-link {
|
||||
justify-content: center;
|
||||
padding: 0.75rem 0.5rem;
|
||||
}
|
||||
|
||||
.sidebar.collapsed .sidebar-icon {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.sidebar-header {
|
||||
@@ -111,6 +135,10 @@
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.main-content.sidebar-collapsed {
|
||||
margin-left: var(--sidebar-collapsed-width);
|
||||
}
|
||||
|
||||
/* 顶部导航栏 */
|
||||
.top-navbar {
|
||||
background: white;
|
||||
@@ -124,6 +152,67 @@
|
||||
z-index: 999;
|
||||
}
|
||||
|
||||
.navbar-left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.sidebar-toggle {
|
||||
background: none;
|
||||
border: none;
|
||||
font-size: 1.2rem;
|
||||
color: var(--dark-color);
|
||||
cursor: pointer;
|
||||
padding: 0.5rem;
|
||||
border-radius: 0.5rem;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.sidebar-toggle:hover {
|
||||
background: var(--light-color);
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
/* 响应式设计 */
|
||||
@media (max-width: 768px) {
|
||||
.sidebar {
|
||||
transform: translateX(-100%);
|
||||
}
|
||||
|
||||
.sidebar.mobile-open {
|
||||
transform: translateX(0);
|
||||
}
|
||||
|
||||
.main-content {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.top-navbar {
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.page-title {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 576px) {
|
||||
.top-navbar {
|
||||
padding: 0.75rem;
|
||||
}
|
||||
|
||||
.user-menu {
|
||||
flex-direction: column;
|
||||
align-items: flex-end;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.user-info {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
.page-title {
|
||||
font-size: 1.5rem;
|
||||
font-weight: 600;
|
||||
@@ -395,6 +484,69 @@
|
||||
</style>
|
||||
|
||||
{% block head %}{% endblock %}
|
||||
|
||||
<!-- JavaScript -->
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const sidebar = document.querySelector('.sidebar');
|
||||
const mainContent = document.querySelector('.main-content');
|
||||
const sidebarToggle = document.getElementById('sidebarToggle');
|
||||
const isMobile = window.innerWidth <= 768;
|
||||
|
||||
// 初始化侧边栏状态
|
||||
let sidebarCollapsed = localStorage.getItem('sidebarCollapsed') === 'true';
|
||||
|
||||
if (sidebarCollapsed && !isMobile) {
|
||||
sidebar.classList.add('collapsed');
|
||||
mainContent.classList.add('sidebar-collapsed');
|
||||
}
|
||||
|
||||
// 切换侧边栏
|
||||
function toggleSidebar() {
|
||||
if (isMobile) {
|
||||
// 移动端:显示/隐藏侧边栏
|
||||
sidebar.classList.toggle('mobile-open');
|
||||
} else {
|
||||
// 桌面端:折叠/展开侧边栏
|
||||
sidebar.classList.toggle('collapsed');
|
||||
mainContent.classList.toggle('sidebar-collapsed');
|
||||
sidebarCollapsed = sidebar.classList.contains('collapsed');
|
||||
localStorage.setItem('sidebarCollapsed', sidebarCollapsed);
|
||||
}
|
||||
}
|
||||
|
||||
// 绑定点击事件
|
||||
sidebarToggle.addEventListener('click', toggleSidebar);
|
||||
|
||||
// 移动端点击遮罩关闭侧边栏
|
||||
if (isMobile) {
|
||||
mainContent.addEventListener('click', function() {
|
||||
if (sidebar.classList.contains('mobile-open')) {
|
||||
sidebar.classList.remove('mobile-open');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 响应式处理
|
||||
window.addEventListener('resize', function() {
|
||||
const newIsMobile = window.innerWidth <= 768;
|
||||
if (newIsMobile !== isMobile) {
|
||||
// 屏幕尺寸改变时重新加载页面
|
||||
window.location.reload();
|
||||
}
|
||||
});
|
||||
|
||||
// 侧边栏链接点击后自动关闭移动端侧边栏
|
||||
if (isMobile) {
|
||||
const sidebarLinks = document.querySelectorAll('.sidebar-link');
|
||||
sidebarLinks.forEach(link => {
|
||||
link.addEventListener('click', function() {
|
||||
sidebar.classList.remove('mobile-open');
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<!-- 侧边栏 -->
|
||||
@@ -402,7 +554,7 @@
|
||||
<div class="sidebar-header">
|
||||
<a href="{{ url_for('admin.index') }}" class="sidebar-brand">
|
||||
<i class="fas fa-magic me-2"></i>
|
||||
提示词大师
|
||||
<span class="sidebar-brand-text">提示词大师</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -410,77 +562,77 @@
|
||||
<div class="sidebar-item">
|
||||
<a href="{{ url_for('admin.index') }}" class="sidebar-link {% if request.endpoint == 'admin.index' %}active{% endif %}">
|
||||
<i class="fas fa-tachometer-alt sidebar-icon"></i>
|
||||
仪表板
|
||||
<span class="sidebar-link-text">仪表板</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="sidebar-item">
|
||||
<a href="{{ url_for('admin_user.index_view') }}" class="sidebar-link {% if 'admin_user' in request.endpoint %}active{% endif %}">
|
||||
<i class="fas fa-users sidebar-icon"></i>
|
||||
用户管理
|
||||
<span class="sidebar-link-text">用户管理</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="sidebar-item">
|
||||
<a href="{{ url_for('admin_prompt.index_view') }}" class="sidebar-link {% if 'admin_prompt' in request.endpoint %}active{% endif %}">
|
||||
<i class="fas fa-magic sidebar-icon"></i>
|
||||
提示词管理
|
||||
<span class="sidebar-link-text">提示词管理</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="sidebar-item">
|
||||
<a href="{{ url_for('admin_template.index_view') }}" class="sidebar-link {% if 'admin_template' in request.endpoint %}active{% endif %}">
|
||||
<i class="fas fa-clipboard-list sidebar-icon"></i>
|
||||
模板管理
|
||||
<span class="sidebar-link-text">模板管理</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="sidebar-item">
|
||||
<a href="{{ url_for('analytics_admin.index') }}" class="sidebar-link {% if 'analytics_admin' in request.endpoint %}active{% endif %}">
|
||||
<i class="fas fa-chart-line sidebar-icon"></i>
|
||||
数据分析
|
||||
<span class="sidebar-link-text">数据分析</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="sidebar-item">
|
||||
<a href="{{ url_for('batch_admin.index') }}" class="sidebar-link {% if 'batch_admin' in request.endpoint %}active{% endif %}">
|
||||
<i class="fas fa-tasks sidebar-icon"></i>
|
||||
批量操作
|
||||
<span class="sidebar-link-text">批量操作</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="sidebar-item">
|
||||
<a href="{{ url_for('monitor_admin.index') }}" class="sidebar-link {% if 'monitor_admin' in request.endpoint %}active{% endif %}">
|
||||
<i class="fas fa-tachometer-alt sidebar-icon"></i>
|
||||
系统监控
|
||||
<span class="sidebar-link-text">系统监控</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="sidebar-item">
|
||||
<a href="{{ url_for('report_admin.index') }}" class="sidebar-link {% if 'report_admin' in request.endpoint %}active{% endif %}">
|
||||
<i class="fas fa-chart-bar sidebar-icon"></i>
|
||||
高级报表
|
||||
<span class="sidebar-link-text">高级报表</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="sidebar-item">
|
||||
<a href="{{ url_for('backup_admin.index') }}" class="sidebar-link {% if 'backup_admin' in request.endpoint %}active{% endif %}">
|
||||
<i class="fas fa-database sidebar-icon"></i>
|
||||
数据备份
|
||||
<span class="sidebar-link-text">数据备份</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="sidebar-item">
|
||||
<a href="{{ url_for('api_admin.index') }}" class="sidebar-link {% if 'api_admin' in request.endpoint %}active{% endif %}">
|
||||
<i class="fas fa-code sidebar-icon"></i>
|
||||
API管理
|
||||
<span class="sidebar-link-text">API管理</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="sidebar-item">
|
||||
<a href="{{ url_for('admin_system.index') }}" class="sidebar-link {% if 'admin_system' in request.endpoint %}active{% endif %}">
|
||||
<i class="fas fa-cogs sidebar-icon"></i>
|
||||
系统管理
|
||||
<span class="sidebar-link-text">系统管理</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -490,9 +642,14 @@
|
||||
<div class="main-content">
|
||||
<!-- 顶部导航栏 -->
|
||||
<header class="top-navbar">
|
||||
<h1 class="page-title">
|
||||
{% block page_title %}{% endblock %}
|
||||
</h1>
|
||||
<div class="navbar-left">
|
||||
<button class="sidebar-toggle" id="sidebarToggle">
|
||||
<i class="fas fa-bars"></i>
|
||||
</button>
|
||||
<h1 class="page-title">
|
||||
{% block page_title %}{% endblock %}
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="user-menu">
|
||||
<div class="user-info">
|
||||
|
||||
Reference in New Issue
Block a user