vue element 搜索框根据后台的接口实现模糊查询 + 分页特殊处理+重置表格

模糊查询效果图
在这里插入图片描述

1.配置接口 search: "/api/goods/search", //搜索接口/goods/search
2.get接口
search(params) { return axios.get(base.search, { params });//后台传参 再写这个params },
3.异步请求接口

  // 搜索接口
    async search(search){
        let res = await this.$api.search({search})
        console.log('搜索接口---',res.data);
        }

查询事件

 onSubmit() {
        console.log('submit!',this.formInline.name);
        this.search(this.formInline.name)//查询根据后台的接口(返回查询的name)
      },

4.请求到接口 那就让列表数据跟着变动

  // 搜索接口
    async search(search){
        let res = await this.$api.search({search})
        console.log('搜索接口---',res.data);
        if(res.data.status === 200){//根据后台返回 如果有就更新列表 如果没有就返回空
            this.tableData = res.data.result;
        }else{//查无数据
            this.tableData = []
            }
        }

5.如果不搜索了怎么让表格数据显示到第一页 给 input加一个焦点事件 鼠标移除 表格列表数据就返回第一页

   blur(){
        if(!this.formInline.name){//如果不搜索 那就返回首页数据  
            this.projectList(1)//1就是首页
        }

6.如果查询数据 分页也要跟着变化 在搜索查询接口里边去写

 // 搜索接口
    async search(search){
        let res = await this.$api.search({search})
        console.log('搜索接口---',res.data);
        if(res.data.status === 200){//根据后台返回 如果有就更新列表 如果没有就返回空
            this.tableData = res.data.result;
            this.total=res.data.result.length;//分页
            this.pageSize =res.data.result.length;//分页
        }else{//查无数据
            this.tableData = []
            this.total = 1
            this.pageSize = 1
            }
        }
    },

总代码

    <el-form :inline="true" :model="formInline" class="demo-form-inline">
            <el-form-item label="产品名称">
                <el-input v-model="formInline.name" placeholder="产品名称" size="small"  @blur="blur"></el-input>
            </el-form-item>
            <el-form-item>
                <el-button type="primary" @click="onSubmit" size="small">查询</el-button>
            </el-form-item>
            </el-form>

初始化

 formInline: {
          name: '',
        },

请求查询接口 + 查询事件+焦点事件

 // 搜索接口
    async search(search){
        let res = await this.$api.search({search})
        console.log('搜索接口---',res.data);
        if(res.data.status === 200){//根据后台返回 如果有就更新列表 如果没有就返回空
            this.tableData = res.data.result;
            this.total=res.data.result.length;
            this.pageSize =res.data.result.length;
        }else{//查无数据
            this.tableData = []
            this.total = 1
            this.pageSize = 1
            }
        }
    },
//查询事件
  onSubmit() {
        console.log('submit!',this.formInline.name);
        this.search(this.formInline.name)//查询根据后台的接口(返回查询的name)
      },
 //   查询焦点事件
    blur(){
        if(!this.formInline.name){//如果不搜索 那就返回首页数据
            this.projectList(1)
        }
    },
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Element Plus 表格实现模糊查询,你可以使用 `filter-method` 属性来自定义过滤方法。具体实现步骤如下: 1. 在表格的列定义中,为需要进行模糊查询的列添加一个自定义的过滤方法: ```html <el-table-column prop="name" label="姓名"> <template slot-scope="{ row }">{{ row.name }}</template> <el-input v-model="filter.name" size="mini" placeholder="请输入姓名" @input="handleFilter"></el-input> </el-table-column> ``` 在这里,我们为名字列定义了一个自定义的过滤方法 `handleFilter`。同时,我们为该列添加了一个 `el-input` 组件,用于接收用户的输入。 2. 在表格的 `data` 选项中,增加一个 `filter` 属性来保存用户的查询条件: ```js data() { return { filter: { name: '', // 用户输入的名字 }, // ... } }, ``` 在这里,我们为表格的过滤条件增加了一个 `name` 属性,用于保存用户输入的名字。 3. 在组件的 `methods` 中,添加 `handleFilter` 方法来处理用户的查询请求: ```js methods: { // 处理表格的过滤请求 handleFilter() { // 过滤方法 const filterMethod = (value, row, column) => { return row.name.toLowerCase().indexOf(value.toLowerCase()) !== -1; }; // 应用过滤方法 this.$refs.table.filter(filterMethod); }, // ... } ``` 在这里,我们定义了一个过滤方法 `filterMethod`,用于判断某一行的名字是否包含了用户输入的名字。如果包含了,则返回 `true`;否则返回 `false`。然后,我们通过调用表格的 `filter` 方法来应用过滤方法。 实现以上步骤后,当用户在名字列的输入框中输入任何一个字符时,表格会根据用户输入的名字进行模糊查询,并将符合条件的行显示在表格中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值