输入搜索、分组展示选项、下拉选取,全局跳转页,el-select 实现 —— 后端数据处理代码,抛砖引玉展思路

详细前端代码写于上一篇:输入搜索、分组展示选项、下拉选取,el-select 实现:即输入关键字检索,返回分组选项,选取跳转到相应内容页 —— VUE项目-全局模糊检索

【效果图】:分组展示选项 =>【提供界面操作体验】

【mybatis】:多数据表抓取数据

 <select id="findNews" resultType="com.bootdo.search.vo.SearchDetail">SELECT      n.cid           AS srcId,pt.id           AS typeId,pt.type_key     AS typeKey,pt.page_type    AS pageType,pt.page_name    AS srcTypeName,n.title         AS srcName,n.summary       AS alias,pt.page_path    AS srcPathFROM a_news nLEFT JOIN a_product_type pt ON n.type_id = pt.idWHERE n.sys_id = #{sysId} AND n.is_enabled = 0 AND (n.title LIKE #{query} OR n.summary LIKE #{query} OR n.content LIKE #{query})LIMIT 20</select><select id="findProducts" resultType="com.bootdo.search.vo.SearchDetail">SELECT      pt.id            AS srcId,pt.page_type    AS pageType,pt.page_name    AS srcTypeName,pt.type_name     AS srcName,pt.type_key     AS alias,pt.page_path    AS srcPathFROM a_product_type ptWHERE  pt.sys_id = #{sysId} AND pt.is_deleted = 0 AND pt.type_name LIKE #{query}LIMIT 20</select><select id="findItemInfos" resultType="com.bootdo.search.vo.SearchDetail">SELECT      n.cid           AS srcId,pt.id           AS typeId,pt.type_key     AS typeKey,pt.page_type    AS pageType,pt.page_name    AS srcTypeName,pt.type_name    AS srcName,pt.type_name    AS alias,pt.page_path    AS srcPathFROM a_item_info nLEFT JOIN a_product_type pt ON n.type_id = pt.idWHERE n.sys_id = #{sysId} AND n.is_enabled = 0 AND n.content LIKE #{query}LIMIT 20</select>

