vue前端实现模糊查询然后表格自动定位

element input自动补全输入框 + el-table
注:这个table没有做分页,数据又多,所以才在前端添加搜索定位功能
html 自动补全输入框 和 table

						<el-autocomplete
                        v-model="state"
                        clearable
                        :fetch-suggestions="querySearchAsync"
                        placeholder="请输入企业名称"
                        @select="handleSelect"
                        ></el-autocomplete>
   <els-table  v-on:tpdata="getBarData" ref="elstable"  style="height:calc( 100% - 3vh )" ></els-table>

自动补全输入框对应方法

     querySearchAsync(queryString, cb) {     
        var restaurants = this.restaurants;
        var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants;
          cb(results);
      },
      createStateFilter(queryString) {
        return (state) => {
          return (state.value.indexOf(queryString) !== -1);  // 包含输入文字的项目
        };
      },
      handleSelect(item) {
        console.log(item);
        this.$refs.elstable.updateSpeakSentenceRow(item.index) // 将要选中的项目下标传入表格

      },
//  res.data 是后台返回的tabledata, restaurants 是table中的name和下标合成的自动补全筛选数组
  this.restaurants = res.data.map( (item,index) => {  
                     let a = {
                         value:item.name,
                         index:index
                     }
                     return a
                 } )

table
关键::row-class-name=“tableRowClassName”

 						<el-table   
                         stripe
                        :header-cell-style="{color:'#00DEFF',
                        fontFamily:'FZZhengHeiS-EB-GB'
                        ,fontSize:this.fitChartSize(24),fontWeight:400}"
                        :data="tableData"
                        ref="tableData"
                        highlight-current-row
                        :row-class-name="tableRowClassName"
                        height="100%"
                        @row-dblclick="dblclick"
                        >
                        。。。
                          </el-table>
 //  滚动条滚动
         updateSpeakSentenceRow(e) {
                let curIndex = e;
                this.index = e;
                let vmEl = this.$refs.tableData.$el
                    // 计算滚动条的位置
                    const targetTop = vmEl.querySelectorAll('.el-table__body tr')[curIndex].getBoundingClientRect().top
                    const containerTop = vmEl.querySelector('.el-table__body').getBoundingClientRect().top
                    this.$refs.tableData.bodyWrapper.scrollTop = targetTop - containerTop;
        },
   //  选中行颜色改变
        tableRowClassName({row,rowIndex}){
            if (rowIndex == this.index) {
                return 'current-row'
            }
            return ''
        },
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值