element table 前端分页+前端模糊查询

<template>
<div>
  <el-input v-model="search" placeholder="请输入内容"></el-input>
    <el-table
    :data="tables.slice((pageIndex-1)*pageSize,pageIndex*pageSize)"   // 前端分页关键
    style="width: 100%">
    <el-table-column
      label="日期"
      width="180">
      <template slot-scope="scope">
        <i class="el-icon-time"></i>
        <span style="margin-left: 10px" v-html="format(scope.row.date)"></span>
      </template>
    </el-table-column>
    <el-table-column
      label="姓名"
      width="180">
      <template slot-scope="scope">
        <el-popover trigger="hover" placement="top">
          <p>姓名: {{ scope.row.name }}</p>
          <p>住址: {{ scope.row.address }}</p>
          <div slot="reference" class="name-wrapper">
            <el-tag size="medium" v-html="format(scope.row.name)"></el-tag>
          </div>
        </el-popover>
      </template>
    </el-table-column>
    <el-table-column label="操作">
      <template slot-scope="scope">
        <el-button
          size="mini"
          @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
        <el-button
          size="mini"
          type="danger"
          @click="handleDelete(scope.$index, scope.row)">删除</el-button>
      </template>
    </el-table-column>
  </el-table>
      <div class="block">
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="pageIndex"
          :page-sizes="[2, 3, 4, 5]"
          :page-size="pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total">
        </el-pagination>
      </div>
    </div>
</template>

<script>
import moment from 'moment'
export default {
  name: '',

  components: {

  },

  data () {
    return {
      pageSize: 2, // 每页大小默认值
      pageIndex: 1, // 默认第一页
      search: '',
      tableData: [{
        date: '2016-05-02',
        name: '王仲虎',
        address: '上海市普陀区金沙江路 1518 弄'
      }, {
        date: '2016-05-04',
        name: '王季虎',
        address: '上海市普陀区金沙江路 1517 弄'
      }, {
        date: '2016-05-01',
        name: '王伯虎',
        address: '上海市普陀区金沙江路 1519 弄'
      }, {
        date: '2016-05-03',
        name: '王叔虎',
        address: '上海市普陀区金沙江路 1516 弄'
      }]
    }
  },

  mounted () {
  },

  methods: {
    // 前端过滤
    format (val) {
      val = val.toString()
      if (val.indexOf(this.search) !== -1 && this.search !== '') {
        return val.replace(this.search, '<font color="red">' + this.search + '</font>')
      } else {
        return val
      }
    },
    dateFormat (val) {
      return moment(val).format('YYYY-MM-DD')
    },
    handleSizeChange (val) {
      this.pageSize = val
    },
    handleCurrentChange (val) {
      this.pageIndex = val
    },
    siteTableHeader () {
      return 'sws-table-header'
    },
    tableRowClassName ({ row, rowIndex }) {
      if (rowIndex % 2) {
        return 'warning-row'
      } else {
        return 'success-row'
      }
    }
  },
  computed: {
    // 前端过滤
    tables () {
      const search = this.search
      if (search) {
        return this.tableData.filter(dataNews => {
          return Object.keys(dataNews).some(key => {
            return String(dataNews[key]).toLowerCase().indexOf(search) > -1
          })
        })
      }
      return this.tableData
    },
    // 总条数
    total () {
      return this.tables.length
    }
  },
  watch: {
   // 检测表格数据过滤变化,自动跳到第一页
    tables () {
      this.pageIndex = 1
    }
  }
}
</script>

猜你喜欢

转载自blog.csdn.net/xuxu_qkz/article/details/80908949