vue-admin-template
1.简介
我们开发讲师管理界面可以通过集成好的前端框架vue-element-admin基础上进行开发。
功能: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
vue-admin-template是基于vue-element-admin的一套后台管理系统基础模板(最少精简版),可作为模板进行二次开发。
GitHub地址:https://github.com/PanJiaChen/vue-admin-template
建议:你可以在 vue-admin-template
的基础上进行二次开发,把 vue-element-admin
当做工具箱,想要什么功能或者组件就去 vue-element-admin
那里复制过来。
我们这次选择功能更精简的vue-admin-template来进行前端页面的开发。
将下载解压好的文件复制到工作区,接着进入cmd
这里由于它并没有自带所需要的依赖,我们需要通过npm下载。但是有些依赖被墙了,我们需要通过淘宝的cnpm进行安装。
1 | 安装cnpm |
2.目录结构
1 | . |
1 | src |
3.改造本地登录接口
系统默认登陆地址不是我们定义的,我们需要改成我们之前写的本地8001端口
进入config/dev.env.js修改基础url
1 | module.exports = merge(prodEnv, { |
接着我们查看api下的login.js,查看其引用的方法是谁定义的。通过一层一层引用发现vue-admin-template\src\store\modules\user.jsy定义了此方法。
1 | actions: { |
经过分析我们发现进行登陆调用两个方法:login登录和getInfo获得用户信息方法。所以创建两个接口实现用户登录:
- login返回token值
- getInfo返回 roles、name、avatar
在service_edu模块下创建EduLoginController
1 |
|
修改login.js方法的url使之和接口对应
1 | export function login(username, password) { |
4.解决跨域问题
测试登陆,发现报错
这是由于跨域而导致的问题,所谓跨域:
- 访问协议
- ip地址
- 端口号
这三个有一个不一致就是跨域问题。我们采用CORS解决方案,在《品优购13—跨域解决方案与提交订单》中介绍过。在接口中添加注解@CrossOrigin即可解决(上面代码已添加)
接着测试发现成功进入
讲师管理页面开发
1.添加路由
修改src\router\index.js
1 | { |
创建页面list.vue和save.vue
2.讲师列表实现
2.1定义api
创建文件 src/api/edu/teacher.js
1 | import request from '@/utils/request' |
2.2表格渲染
src/views/edu/teacher/list.vue
1 | <template> |
2.3查询和分页
1 | <script> |
3.讲师删除
(1)定义api
1 | //删除讲师 |
(2)定义methods,使用MessageBox 弹框组件
1 | //逻辑删除 |
4.讲师添加和更新
4.1定义api
1 | //添加讲师 |
4.2初始化组件
1 | <template> |
4.3更新路由
由于我们添加和更新都在一个页面,所以我们需要更新一下路由
修改按钮:
1 | <router-link :to="'/teacher/edit/'+scope.row.id"> |
路由:
1 | { |
4.4完善方法
1 | <script> |
4.5存在问题
vue-router导航切换 时,如果两个路由都渲染同个组件,组件会重(chong)用,
组件的生命周期钩子(created)不会再被调用, 使得组件的一些数据无法根据 path的改变得到更新
因此:
1、我们可以在watch中监听路由的变化,当路由变化时,重新调用created中的内容
2、在init方法中我们判断路由的变化,如果是修改路由,则从api获取表单数据,如果是新增路由,则重新初始化表单数据
1 | watch: {//监听 |