vue+element的表格分页和搜索功能(使用计算属性进行搜索)

之前做一块的时候,从网上找到东西能满足需求,却不能更好的符合操作规范,所以在vue+element的表格分页和搜索功能基础上进行了更改。

话不多说,直接看代码:
<template>
  <div>
    <div class="searchBox">
      <el-input prefix-icon="iconfont icon-sousuo" v-model="searchTableInfo" placeholder="请输入搜索内容" style="width:240px"></el-input>
    </div>
    <el-table
      :data="tableData.slice((currpage - 1) * pagesize, currpage * pagesize)"
      border
      @selection-change="handleSelectionChange"
      style="width: 100%;margin: 10px 0;text-align:center;">
      <el-table-column
        type="selection"
        align="center"
        width="55" >
      </el-table-column>
      <el-table-column
        prop="date"
        align="center"
        label="手机"
        min-width="30%">
      </el-table-column>
      <el-table-column
        prop="name"
        align="center"
        label="姓名"
        min-width="30%">
      </el-table-column>
      <el-table-column
        prop="address"
        align="center"
        label="地址"
        min-width="30%">
      </el-table-column>
    </el-table>
    <!--分页-->
    <el-pagination
      center
      background
      layout="prev, pager, next, sizes, total, jumper"
      :page-sizes="[4,6,8,10]"
      :page-size="pagesize"
      :total="tableData.length"
      @current-change="handleCurrentChange"
      @size-change="handleSizeChange"
    >
    </el-pagination>
  </div>
</template>

<script>
  export default {
  	name: "组件名",
    data() {
      return {
        //搜索条件
        searchTableInfo:"",
        pagesize: 6,
        currpage: 1,
        getSearchInfo:[],

      };
    },
    methods: {
      handleCurrentChange(cpage) {
        this.currpage = cpage;
      },
      handleSizeChange(psize) {
        this.pagesize = psize;
      },
      //操作多选
      handleSelectionChange(val) {
        this.multipleSelection = val;
      },
      //获取信息
      info(){
      //这些数据视情况,是你从后端拿来的。
        let Data=[
          {
            date: "2016-05-01",
            name: "王小虎",
            address: "上海市普陀区金沙江路 1518 弄"
          },
          {
            date: "2016-05-02",
            name: "王小虎",
            address: "上海市普陀区金沙江路 1517 弄"
          },
          {
            date: "2016-05-03",
            name: "王二虎",
            address: "上海市普陀区金沙江路 1519 弄"
          },
          {
            date: "2016-05-04",
            name: "王二虎",
            address: "上海市普陀区金沙江路 1516 弄"
          },
          {
            date: "2016-05-05",
            name: "王三虎",
            address: "上海市普陀区金沙江路 1518 弄"
          },
          {
            date: "2016-05-06",
            name: "王三虎",
            address: "上海市普陀区金沙江路 1517 弄"
          },
          {
            date: "2016-05-07",
            name: "王小虎",
            address: "上海市普陀区金沙江路 1519 弄"
          },
          {
            date: "2016-05-08",
            name: "王小虎",
            address: "上海市普陀区金沙江路 1516 弄"
          }
        ];
        this.getSearchInfo = Data;
        console.log(this.getSearchInfo)
      }
    },
    computed: {
      // 根据计算属性模糊搜索
      tableData () {
        const searchTableInfo = this.searchTableInfo
        if (searchTableInfo) {
          // filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
          // 注意: filter() 不会对空数组进行检测。
          // 注意: filter() 不会改变原始数组。
          return this.getSearchInfo.filter(data => {
            console.log("success"+data)
            // some() 方法用于检测数组中的元素是否满足指定条件;
            // some() 方法会依次执行数组的每个元素:
            // 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测;
            // 如果没有满足条件的元素,则返回false。
            // 注意: some() 不会对空数组进行检测。
            // 注意: some() 不会改变原始数组。
            return Object.keys(data).some(key => {
              // indexOf() 返回某个指定的字符在某个字符串中首次出现的位置,如果没有找到就返回-1;
              // 该方法对大小写敏感!所以之前需要toLowerCase()方法将所有查询到内容变为小写。
              return String(data[key]).toLowerCase().indexOf(searchTableInfo) > -1
            })
          })
        }
        return this.getSearchInfo
      }
    },
    created(){
      this.info();
    }
  }
</script>

<style scoped lang="stylus">

</style>

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值