zoukankan      html  css  js  c++  java
  • element ui 树形表格过滤查询数据解决

    element项目有需要做一个前端不请求接口来查询树形数据的需求。不要纠结样式什么的,重点是实现对吧。

    另外附上codepen的在线demo:https://codepen.io/saberinorykiss/pen/VwagPjK

     

     在这里分享一下吧,废话不多说,直接上代码:

    <template>
      <div class="app-container">
        <el-input
          v-model="search"
          size="mini"
          placeholder="输入关键字搜索"/>
        <el-table
          :data="treeTable"
          style=" 100%;margin-bottom: 20px;"
          row-key="id"
          border
          :expand-row-keys="expandRow"
          :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
          <el-table-column
            prop="date"
            label="日期"
            sortable
            width="180">
          </el-table-column>
          <el-table-column
            prop="name"
            label="姓名"
            sortable
            width="180">
          </el-table-column>
          <el-table-column
            prop="address"
            label="地址">
          </el-table-column>
          <el-table-column
            label="操作">
            <template slot-scope="scope">
              <el-button
                size="mini"
                @click="handleEdit(scope.$index, scope.row)">Edit</el-button>
              <el-button
                size="mini"
                type="danger"
                @click="handleDelete(scope.$index, scope.row)">Delete</el-button>
            </template>
          </el-table-column>
        </el-table>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          search: '',
          expandRow: [],
            tableData: [{
              id: 1,
              date: '2016-05-02',
              name: '王小虎1',
              address: '上海市普陀区金沙江路 1518 弄'
            }, {
              id: 2,
              date: '2016-05-04',
              name: '王小虎2',
              address: '上海市普陀区金沙江路 1517 弄'
            }, {
              id: 3,
              date: '2016-05-01',
              name: '王小虎3',
              address: '上海市普陀区金沙江路 1519 弄',
              children: [{
                  id: 31,
                  date: '2016-05-01',
                  name: '王小虎4',
                  address: '上海市普陀区金沙江路 1519 弄'
                }, {
                  id: 32,
                  date: '2016-05-01',
                  name: '张三',
                  address: '上海市普陀区金沙江路 1519 弄'
              }]
            }, {
              id: 4,
              date: '2016-05-03',
              name: '李二蛋',
              address: '上海市普陀区金沙江路 1516 弄'
            }],
        }
      },
      computed:{
        treeTable:function(){
          var searchValue=this.search;
          if(searchValue){
            // 一般表格的查询
            // return  this.tableData.filter(function(dataNews){
            //   return Object.keys(dataNews).some(function(key){
            //     return String(dataNews[key]).toLowerCase().indexOf(search) > -1
            //   })
            // })
            let treeData = this.tableData
            let handleTreeData = this.handleTreeData(treeData, searchValue)
            this.setExpandRow(handleTreeData)
            this.expandRow = this.expandRow.join(",").split(",")
            return handleTreeData
          }
          return this.tableData
        }
      },
      created() {
      },
      methods: {
        //  树形表格过滤
        handleTreeData(treeData, searchValue) {
          if (!treeData || treeData.length === 0) {
              return [];
            }
            const array = [];
            for (let i = 0; i < treeData.length; i += 1) {
              let match = false;
              for(let pro in treeData[i]){
                if(typeof(treeData[i][pro])=='string'){
                  match |= treeData[i][pro].includes(searchValue);
                  if(match) break;
                }
              }
              if (this.handleTreeData(treeData[i].children, searchValue).length > 0 || match ) {
                array.push({
                  ...treeData[i],
                  children: this.handleTreeData(treeData[i].children, searchValue),
                });
              }
            }
          return array;
        },
        // 将过滤好的树形数据展开
        setExpandRow(handleTreeData) {
          if(handleTreeData.length) {
              for (let i of handleTreeData) {
                this.expandRow.push(i.id)
                if(i.children.length) {
                  this.setExpandRow(i.children)
                }
              }
            }
        }
      }
    }
    </script>
    
    <style lang="scss" scoped>
    </style>
    

      

  • 相关阅读:
    团队项目——站立会议DAY14
    团队项目——站立会议DAY13
    团队项目——站立会议DAY12
    团队项目——站立会议 DAY11
    团队项目——站立会议DAY10
    团队项目——站立会议DAY9
    团队项目——站立会议 DAY8
    团队项目——站立会议DAY7
    团队项目——站立会议DAY6
    作业五:团队项目——项目启动及需求分析
  • 原文地址:https://www.cnblogs.com/SaberInoryKiss/p/13725471.html
Copyright © 2011-2022 走看看