当前位置: 首页 > news >正文

vue el-input 输入框下拉显示匹配数据

1、效果图:

2、需求&实现:

输入条件 下面匹配查询到的数据有多少个 需要调用后端接口展示,后端查询到之后返回条数 前端展示

3、具体代码实现:

html: 图片需要自己根据实际情况增加  // 查询 重置 筛选  本文章只写查询 重置和更多筛选逻辑自行添加

<divclass="topSearch"ref="topSearch"><div class="top-search-group"><el-popoverplacement="bottom"width="500px"trigger="manual"v-model="visible"ref="popover"popper-class="peopleSelectPopper"><divclass="linkageDiv"v-for="(item,index) in queryList":key="index"><div @click="linkageDivClick(item)">{{item.queryType}}:<span :class="{spanData:Number(item.number)>0,spanNoData:Number(item.number)==0}">{{item.number}}</span>条</div></div><divstyle="display:flex;"slot="reference"><el-inputwidth="500px"placeholder="请输入查询条件1/查询条件2/查询条件3/查询条件4/查询条件5/查询条件6"size="medium"@input="debouncedInput"@click.native="openPopover"v-model="queryDataLabel"ref="input"></el-input><divclass="searchBtn"style="font-size:20px;width: 46px;height: 40px;padding:0px"@click="getGridDataEvt('search', true)"><imgsrc="../../assets/images/search.png"alt=""></div></div></el-popover><divclass="iconBtn"@click="getGridDataEvt('reset')"><el-tooltipclass="item"effect="dark"content="重置"placement="top"><imgsrc="../../assets/images/chongzhi.png"alt=""></el-tooltip></div><el-tooltipclass="item"effect="dark"content="筛选"placement="top"><divclass="iconBtnShaixuan":class="{active:!searchFilterFlag}"@click="searchFilterFlagClick()"><imgv-if="!searchFilterFlag"src="../../assets/images/shaixuanClick.png"alt=""></div></el-tooltip></div></div>

js代码逻辑

//接口需要自己引入
import { selectNum } from "@/api/xxxx"
export default {data() {return {searchFilterFlag: false,visible: false,//初始的一些查询条件searchData: {queryData: "",orderByKeyWord: "",ascOrDesc: "",orderByRule: "",},queryDataLabel: "",queryList: [{queryType: `查询条件1`,queryParam: "workNo",number: 0,},{queryType: `查询条件2`,queryParam: "personName",number: 0,},{queryType: `查询条件3`,queryParam: "pmpName",number: 0,},{queryType: `查询条件4`,queryParam: "phone",number: 0,},{queryType: `查询条件5`,queryParam: "graduationInstitution",number: 0,},{queryType: `查询条件6`,queryParam: "insurancesPlace",number: 0,},],timer: null,queryParam: "",}},mounted() {//增加一个全局监听 方便点击其他位置可以关闭el-popoverdocument.addEventListener('click', this.handleDocumentClick);},methods: {//点击查询条件的每一条数据linkageDivClick(item) {this.visible = false;// 我们需要把这个值给后端传过去this.queryParam = item.queryParam;// 原本的查询条件中 searchData 所有值需要置空for (let key in this.searchData) {this.searchData[key] = ""}this.searchData[item.queryParam] = this.queryDataLabel;//去调用查询接口 this.getGridDataEvt('search', false)},openPopover() {this.visible = true;this.debouncedInput(this.queryDataLabel)},// 下拉框查询接口debouncedInputApi(val) {selectNum({ queryData: val }).then(res => {if (res.code == 200) {let data = res.datathis.queryList.forEach(item => {for (let key in data) {if (item.queryParam == key) {item.number = data[key]}}})} else {this.$message.error('数据获取失败');}}).catch(err => {this.$message.error(err.msg);})},// 输入框触发debouncedInput(val) {clearTimeout(this.timer);//   防抖this.timer = setTimeout(() => {this.debouncedInputApi(val)}, 500);},},beforeDestroy() {//清除定时clearTimeout(this.timer);// 移除监听document.removeEventListener('click', this.handleDocumentClick);},}

样式style  具体效果还是需要自己微调 

.topSearch {height: 80px;width: calc(100% - 20px);display: flex;align-items: center;justify-content: center;.top-search-group {height: 40px;width: 750px;display: flex;align-items: center;span {width: 100%;}::v-deep .el-input__inner {height: 40px;border-radius: 4px 0 0 4px;}::v-deep .el-input-group__append {background: #0096f1;color: #fff;}.searchBtn {cursor: pointer;background: #008ee4;display: flex;align-items: center;justify-content: center;border-radius: 0 4px 4px 0;}.iconBtn {margin-left: 10px;width: 42px;height: 40px;cursor: pointer;background: #ffffff;border-radius: 4px;border: 1px solid #dcdfe6;display: flex;align-items: center;justify-content: center;}.iconBtnShaixuan {margin-left: 10px;width: 42px;height: 40px;cursor: pointer;background: #ffffff;border-radius: 4px;border: 1px solid #dcdfe6;background: url("../../assets/images/shaixuan.png");background-repeat: no-repeat;background-position: center center;&:hover {background: url("../../assets/images/shaixuanClick.png");background-repeat: no-repeat;background-position: center center;}}.active {background: #ebf7ff;border-radius: 4px;border: 1px solid #cbebff;display: flex;align-items: center;justify-content: center;&:hover {background: #ebf7ff;}}}}

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一文带你掌握C++异常处理
  • FPGA开发——数码管的使用(二)
  • 敏捷开发笔记(第14章节)--TEMPLATE METHOD模式和STRATEGY模式:继承与委托
  • 【第四节】python面向对象
  • 基于 LangChain 开发应用程序第七章-代理
  • 781页 | 2024全国数据资产政策法规汇编(可下载)
  • 富唯智能转运机器人:高效、智能、未来的选择
  • 代码随想录算法训练营第二十六天|452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间
  • 11部门公布第二批国家数字乡村试点地区名单
  • uniapp微信小程序本地和真机调试文件图片上传成功但体验版不成功
  • K8S Service-NodePort:固定端口
  • 数据化项目中如何优化数据分析报表的响应速度
  • 宠物伴侣应用
  • Redisson中RSemaphore的使用场景及例子
  • 【微服务】微服务架构概念
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Apache Spark Streaming 使用实例
  • const let
  • flask接收请求并推入栈
  • golang中接口赋值与方法集
  • JAVA多线程机制解析-volatilesynchronized
  • js作用域和this的理解
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 程序员该如何有效的找工作?
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 解决iview多表头动态更改列元素发生的错误
  • 免费小说阅读小程序
  • 为视图添加丝滑的水波纹
  • 协程
  • 用Canvas画一棵二叉树
  • 智能合约开发环境搭建及Hello World合约
  • 走向全栈之MongoDB的使用
  • nb
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • (1)(1.13) SiK无线电高级配置(六)
  • (2)Java 简介
  • (C++17) std算法之执行策略 execution
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (LeetCode C++)盛最多水的容器
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (接口自动化)Python3操作MySQL数据库
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十八)三元表达式和列表解析
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (原创)可支持最大高度的NestedScrollView
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .java 9 找不到符号_java找不到符号