# vue3后台管理系统模板
**Repository Path**: carocall/template-vue
## Basic Information
- **Project Name**: vue3后台管理系统模板
- **Description**: 一个基于vue的基础的后台管理项目,封装了pinia,vuerouter这些常用功能,自己也写了一些常见组件。界面也打磨了很久。并且有完善的ai开发提示词。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-02-25
- **Last Updated**: 2026-06-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# template-vue - Vue3后台管理系统模板
## 项目简介
template-vue 是一个基于 Vue 3 构建的现代化后台管理系统模板。该项目采用最新的前端技术栈,提供了完整的后台管理系统基础功能,包括用户认证、权限管理、数据可视化、用户管理等模块。模板设计简洁美观,代码结构清晰,适合快速搭建企业级后台管理系统。
## 功能特性
### 🎯 核心功能
- **用户认证**:完整的登录、注册功能,支持路由守卫
- **权限管理**:基于角色的权限控制,动态菜单生成
- **主题切换**:支持亮色/暗色主题切换
- **响应式布局**:适配桌面端和移动端
- **多标签页**:支持多页面标签页管理
- **面包屑导航**:清晰的页面导航路径
### 📊 数据可视化
- **图表展示**:集成 ECharts,支持多种图表类型(折线图、柱状图、饼图、散点图、雷达图、仪表盘)
- **响应式图表**:图表自适应容器大小,支持窗口大小变化
- **组合图表**:支持柱状图与折线图组合展示
### 👤 用户管理
- **个人信息**:完善的个人信息展示页面
- **用户管理**:用户列表、增删改查功能
- **头像上传**:支持用户头像上传和展示
### 🎨 UI 特性
- **现代化设计**:简洁美观的界面设计
- **Element Plus**:基于 Element Plus UI 组件库
- **自定义主题**:支持 CSS 变量自定义主题色
- **动画效果**:平滑的页面过渡和交互动画
## 技术栈
### 核心框架
- **Vue 3** - 渐进式 JavaScript 框架
- **Vite** - 下一代前端构建工具
- **TypeScript** - JavaScript 超集(可选)
### UI 组件库
- **Element Plus** - 基于 Vue 3 的组件库
- **@element-plus/icons-vue** - Element Plus 图标库
### 状态管理
- **Pinia** - Vue 官方推荐的状态管理库
- **pinia-plugin-persistedstate** - Pinia 状态持久化插件
### 路由与请求
- **Vue Router 4** - Vue 3 官方路由
- **Axios** - HTTP 客户端库
### 工具库
- **@vueuse/core** - Vue 组合式 API 工具集
- **ECharts** - 强大的图表可视化库
- **Sass** - CSS 预处理器
## 项目结构
```
template-vue/
├── src/
│ ├── api/ # API 接口封装
│ │ └── user.js # 用户相关 API
│ ├── assets/ # 静态资源
│ │ ├── icon/ # 图标资源
│ │ ├── image/ # 图片资源
│ │ └── vue.svg # Vue 图标
│ ├── components/ # 公共组件
│ │ ├── common/ # 通用组件
│ │ │ └── CommonPage.vue
│ │ ├── table/ # 表格相关组件
│ │ │ ├── TableSearcher.vue
│ │ │ └── pageBar.vue
│ │ ├── FormDrawer.vue # 表单抽屉组件
│ │ └── ThemeButton.vue # 主题切换按钮
│ ├── layouts/ # 布局组件
│ │ ├── auth/ # 认证相关布局
│ │ │ └── AuthLayout.vue
│ │ └── main/ # 主布局
│ │ ├── componenet/ # 布局组件
│ │ │ ├── AppTab.vue # 标签页
│ │ │ ├── Breadcrumb.vue # 面包屑
│ │ │ ├── ExpandButton.vue # 侧边栏展开按钮
│ │ │ ├── FullScreen.vue # 全屏切换
│ │ │ ├── GiteeIcon.vue # Gitee 图标
│ │ │ ├── GithubIcon.vue # GitHub 图标
│ │ │ ├── LoadingProgressBar.vue # 加载进度条
│ │ │ ├── SearchInput.vue # 搜索输入框
│ │ │ ├── SideLogo.vue # 侧边栏 Logo
│ │ │ ├── SideMenu.vue # 侧边栏菜单
│ │ │ ├── ToogleTheme.vue # 主题切换
│ │ │ └── UserAvatar.vue # 用户头像
│ │ └── normal/ # 常规布局
│ │ ├── header/ # 头部组件
│ │ │ └── Navbar.vue
│ │ ├── siderbar/ # 侧边栏组件
│ │ │ └── Siderbar.vue
│ │ └── MainLayout.vue # 主布局组件
│ ├── router/ # 路由配置
│ │ └── index.js # 路由主文件
│ ├── stores/ # 状态管理
│ │ ├── siderbar.js # 侧边栏状态
│ │ ├── tab.js # 标签页状态
│ │ ├── theme.js # 主题状态
│ │ └── user.js # 用户状态
│ ├── utils/ # 工具函数
│ │ └── request.js # 请求封装
│ ├── views/ # 页面视图
│ │ ├── auth/ # 认证页面
│ │ │ ├── login/ # 登录页面
│ │ │ │ └── Login.vue
│ │ │ └── register/ # 注册页面
│ │ │ └── Register.vue
│ │ ├── component/ # 组件示例页面
│ │ │ └── Component.vue
│ │ ├── error/ # 错误页面
│ │ │ └── NotFound.vue
│ │ ├── graphic/ # 图表展示页面
│ │ │ └── Graphic.vue
│ │ ├── home/ # 首页
│ │ │ └── Home.vue
│ │ ├── person/ # 个人中心页面
│ │ │ └── Person.vue
│ │ └── user/ # 用户管理页面
│ │ └── UserManage.vue
│ ├── App.vue # 根组件
│ ├── main.js # 应用入口
│ └── style.css # 全局样式
├── images/ # 项目截图
│ ├── 图表展示界面,菜单栏收起状态.png
│ ├── 暗夜模式图表展示.png
│ ├── 登录界面.png
│ ├── 顶部tabbar.png
│ └── 首页-暗夜模式.png
├── package.json # 项目依赖
└── README.md # 项目说明文档
```
## 安装与运行
### 环境要求
- Node.js 16+
- npm 或 yarn 或 pnpm
### 安装依赖
```bash
# 使用 npm
npm install
# 使用 yarn
yarn install
# 使用 pnpm
pnpm install
```
### 开发环境运行
```bash
# 启动开发服务器
npm run dev
# 访问地址
# http://localhost:5173
```
### 生产环境构建
```bash
# 构建生产版本
npm run build
# 预览生产版本
npm run preview
```
## 界面展示
### 登录界面

