vue3 antd table表格的增删改查(一)input输入框根据关键字搜索【后台管理系统纯前端filter过滤】

news2024/11/26 18:25:43

input输入框——关键字模糊搜索

  • 引言铺垫
  • 场景复现
  • 解决方案
      • 筛选的实现
      • 重置筛选信息
      • 优化处理(监听的实现)

功能实现可能要用到的知识:
vue3数据变化侦测&&信息筛选过滤.filter() .map() .forEach(). find()🔥
vue3【watch检测/监听】watch检测数据变化&&监听使用🔥🔥
vue3+ant design vue+ts实战【ant-design-vue组件库引入】🔥
vue3 antd 项目实战——table表格(一文教你实现最简单的table表格)🔥🔥

引言铺垫

  • 从后端数据库中获取到数据后,需要将其存放在后台的页面中,通常以表格的形式存在增删改查是每一个后台管理系统对于数据操作必不可少的部分
  • 因此 增删改查 将作为一个小专栏出现在我的主页,后续会持续更新~~
  • 表格查找有两种方法,一种是纯前端实现,另一种是调用接口前后端联动实现
  • 本期文章重点介绍纯前端过滤的实现方法

场景复现

通过接口将从后端获取到的数据展现在表格内,现在需要实现根据关键字的搜索功能

大致功能需求如下:

  • 输入关键字 点击搜索按钮 能够搜索相应的内容
  • 表格能够根据搜索的内容 实时更新数据
  • 当输入框内容清空之后 表格内容能够实时更新优化

初始表格效果:(一文教你实现最简单的table表格)
在这里插入图片描述

源代码:(样式按需设计)
页面组件部分:

<template>
    <router-view />
    <div style="width:100%">
        <div class="select-box">
            <a-form ref="formRef" :inline="true" :model="data.selectData" layout="inline" class="form">
                <a-form-item label="标题" width="200" class="title" >
                    <a-input v-model:value="data.selectData.title" placeholder="请输入关键字" allow-clear  />
                </a-form-item>
                <a-form-item label="详情" width="200" class="body">
                    <a-input v-model:value="data.selectData.body" placeholder="请输入关键字" allow-clear  />
                </a-form-item>
                <a-form-item>
                    <a-button type="primary" @click="searchForm" class="search">
                        <search-outlined />查询
                    </a-button>
                    <a-button type="primary" danger class="reset" @click="resetForm">
                        <redo-outlined />重置
                    </a-button>
                </a-form-item>
            </a-form>
        </div>
        <div>
            <a-table :data-source="data.list" :columns="columns" style="width:100%"></a-table>
        </div>
    </div>
</template>

样式部分:

<style lang="css" scoped>
.select-box .form {
    position: relative;
    left: 20px;
    padding-bottom: 16px;
}
.select-box .search {
    position: relative;
    left:5px;
}
.select-box .reset {
    position: relative;
    left: 25px;
}
</style>

解决方案

UI组件库沿用 ant design vue组件库 ,本次功能实现需要用到icon图标搜索框input按钮button表格table需要回顾组件库使用的可以在文章开头中按需查找。

筛选的实现

原理:

  • 输入框输入数据 → 点击搜索按钮 → 调用搜索函数 → 页面数据更新
  • 双重筛选 → 筛选标题 和 相应内容 (可以通过标题单独搜索 但不能通过内容单独搜索)

代码截图:(含注释)
在这里插入图片描述
搜索函数 源代码:(含注释)

const searchForm = () => {
    console.log(data.selectData.title, data.selectData.body)
    let arr: [LisInt][] = []
    //查询条件是否有值
    if (data.selectData.title || data.selectData.body) {
        if (data.selectData.title) {
            //将过滤出来的数组赋值给arr
            arr = data.list.filter((v: any) => {
                return v.title.indexOf(data.selectData.title) !== -1
            })
        }
        if (data.selectData.body) {
            //将过滤出来的数组赋值给arr
            arr = (data.selectData.body ? arr : data.list).filter((v: any) => {
                return v.body.indexOf(data.selectData.body) !== -1
            })
        }
    } else {
        arr = data.list
        // 将查询结果赋值给data.list在页面中展示
    }
    data.list = arr
    console.log(arr)
}

重置筛选信息

原理: 点击重置按钮 → 调用重置函数 → 返回主界面 → 重新获取数据

重置函数 源代码:

// 重置筛选信息
const  formRef= ref<FormInstance>()
const router = useRouter()
const resetForm = () => {
    formRef.value?.resetFields()
    router.push('/home')
}

优化处理(监听的实现)

