《JeecgBoot系列》JeecgBoot(ant-design-vue)实现筛选框:支持下拉搜索+下拉多选+表字典(支持条件查询)功能

news/2024/5/12 21:59:33

JeecgBoot(ant-design-vue)实现筛选框:支持下拉搜索+下拉多选+表字典(支持条件查询)功能

JSearchMultiSelectTag.vue源文件

一、需求介绍

在使用JeectBoot(ant-design-vue)设计表单时,需要实现下拉搜索+下拉多选+表字典(支持条件查询)。

但是系统目前有两个组件分别是JMultiSelectTagJSearchSelectTag。经测试发现:1.JMultiSelectTag支持下拉多选+支持表字典(不支持条件查询)。2.JSearchSelectTag支持下拉搜索+表字典(支持条件查询)。所以两者都不能满足。

因为在需求中主要以下拉搜索和表字典(支持条件查询为主),所以选择在JSearchSelectTag的基础上进行调整,从而实现需求内容。

二、代码逻辑调整

2.1 复制JMultiSelectTag.vue文件

1)复制src/components/dict/JMultiSelectTag.vue目录的文件,然后重命名为JSearchMultiSelectTag.vue

在这里插入图片描述

2)修改组件名称

因为文件是直接复制来的,所以需要将名称改成自定义的组件名称JSearchMultiSelectTag

在这里插入图片描述

2.2 修改template部分

a-select标签内添加mode="multiple",即为添加多选的属性。因为不需要做大量的数据缓存,所以同步异步也是相差不大,即可以调整如下:value="selectedValue",@change="onChange"

<template><a-selectv-if="async"mode="multiple"showSearchlabelInValue:disabled="disabled":getPopupContainer="getParentContainer"@search="loadData":placeholder="placeholder":value="selectedValue"v-model="selectedAsyncValue"style="width: 100%":filterOption="false"@change="onChange"allowClear:notFoundContent="loading ? undefined : null"><a-spin v-if="loading" slot="notFoundContent" size="small"/><a-select-option v-for="d in options" :key="d.value" :value="d.value">{{ d.text }}</a-select-option></a-select><a-selectv-elsemode="multiple":getPopupContainer="getParentContainer"showSearch:disabled="disabled":placeholder="placeholder":value="selectedValue"optionFilterProp="children"style="width: 100%"@change="onChange":filterOption="filterOption"v-model="selectedValue"allowClear:notFoundContent="loading ? undefined : null"><a-spin v-if="loading" slot="notFoundContent" size="small"/><a-select-option v-for="d in options" :key="d.value" :value="d.value">{{ d.text }}</a-select-option></a-select></template>

2.3 修改props部分

将props中的value类型改为string

    props:{disabled: Boolean,value: String,dict: String,dictOptions: Array,async: Boolean,placeholder:{type:String,default:"请选择",required:false},popContainer:{type:String,default:'',required:false},pageSize:{type: Number,default: 10,required: false},getPopupContainer: {type:Function,default: null},},

2.4 修改watch部分

监听输入框输入的value时,判断val为空时赋值SelectValue为空值,有输入值就取initSelectValue请求接口。

