File tree Expand file tree Collapse file tree 5 files changed +109
-41
lines changed Expand file tree Collapse file tree 5 files changed +109
-41
lines changed Original file line number Diff line number Diff line change 1- ## vue-element-admin
2- vue+element+axios 的管理后台 [ 线上地址 ] ( http://panjiachen.github.io/vue-element-admin )
3-
4- 这半年来一直在用vue写管理后台,目前后台已经有七十多个页面,十几种权限,但维护成本依然很低,效率依然很高。这半年来积累了不少的后台开发经验,所以准备开源分享一下。
5-
6- ### 功能
7- - [x] 登录/注销
8- - [x] 权限验证
9- - [x] 侧边栏
10- - [x] 面包屑
11- - [x] 富文本编辑器
12- - [x] Markdown编辑器
13- - [x] JSON编辑器
14- - [x] 列表拖拽
15- - [x] SplitPane
16- - [x] Dropzone
17- - [x] Sticky
18- - [x] CountTo
19- - [x] echarts图表
20- - [x] 401,401错误页面
21- - [x] 错误日志
22- - [x] 导出excel
23- - [x] table example
24- - [x] form example
25- - [x] 多环境发布
26- - [x] dashboard
27- - [x] 二次登录
28- - [x] 动态侧边栏
29- - [x] mock
30-
31-
32- ### 开发
1+ [ 线上地址 ] ( http://panjiachen.github.io/ vue-element-admin)
2+
3+ ## 前言
4+ > 这半年来一直在用vue写管理后台,目前后台已经有七十多个页面,十几种权限,但维护成本依然很低,效率依然很高,所以准备开源分享一下后台开发的经验和成果。目前的技术栈主要的采用vue+element+axios.由于是个人项目,所以数据请求都是用了mockjs代替。会出一系列的教程配套文章,如如何从零构建后台项目框架,如何做完整的用户系统(如权限验证,二次登录等),如何二次开发组件(如富文本),如何整合七牛等等文章,各种后台开发经验等等。莫急 ~~
5+
6+ ## 功能
7+ - 登录/注销
8+ - 权限验证
9+ - 侧边栏
10+ - 面包屑
11+ - 富文本编辑器
12+ - Markdown编辑器
13+ - JSON编辑器
14+ - 列表拖拽
15+ - plitPane
16+ - Dropzone
17+ - Sticky
18+ - CountTo
19+ - echarts图表
20+ - 401,401错误页面
21+ - 错误日志
22+ - 导出excel
23+ - table example
24+ - form example
25+ - 多环境发布
26+ - dashboard
27+ - 二次登录
28+ - 动态侧边栏
29+ - mock数据
30+
31+
32+ ## 开发
3333``` bash
3434 # 克隆项目
35- git clone https://github.com/PanJiaChen/vue-element-admin.git
36-
35+ git clone https://github.com/PanJiaChen/vue-element-admin.git
36+
3737 # 安装依赖
3838 npm install
39-
40- # 本地开发 开启服务,浏览器访问 http://localhost:9527
39+
40+ # 本地开发 开启服务
4141 npm run build
4242```
43- ### 发布
43+ 浏览器访问 http://localhost:9527
44+
45+ ## 发布
4446``` bash
4547 # 发布测试环境 带webpack ananalyzer
4648 npm run build:sit-preview
47-
49+
4850 # 构建生成环境
4951 npm run build:prod
5052```
5153
54+ ## 目录结构
55+ ``` shell
56+ ├── build // 构建相关
57+ ├── config // 配置相关
58+ ├── src // 源代码
59+ │ ├── api // 所以请求
60+ │ ├── assets // 主题 字体等静态资源
61+ │ ├── components // 全局公用组件
62+ │ ├── directive // 全局指令
63+ │ ├── filtres // 全局filter
64+ │ ├── mock // mock数据
65+ │ ├── router // 路由
66+ │ ├── store // 全局store管理
67+ │ ├── styles // 全局样式
68+ │ ├── utils // 全局公用方法
69+ │ ├── view // view
70+ │ ├── App.vue // 入口页面
71+ │ └── main.js // 入口 加载组件 初始化等
72+ ├── static // 第三方不打包资源
73+ │ ├── jquery
74+ │ └── Tinymce // 富文本
75+ ├── .babelrc // babel-loader 配置
76+ ├── eslintrc.js // eslint 配置项
77+ ├── .gitignore // git 忽略项
78+ ├── favicon.ico // favicon图标
79+ ├── index.html // html模板
80+ └── package.json // package.json
81+
82+ ```
83+
84+ ## 状态管理
85+ 后台只有user和app配置相关状态使用vuex存在全局,其它数据都由每个业务页面自己管理。
86+
87+
5288## 效果图
5389
5490#### 两步验证登录 支持微信和qq
Original file line number Diff line number Diff line change 3838 '' +
3939 '</symbol>' +
4040 '' +
41+ '<symbol id="icon-xinrenzhinan" viewBox="0 0 1024 1024">' +
42+ '' +
43+ '<path d="M780.108 761.059c54.451 60.351 87.706 138.983 87.706 225.358 0 12.015-0.659 23.882-1.902 35.581l-71.955 0c1.589-11.675 2.695-23.493 2.695-35.581 0-71.578-29.094-136.386-76.189-185.002C658.778 836.02 587.76 855.95 512 855.95c-75.689 0-146.65-19.888-208.294-54.432-47.129 48.604-76.358 113.305-76.358 184.9 0 12.088 1.105 23.906 2.695 35.581l-71.955 0c-1.243-11.699-1.902-23.567-1.902-35.581 0-86.366 33.19-165.055 87.587-225.446-96.765-78.277-158.75-197.84-158.75-331.998C85.023 193.163 276.188 2.001 512 2.001s426.977 191.162 426.977 426.972C938.977 563.184 876.94 682.785 780.108 761.059zM512 295.787c-196.511 0-355.814-80.302-355.814 122.251 0 202.551 159.303 366.749 355.814 366.749s355.814-164.199 355.814-366.749C867.814 215.485 708.511 295.787 512 295.787zM678.047 500.136c-26.2 0-47.442-21.24-47.442-47.442 0-26.197 21.242-47.442 47.442-47.442 26.202 0 47.442 21.244 47.442 47.442C725.488 478.896 704.249 500.136 678.047 500.136zM654.326 630.601c0 32.754-63.722 59.302-142.326 59.302s-142.326-26.549-142.326-59.302c0-8.445 4.376-16.446 12.017-23.719 21.98 20.927 71.979 35.579 130.309 35.579s108.329-14.652 130.309-35.579C649.949 614.155 654.326 622.156 654.326 630.601zM345.953 500.136c-26.202 0-47.442-21.24-47.442-47.442 0-26.197 21.24-47.442 47.442-47.442 26.2 0 47.442 21.244 47.442 47.442C393.395 478.896 372.153 500.136 345.953 500.136z" ></path>' +
44+ '' +
45+ '</symbol>' +
46+ '' +
4147 '<symbol id="icon-theme" viewBox="0 0 1024 1024">' +
4248 '' +
4349 '<path d="M788.00002 159.831491C756.00002 128 746 128 724.3801 128L642 128C642 128 576 188.923077 512 188.923077 448 188.923077 384 128 384 128L299.204802 128C276.629934 128 266 140.923077 245.847214 159.831491L81.582979 323.871735C70.243732 335.19552 52 371.692308 81.582979 408.655004 81.582979 408.655004 224.023667 540.29784 238.000003 541.53846L238.000003 835.076924C238.000003 868.452352 286.579 896 320 896L706 896C739.419808 896 788.00002 868.452352 788.00002 835.076924L788.00002 541.53846C802.145492 540.385864 942.448564 408.654992 942.448564 408.654992 974.00002 372 965.851264 334.883878 942.448584 311.513109L788.00002 159.831491Z" ></path>' +
Original file line number Diff line number Diff line change @@ -18,6 +18,9 @@ import authRedirect from '../views/login/authredirect';
1818import sendPWD from '../views/login/sendpwd' ;
1919import reset from '../views/login/reset' ;
2020
21+ /* Introduction*/
22+ const Introduction = resolve => require ( [ '../views/introduction/index' ] , resolve ) ;
23+
2124/* components*/
2225const componentsIndex = resolve => require ( [ '../views/components/index' ] , resolve ) ;
2326const Tinymce = resolve => require ( [ '../views/components/tinymce' ] , resolve ) ;
@@ -84,11 +87,19 @@ export default new Router({
8487 redirect : '/dashboard' ,
8588 name : '首页' ,
8689 hidden : true ,
90+ children : [ { path : 'dashboard' , component : dashboard } ]
91+ } ,
92+ {
93+ path : '/introduction' ,
94+ component : Layout ,
95+ redirect : '/introduction/index' ,
96+ name : '简述' ,
97+ icon : 'xinrenzhinan' ,
98+ noDropdown : true ,
8799 children : [
88- { path : 'dashboard ' , component : dashboard }
100+ { path : 'index ' , component : Introduction , name : '简述' }
89101 ]
90102 } ,
91-
92103 {
93104 path : '/permission' ,
94105 component : Layout ,
Original file line number Diff line number Diff line change 1+ <template >
2+ <div class =" app-container" >
3+ <div class =" wrapper" >
4+ <code >
5+ 这半年来一直在用vue写管理后台,目前后台已经有七十多个页面,十几种权限,但维护成本依然很低,效率依然很高,所以准备开源分享一下后台开发的经验和成果。目前的技术栈主要的采用vue+element+axios.由于是个人项目,所以数据请求都是用了mockjs代替。会出一系列的教程配套文章,如如何从零构建后台项目框架,如何做完整的用户系统(如权限验证,二次登录等),如何二次开发组件(如富文本),如何整合七牛等等文章,各种后台开发经验等等。莫急~~
6+ </code >
7+ </div >
8+ </div >
9+ </template >
10+ <style scoped>
11+ .wrapper {
12+ width : 800px ;
13+ margin : 30px auto ;
14+ }
15+ </style >
Original file line number Diff line number Diff line change 2424 </div >
2525
2626 <div class =" block" >
27- <el-tag class =' tag-item' v-for =" tag in tags" :type =" tag.type" >
27+ <el-tag class =' tag-item' v-for =" tag in tags" :type =" tag.type" :key = ' tag.type ' >
2828 {{tag.name}}
2929 </el-tag >
3030 </div >
You can’t perform that action at this time.
0 commit comments