实现页面下拉框数据从后台表格去重取值并且含有对应关系

news2024/10/12 5:28:43

当地区选择变化时,动态更新客户名称下拉框(效果图如下)

在这里插入图片描述
在这里插入图片描述

实现步骤,html部分

<form class="form-horizontal m-t">
	<div class="row">
        <div class="col-sm-6">
            <div class="form-group">
                <label class="col-sm-4 control-label is-required">客户地区:</label>
                <div class="col-sm-7">
                    <select id="clientRegion" name="clientRegion" class="form-control">

                    </select>
                </div>
            </div>
        </div>
        <div class="col-sm-6">
            <div class="form-group">
                <label class="col-sm-5 control-label is-required">客户名称:</label>
                <div class="col-sm-7">
                    <select id="clientName" name="clientName" class="form-control">

                    </select>
                </div>
            </div>
        </div>
    </div>
</form>

js部分

<script th:inline="javascript">
	var prefix1 = ctx + "ideabank/clients";
	
	$(function() {
        //项目基本信息
        loadClientOptions()
    })

	function loadClientOptions() {
        $.ajax({
            url: prefix1 + "/getClientOptions",
            type: "POST",
            success: function (res) {
                var data = res.data;

                // 填充客户地区下拉框
                var regionOptions = '';
                $.each(data.regions, function (i, region) {
                    regionOptions += `<option value="${region}">${region}</option>`;
                });
                $('#clientRegion').html(regionOptions);

                // 当地区选择变化时,动态更新客户名称下拉框
                $('#clientRegion').change(function () {
                    var selectedRegion = $(this).val();
                    var clientNames = data.namesByRegion[selectedRegion] || [];

                    var nameOptions = '';
                    $.each(clientNames, function (i, name) {
                        nameOptions += `<option value="${name}">${name}</option>`;
                    });
                    $('#clientName').html(nameOptions);
                });

                // 触发地区下拉框变化,初始化客户名称
                $('#clientRegion').trigger('change');
            }
        });
    }

后台Java代码

/**
 * 查询客户相关字段信息
 */
@PostMapping("/getClientOptions")
@ResponseBody
public AjaxResult getClientOptions(TbClients tbClients)
{
    List<TbClients> clients = tbClientsService.selectClientOptions();

    // 分离地区和客户名称
    Set<String> regions = new HashSet<>();
    Map<String, List<String>> namesByRegion = new HashMap<>();

    for (TbClients client : clients) {
        regions.add(client.getClientRegion());

        // 根据客户地区,将客户名称添加到对应的客户名称列表中
        namesByRegion.computeIfAbsent(client.getClientRegion(), k -> new ArrayList<>())
                .add(client.getClientName());
    }

    Map<String, Object> result = new HashMap<>();
    result.put("regions", regions);
    result.put("namesByRegion", namesByRegion);  // 每个地区对应的客户名称

    return AjaxResult.success(result);
}

mapper层下xml

DISTINCT 是作用于查询结果的整行数据,而不是单独的列。因此,它对 client_region 和 client_name 的组合进行去重。

只有当 client_region 和 client_name 的组合完全相同时,才会被视为重复并去除。
换句话说,如果某个 client_region 下有多个不同的 client_name,这些记录都会保留。

<select id="selectClientOptions" resultMap="TbClientsResult">
    select distinct client_region, client_name from tb_clients
</select>

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

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

相关文章

前端转换double数据,保留两位小数

Number Number(1.00) 1 Number(1.10) 1.1 Number(1.101) 1.101 要想前端展示页面按 1.00展示1&#xff0c;1.10 展示1.1 需要套一个number() 1.1 保留两位小数&#xff0c;并三位一个分隔符 indexView.value[key] formatNumber(indexView.value[key].toFixed(2))//格式…

Springboot 整合 Java DL4J 实现企业门禁人脸识别系统

&#x1f9d1; 博主简介&#xff1a;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编程&#xff0c;…

Linux系列-常见的指令(二)

&#x1f308;个人主页&#xff1a; 羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” mv 剪切文件&#xff0c;目录 重命名 比如说&#xff0c;我们在最开始创建一个新的文件hello.txt 然后我们将这个文件改一个名字&#xff0c;改成world.txt 所以&#xff0c;…

C++ 算法学习——1.8 快速幂算法

背景知识&#xff1a; 1.位运算 在C中&#xff0c;位运算是对整数类型的位进行操作的一种运算方式。常见的位运算符包括按位与&#xff08;&&#xff09;、按位或&#xff08;|&#xff09;、按位异或&#xff08;^&#xff09;、取反&#xff08;~&#xff09;、左移&am…

Unity MVC框架1-2 实战分析

该课程资源来源于唐老狮&#xff0c;吃水不忘打井人&#xff0c;不胜感激 Unity MVC框架演示 1-1 理论分析-CSDN博客 首先你需要知道什么mvc框架&#xff0c;并且对三个层级有个比较清晰的认识&#xff0c;当然不清楚也好&#xff0c;下面例子中将会十分细心地让你理解&#x…

“CFD+水务”,积鼎通用流体仿真软件VirtualFlow助力水处理能力提升

在快速发展的现代社会中&#xff0c;水务行业作为城市基础设施的重要组成部分&#xff0c;其高效、安全、可持续的运营直接关系到民众的生活质量与城市的健康发展。随着科技的进步&#xff0c;CFD技术正逐步渗透到水务行业的各个角落&#xff0c;以其独特的模拟预测能力&#x…