*简洁美观的登录界面,支持背景图片自定义*
### 首页(暗夜模式)

*暗色主题的首页界面,保护眼睛的同时提供良好的视觉体验*
### 图表展示界面

*丰富的图表展示,支持多种图表类型和响应式布局*
### 暗夜模式图表展示

*暗色主题下的图表展示,色彩适配主题模式*
### 顶部标签栏

*多标签页管理,支持页面快速切换和关闭*
## 开发指南
### 添加新页面
1. 在 `src/views` 目录下创建新的页面组件
2. 在 `src/router/index.js` 中添加路由配置
3. 在侧边栏菜单配置中添加对应的菜单项
### 自定义主题
项目支持通过 CSS 变量自定义主题色,主要变量包括:
```css
:root {
--theme-color: #409eff; /* 主题色 */
--text: #6b6375; /* 文本颜色 */
--text-h: #08060d; /* 标题文本颜色 */
--bg: #ffffff; /* 背景色 */
--sub-bg: #f5f5f5; /* 次级背景色 */
--border: #e4e7ed; /* 边框颜色 */
--shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); /* 阴影 */
}
```
### 图表使用
项目已集成 ECharts,使用示例:
```vue
```
### API 请求封装
项目使用 Axios 进行 HTTP 请求,已封装统一的请求拦截器和响应处理器:
```javascript
// 在组件中使用
import request from '@/utils/request';
// GET 请求
const getUserList = async () => {
const response = await request.get('/api/users');
return response.data;
};
// POST 请求
const createUser = async (userData) => {
const response = await request.post('/api/users', userData);
return response.data;
};
```
## 状态管理
项目使用 Pinia 进行状态管理,主要 store 包括:
### 用户状态 (user.js)
- 用户登录状态
- 用户信息
- 权限信息
### 主题状态 (theme.js)
- 当前主题模式(亮色/暗色)
- 主题色配置
### 侧边栏状态 (siderbar.js)
- 侧边栏展开/收起状态
- 菜单激活状态
### 标签页状态 (tab.js)
- 当前打开的标签页
- 激活的标签页
## 浏览器兼容性
- Chrome 80+
- Firefox 75+
- Safari 13+
- Edge 80+
## 许可证
本项目基于 MIT 许可证开源,详情请查看 LICENSE 文件。
## 贡献指南
1. Fork 本仓库
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 联系方式
如有问题或建议,请通过以下方式联系:
- 提交 Issue
- 发送邮件
---
**感谢使用 template-vue!** 🎉
如果这个项目对你有帮助,请给一个 ⭐️ 支持一下!