一、讲师查询功能

1、添加路由

在/src/router/index.js中

{path: '/teacher',component: Layout,redirect: '/teacher/table',name: '讲师管理',meta: { title: '讲师管理', icon: 'example' },children: [{path: 'table',name: '讲师列表',component: () => import('@/views/edu/teacher/list'),meta: { title: '讲师列表', icon: 'table' }},{path: 'save',name: '添加讲师',component: () => import('@/views/edu/teacher/save'),meta: { title: '添加讲师', icon: 'tree' }}]
},

2、创建路由对应的页面


list.vue

<template><div class="app-container">讲师列表</div>
</template>

save.vue

<template><div class="app-container">讲师添加</div>
</template>

3、在api文件夹中创建teacher.js定义访问的接口地址

import request from '@/utils/request'export default{//讲师列表(条件查询分页)//current当前页 limit每页记录数 teacherQuery条件对象getTeacherListPage(current,limit,teacherQuery){return request({//url: '/eduservice/teacher/pageTeacherCondition/'+current+"/"+limit,url: `/eduservice/teacher/pageTeacherCondition/${current}/${limit}`,method: 'post',//teacherQuery条件对象,后端使用RequestBody获取对象//data表示把对象转换json进行传递到接口里面data: teacherQuery})}
}

4、在讲师列表页面 list.vue 页面调用定义的接口方法,得到接口返回数据

<script>
import teacher from '@/api/edu/teacher'export default {// data:{// },data(){//定义变量和初始值return {list:null,//查询之后接口返回集合page:1,//当前页limit:10,//每页记录数total:0,//总记录数teacherQuery:{}//条件封装对象}},created(){//在页面渲染之前执行,一般调用methods定义的方法//调用this.getList()},methods:{//创建具体的方法,调用teacher.js定义方法//讲师列表的方法getList(page = 1){this.page = pageteacher.getTeacherListPage(this.page,this.limit,this.teacherQuery).then(response =>{//response接口返回的数据//console.log(response)this.list = response.data.rowsthis.total = response.data.totalconsole.log(this.list)console.log(this.total)}) //请求成功.catch(error => {console.log(error)}) //请求失败}}
}
</script>

5、数据渲染

在讲师列表页面 list.vue 页面

<template><div class="app-container">讲师列表<!-- 表格 --><el-tablev-loading="listLoading":data="list"element-loading-text="数据加载中"borderfithighlight-current-row><el-table-columnlabel="序号"width="70"align="center"><template slot-scope="scope">{{ (page - 1) * limit + scope.$index + 1 }}</template></el-table-column><el-table-column prop="name" label="名称" width="80" /><el-table-column label="头衔" width="80"><template slot-scope="scope">{{ scope.row.level===1?'高级讲师':'首席讲师' }}</template></el-table-column><el-table-column prop="intro" label="资历" /><el-table-column prop="gmtCreate" label="添加时间" width="160"/><el-table-column prop="sort" label="排序" width="60" /><el-table-column label="操作" width="200" align="center"><template slot-scope="scope"><router-link :to="'/teacher/edit/'+scope.row.id"><el-button type="primary" size="mini" icon="el-icon-edit">修改</el-button></router-link><el-button type="danger" size="mini" icon="el-icon-delete" @click="removeDataById(scope.row.id)">删除</el-button></template></el-table-column></el-table></div>
</template>

6、分页插件

在src/views/edu/teacher/list.vue

<!-- 分页 -->
<el-pagination:current-page="page":page-size="limit":total="total"style="padding: 30px 0; text-align: center;"layout="total, prev, pager, next, jumper"@current-change="getList"
/>

分页的方法修改,添加页码参数

7、顶部查询表单

注意:element-ui的 date-picker 组件默认绑定的时间值是默认世界标准时间,和中国时间差8小时

设置 value-format=“yyyy-MM-dd HH:mm:ss” 改变绑定的值

