一、讲师查询功能
1、添加路由
在/src/router/index.js中添加前端页面的菜单路由
{ path: '/teacher', component: Layout, //布局 redirect: '/teacher/table', name: '讲师管理', meta: { title: '讲师管理', icon: 'example' }, children: [{ path: 'list', name: '讲师列表', component: () => import ('@/views/edu/teacher/list'), meta: { title: '讲师列表', icon: 'table' } }, { path: 'add', name: '添加讲师', component: () => import ('@/views/edu/teacher/add'), meta: { title: '添加讲师', icon: 'tree' } } ] }
2、创建路由对应的页面
list.vue
<template> <div class="app-container"> 讲师列表 </div> </template>
add.vue
<template> <div class="app-container"> 讲师添加 </div> </template>
3、在api文件夹中定义访问接口
import request from '@/utils/request' export default { //查询讲师列表(分页) current:当前页 limit:每页记录数 teacherQuery:条件对象 getTeacherListPage(current, limit, teacherQuery) { return request({ // url: '/eduservice/teacher/pageQuery/'+current+'/'+limit, url: `/eduservice/teacher/pageQuery/${current}/${limit}`, method: 'post', //teacherQuery条件对象,后端使用RequestBody获取对象 //data表示把对象转为json进行传递到接口里面 data: teacherQuery }) } }
4、在讲师列表页面调用接口
list.vue
<script> import teacher from '@/api/edu/teacher' export default { //注意不可以这样哦 Vue实例里面data可以写函数式或者对象式,但是组件里面只能写函数式!!! // data:{} data() {//定义变量和初始值 return { list:null,//查询之后接口返回集合 page:1,//当前页 limit:5,//每页记录数 total:0,//总记录数 teacherQuery:{}//条件封装对象 } }, created() {//在页面渲染之前执行,一般调用methods中的方法 this.getList(); }, methods: {//创建具体的方法,调用teacher.js定义方法 //讲师列表的方法 getList(page = 1){//page默认值为1,当使用分页组件时会传入新的page参数 this.page = page teacher.getTeacherListPage(this.page,this.limit,this.teacherQuery) .then(response=>{ this.list = response.data.rows; this.total = response.data.total; // console.log(response); }).catch(error=>{ console.log(error) }) } } } </script>
5、页面数据渲染
在讲师列表页面 list.vue 页面
<template> <div class="app-container"> //讲师列表 <!-- 表格 --> <el-table v-loading="listLoading" :data="list" element-loading-text="数据加载中" border fit highlight-current-row> <el-table-column label="序号" 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" />
分页方法修改,添加页码参数(因为分页时,会自动传入新的page,所以需要重新赋值)
效果:
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-picker v-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-picker v-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() }
8、结果展示