您现在的位置是:首页 > 技术教程 正文

vue-element-admin 快速构建后台系统

admin 阅读: 2024-03-26
后台-插件-广告管理-内容页头部广告(手机)

1、vue-element-admin

vue-element-admin是基于element-ui 的一套后台管理系统集成方案。

功能:https://panjiachen.github.io/vue-element-admin-site/zh/guide/#功能

GitHub地址:https://github.com/PanJiaChen/vue-element-admin

项目在线预览:https://panjiachen.gitee.io/vue-element-admin

2、vue-admin-template

2.1、简介

vue-admin-template是基于vue-element-admin的一套后台管理系统基础模板(最少精简版),可作为模板进行二次开发。

GitHub地址:https://github.com/PanJiaChen/vue-admin-template

建议:你可以在 vue-admin-template 的基础上进行二次开发,把 vue-element-admin当做工具箱,想要什么功能或者组件就去 vue-element-admin 那里复制过来。

2.2、目录结构

  1. |-dist 生产环境打包生成的打包项目
  2. |-mock 使用mockjs来mock接口
  3. |-public 包含会被自动打包到项目根路径的文件夹
  4. |-index.html 唯一的页面
  5. |-src
  6. |-api 包含接口请求函数模块
  7. |-table.js 表格列表mock数据接口的请求函数
  8. |-user.js 用户登陆相关mock数据接口的请求函数
  9. |-assets 组件中需要使用的公用资源
  10. |-404_images 404页面的图片
  11. |-components 非路由组件
  12. |-SvgIcon svg图标组件
  13. |-Breadcrumb 面包屑组件(头部水平方向的层级组件)
  14. |-Hamburger 用来点击切换左侧菜单导航的图标组件
  15. |-icons
  16. |-svg 包含一些svg图片文件
  17. |-index.js 全局注册SvgIcon组件,加载所有svg图片并暴露所有svg文件名的数组
  18. |-layout
  19. |-components 组成整体布局的一些子组件
  20. |-mixin 组件中可复用的代码
  21. |-index.vue 后台管理的整体界面布局组件
  22. |-router
  23. |-index.js 路由器
  24. |-store
  25. |-modules
  26. |-app.js 管理应用相关数据
  27. |-settings.js 管理设置相关数据
  28. |-user.js 管理后台登陆用户相关数据
  29. |-getters.js 提供子模块相关数据的getters计算属性
  30. |-index.js vuex的store
  31. |-styles
  32. |-xxx.scss 项目组件需要使用的一些样式(使用scss)
  33. |-utils 一些工具函数
  34. |-auth.js 操作登陆用户的token cookie
  35. |-get-page-title.js 得到要显示的网页title
  36. |-request.js axios二次封装的模块
  37. |-validate.js 检验相关工具函数
  38. |-index.js 日期和请求参数处理相关工具函数
  39. |-views 路由组件文件夹
  40. |-dashboard 首页
  41. |-login 登陆
  42. |-App.vue 应用根组件
  43. |-main.js 入口js
  44. |-permission.js 使用全局守卫实现路由权限控制的模块
  45. |-settings.js 包含应用设置信息的模块
  46. |-.env.development 指定了开发环境的代理服务器前缀路径
  47. |-.env.production 指定了生产环境的代理服务器前缀路径
  48. |-.eslintignore eslint的忽略配置
  49. |-.eslintrc.js eslint的检查配置
  50. |-.gitignore git的忽略配置
  51. |-.npmrc 指定npm的淘宝镜像和sass的下载地址
  52. |-babel.config.js babel的配置
  53. |-jsconfig.json 用于vscode引入路径提示的配置
  54. |-package.json 当前项目包信息
  55. |-package-lock.json 当前项目依赖的第三方包的精确信息
  56. |-vue.config.js webpack相关配置(如: 代理服务器)

3、二次开发

3.1、项目启动

这里使用vue-admin-template进行二次开发。首先将源码克隆到本地,或者直接下载压缩包解压到本地。

创建一个新文件夹(oa-system-front),将源码文件放至其中,用vscode打开文件夹,将oa-system-front加至工作区

将其保存至打开的文件下!!!

事先下载好Node.js,对源码文件单击鼠标右键,在终端打开,使用npm install命令下载相关依赖

使用npm run dev命令启动项目

3.2、修改相关配置

3.2.1、设置反向代理(将请求转发至我们的后端)

修改方式一:进入.env.development(不能解决跨域问题)