原理:清除输入框输入内容 → 检测输入框内容是否为空 → 为空则重新获取数据 → 更新表格数据

监听 源代码:(含注释)

// 数据监听
watch(
    [() => data.selectData.title], // 监听标题
    [() => data.selectData.body],  // 监听内容
    () => {
        // 如果输入框中的内容为空,则再次请求数据
        if (data.selectData.title === "" || data.selectData.body === "") {
           initGetList() // 调用函数
        }
    }
);
// initGetList函数
// const initGetList = async () => {
//                const { data: res } = await getList(data)
//                console.log(res)
//                data.list = res.data
//            }

最终实现效果:
🔥根据标题关键字搜索,内容如下:
在这里插入图片描述
🔥清除输入框内容后,页面自动更新数据:
在这里插入图片描述
🔥输入标题和内容,实现双重搜索:
在这里插入图片描述
🔥单独使用内容搜索,无法实现搜索功能:
在这里插入图片描述
补充说明:

  • 在搜索框内容为空,但用户坚持要搜索时,应弹出弹窗,提醒用户搜索框输入内容不能为空。 这个功能的实现很简单,在搜索函数中添加一个判断操作,如果内容为空则启动弹窗。
  • 不难发现,输入框中有一个清除按钮,这个功能的实现也很简单,在input标签中添加allow-clear即可,但这个功能可能会与重置功能起到冲突,我们可以将重置功能设置为重置两个输入框的内容并返回主界面

以上就是用纯前端过滤的方法实现搜索框根据关键字模糊搜索的功能的全部内容。

下期文章将会用 前后端交互的方式 实现根据关键字进行模糊搜索的功能。

今天的故事到这就结束了,觉得这篇文章有用的小伙伴们,可以点赞➕关注哦~🔥🔥🔥

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/42525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计Django4S店汽车售后服务管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【服务器数据恢复】IBM服务器RAID控制器出错的数据恢复案例

服务器数据恢复环境&#xff1a; 北京某公司IBM X系列某型号服务器&#xff1b; 服务器上共8块硬盘组建raid5磁盘阵列&#xff1b; 服务器上部署有oracle数据库。 服务器故障&分析&#xff1a; 服务器在运行过程中&#xff0c;raid5磁盘阵列中有2块硬盘报警&#xff0c;服务…

CRM(Mapper层)详细代码

Mapper详细代码&#xff1a; DicValueMapper&#xff1a; package com.bjpowernode.crm.settings.mapper;import com.bjpowernode.crm.settings.domain.DicValue;import java.util.List;public interface DicValueMapper {/*** This method was generated by MyBatis Generato…

制作覆盖手绘图的导游地图,非常简单,你也可以

目录 1 前言 2 手绘地图的准备 3 下载软件 4 切图软件基本设置 5 配准设置 6 从平台取得上传切片所需要的3个参数 7 程序切片 8 增加位置点 1 前言 上一篇介绍了制作“简版导游地图”的步骤&#xff0c;真的是特别简单&#xff0c;如果提前准备好了文字材料&#xff0c…

PHP转Go,框架选什么?

文章目录内功心法PHP转Go&#xff0c;优选哪个框架&#xff1f;为什么&#xff1f;为什么不火&#xff1f;GoFrame特点优势&#xff1a;劣势&#xff1a;框架选型谁适合用GoFrame谁不适合用GoFrameGoFrame框架设计思想开发流程从0到1核心步骤总结视频一起学习这是一期会引起广泛…

即时通讯赛道开打信创牌,WorkPlus为何独树一帜?

近期&#xff0c;信创火了。 随着近期国家相关政策文件的推出&#xff0c;未来三年&#xff0c;党政信创、行业信创以及央国企信创的建设&#xff0c;将迎来全面加速。业内人士认为&#xff1a;“大信创”时代或已来临&#xff01; 信创是什么&#xff1f; 信创&#xff0c;…

加载用户数据至用户维度表

目录 1.创建转换 2.配置表输入 3.配置表输入2 4.创建新转换 5.配置映射输入规范 6.配置数据库查询 7.配置数据库查询2 8.配置数据库查询3 9.配置过滤记录 10配置JavaScript代码 11.配置字段选择 12.配置映射输出规范 13.配置映射&#xff08;子转换&#xff09; 1…

JS进阶第一篇:手写call apply bind

文章目录手写call apply bind深入理解 call 方法手写call手写apply手写bind手写call apply bind 深入理解 call 方法 call 理解了&#xff0c;apply和bind就都迎刃而解了&#xff0c;他们都是大同小异。在此对call和apply不做过多的定义性解释&#xff0c;先来看下调用了call…

