element table 前端关键字模糊查询

<template>
  <div class="box">
    <el-input v-model="search" placeholder="请输入内容">el-input>
    <el-table
    :data="tables"
    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>
template>

<script>

export default {

  data () {
    return {
      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 弄'
      }]
    }
  },

  computed: {
    tables () {
      const search = this.search
      if (search) {
        console.log('this.tableData', this.tableData)
        return this.tableData.filter(dataNews => {
          return Object.keys(dataNews).some(key => {
            return String(dataNews[key]).toLowerCase().indexOf(search) > -1
          })
        })
      }
      console.log('this.tableData', this.tableData)
      return this.tableData
    }
  },

  methods: {
    handleEdit (index, row) {
      console.log(index, row)
    },
    handleDelete (index, row) {
      console.log(index, row)
    },
    format (val) {
      if (val.indexOf(this.search) !== -1 && this.search !== '') {
        return val.replace(this.search, '' + this.search + '')
      } else {
        return val
      }
    }
  }

}
script>

<style lang="scss" scoped>

style>

来源地址

你可能感兴趣的:(vue,element,ui)