feat: v3.2 - 用户管理功能和后台菜单统一

新增功能:
- 用户管理列表页面(搜索、分页)
- 用户详情页面(基本信息、收藏统计)
- 管理员重置用户密码功能
- 管理员修改用户昵称功能
- 管理后台首页添加用户统计卡片

优化改进:
- 统一后台菜单结构,创建可复用的 sidebar 组件
- 所有后台页面使用统一菜单,避免硬编码
- 优化权限配置文件,清理冗余规则

技术文档:
- 添加任务分解规则文档
- 添加后台菜单统一规则文档
- 添加数据库字段修复脚本

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Jowe
2026-02-08 23:20:35 +08:00
parent c61969dfc9
commit 2eefaa8cc9
14 changed files with 2168 additions and 297 deletions

View File

@@ -4,7 +4,7 @@
<div class="dashboard-container">
<div class="row">
<!-- 统计卡片 -->
<div class="col-md-3 mb-4">
<div class="col-md-2-4 mb-4">
<div class="stat-card">
<div class="stat-icon" style="background: rgba(0, 82, 217, 0.1); color: #0052D9;">
<span class="material-symbols-outlined">public</span>
@@ -16,7 +16,7 @@
</div>
</div>
<div class="col-md-3 mb-4">
<div class="col-md-2-4 mb-4">
<div class="stat-card">
<div class="stat-icon" style="background: rgba(0, 168, 112, 0.1); color: #00A870;">
<span class="material-symbols-outlined">label</span>
@@ -28,7 +28,7 @@
</div>
</div>
<div class="col-md-3 mb-4">
<div class="col-md-2-4 mb-4">
<div class="stat-card">
<div class="stat-icon" style="background: rgba(227, 115, 24, 0.1); color: #E37318;">
<span class="material-symbols-outlined">newspaper</span>
@@ -40,7 +40,19 @@
</div>
</div>
<div class="col-md-3 mb-4">
<div class="col-md-2-4 mb-4">
<div class="stat-card">
<div class="stat-icon" style="background: rgba(123, 97, 255, 0.1); color: #7B61FF;">
<span class="material-symbols-outlined">group</span>
</div>
<div class="stat-info">
<div class="stat-value">{{ stats.users_count or 0 }}</div>
<div class="stat-label">注册用户</div>
</div>
</div>
</div>
<div class="col-md-2-4 mb-4">
<div class="stat-card">
<div class="stat-icon" style="background: rgba(213, 73, 65, 0.1); color: #D54941;">
<span class="material-symbols-outlined">visibility</span>
@@ -189,6 +201,25 @@
color: #606266;
}
.col-md-2-4 {
flex: 0 0 20%;
max-width: 20%;
}
@media (max-width: 768px) {
.col-md-2-4 {
flex: 0 0 50%;
max-width: 50%;
}
}
@media (max-width: 480px) {
.col-md-2-4 {
flex: 0 0 100%;
max-width: 100%;
}
}
.quick-actions {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));