<!--查询表单-->
<el-form :inline="true" class="demo-form-inline"><el-form-item><el-input v-model="teacherQuery.name" placeholder="讲师名"/></el-form-item><el-form-item><el-select v-model="teacherQuery.level" clearable placeholder="讲师头衔"><el-option :value="1" label="高级讲师"/><el-option :value="2" label="首席讲师"/></el-select></el-form-item><el-form-item label="添加时间"><el-date-pickerv-model="teacherQuery.begin"type="datetime"placeholder="选择开始时间"value-format="yyyy-MM-dd HH:mm:ss"default-time="00:00:00"/></el-form-item><el-form-item><el-date-pickerv-model="teacherQuery.end"type="datetime"placeholder="选择截止时间"value-format="yyyy-MM-dd HH:mm:ss"default-time="00:00:00"/></el-form-item><el-button type="primary" icon="el-icon-search" @click="getList()">查询</el-button><el-button type="default" @click="resetData()">清空</el-button>
</el-form>

清空数据

resetData(){//清空表单//表单输入项数据清空this.teacherQuery = {}//查询所有讲师数据this.getList
}

二、讲师删除功能

1、在每条记录后面添加删除按钮

2、在按钮绑定事件

@click="removeDataById"

3、在绑定事件的方法传递删除讲师的id值

@click="removeDataById(scope.row.id)"

4、在api文件夹teacher.js 定义删除接口的地址

在 src/api/edu/teacher.js

//删除讲师
deleteTeacher(id) {return request({url: `/eduservice/teacher/${id}`,method: 'delete'})
}

5、页面调用实现删除方法

在src/views/edu/teacher/list.vue