opencv阈值图像Threshold方法

图像阈值 固定阈值&#xff0c;自适应阈值&#xff0c;Otsu 二值化等 全局阈值和局部阈值 一、图像二值化 定义&#xff1a;图像的二值化&#xff0c;就是将图像上的像素点的灰度值设置为0或255&#xff0c;也就是将整个图像呈现出明显的只有黑和白的视觉效果。 灰度值0&…

热门Java开发工具IDEA入门指南——导出项目到Eclipse

IntelliJ IDEA&#xff0c;是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能是非常强大的。 上文…

打工人,这里有一份述职技巧,请查收

大家好&#xff0c;马上到年底了&#xff0c;有多少小伙伴正在期待着述职邮件&#xff0c;毕竟收到述职邮件&#xff0c;也就意味着有机会升职加薪。有没有跟糖糖一样&#xff0c;没收到邮件的&#xff1f; 工作要善于总结&#xff0c;也要善于表达&#xff0c;如何在限时内将…

跨平台应用开发进阶(四十)自定义插件及引用

文章目录一、前言二、插件制作三、离线插件集成应用示例四、拓展阅读一、前言 正如将可复用功能封装为自定义组件以供他人使用一样&#xff0c;在uni-app开发框架中提供了另一种形式的自定义插件&#xff0c;并可将该插件提交至uni-app插件市场。 二、插件制作 制作插件前&a…

前端 单元测试介绍 - 以及在项目中使用 (史上最全)

前言 我们前端开发过程中&#xff0c;编写测试代码&#xff0c;有以下这些好处&#xff1a; 更快的发现bug&#xff0c;让绝大多数bug在开发阶段发现解决&#xff0c;提高产品质量 比起写注释&#xff0c;单元测试可能是更好的选择&#xff0c;通过运行测试代码&#xff0c;观…

ARM 异常处理方式简单介绍

一、什么是异常 正常工作之外的流程都叫异常&#xff1b; 也就是说&#xff0c;除了用户模式和系统模式外&#xff0c;其他情况都是异常&#xff0c;见下图&#xff1a; 异常会打断正在执行的工作&#xff0c;并且一般我们希望异常处理完成后继续回来执行原来的工作&#xff…

3-azido-1-Propanamine,88192-19-2,3-叠氮基丙胺 性质特点有哪些?

●中文名&#xff1a;3-叠氮基丙胺&#xff0c;3-叠氮基-丙胺 ●英文名&#xff1a;3-azido-1-Propanamine ●外观以及性质&#xff1a; 西安凯新生物科技有限公司供应的&#xff1a;​3-azido-1-Propanamine为淡黄色或无色油状&#xff0c;含有叠氮基团&#xff0c;叠氮基可以…

Node.js 入门教程 23 使用 npm 的语义版本控制 24 卸载 npm 软件包 25 npm 全局或本地的软件包

Node.js 入门教程 Node.js官方入门教程 Node.js中文网 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录Node.js 入门教程23 使用 npm 的语义版本控制24 卸载 npm 软件包25 npm 全局或本地的软件包23 使用 npm 的语义版本控制 如果 Node.js 软件…

第147篇 笔记-预言机(Oracle)

定义&#xff1a;区块链预言机是将区块链连接到外部系统的实体&#xff0c;从而使智能合约能够基于现实世界的输入和输出执行。 预言机为分散的 Web3 生态系统提供了一种访问现有数据源、遗留系统和高级计算的方式。去中心化预言机网络&#xff08;DON&#xff09;支持创建混合…

[附源码]计算机毕业设计springboot“小世界”私人空间

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Java学历、技术哪个更重要?学历不好还能进大厂吗?

Java程序员的入行门槛并不高&#xff0c;并不看重你的学历和其他各方面&#xff0c;唯一看重的就是你技术是否过硬&#xff0c;能否独立参与到企业级开发的项目中去&#xff0c;说简单点入行只看技术。但是你如果想要长远发展服日后走上管理岗位&#xff0c;最好还是自考个本科…

使用 SwiftUI 构建可搜索列表,为您的 iOS 应用程序创建具有自动完成功能的可搜索列表(教程含源码)

设计新应用程序时面临的一大挑战是确保您的用户可以轻松浏览内容。如果体验太难或花费太多时间,无论您的内容有多好,很多用户都会转向另一个应用程序选项或放弃。 期望用户滚动浏览一长串选项是不切实际的,添加搜索功能可以极大地改善用户体验。更进一步,在用户键入时让列…