用户页面管理功能— 搜索功能和分页功能
搜索功能的实现
关于搜索功能,是通过 name进行搜索的,所以传入一个userform 页面设计部分
<el-form :model="userform" :inline="true">
<el-form-item>
<el-input v-model="userform.name" placeholder="请输入名称"></el-input>
</el-form-item>
<el-form-item>
<el-button @click="onSubmit" type="primary">查询</el-button>
</el-form-item>
</el-form>
js里面的逻辑:
userform: {
name: "",
},
onSubmit() {
this.getList();
},
getList() {
getUser({ params: { ...this.userform, ...this.pageData } }).then(
({ data }) => {
this.tableData = data.list;
this.total = data.count || 0;
}
);
},
分页功能的实现
关于分页功能,需要使用到 element 中的Pagination 分页 组件
第一步 关于页面的设计
<div>
<el-pagination layout="prev, pager, next" :total="total"> </el-pagination>
</div>
第二步 在js代码中的设计
在data 里面进行定义一个变量 叫做 total 初始值为0 之后通过从后端获取到得到数据进行处理,里面的 count 表示当前数据的个数 进行判断 如果不存在 赋值为0,
getList() {
getUser().then(({ data }) => {
this.tableData = data.list;
this.total = data.count || 0;
});
},
第三步 当点击 每一页时,进行数据的切换
对于使用的组件里面 ,包含一个事件类型, current-change currentPage 改变时会触发 当前页
通过使用事件进行触发,代码如下
<el-pagination
layout="prev, pager, next"
:total="total"
@current-change="handlePage"
>
</el-pagination>
在js里面的逻辑
首先在 data里面定义一个对象 ,用来记录当前页和当前页显示几条数据
pageData: {
page: 1,
limit: 10,
},
};
之后就在定义的函数中进行逻辑的书写,将当前点击的页码赋值给data里面的page,然后使用 getList 重新进行页面的渲染
handlePage(val) {
this.pageData.page = val;
this.getList();
},
但是需要注意的是,因为此时进行向后端请求数据,是带有参数进行请求的,所以在 getList中要进行更改, 其中里面的{ params: this.pageData }是以对象的形式传递给后端的
getList() {
getUser({ params: this.pageData }).then(({ data }) => {
this.tableData = data.list;
this.total = data.count || 0;
});
},
最后就是将mock.js文件中进行拦截的代码改为
Mock.mock(/api\/user\/getUser/,user.getUserList)
|