【java】:各数据源进一步整理、合并、分组

    public List<SearchVO> search(Map<String, Object> params){Map<String, SearchDetail> map = new HashMap<>();List<SearchDetail> products = searchDao.findProducts(params);List<SearchDetail> itemInfos = searchDao.findItemInfos(params);List<SearchDetail> news = searchDao.findNews(params);for(SearchDetail sd : products){String srcPath = sd.getSrcPath()+"?typeKey="+sd.getAlias();sd.setSrcPath(srcPath);map.put(srcPath, sd);}for(SearchDetail sd : itemInfos){this.changePath(map, sd);}for(SearchDetail sd : news){this.changePath(map, sd);}return groupSearchDetailsByTypeName(map.values());}private void changePath(Map<String, SearchDetail> map, SearchDetail sd){String srcPath = sd.getSrcPath();if(StringUtils.equals(srcPath, "/n")){srcPath = srcPath+"/nId?showDetailNewId="+sd.getSrcId()+"&menuSearch=true";sd.setSrcPath(srcPath);}if(StringUtils.equals(srcPath, "/p")){srcPath = srcPath+"/pId?showDetailNewId="+sd.getSrcId()+"&menuSearch=true&typeId="+sd.getTypeId()+"&typeKey="+sd.getTypeKey();sd.setSrcPath(srcPath);}map.put(srcPath, sd);}private List<SearchVO> groupSearchDetailsByTypeName(Collection<SearchDetail> sds) {// 使用 Collectors.groupingBy 按 srcTypeName(即 label)分组Map<Integer, List<SearchDetail>> groupedByTypeName = sds.stream().collect(Collectors.groupingBy(SearchDetail::getPageType));// 将分组后的数据转换为 List<SearchVO>List<SearchVO> searchVOList = new ArrayList<>();for (Map.Entry<Integer, List<SearchDetail>> entry : groupedByTypeName.entrySet()) {SearchVO searchVO = new SearchVO();List<SearchDetail> value = entry.getValue();searchVO.setLabel(value.get(0).getSrcTypeName());searchVO.setOptions(value);searchVOList.add(searchVO);}return searchVOList;}

vue、js

<el-row :gutter="20" style="display: flex;  border-radius: 5px;" ><el-col style="margin-bottom: 7px;"><lilo-group-select @change="groupSelectChange" :multiple="false" :likeQuery="true" :searchApi="'/api/list/search'" clearable placeholder="请输入快速搜索" ></lilo-group-select></el-col>
</el-row>groupSelectChange(option) {console.log("下拉选项选中:"+JSON.stringify(option));if(option==''|| option.srcPath=='')return;// this.$router.push(option.srcPath);this.$router.push(option.srcPath).catch(err => {if (err.name !== 'NavigationDuplicated') {// 处理其他可能的错误console.error(err);}// 对于 NavigationDuplicated 错误,可以选择不做任何处理});
},

【效果图】:分组展示选项 =>【提供界面操作体验】


详细前端代码写于上一篇:输入搜索、分组展示选项、下拉选取,el-select 实现:即输入关键字检索,返回分组选项,选取跳转到相应内容页 —— VUE项目-全局模糊检索
————————————————

本文同步发表于:https://blog.csdn.net/wangqingbo0829/article/details/145774974

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用@SpringBootApplication注解

https://docs.spring.io/spring-boot/docs/2.0.x/reference/html/using-boot-using-springbootapplication-annotation.html许多Spring Boot开发人员希望他们的应用程序能够使用自动配置(auto-configuration)、组件扫描(component scan),并能够在其“应用程序类(applicat…

跨时钟域-单脉冲信号处理方法

逻辑设计中将所有同步元件(例如触发器和RAM等)使用相同时钟信号的部分称为时钟域。 退出亚稳态所需的时间被称为resolution Time(Tr)。 由于建立时间的违反,寄存器的输出电压可能是代表逻辑高、逻辑低,甚至更糟糕的是介于逻辑高和逻辑低之间的电压。 亚稳态是指触发器无法…

VMWare workstation pro 17 Windows11 中提示不能 支持Intel VT-x 虚拟化的问题终极解决方案

1. 在BIOS中开启虚拟化 2. 在系统功能里面取消hyper-v,虚拟机管理平台,沙盒功能, 虚拟机监控平台四个功能。 3. 在内核隔离里面取消内存隔离。 4. 运行下面的批处理。 5.重启后会有两次提示是否关闭vbs,两次按F3关闭,重启后一切正常。===================================…

PipeCAD Spooler 管道加工设计工具

PipeCAD Spooler是一款专门为管道预制厂商设计的管道深化加工设计和管理的工具。有以下一些功能:+ 直接导入PCF/IDF管道数据进行深化设计,大大提高设计效率; + 精确的材料统计,为材料采购提供准确数据; + 通过深化设计将管线拆分为易于车间加工的管段,提高加工质量,缩短…

『Python底层原理』--Python属性的工作原理

Python中的属性操作(如获取、设置和删除属性)是我们日常编程中非常常见的操作。 但你有没有想过,当我们写下obj.attr或obj.attr = value时,Python 内部究竟发生了什么? 本文将探讨Python属性的工作原理,并通过简单的代码示例来更好地理解这些概念。 1. 属性的基本操作 在…

deepseek最小模型安装部署

参考:DeepSeek本地部署详细指南访问ollama官网下载 这里我选择的是windows版本,因为本人设备能力有限,准备后续安装1.5B版本进行初步学习使用 安装好后,进入命令行执行ollama --version,检查是否安装成功,如出现下述信息,则说明安装成功下载并安装deepseek 1.5b模型部署…

SharePoint Online 使用 Power Automate 新建共享链接

前言似乎很久没关注SharePoint操作的更新了,这个新建共享链接的操作是一个蛮有用的,似乎挺新的。正文1.就是这样的一个操作,配置起来超级简单,如下图:2.链接类型有两个选项,如下图:3.链接的范围有两个属性,如下图:4.运行一下,看看效果,输出的结果就是那个链接,如下…

做销售,要有5不怕!

在销售领域,扎实的专业知识固然重要,但坚韧不拔的精神与积极心态更是不可或缺。以下 “五不怕” 精神,是销售从业者的致胜法宝,助你在销售道路上稳步前行。一、不怕见客户:勇敢开启销售之旅销售的核心在于与人沟通,而见客户是销售的起始点。不少销售人员对这第一步心怀恐…

Deepseek本地知识库(Ollama + Deepseek + Cherry)

Deepseek本地知识库(Ollama + Deepseek + Cherry)需要使用到的技术以及站点Ollama: https://ollama.com/download DeepSeek: https://ollama.com/library/deepseek-r1:7b bge-m3: https://ollama.com/library/bge-m3 Cherry Studio下载: https://cherry-ai.com/0x00 前言…

进程管理章节

调度器章节 Linux进程调度器概述--Linux进程的管理与调度(十五) Linux进程调度策略的发展和演变--Linux进程的管理与调度(十六) Linux进程调度器的设计--Linux进程的管理与调度(十七) Linux核心调度器之周期性调度器scheduler_tick--Linux进程的管理与调度(十八) Linux进程…

[计算机网络] Windows 网络管理

概述: Windows 网络管理 FAQ for Windows 网络 Q: 开放 Windows 的 ICMP v4,允许其他主机的ping问题描述vmware 中 桥接模式下的centos 虚拟机(172.10.31.104) 无法ping通在同一局域网的宿主机IP(172.10.31.21、,但该centos能访问baidu.com等互联网网络,且宿主机也能ping通…

【提升效率】如何写好一份详细设计文档

版本 日期 修订人 描述V1.0 2024/12/6 nick huang 创建文档背景 CSDN在发起“如何做好一份技术文档”的活动。 想起我最近在写一份详细设计,有一些感受:一份考虑较周全的“详细设计文档模板”能起到质量保底的作用。 当一名初级技术人员需要编写详细设计文档,如果有一份较全…