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

news2024/10/6 0:29: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-select
    v-if="async"
    mode="multiple"
    showSearch
    labelInValue
    :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-select
    v-else
    mode="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.coloradmin.cn/o/812692.html

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

相关文章

【Java】零基础上手SpringBoot学习日记(day1)

前言 此帖为本人学习Springboot时的笔记&#xff0c;由于是个接触计算机一年左右的新手&#xff0c;也没有网站开发经验&#xff0c;所以有些地方的理解会比较浅显并且可能会出现错误&#xff0c;望大佬们多多包涵和指正。 Web应用开发 在我的理解中&#xff0c;Web应用的开发…

robot framework之第三方测试报告Allure

Allure 简单介绍 Allure是一个美化报告的工具。支持pytest, robot framework和junit等多种测试框架。 windows 安装allure 步骤1&#xff1a;gitlab 下载解压&#xff1a;https://github.com/allure-framework/allure2/releases 步骤2&#xff1a;进入bin目录, 点击allure.bat…

资深web前端开发工程师的工作职责表述(合集)

资深web前端开发工程师的工作职责表述1 职责 - 负责相关项目的web前端研发和优化工作 - 使用敏捷开发方法&#xff0c;完成产品或产品模块的设计和开发; - 按照编码规范编程&#xff0c;编制贯穿整个软件开发周期的文档资料; - 设计前端或后端架构&#xff0c;编写核心代码…

C语言字串函数、内存函数介绍以及模拟实现

目录 前言 本期内容介绍&#xff1a; 一、字符串函数 strlen介绍 strlen 模拟实现&#xff08;三种方式&#xff09; 方法一&#xff1a;计数器法 方法二&#xff1a;递归法&#xff08;不创建临时变量法&#xff09; 方法三&#xff1a;指针-指针 strcpy介绍 strcpy模…

国产单端口1000M以太网收发(PHY)芯片介绍

2023年将是国产以太网&#xff08;Ethernet&#xff09;传输芯片公司崛起之年&#xff0c;将涌现了一大批性能稳定&#xff0c;质量可靠的产品&#xff0c;国产网络传输芯片涵盖Ethernet PHY、Switch等中高端市场,如单&#xff08;或多&#xff09;端口千兆以太网PHY品牌&#…

小研究 - 主动式微服务细粒度弹性缩放算法研究(二)

微服务架构已成为云数据中心的基本服务架构。但目前关于微服务系统弹性缩放的研究大多是基于服务或实例级别的水平缩放&#xff0c;忽略了能够充分利用单台服务器资源的细粒度垂直缩放&#xff0c;从而导致资源浪费。为此&#xff0c;本文设计了主动式微服务细粒度弹性缩放算法…

msvcp100.dll丢失怎么修复,这三个常用的修复方法可以解决

msvcp100.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C Redistributable软件包的一部分。这个文件的作用是提供在运行C程序时所需的函数和功能。msvcp100.dll是一个非常重要的文件&#xff0c;它为我们提供了许多关键的函数和类&#xff0c;使得我们能够更高效地…

算法通关村第一关——链表经典问题之删除链表元素专题笔记

删除特定节点 题目描述 给你一个链表的头节点head和一个整数val&#xff0c;请你删除链表汇总所有满足Node.val val 的节点&#xff0c;并返回新的头节点 示例 输入&#xff1a; head [1,2,6,3,4,5,6] , val 6 输出&#xff1a;[1,2,3,4,5] 分析 在删除节点cur时&#xff…

网络编程 IO多路复用 [select版] (TCP网络聊天室)

//head.h 头文件 //TcpGrpSer.c 服务器端 //TcpGrpUsr.c 客户端 select函数 功能&#xff1a;阻塞函数&#xff0c;让内核去监测集合中的文件描述符是否准备就绪&#xff0c;若准备就绪则解除阻塞。 原型&#xff1a; #include <sys/select.…

前端试用期工作总结范文5篇

