Vue 实现分页+输入框关键字筛选

分页的实现(Vue+Element)+输入框关键字筛选

1.这里用的是Element 自带的分页组件

<template>
<div class="sales-table">
<div class="order-list-header">订单列表</div>
<div class="back-box">
<div class="search-box"><input type="text" name="" id="" class="order-search-input" placeholder="关键词" v-model=‘search‘></div>
</div>
<div class="table-box">
<div class="table-list" v-for="(cash, index) in orderList.slice((currentPage-1)*pagesize,currentPage*pagesize)" :key="cash.id">
<table id="tableSort" style="table-layout:fixed;">
<thead class="table-header">
<tr>
<th class="left-radius">序号</th>
<th>创建时间</th>
<th>订单ID</th>
<th>所属用户姓名</th>
<th>所属用户ID</th>
<th>所属用户手机</th>
<th>所属用户层级</th>
<th>订单金额</th>
<th>订单状态</th>
<th>审核状态</th>
<th>收件人</th>
<th>联系电话</th>
<th>收货地址</th>
<th>订单备注</th>
<th class="right-radius">操作</th>
</tr>
</thead>
<tbody class="table-lists">
<tr class="first-tr">
<td class="sequence">{{ index+1>9?index+1:"0"+(index+1) }}</td>
<td class="sequence">{{cash.createTime}}</td>
<td class="sequence">{{cash.orderId}}</td>
<td class="sequence">{{cash.cilentName}}</td>
<td class="sequence">{{cash.cilentId}}</td>
<td class="sequence">{{cash.cilentPhone}}</td>
<td class="sequence">{{cash.cilentGrade}}</td>
<td class="sequence money">¥{{cash.orderPrice}}</td>
<td class="sequence">{{cash.orderState}}</td>
<td class="sequence">{{cash.auditState}}</td>
<td class="sequence">{{cash.receiver}}</td>
<td class="sequence">{{cash.phone}}</td>
<td class="sequence">{{cash.address}}</td>
<td class="sequence">{{cash.orderRemark}}</td>
<td class="sequence"><a class="view-order">查看</a><a class="edit-order">编辑</a><a class="delete-order">删除</a></td>
</tr>
</tbody>
</table>
</div>
</div>
//分页
<div class="page">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[5, 10, 20, 40]"
:page-size="pagesize"
layout="total, sizes, prev, pager, next, jumper"
:total="Cashdata.length">
</el-pagination>
</div>
</div>
</template>

2.文中标红的字不再是循环数组,名字随意取,在后面搜索关键字部分也标红了。数据多分页效果会更加明显。

<script>

export default {

data() {

  return {

    currentPage:1, //初始页

    pagesize:10,//每页的数据// 搜索关键词

    search:"",

    Cashdata: [{

      createTime:"2019/1/21/ 14:30:30",

      orderId: "1555555454",

      cilentName:"网三",

      cilentId:"21313216544",

      cilentPhone:"13976605432",

      cilentGrade:"1",

      orderPrice:"454664",

      orderState:"已提交",

      auditState: "系统已确认",

      receiver: "和大宝",

      phone:"16565644444",

      address:"广东省深圳市龙花去向南一区18栋403",

      orderRemark:"少放醋,多方唐撒旦啊阿萨大萨达"

    },

    {

      createTime:"2019/1/21/ 14:30:30",

      orderId: "1555555454",

      cilentName:"网三",

      cilentId:"21313216544",

      cilentPhone:"15576605432",

      cilentGrade:"1",

      orderPrice:"454664",

      orderState:"已提交",

      auditState: "系统已确认",

      receiver: "和大宝",

      phone:"16565644444",

      address:"广东省深圳市龙花去向南一区18栋403",

      orderRemark:"少放醋,多方唐撒旦啊阿萨大萨达"

      },

     ]};

    },

    methods: {

      // 初始页currentPage、初始每页数据数pagesize和数据data

      handleSizeChange: function (size) {

      this.pagesize = size;

      console.log(this.pagesize) //每页下拉显示数据

     },

      handleCurrentChange: function(currentPage){

        this.currentPage = currentPage;

        document.documentElement.scrollTop = 0;//点击翻页的时候回到顶部

        console.log(this.currentPage) //点击第几页

      },

     },

  // 订单列表搜索关键字

   computed: {

    orderList: function() {

    var _search = this.search;

    if (_search) {

      return this.Cashdata.filter(function(product) {

      return Object.keys(product).some(function(key) {

      return String(product[key]).toLowerCase().indexOf(_search) > -1

    })

  })

  }

    return this.Cashdata;

    }

  }

};

</script>

3.分页的CSS只是自己修改的部分,如有需要,请自行脑补。对了,补充一句,修改Eleement样式时,先在样式前加   /deep/.最外层类名{......}。