软件测试学习笔记丨质量门禁 - SonarQube

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32486 一&#xff0c;质量门禁概念 质量门禁是为了控制达标率的检查任务设置质量门禁的好处 通过检查达标状态来评估产品质量&#xff0c;控制产品发布利用自动化任务来控制产品的代码质量&a…

构建高效互通的数字桥梁:香港服务器托管指南

在当今全球化日益加深的商业环境中&#xff0c;出海企业面临着前所未有的机遇与挑战。为了确保国内外业务的顺畅运行&#xff0c;特别是在实现国内外数据高效互通、低延迟访问方面&#xff0c;选择一家合适的香港服务器机房进行托管成为了许多企业的关键决策之一。香港&#xf…

科研绘图系列:R语言蝴蝶图(Butterfly Chart)

文章目录 介绍加载R包数据函数画图系统信息介绍 蝴蝶图(Butterfly Chart),也被称为龙卷风图(Tornado Chart)或双轴图(Dual-Axis Chart),是一种用于展示两组对比数据的图表。这种图表通过在中心轴两侧分别展示两组数据的条形图,形似蝴蝶的翅膀,因此得名。蝴蝶图的特点…

ORM 框架 查询相关函数

1、Ubuntu 实时查看 Mysql 数据库日志 sudo tail -f /var/log/mysql/mysql.log2、Django 的 ORM 3、查询相关函数 4、get filter exclude 方法可以增加条件 &#xff08;1&#xff09;条件格式&#xff1a; 模型类属性名__条件值值 &#xff08;2&#xff09;示例代码 # 在…

Spark优化-缓存和checkpoint

目录 缓存使用 checkpoint使用 两者的区别 如下图,如果不适用缓存,rdd3的数据需要经过两次计算,而每次计算也是在内存中计算,很消耗内存,而使用了缓存,可以直接从缓存中直接获取数据,不需要每次对rdd2进行计算 缓存和checkpoint也叫作rdd的持久化&#xff0c;将rdd的数据存储…

快速总结ACmix

ACMix&#xff1a;On the Integration of Self-Attention and Convolution 卷积和自注意力模块通常遵循不同的设计范式&#xff1a; 传统卷积根据卷积滤波器权重利用局部感受野上的聚合函数&#xff0c;这些权重在整个特征图中共享。 内在特性对图像处理施加了至关重要的归纳…

Linux入门:进程状态与优先级

文章目录 一. OS进程状态1.1 一般分类1.2 运行状态1.3 阻塞状态1.4 挂起状态1.5 并行与并发 二. Linux进程状态2.1 分类2.1.1 R状态2.1.2 S状态2.1.3 D状态2.1.4 T状态与t状态2.1.6 X状态 2.2 僵尸状态&#xff08;Z&#xff09;2.2.1 概念2.2.2 查看状态 三. 进程的优先级3.1 …

6N137S1取反电路图

文章目录 一、前言二、6N137S1性能介绍三、应用电路图 一、前言 在硬件电路设计中需要用到隔离电路&#xff0c;但此引脚输出为WS2812的信号&#xff0c;频率有840khz&#xff0c;所以需要使用逻辑光耦&#xff0c;选用6N137S1光耦&#xff0c;速率能达到10Mhz&#xff0c;能满…

Python+Flask接口判断身份证省份、生日、性别、有效性验证+docker部署+Nginx代理运行

这里写目录标题 一、接口样式二、部署流程2.1 镜像打包2.1.1 准备工作2.1.2 build打包2.1.3 dokcer部署运行2.1.4 Nginx代理 三、代码及文件3.1 index.py3.2 areaCodes.json3.3 Dockerfile 一、接口样式 https://blog.henryplus.cn/idcardApi/idCard/query?idcard{idcard} 二、…

anatraf网络性能监控与故障排除

目录 网络性能监控的必要性 1. 提前预警问题 2. 快速响应与故障排除 网络故障排除的常见场景 1. 带宽不足导致的网络卡顿 2. IP冲突引发的网络中断 3. 网络设备故障 结语 随着现代企业对网络依赖性的日益增强&#xff0c;网络性能监控&#xff08;Network Performance …

进口磁力仪G882SX和原装G882究竟有什么区别?

Geometrics公司的铯光泵磁力仪G882有两个型号&#xff1a;一个是出口型号G882SX&#xff0c;另一个是原装型号G882&#xff0c;出口型号的噪声水平比原装型号高一个量级。国内搞磁力仪的专业人士认为进口型号故意加了噪声。 ​ 在之前的博文《如何利用matlab对G882数据进行频谱…

SpringCloud Alibaba-01 入门简介

1.Spring Cloud Alibaba 是由阿里巴巴结合自身丰富的微服务实践而推出的微服务开发的一站式解决方案。它是 Spring Cloud 生态中的第二代实现&#xff0c;提供了包括服务注册与发现、分布式配置管理、服务限流降级、消息驱动能力、阿里云对象存储、分布式任务调度等在内的多种功…

打开cad自动新建一个图纸

命令栏输入&#xff1a;startmode,改为0 即为自动打开cad新建一个图纸。 改为2&#xff0c;即不会新建图纸。

高效录制 PPT 秘籍:四款卓越录屏软件深度解析

一、引言 在现代工作、学习与知识传播的多元场景中&#xff0c;PPT 已然成为不可或缺的信息载体。将 PPT 内容录制下来&#xff0c;其用途广泛&#xff0c;从教师精心打造线上教学课件&#xff0c;到职场精英分享项目方案&#xff0c;再到培训师筹备培训素材等。而获取优质的 P…