watch:{"value":{immediate:true,handler(val){if(!val){this.selectedValue=[]this.selectedAsyncValue=[]}else{this.initSelectValue()}}},"dict":{handler(){// this.initDictData()this.initSelectValue()}},'dictOptions':{deep: true,handler(val){if(val && val.length>0){this.options = [...val]}}}},

2.5 修改initSelectValue部分

methods中初始化选择框里的数据方法,查询较快,返回的数据会以逗号作为分隔符分割成数组,便利到options数组中,作为a-select-option中选项。

      initSelectValue(){getAction(`/sys/dict/loadDictItem/${this.dict}`,{key:this.value}).then(res=>{if(res.success){let valueArr = this.value.split(',')this.options = []for(let r=0;r<res.result.length;r++){let obj = {value:valueArr[r],text:res.result[r]}this.options.push(obj)tis.selectedValue = valueArr}}})},

2.6 修改onChange部分

@onChange="onChange",当输入框有变化时,就可以自己根据需求将已选中的数据以逗号作为分隔符以字符串保存起来。

      onChange (selectedValue) {this.$emit('change', selectedValue.join(","));},

三、应用JSearchMultiSelectTag组件

3.1 导入JSearchMultiSelectTag组件

在这里插入图片描述

3.2 应用JSearchMultiSelectTag组件

<j-search-multi-select-tag placeholder="请选择" v-model="queryParam.factory" dict="表名称(可加查询条件),字段名,字段名"></j-search-multi-select-tag>

注意:使用这种方法需要注意的是,表字典用到的表必须是数据库中实际存在的。

在这里插入图片描述

四、测试JSearchMultiSelectTag组件功能

4.1 下拉多选功能

在这里插入图片描述

4.2 下拉搜索功能

在这里插入图片描述


http://www.mrgr.cn/p/43868641

相关文章

Vue3 Vite electron 开发桌面程序

Electron是一个跨平台的桌面应用程序开发框架&#xff0c;它允许开发人员使用Web技术&#xff08;如HTML、CSS和JavaScript&#xff09;构建桌面应用程序&#xff0c;这些应用程序可以在Windows、macOS和Linux等操作系统上运行。 Electron的核心是Chromium浏览器内核和Node.js…

机器学习实战:Python基于EM期望最大化进行参数估计(十五)

文章目录 1. 前言1.1 EM的介绍1.2 EM的应用场景 2. 高斯混合模型估计2.1 导入函数2.2 创建数据2.3 初始化2.4 Expectation Step2.5 Maximization step2.6 循环迭代可视化 3. 多维情况4. 讨论 1. 前言 1.1 EM的介绍 &#xff08;Expectation-Maximization&#xff0c;EM&#…

程序设计 算法基础

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境

知识点&#xff1a;简单了解K210芯片 2018年9月6日,嘉楠科技推出自主设计研发的全球首款基于RISC-V的量产商用边缘智能计算芯片勘智K210。该芯片依托于完全自主研发的AI神经网络加速器KPU,具备自主IP、视听兼具与可编程能力三大特点,能够充分适配多个业务场景的需求。作为嘉楠科…

QGIS3.28的二次开发一:编译工程

环境&#xff1a;VS2019OSGeo4WCMake_3.26Cygwin64QGIS_3.28 注意&#xff1a;一定要按照步骤顺序来&#xff01; 一、配置环境 &#xff08;一&#xff09;VS2019 VS2019下载链接https://my.visualstudio.com/Downloads?qvisual%20studio%202019&wt.mc_ido~msft~vsco…

WAIC2023:图像内容安全黑科技助力可信AI发展

目录 0 写在前面1 AI图像篡改检测2 生成式图像鉴别2.1 主干特征提取通道2.2 注意力模块2.3 纹理增强模块 3 OCR对抗攻击4 助力可信AI向善发展总结 0 写在前面 2023世界人工智能大会(WAIC)已圆满结束&#xff0c;恰逢全球大模型和生成式人工智能蓬勃兴起之时&#xff0c;今年参…

【沐风老师】归纳总结50个3dMax常用的方法和技巧

​在日常工作中&#xff0c;我们总能总结出一些方法和技巧&#xff0c;用以在今后的工作中提高工作效率。下面是50个3dMax最常见的方法和技巧&#xff0c;这些方法和技巧已经成为众多3dMax用户日常工作流程中不可或缺的一部分。 1.使用“重命名对象”工具可以同时重命名多个对象…

【Chat GPT】用 ChatGPT 运行 Python

前言 ChatGPT 是一个基于 GPT-2 模型的人工智能聊天机器人&#xff0c;它可以进行智能对话&#xff0c;同时还支持 Python 编程语言的运行&#xff0c;可以通过 API 接口进行调用。本文将介绍如何使用 ChatGPT 运行 Python 代码&#xff0c;并提供一个实际代码案例。 ChatGPT …

golang pprof

pprof是一个用于分析数据的可视化和分析工具&#xff0c;由谷歌公司的开发团队使用go语言编写成的。一般用于对golang资源占用进行分析。不是原创&#xff0c;参考&#xff1a;https://juejin.cn/post/7122473470424219656 1. 通过页面查看golang运行情况 访问 http://127.0.0…

PostgreSql 锁

一、概述 在 PostgreSQL 事务中提到&#xff0c;多个用户访问相同数据时可能出现脏读&#xff0c;不可重复度&#xff0c;幻读&#xff0c;更新丢失的问题&#xff0c;为解决这些问题&#xff0c;定义了不同的隔离级别&#xff0c;而隔离级别的具体实现&#xff0c;依靠的就是数…

Kubernetes 使用 helm 部署 NFS Provisioner

文章目录 1. 介绍2. 预备条件3. 部署 nfs4. 部署 NFS subdir external provisioner4.1 集群配置 containerd 代理4.2 配置代理堡垒机通过 kubeconfig 部署 部署 MinIO添加仓库修改可配置项 访问nodepotingress 1. 介绍 NFS subdir external provisioner 使用现有且已配置的NFS…

在外远程NAS群晖Drive - 群晖Drive挂载电脑磁盘同步备份【无需公网IP】

文章目录 前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用 2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用 3. 结语 前言 群晖作为专业的数据存储中心&…

tinkerCAD案例:24. Ruler - Measuring Lengths 标尺 -量勺

tinkerCAD案例&#xff1a;24. Ruler - Measuring Lengths 标尺 - 测量长度 Project Overview: 项目概况&#xff1a; A machine shop, where any idea can become a reality, can cost millions and million of dollars. Still, the most important tool in the shop is the…

“华为杯”研究生数学建模竞赛2019年-【华为杯】D题:汽车行驶工况构建

目录 摘 要&#xff1a; 1.问题背景与问题重述 1.1 问题背景 1.2 问题重述 2.模型假设 3.符号说明 4.问题一的求解 4.1 问题分析 4.2 异常数据的处理 4.2.1 明显错误数据的处理 4.2.2 加减速异常数据的处理 4.3 缺失数据的处理 4.3.1 数据插补处理 4.3.2 视为长期停车处理 4.3.…

Linux 学习记录60(ARM篇)

Linux 学习记录60(ARM篇) 本文目录 Linux 学习记录60(ARM篇)一、SPI总线1. 概念2. 硬件连接 二、SPI总线协议三、SPI总线通信模式四、对比IIC总线和SPI总线1. 相同点2. 不同点 思维导图 一、SPI总线 1. 概念 1、SPI总结是Motorola首先提出的全双工三线/四线同步串行总线 2、采…

车道线检测|利用边缘检测的原理对车道线图片进行识别

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 这两个都是博主在学习Linux操作系统过程中的记录&#xff0c;希望对大家的学习有帮助&#xff01; 操作系统Operating Syshttps://blog.csdn.net/yu_cblog/category_12165502.html?spm1001.2014.3001.5482Linux S…

15.Netty源码之EventLoop

highlight: arduino-light Netty配置主从Reactor模式 通过将NioServerSocketChannel绑定到了bossGroup。 将NioServerSocketChannel接收到请求创建的SocketChannel放入workerGroup。 将2个不同的SocketChannel绑定到2个不同的Group完成了主从 Reactor 模式。 分配NIOEventLoop的…

Git的安装以及本地仓库的创建和配置

文章目录 1.Git简介2.安装Git2.1在Centos上安装git2.2 在ubuntu上安装git 3.创建本地仓库4.配置本地仓库 1.Git简介 Git是一个分布式版本控制系统&#xff0c;用于跟踪和管理文件的更改。它可以记录和存储代码的所有历史版本&#xff0c;并可以方便地进行分支管理、合并代码和协…