# EuiAdmin **Repository Path**: zishuimuyu/euiAdmin ## Basic Information - **Project Name**: EuiAdmin - **Description**: EuiAdmin基于Vue+Element的免费开源后台模板。通过使用EuiAdmin你可以很简单的搭建一个成型的后台。 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 96 - **Forks**: 32 - **Created**: 2020-09-30 - **Last Updated**: 2026-05-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # euiAdmin 基于 Vue 2 + Element UI 的后台管理系统模板。
**[简体中文](./README.md)** | **[English](./README.en.md)**
## 📋 项目介绍 euiAdmin 是一个免费开源的后台管理系统模板,基于 Vue 2 和 Element UI 构建。提供了完整的后台管理功能框架,包括用户认证、权限管理、数据可视化、表单处理、文件上传等常用模块。 **技术栈**: Vue 2.6 + Element UI 2.4 + ECharts 4.9 + Vue Router 3 + TinyMCE 5 ## 📖 开发文档 - [开发手册](./开发手册.md) - 详细的开发指南和使用教程 ## 🏗️ 项目架构 ``` euiAdmin/ ├── public/ # 静态公共资源 ├── src/ │ ├── assets/ # 资源文件 │ │ ├── langs/ # 国际化语言包 │ │ │ └── zh_CN.js # TinyMCE 中文配置 │ │ └── china.js # 中国地图 GeoJSON 数据 │ ├── components/ # 可复用组件 │ │ ├── echarts/ # ECharts 图表组件 │ │ │ ├── ChinaMapSpace.vue # 中国地图可视化 │ │ │ ├── EchartsBarSpace.vue # 柱状图组件 │ │ │ └── EchartsLineSpace.vue # 折线图组件 │ │ ├── home/ # 首页组件 │ │ ├── module/ # 功能模块组件 │ │ │ ├── SuperFormSpace.vue # 超级表单 │ │ │ ├── EditorSpace.vue # 富文本编辑器 │ │ │ ├── TableSpace.vue # 表格组件 │ │ │ ├── excel/ # Excel 导入导出 │ │ │ ├── fileUpload/ # 文件上传 (4种模式) │ │ │ └── imageUpload/ # 图片上传 (4种模式) │ │ ├── page/ # 页面组件 │ │ ├── setting/ # 设置组件 │ │ └── system/ # 系统级组件 │ │ ├── AsideSpace.vue # 侧边栏导航 │ │ └── HeadSpace.vue # 顶部导航栏 │ ├── plugins/ # 插件配置 │ │ ├── Component.js # 全局组件注册 │ │ └── Pass.js # 事件总线 │ ├── router/ # 路由配置 │ │ └── index.js # 路由定义 │ ├── views/ # 页面视图 │ │ ├── echarts/ # ECharts 图表页面 │ │ ├── home/ # 首页 │ │ ├── login/ # 登录/注册/找回密码 │ │ ├── module/ # 功能模块页面 │ │ ├── page/ # 通用页面 │ │ └── setting/ # 设置页面 │ ├── App.vue # 根组件 │ └── main.js # 入口文件 ├── package.json # 项目配置 ├── vue.config.js # Vue CLI 配置 └── babel.config.js # Babel 配置 ``` ## 📦 功能模块 ### 用户认证 | 页面 | 路由 | 说明 | |------|------|------| | 登录 | `/` | 用户登录 | | 注册 | `/register` | 用户注册 | | 找回密码 | `/forget/password` | 密码重置 | ### 功能组件 | 模块 | 路由 | 说明 | |------|------|------| | 富文本编辑器 | `/module/editor` | TinyMCE 富文本编辑 | | 超级表单 | `/module/superform` | 17种表单控件展示 | | 图片上传 | `/module/upload/image` | 4种上传模式 | | 文件上传 | `/module/upload/file` | 多种文件类型 | | 动画效果 | `/module/animate` | CSS 动画展示 | | 数据表格 | `/module/table` | 增删改查操作 | | Excel表格 | `/module/table/excel` | Excel 导入导出 | ### 数据可视化 | 图表 | 路由 | 说明 | |------|------|------| | 柱状图 | `/echarts/bar` | 柱状图展示 | | 折线图 | `/echarts/line` | 折线趋势图 | | 中国地图 | `/echarts/map` | 地图热力图 | ### 系统设置 | 设置项 | 路由 | 功能 | |--------|------|------| | 网站设置 | `/setting/web` | 网站基本配置 | | 用户设置 | `/setting/user` | 个人信息管理 | | 密码设置 | `/setting/password` | 修改密码 | | 邮箱设置 | `/setting/email` | 邮箱配置 | ## 🛠️ 技术栈 | 技术 | 版本 | 用途 | |------|------|------| | Vue | 2.6.11 | 核心框架 | | Element UI | 2.4.5 | UI 组件库 | | ECharts | 4.9.0 | 数据可视化 | | Vue Router | 3.2.0 | 路由管理 | | Vue Cookies | 1.7.3 | Cookie 管理 | | TinyMCE | 5.4.2 | 富文本编辑器 | | xlsx | 0.16.7 | Excel 文件处理 | ## 🚀 快速开始 ### 环境要求 - Node.js >= 12.0 - npm >= 6.0 ### 安装依赖 ```bash npm install ``` ### 开发模式 ```bash npm run serve ``` 访问地址: http://localhost:8080 ### 生产构建 ```bash npm run build ``` ### 代码检查 ```bash npm run lint ``` ## ⚙️ 项目配置 ### API 代理配置 修改 `vue.config.js` 中的 devServer.proxy 配置: ```javascript proxy: { '/api': { target: 'http://localhost', // 后端接口地址 ws: true, changOrigin: true, pathRewrite: { '^/api': '' } } } ``` ### 主题配置 系统支持通过 Cookie 自定义主题样式,包括: - 侧边栏颜色、宽度 - 顶部导航颜色、高度 - 主内容区域背景色 ## 🔧 继续开发指南 ### 1. API 请求封装 建议创建统一的 API 请求模块: ```javascript // src/utils/request.js import axios from 'axios' import { Message } from 'element-ui' const service = axios.create({ baseURL: '/api', timeout: 15000 }) service.interceptors.request.use(config => { const token = sessionStorage.getItem('token') if (token) { config.headers['Authorization'] = `Bearer ${token}` } return config }) service.interceptors.response.use( response => response.data, error => { Message.error(error.message || '请求失败') return Promise.reject(error) } ) export default service ``` ### 2. 登录功能对接 修改 `src/views/login/Login.vue` 中的登录逻辑,对接后端 API: ```javascript async login() { try { const res = await loginAPI({ username: this.login_form.user_name, password: this.login_form.user_password }) sessionStorage.setItem('token', res.data.token) sessionStorage.setItem('user', JSON.stringify(res.data.user)) this.$router.push('/home') } catch (error) { this.$message.error(error.message || '登录失败') } } ``` ### 3. 路由权限守卫 完善 `src/router/index.js` 添加权限验证: ```javascript router.beforeEach((to, from, next) => { document.title = to.meta.title || 'euiAdmin' if (to.meta.login_state) { const token = sessionStorage.getItem('token') if (!token) { next('/') } } next() }) ``` ### 4. 状态管理 安装 Vuex: ```bash npm install vuex@3 --save ``` 创建 `src/store/index.js`: ```javascript import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { token: sessionStorage.getItem('token') || '', user: null }, mutations: { SET_TOKEN(state, token) { state.token = token }, SET_USER(state, user) { state.user = user } } }) ``` ### 5. API 目录结构 ``` src/api/ ├── login.js # 登录相关接口 ├── user.js # 用户管理接口 └── upload.js # 文件上传接口 ``` ## ⚠️ 注意事项 ### 安全问题 - ⚠️ 当前登录逻辑为前端模拟,需对接后端真实 API - ⚠️ 需要实现 Token 认证机制 - ⚠️ 建议添加表单验证规则 - ⚠️ 生产环境需启用 HTTPS ### 性能优化 - 建议将路由改为懒加载方式 - 考虑按需引入 Element UI 组件 - 大数据量表格建议使用虚拟滚动 ### 代码规范 - 组件命名统一使用 `Space.vue` 后缀 - API 接口统一放在 `src/api/` 目录 - 工具函数统一放在 `src/utils/` 目录 ### Vue 2 迁移建议 当前项目基于 Vue 2,如需升级到 Vue 3: - Element UI → Element Plus - Vuex → Pinia - vue-router 3 → vue-router 4 - 需评估现有组件兼容性 ## 📝 项目结构说明 ### 组件命名规范 - **容器组件**: `views/` 目录下的页面组件 - **功能组件**: `components/` 目录下的 `*Space.vue` - **布局组件**: AsideSpace (侧边栏)、HeadSpace (头部) ### 全局组件注册 通过 `src/plugins/Component.js` 自动注册全局组件,组件名首字母大写后加 `v` 前缀: ```vue ``` ### 事件总线 使用 `src/plugins/Pass.js` 进行组件间通信: ```javascript // 发送 Pass.$emit('event_name', data) // 接收 Pass.$on('event_name', (data) => { ... }) ``` ## 🤝 贡献指南 1. Fork 本仓库 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交代码 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建 Pull Request ## 📄 许可证 本项目基于 MIT 许可证开源。 ## 📞 联系方式 - 项目主页: https://github.com/your-repo/euiadmin - 问题反馈: https://github.com/your-repo/euiadmin/issues ## 🙏 致谢 - [Vue.js](https://vuejs.org/) - [Element UI](https://element.eleme.cn/) - [ECharts](https://echarts.apache.org/) - [TinyMCE](https://www.tiny.cloud/)