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

vue3:十三、分类管理-表格--模糊查询搜索框

一、效果

实现动态搜索列表,实现文本框、下拉列表、时间、单选等组件封装

实现精准查询、模糊查询

实现默认搜索数据展示

实现字段的显示与隐藏

二、基本信息配置

1、官网参考

Form 表单 | Element Plus

这里的模糊查询列表采用行内表单

2、创建搜索列表组件

在components组件中加入查询的组件页面Search.vue

三、分类父页面

在分类页面的主页面修改传递的数据信息

1、修改父分类下拉列表获取方式

(1)初始定义

引入ref方法,并且定义一个新数组parentOptions = ref([ ])

将默认的一条数据写入其中:{ label: '无', value: 0 }

(2)下拉数组数据修改

将下拉列表获取的数组存入到数组parentOptions中

(3)修改表单数据传递的数据

将存入下拉列表数据传入到表单数据的options中

2、修改表格列的基本信息(适配搜索列表)

(1)增加类型

在columns中增加搜索框的类型searchFormType,默认是text文本框(可以不写),特别的写入如这里的select

(2)增加子项(下拉、单选等)

这里的下拉列表需要下拉列表的数据,通过写入方法searchList,返回其列表值即可

(3)增加默认值

写入字段dafaultValue,其值为默认的value

例如:{label:'父分类1',value:1},那这里的默认值就是1

 

(4)增加查询方式

这里查询方式默认是模糊查询like和精准查询默认为空

这里写入一个字段search,如果是需要模糊查询就加入值'like'

(5)增加隐藏搜索字段

写入字段searchHide,其值为true表明需要隐藏该字段的搜索信息

四、表格组件

1、引入、使用搜索列表组件

在表格组件中引入search组件

(1)方法引入

在表格组件中引入搜索组件Search.vue

(2)视图层使用

在表格组件的视图层写入Search组件

2、写入子组件提交调用的方法

在搜索框提交进行搜索时需要使用父组件的方法,将需要搜索的数据传递给查询表格数据的请求方法中以便实现数据查询

(1)组件中写入方法

写入方法submitSearch,这里是子组件调用父方法写法

(2)创建空对象

创建一个空对象,用于专门存储传入后端的搜索数据

(3)将搜索数据存入数据请求

在获取表格数据的请求中,将搜索的对象这个参数传入后端

(4)父页面方法的编写

子组件执行该方法的时候传递了一个参数,这里使用data进行获取(存储的是传递的搜索数据,例如{ id: '1', pid: 2, name: '2', desc: '' })

  • 循环传递的数据
    • const element = data[key]获取 data[key] 每一项的值(后续要处理)
    • 循环总的columns数组(需要获取是否有搜索方式search:决定以什么方式查询数据)
      • const el = props.columns[k];获取columns数组的值,例如首项的值:{ label: '分类ID', field: 'id', width: 120, searchFormType: 'text' }
      • if (el.field == key)判断每一项field字段的值和搜索对象的key是否一致
        • if (typeof el.search != 'undefined')如果一致判断,columns中的项是否含有search
          • 一致设置数组searchField的值,为数组{opt:搜索方式,value:搜索的值}
        • 不一致:设置searchField的值还是为原始数据即这里的element
// 执行搜索功能
const submitSearch = (data) => {console.log('需要搜索的数据:', data); //例如 { id: '1', pid: 2, name: '2', desc: '' }//处理这里的搜索条件for (const key in data) {if (Object.hasOwnProperty.call(data, key)) {const element = data[key]; //获取搜索对应的字段key的值:例如查询到key为id时,这里的element就是id的值为1;查询第二项时key为pid时,这里的element就是pid的值为2//循环表头columnsfor (const k in props.columns) {if (Object.hasOwnProperty.call(props.columns, k)) {const el = props.columns[k];//获取表头对应的key的值// console.log('搜索条件:', el);  //例如 columns的值为[{ label: '分类ID', field: 'id', width: 120, searchFormType: 'text' },{ label: '分类名称', field: 'name', width: 200, search: 'like' }]//那这里第一条循环的el的值就是{ label: '分类ID', field: 'id', width: 120, searchFormType: 'text' }// console.log('搜索字段:', el.field);if (el.field == key) { // k

相关文章:

  • 腾讯位置服务重构出行行业的技术底层逻辑
  • Java SE 抽象类和接口(下)
  • 【题解-洛谷】B4240 [海淀区小学组 2025] 最短字符串
  • NIFI的处理器:ExecuteGroovyScript 2.4.0
  • C# AI(Trae工具+claude3.5-sonnet) 写前后端
  • A1-A2 英语学习系列 第五集
  • Java枚举详解
  • 抽象:C++命名作用域与函数调用
  • IO pin的transition约束从哪来?
  • 高级认知型Agent
  • dedecms织梦全局变量调用方法总结
  • 如何在电脑上登录多个抖音账号?多开不同IP技巧分解
  • 广东省省考备考(第十六天5.21)—言语:语句排序题(听课后强化)
  • React中 lazy与 Suspense懒加载的组件
  • git合并多次commit提交
  • CentOS:搭建国内软件repository,以实现自动yum网络安装
  • JUC高并发编程
  • 自动化软件如何确保高可用性和容错性?
  • 云蝠智能大模型呼叫动态情感共情能力上线!
  • 大语言模型 17 - MCP Model Context Protocol 介绍对比分析 基本环境配置
  • 广东水利全面升级洪水和泄洪预警发布机制
  • 墨西哥军方:军舰撞桥时由纽约引航员指挥操作
  • 钟睒睒:不反对代工,但农夫山泉目前所有产品是无法代工的
  • 凤阳文旅局长回应鼓楼瓦片脱落事件:楼宇是否属于文物?施工经费用在何处?
  • 第78届世界卫生大会20日审议通过“大流行协定”
  • 牛市早报|年内首次存款利率下调启动,5月LPR今公布