前端试用期工作总结 &#xff08;篇1&#xff09; 时间飞逝&#xff0c;转眼间&#xff0c;做为一名Web前端开发的正式员工已经有两个月之久。在这个难忘而又夸姣的 日子里&#xff0c;我深入体会到了公司的积极氛围和各个部门的巨大魅力&#xff0c;目睹了公司一步步走向成熟…

计算机中存储器的层次结构

现代的存储器体系结构是这样的&#xff1a; 越往上访问速度越快&#xff0c;更小&#xff0c;成本也越高。越往下访问速度越慢&#xff0c;更大&#xff0c;成本也越低。 在最高层&#xff08;L0&#xff09;是少量快速的CPU寄存器&#xff0c;CPU可以在一个时钟周期内访问他…

八股总结(八)SSM框架体系

文章目录 Spring基础1、Spring、SpringMVC、Mybatis与SpringBoot的区别2、Spring中常用的注解及作用 Spring IoC 、 DI、Bean3、Spring IoC是什么&#xff0c;有什么好处&#xff0c;Spring中是怎么实现的&#xff1f;4、Bean相关5、Component 和 Bean 的区别是什么&#xff1f…

基于RASC的keil电子时钟制作(瑞萨RA)(5)----驱动LED数码管

基于RASC的keil电子时钟制作5_驱动LED数码管 概述硬件准备视频教程数码管说明配置IO口数码管显示库smg.csmg.h主程序 概述 本篇文章主要介绍如何使用e2studio对瑞萨RA2E1开发板进行数码管的驱动。 硬件准备 首先需要准备一个开发板&#xff0c;这里我准备的是芯片型号R7FA2E…

管理能力提升 -《六顶思考帽》读后感

我们都听过“盲人摸象”的故事&#xff0c;每个盲人讲的都是自己的真实体验&#xff0c;都认为自己一定没错&#xff0c;但彼此争吵的很厉害。 这是一种传统思辨思维&#xff0c;它有两个特征&#xff1a; 判断和争论 &#xff1a;坚持我对&#xff0c;你错&#xff0c;从自己的…

ElasticSearch 7.x

前言 elastic表示可伸缩&#xff0c;search表示查询。所以es的核心即为查询。通常情况下&#xff0c;我们的数据可以分为三类&#xff1a;结构化数据、非结构化数据、半结构化数据。 结构化数据&#xff1a;一般会用特定的结构来组织和管理数据&#xff0c;表现为二维表结构。…

51单片机学习--按键控制流水灯模式定时器时钟

TMOD负责确定T0和T1的工作模式&#xff0c;TCON控制T0和T1的启动或停止计数&#xff0c;同时包含定时器状态 TF1&#xff1a;定时器1溢出标志 TF0&#xff1a;定时器0溢出标志 0~65535 每隔1微秒计数器1&#xff0c;总时间65535微秒&#xff0c;赋上初值64535&#xff0c;则只…

部署前端项目到服务器

声明:1.我演示使用的是华为云的服务器的Linux 系统2.通过宝塔部署项目3.项目是vue打包之后的4.其他服务器都差不多一样的配置 5.我是做前端的,下面教程只是个人操作,其他勿怪1.购买服务器 1.1:以下案例我使用的是华为云的服务器 购买服务器后,都有部署教程 有的人可能…

Tomcat 安装配置教程及成功后,启动失败报错解决方案

解决方案 我的报错原因是因为我的JDK是1.8的而我的Tomcat是10版本的&#xff0c;可能是因为版本原因吧&#xff0c;我重新装了Tomcat 9就可以启动成功了&#xff01; 简单说下安装的时候需要注意哪些步骤吧 今天我在安装tomcat10的时候&#xff0c;安装成功后&#xff0c;启…

Houdini查看参数能用的内置变量($符号开头的变量)

在某个参数上&#xff0c;右键&#xff0c;reference, local variable就能看到

什么是生成式人工智能及其工作原理?

什么是生成式人工智能&#xff1f; 生成式人工智能是一个令人兴奋的领域&#xff0c;它有可能彻底改变我们创建和消费内容的方式。它可以产生新的艺术、音乐&#xff0c;甚至是以前从未存在过的逼真的人脸。生成式人工智能最有前途的方面之一是它能够为各个行业创建独特的定制…