//删除讲师方法
removeDataById(id) {this.$confirm('此操作将永久删除该讲师, 是否继续?', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {//点击确定,删除成功//调用删除方法teacher.deleteTeacher(id).then(response => {//删除成功//提示信息this.$message({type: 'success',message: '删除成功!'});//回到查询列表this.getList()}) })//点击取消,删除失败
}

6、运行项目测试

三、讲师添加功能

1、定义api

在 src/api/edu/teacher.js

//添加讲师
addTeacher(teacher) {return request({url: `/eduservice/teacher/addTeacher`,method: 'post',data: teacher})
}

2、初始化页面组件

在src/views/edu/teacher/save.vue

<el-form label-width="120px"><el-form-item label="讲师名称"><el-input v-model="teacher.name"/></el-form-item><el-form-item label="讲师排序"><el-input-number v-model="teacher.sort" controls-position="right" min="0"/></el-form-item><el-form-item label="讲师头衔"><el-select v-model="teacher.level" clearable placeholder="请选择"><!--数据类型一定要和取出的json中的一致,否则没法回填因此,这里value使用动态绑定的值,保证其数据类型是number--><el-option :value="1" label="高级讲师"/><el-option :value="2" label="首席讲师"/></el-select></el-form-item><el-form-item label="讲师资历"><el-input v-model="teacher.career"/></el-form-item><el-form-item label="讲师简介"><el-input v-model="teacher.intro" :rows="10" type="textarea"/></el-form-item><!-- 讲师头像:TODO --><el-form-item><el-button :disabled="saveBtnDisabled" type="primary" @click="saveOrUpdate">保存</el-button></el-form-item>
</el-form>

3、定义接口方法,并返回数据

<script>
import teacherApi from '@/api/edu/teacher'export default {data() {return {teacher:{name:'',sort:0,level:1,career:'',intro:'',avatar:''},saveBtnDisabled: false//保存按钮是否禁用}},created() {},methods:{saveOrUpdate() {//添加this.saveTeacher()},//添加讲师方法saveTeacher() {teacherApi.addTeacher(this.teacher).then(response => {//添加成功//提示信息this.$message({type: 'success',message: '添加成功!'});//回到列表页面  路由跳转this.$router.push({path:'/teacher/table'})}).catch(error => {})}}
}
</script>

四、讲师修改功能

1、每条记录后添加修改按钮

<router-link :to="'/teacher/edit/'+scope.row.id"><el-button type="primary" size="mini" icon="el-icon-edit">修改</el-button>
</router-link>

2、点击修改按钮进入表单页面,进行数据回显

根据讲师 id 查询数据显示

3、通过路由跳转进入数据回显页面,在路由index页面添加路由

{path: 'edit/:id',name: 'EduTeacherEdit',component: () => import('@/views/edu/teacher/save'),meta: { title: '编辑讲师', noCache: true },hidden: true
}

4、在表单页面显示数据回显

(1)在teacher.js定义根据id查询接口

//根据id查询讲师,回显数据
getTeacherInfo(id) {return request({url: `/eduservice/teacher/getTeacher/${id}`,method: 'get'})
}

(2)在页面调用接口实现数据回显

//根据讲师id查询的方法
getInfo(id) {teacherApi.getTeacherInfo(id).then(response => {this.teacher = response.data.teacher})
},

(3)调用根据id查询的方法

因为添加和修改都使用save页面,区别添加还是修改,只有修改时候查询数据回显。

依据:判断路径里面是否有讲师id值,如果有id值修改,没有id值直接添加。

created() {//页面渲染之前执行//判断路径是否有id值if(this.$route.params && this.$route.params.id) {//从路径获取id值const id = this.$route.params.id//调用根据id查询的方法this.getInfo(id)}
},

5、最终修改实现

(1)在api的teacher.js中定义修改接口

在 src/api/edu/teacher.js

//修改讲师
updateTeacherInfo(teacher) {return request({url: `/eduservice/teacher/updateTeacher`,method: 'post',data: teacher})
}

(2)在页面中调用修改方法

在src/views/edu/teacher/save.vue

saveOrUpdate() {//判断修改还是添加//根据teacher是否有idif(!this.teacher.id) {//添加this.saveTeacher()} else {//修改this.updateTeacher()}
},
//修改讲师方法
updateTeacher() {teacherApi.updateTeacherInfo(this.teacher).then(response => {//提示信息this.$message({type: 'success',message: '修改成功!'});//回到列表页面  路由跳转this.$router.push({path:'/teacher/table'})})
},

五、存在问题

第一次点击修改进行数据回显

第二次在去点击添加讲师,进入表单页面,但是问题:表单页面还是显示修改回显数据,正确效果应该是表单数据清空。

解决方式

在做添加讲师时候,表单数据清空就可以了。

init() {//判断路径有id值,做修改if(this.$route.params && this.$route.params.id) {//从路径获取id值const id = this.$route.params.id//调用根据id查询的方法this.getInfo(id)}else {//路径没有id值,做添加//清空表单this.teacher = {}}
},

上面代码没有解决问题,为什么?

多次路由跳转到同一个页面,在页面中created方法只会执行第一次,后面在进行跳转不会执行的。【路由切换问题】

最终解决:使用vue监听

created() {//页面渲染之前执行this.init()
},
watch: {//监听$route(to, from) {//路由变化方式,路由发生变化,方法就会执行this.init()}
},

如果有收获!!! 希望老铁们来个三连,点赞、收藏、转发。
创作不易,别忘点个赞,可以让更多的人看到这篇文章,顺便鼓励我写出更好的博客

谷粒学院(七)讲师列表前端实现相关推荐

  1. 谷粒学院项目讲师管理(二)

    谷粒学院项目讲师管理 一.讲师列表 1.添加讲师列表路由 2.创建路由对应的vue页面 3.第三步在api文件夹创建teacher.js定义访问的接口地址 二.分页查询 三.条件查询 四.讲师添加 五 ...

  2. 谷粒学院day5 讲师管理模块的前端实现

    day5 讲师管理模块的前端实现 目 录 day5 讲师管理模块的前端实现 1.登录功能改造 2.跨域问题 3.前端框架开发过程 4.讲师列表的前端实现 5.讲师删除功能的前端实现 6.讲师添加 7. ...

  3. 尚硅谷谷粒学院学习笔记(防坑点的总结部分勘误)

    谷粒学院学习笔记 部分勘误 数据库设计规约 模块说明 环境搭建 创建一个Spring Boot 的父工程,版本使用:2.2.1.RELEASE 父工程pom.xml里面添加 在pom.xml中添加依赖 ...

  4. Day206.课程分类【导入功能】前端实现、 课程分类列表【显示功能】、课程管理【模块需求、添加课程功能】 -谷粒学院

    谷粒学院 [课程分类]-导入前端实现 一.配置路由 1.添加路由 src/router/index.js //课程分类{path: 'subject',component: Layout,redire ...

  5. Day213.讲师详细页、课程列表页面、课程详细页、阿里云视频播放测试、阿里云云视频播放器 -谷粒学院

    谷粒学院 讲师详细页 一.后端部分 1.TeacherFrontController @RestController @CrossOrigin @RequestMapping("/eduse ...

  6. Day212.OAuth2、微信二维码登入注册功能、用户登录信息前后端供、讲师列表前后端 -谷粒学院

    谷粒学院 OAuth2的使用场景 一.OAuth2解决什么问题 1.OAuth2提出的背景 照片拥有者想要在云冲印服务上打印照片,云冲印服务需要访问云存储服务上的资源 2.图例 资源拥有者:照片拥有者 ...

  7. 谷粒学院(十七)讲师列表页 | 讲师详情 | 课程列表页 | 课程详情 | 整合阿里云视频点播

    文章目录 一.讲师列表页 - 前后端 1.Controller类 2.Service类 3.使用Swagger测试 4.创建 api 5.讲师列表组件中调用api 6.页面渲染 7.页面效果展示 二. ...

  8. 谷粒学院(十七)讲师列表页 | 讲师详情 | 整合阿里云视频点播

    一.讲师列表页 - 后端 1.Controller类 @Api(description = "讲师管理前端") @RestController @RequestMapping(&q ...

  9. Day210.服务端渲染技术NUXT、整合前台主页面、名师、课程静态页面、首页整合banner数据后端部分【创建banner微服务、接口、banner后台前端实现】 -谷粒学院

    谷粒学院 服务端渲染技术NUXT 一.服务端渲染技术NUXT 1.什么是服务端渲染 服务端渲染又称SSR (Server Side Render)是在服务端完成页面的内容,而不是在客户端通过AJAX获 ...

最新文章

  1. dom vue 加载完 执行_前端面试题——Vue
  2. IIS启动配置的一些命令
  3. 你能排第几?2016互联网行业薪酬数据分析
  4. 华中C语言程序简答题,华中科技大学0911年C语言程序设计试卷.doc
  5. ckeditor3 在Asp.net MVC2.0环境中的配置
  6. 解析JVM线程同步机制
  7. matlab2012生成dll,64位win7下vc2010如何调用matlab2012a中生成的dll文件
  8. c语言中memcpy函数_带有示例的C中的memcpy()函数
  9. 情人节,找个程序员当男朋友,一般都不会太差
  10. mysql-数据库操作-连接-创建-删除-修改编码-查询-切换
  11. 五大软件设计原则学习笔记4——接口隔离原则
  12. 如何HTML中输入正确格式,以HTML格式输入样式
  13. abaqus python二次开发攻略_Python 进行 Abaqus 二次开发的基础知识
  14. Kotlin StandardKt 标准库源码走一波
  15. 打怪升级的monteCarlo仿真方法
  16. 狡兔死,良弓藏-每个王朝都一样
  17. 翻转课堂管理系统_ER图_功能图_数据字典_数据库脚本
  18. dcdc转换器计算机显示,DC-DC转换器的问题
  19. eplan连接定义点不显示_CAD和EPLAN!电气制图你会选择哪个?
  20. 基于51单片机的银行排队叫号机设计

热门文章

  1. 索尼android电视图片轮播,索尼75寸4K新电视体验 Android系统值得关注
  2. ANSYS计算的基本流程
  3. 畅享网年会圆满落幕,乘风波浪再次前行
  4. 浅谈加班 - 透过加班看管理
  5. Open-Falcon 小米开源监控系统Dashboard使用操作与告警通知
  6. 数据可视化之箱线图详解
  7. Wifi自动连接评分机制
  8. 女生计算机类选什么专业好就业,非常适合女生报考的5大专业,毕业就业不用愁,工作稳定发展好...
  9. 打印杨辉三角形知识点_高中数学知识点:杨辉三角问题解法(动画版)
  10. A. AD 2020