当前位置:   article > 正文

VUE项目后台管理系统--vue+elementUI组件table实现前端分页功能+前端模糊查询功能_基于vue+element若依 table的查(纯前端解决方案,附源码)

基于vue+element若依 table的查(纯前端解决方案,附源码)

        前端后台管理会存在很多表格,表格数据过多就需要分页,前端交互每次搜索如果都请求服务器会加大服务器的压力,所以在数据量不是很大的情况下可以一次性将数据返回,前端做检索。


效果


一、查询条件

代码如下(示例):

  1. <div style="margin-left: 20px">
  2. <el-form :inline="true" :model="formQuery" class="demo-form-inline">
  3. <el-form-item label style="margin-right: 10px">
  4. <el-input placeholder="航线名称" clearable prefix-icon="el-icon-search"
  5. v-model="formQuery.routeName">
  6. </el-input>
  7. </el-form-item>
  8. <el-form-item label style="margin-right: 10px">
  9. <el-select v-model="formQuery.deptId" filterable clearable placeholder="选择部门">
  10. <el-option v-for="item in departmentList" :key="item.deptId"
  11. :label="item.name" :value="item.deptId">
  12. </el-option>
  13. </el-select>
  14. </el-form-item>
  15. <el-form-item label style="margin-right: 10px">
  16. <el-select v-model="formQuery.routeType" filterable clearable
  17. placeholder="航线分类">
  18. <el-option v-for="item in routeTypeList" :key="item.id" :label="item.name"
  19. :value="item.id"></el-option>
  20. </el-select>
  21. </el-form-item>
  22. <el-form-item class="overall" style="margin-right: 10px">
  23. <el-button type="primary" icon="el-icon-search" @click="queryBtn">查询</el-button>
  24. </el-form-item>
  25. </el-form>
  26. </div>

二、页面展示

(1)分页展示

  1. <!-- 分页区域 -->
  2. <div class="pages">
  3. <el-pagination background @current-change="handleCurrentChange"
  4. @size-change="handleSizeChange":current-page.sync="current" :page-size="pageSize"
  5. :page-sizes="[5, 10, 15, 30]"
  6. layout="total, sizes,prev, pager, next, jumper" :total="total">
  7. </el-pagination>
  8. </div>

@size-change的属性:绑定当前页数量的事件,当前页数量变化时,触发SizeChange方法@current-change的属性:改变当前页时会触发事件
:current-page 的属性:绑定当前第几页
:page-size 的属性:绑定当前有几条数据
:total=“total” 这个是绑定一个变量保存数量总数

(2)表格数据

  1. <el-table ref="multipleTable" :data="tableData" border height="700"
  2. @selection-change="handleSelectionChange" v-loading="loading" element-loading-text="正在加
  3. 载中" style="overflow-y: auto">
  4. <el-table-column type="selection" width="80"></el-table-column>
  5. <el-table-column type="index" label="序号" width="100" :index="indexMethod">
  6. </el-table-column>
  7. <el-table-column prop="routeInfo.routeName" label="航线名称"></el-table-column>
  8. <el-table-column prop="routeInfo.routeType" label="航线类型">
  9. <template slot-scope="scope">
  10. {{ scope.row.routeInfo.routeType ? "精细化" : "通道巡检" }}
  11. </template>
  12. </el-table-column>
  13. <el-table-column prop="routeInfo.deptName" label="部门"></el-table-column>
  14. <el-table-column prop="routeInfo.createTime" label="创建时间"></el-table-column>
  15. </el-table>

(3)绑定以上的变量:

  1. export default {
  2. data() {
  3. return {
  4. formQuery: {
  5. routeName: "",
  6. deptId: "",
  7. routeType: "",
  8. },
  9. tableData: [],
  10. current: 1, // 当前页码
  11. total: 0,
  12. pageSize: 10, // 每页显示多少条
  13. isClickSearch: false, // 当点击搜索时 对底部分页进行判断
  14. }
  15. }
  16. }

(4)此处是条件查询的数据:

  1. // 表格查询
  2. queryBtn() {
  3. this.isClickSearch = true; // 当点击搜索时 对底部分页进行判断
  4. const formQuery = this.formQuery;
  5. if (!formQuery.routeName) delete formQuery.routeName;
  6. if (!formQuery.deptId) delete formQuery.deptId;
  7. if (formQuery.routeType === 0 || formQuery.routeType === 1) {
  8. formQuery.routeType = parseInt(formQuery.routeType);
  9. } else {
  10. delete formQuery.routeType;
  11. }
  12. this.current = 1;
  13. this.getRouteBySearch(this.current, this.pageSize, this.formQuery);
  14. },

(5)此处是分页的绑定事件的处理:(此处省略表格数据的对接)

  1. //改变多少条
  2. handleSizeChange(pageIndex) {
  3. this.current = 1;
  4. this.pageSize = pageIndex;
  5. if (this.isClickSearch) {
  6. this.getRouteBySearch(this.current, this.pageSize, this.formQuery);//此处走查询接口
  7. } else {
  8. this.getList(this.current, this.pageSize);//此处走表格初始化的接口
  9. }
  10. },
  11. // 底部分页功能
  12. handleCurrentChange(pageIndex) {
  13. this.current = pageIndex;
  14. if (this.isClickSearch) {
  15. this.getRouteBySearch(this.current, this.pageSize, this.formQuery);//此处走查询接口
  16. } else {
  17. this.getList(pageIndex, this.pageSize);//此处走表格初始化的接口
  18. }
  19. },

总结

大家有什么疑问,可以留言哈。

感谢大家的观看~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/103100?site
推荐阅读
相关标签
  

闽ICP备14008679号