修改方式二:在vue.config.js中修改配置

  • 注释掉mock接口配置

  • 配置代理转发请求到目标接口

  1. // before: require('./mock/mock-server.js')
  2. proxy: {
  3. '/dev-api': { // 匹配所有以 '/dev-api'开头的请求路径
  4. target: 'http://localhost:8800',//类似于Nginx反向代理
  5. changeOrigin: true, // 支持跨域
  6. pathRewrite: { // 重写路径: 去掉路径中开头的'/dev-api'
  7. '^/dev-api': ''
  8. }
  9. }
  10. }

3.2.2、编写后端登录接口

查看登录响应的数据

可以看到发了两个请求!!

其中login和info请求的响应数据如下

编写对应的接口

  1. /**
  2. * 返回结果状态码枚举
  3. */
  4. @Getter
  5. public enum ResultCodeEnum {
  6. SUCCESS(200,"成功"),
  7. FAIL(201, "失败");
  8. private Integer code;
  9. private String message;
  10. private ResultCodeEnum(Integer code, String message) {
  11. this.code = code;
  12. this.message = message;
  13. }
  14. }
  1. /**
  2. * 全局返回同一结果封装类
  3. */
  4. @Data
  5. public class Result {
  6. private Integer code;
  7. private String message;
  8. private T data;
  9. private Result(){}
  10. public static Result build(T data){
  11. Result result=new Result();
  12. if(data!=null){
  13. result.setData(data);
  14. }
  15. return result;
  16. }
  17. public static Result build(T data,Integer code,String msg){
  18. Result build = build(data);
  19. build.setCode(code);
  20. build.setMessage(msg);
  21. return build;
  22. }
  23. public static Result build(T data,ResultCodeEnum codeEnum){
  24. Result build = build(data);
  25. build.setMessage(codeEnum.getMessage());
  26. build.setCode(codeEnum.getCode());
  27. return build;
  28. }
  29. //成功
  30. public static Result success(){
  31. return build(null,ResultCodeEnum.SUCCESS);
  32. }
  33. public static Result success(T data){
  34. return build(data,ResultCodeEnum.SUCCESS);
  35. }
  36. //失败
  37. public static Result fail(){
  38. return build(null,ResultCodeEnum.FAIL);
  39. }
  40. public static Result fail(T data){
  41. return build(data,ResultCodeEnum.FAIL);
  42. }
  43. public Result message(String msg){
  44. this.setMessage(msg);
  45. return this;
  46. }
  47. public Result code(Integer code){
  48. this.setCode(code);
  49. return this;
  50. }
  51. }

接口如下:

  1. @Api(tags = "后台登录管理")
  2. @RestController
  3. @RequestMapping("/admin/system/index")
  4. public class IndexController {
  5. @ApiOperation("登录接口")
  6. @PostMapping("/login")
  7. public Result login(){
  8. Map map=new HashMap<>();
  9. map.put("token","admin-token");
  10. return Result.success(map);
  11. }
  12. @GetMapping("info")
  13. public Result info() {
  14. Map map = new HashMap<>();
  15. map.put("roles","[admin]");
  16. map.put("name","admin");
  17. map.put("avatar","https://oss.aliyuncs.com/aliyun_id_photo_bucket/default_handsome.jpg");
  18. return Result.success(map);
  19. }
  20. @PostMapping("logout")
  21. public Result logout(){
  22. return Result.success();
  23. }
  24. }

3.2.3、修改请求路径和返回状态码拦截

修改状态码拦截器

从这可以看到,只有返回状态码为20000才能登录进去,但我们的统一结果封装类中200为成功,所以我们可以修改前端状态码拦截。

在src/utils/request.js中进行修改

此时我修改的状态码为200,即状态码为200时即可登录进系统!!

修改登录请求路径

上面我们配置的反向代理只解决了url前面的部分,但后面的还没解决,此时需要修改src/api/user.js文件

将url修改为我们后端接口就行,修改后如下:

启动后端项目和前端,登录试试!!

此时登录成功!!!

3.3、页面修改

3.3.1、设置页面路由

在src/router/index.js中重新定义constantRoutes

3.3.2、在api文件夹创建js文件(此处为sysRole.js),定义接口信息

3.3.3、在views文件夹中创建页面,在页面引入定义接口js文件,调用接口通过axios实现功能

参照上面引入的页面创建相应的文件夹及页面(后缀名为vue)

在list页面中初始化页面

此时就可以自己构建我们的系统啦啦啦~~~~~~~~~~

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索