<style lang="scss" scoped>

/deep/.el-pagination{
      margin-bottom: 30px;
      margin-top: 30px;
      float: right;
      font-size: 20px;
      color: #333333;
      margin-right: 55px;
      font-weight: normal;

    .el-select .el-input{
      width: 126px;
      height: 36px;
    }
    .el-select .el-input .el-input__inner{
      height: 100%;
      font-size: 20px;
      color: #333333;
    }
    .el-pagination__editor.el-input .el-input__inner{
        height: 36px;
    }
    .btn-prev,.btn-next{
      height: 36px;
    }
    .btn-prev{
      border-radius: 5px 0 0 5px;
    }
    .btn-next{
      border-radius: 0 5px 5px 0;
    }
    .el-pager li{
      line-height: 36px;
      height: 36px;
      font-size: 20px;
    }
    .el-pagination__total{
      color: #333333;
    }
     button,span:not([class*=suffix]){
      height: 36px;
      line-height: 36px;
      font-size: 20px;
      color: #333333;
    }
    .el-pagination__editor.el-input{
      font-size: 20px;
    }
  }</style>

4.如有问题,欢迎指教。

附上效果图一份:

原文地址:https://www.cnblogs.com/dj1988/p/10400074.html

时间: 2024-10-11 04:22:32

Vue 实现分页+输入框关键字筛选的相关文章

基于Vue封装分页组件

使用Vue做双向绑定的时候,可能经常会用到分页功能 接下来我们来封装一个分页组件 先定义样式文件 pagination.css ul, li { margin: 0px; padding: 0px;} .page-bar { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-sel

使用EditText+ListView并结合TextWatcher实现输入关键字筛选数据

想必大家应该遇到过这样的情况,当点击Spinner控件后弹出的列表内容超多,一个一个滑动着去寻找所要的项很麻烦,尤其是当自己知道想要选择的内容,这时候如果我们只需要输入某些关键字,就可以讲上百条数据筛选出几十条甚至更少,岂不是会方便很多. 其实这是项目中的一个需求,由于目前公司接触的多数和数据采集相关的PDA项目,有很多填写项一个spinner已经不方便满足需求,虽然客户还没有提 出,但提前做好优化总是没有错的,所以项目组的同事提出这个需求并让我尝试着去做出来,当中给了我不少帮助和意见. 闲言少

semantic、vue 使用分页组件和日历插件

最近正在试试semantic-ui,结合了vue,这里忍不住吐槽semantic和vue的友好度简直不忍直视,不过既然用了,这里就分享几个用到的插件了 1.分页组件(基于vue) var pageComponent = Vue.extend({ template: `<div class="ui floated pagination menu"> <a class="icon item" :class="{\'disabled\':cur

新人 记录VUE中分页实现

关于函数传值 this.getPurchaseHistoryData(index, num,timeType);第一位是显示的页数,第二是控制首页4上一页-1下一页是2末页是5 第三是是对昨天是1,今天是2,还是一段时间的控制传3,默认是0 1.关于分页:(1)首页是4上一页是-1下一页是2末页是5,单机查询的时候是1(2)关于pageRecord 函数 currentRecord表示当前页数,showItemRecord表示共⑤页(3)current >= showItem和else{}是用来

使用Layui和Vue实现分页

参考这位大哥的:https://www.cnblogs.com/subendong/p/9232548.html 效果图: 前端代码部分 <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="../../lib/layui.css" media="all" /> </head> <body> <!--列表-

vue 查询分页

后端用的flask,前端vue,查询结果展示以及分页 如图: 代码如下: 前端: 1 <template> 2 <div> 3 <el-row> 4 <el-col :span="18"> 5 <el-form :inline="true" :model="test_query"> 6 <el-form-item label="查询条件1"> 7 <

vue自定义分页组件---切图网

vue2.5自定义分页组件 Pagination.vue,可设置每页显示条数,带跳转框直接跳转到相应页面,亲测有用.目前很多框架自带有分页组件比如elementUI,不过在面对一个拿到PSD稿,然后重新切图,重新VUE开发的项目来说,自定义分页组件才是应万变的最佳打开方式. html <template> <div class="pagination" v-if="totalPage>1"> <span v-if="!s

利用管道在SQL中实现查询分页显示和筛选

分页显示: [[email protected] ~]$ echo "desc dbms_sqltune"|sqlplus / as sysdba | more SQL*Plus: Release 11.2.0.4.0 Production on Sat Sep 24 13:04:17 2016 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterpr

vue Element-ui 表格自带筛选框自定义高度

el-table中可以在一行的某列进行筛选,代码如下: <el-table-column prop="classOfTest" class="test" label="测试类名" :filters="classList" filter-placement="bottom-start" width="300" column-key="testOfClass">