二十、线索关联市场活动(一):查询市场活动

news/2024/3/29 23:32:24/文章来源:https://blog.csdn.net/jbkjhji/article/details/130240640

功能需求

用户在线索明细页面,点击"关联市场活动"按钮,弹出线索关联市场活动的模态窗口;

用户在线索关联市场活动的模态窗口,输入搜索条件,每次键盘弹起,根据名称模糊查询市场活动,把所有符合条件的市场活动显示到列表中;

用户选择要关联的市场活动,点击"关联"按钮,完成线索关联市场活动的功能.

         *每次至少关联一个市场活动

         *同一个市场活动只能跟同一个线索关联一次

         *关联成功之后,关闭模态窗口,刷新已经关联过的市场活动列表

         *关联失败,提示信息,模态窗口不关闭,已经关联过的市场活动列表也不刷新

 

流程图

 代码实现

1.ActivityMapper

ActivityMapper

 /*** 关联市场活动2:根据线索id和活动id。查询该线索下关联的市场活动*/List<Activity> selectActivityForDetailByNameAndClueId(Map<String,Object> map);

②ActivityMapper映射文件

查询市场活动,条件是没在市场活动和线索关联表中的。

    <select id="selectActivityForDetailByNameAndClueId" resultMap="BaseResultMap">select a.id,a.name,a.start_date,a.end_date,u.name as ownerfrom tbl_activity ajoin tbl_user u on u.id = a.ownerwhere a.name like "%"#{activityName}"%" and a.id not in (select activity_idfrom tbl_clue_activity_relationwhere clue_id=#{clueId})</select>

2.ActivityService

	/*** 关联市场活动2:根据线索id,活动id输入的名称的 市场活动*/List<Activity> queryActivityForDetailByNameAndClueId(Map<String,Object> map);
@Overridepublic List<Activity> queryActivityForDetailByNameAndClueId(Map<String, Object> map) {return activityMapper.selectActivityForDetailByNameAndClueId(map);}

3.ClueController

	/*** 关联市场活动1:查询*/@RequestMapping("/workbench/clue/queryActivityForDetailByNameAndClueId.do")public @ResponseBodyObject queryActivityForDetailByNameAndClueId(String clueId, String activityName) {// 获取参数Map<String, Object> map = new HashMap<>();map.put("clueId", clueId);map.put("activityName", activityName);// 调用serviceList<Activity> activityList = activityService.queryActivityForDetailByNameAndClueId(map);return activityList;}

4.前端detail.jsp

<!-- 关联市场活动的模态窗口 -->
<div class="modal fade" id="boundModal" role="dialog"><div class="modal-dialog" role="document" style="width: 80%;"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span></button><h4 class="modal-title">关联市场活动</h4></div><div class="modal-body"><div class="btn-group" style="position: relative; top: 18%; left: 8px;"><form class="form-inline" role="form"><div class="form-group has-feedback"><input type="text" id="searchActivityTxt" class="form-control" style="width: 300px;"placeholder="请输入市场活动名称,支持模糊查询"><span class="glyphicon glyphicon-search form-control-feedback"></span></div></form></div><table id="activityTable" class="table table-hover" style="width: 900px; position: relative;top: 10px;"><thead><tr style="color: #B3B3B3;"><td><input type="checkbox" id="checkAll"/></td><td>名称</td><td>开始日期</td><td>结束日期</td><td>所有者</td><td></td></tr></thead><tbody id="tBody"></tbody></table></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">取消</button><button type="button" class="btn btn-primary" id="saveBoundBtn">关联</button></div></div></div>
</div>

1.给“关联市场活动”按钮添加单击事件

            $("#boundActivityBtn").click(function () {// 初始化$("#searchActivityTxt").val(""); //清空搜索框$("#tBody").html(""); // 清空之前显示的数据$("#checkAll").prop("checked", false); // 全选取消// 显示模态窗口$("#boundModal").modal("show");});

2.搜索框添加单击事件,在键盘的键被按下的时候,接下来触发

 $("#searchActivityTxt").keyup(function () {// 获取参数var clueId = '${clue.id}';var activityName = $("#searchActivityTxt").val();// 发送请求$.ajax({url: 'workbench/clue/queryActivityForDetailByNameAndClueId.do',data: {clueId: clueId, activityName: activityName},type: 'post',dataType: 'json',success: function (data) {var htmlStr = "";$.each(data, function (index, obj) {htmlStr += "<tr>";htmlStr += "<td><input type=\"checkbox\" value=\"" + obj.id + "\"/></td>";htmlStr += "<td>" + obj.name + "</td>";htmlStr += "<td>" + obj.startDate + "</td>";htmlStr += "<td>" + obj.endDate + "</td>";htmlStr += "<td>" + obj.owner + "</td>";htmlStr += "</tr>";});$("#tBody").html(htmlStr);}});});

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

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

相关文章

史上最全Maven教程(三)

文章目录 &#x1f525;Maven工程测试_Junit使用步骤&#x1f525;Maven工程测试_Junit结果判定&#x1f525;Maven工程测试_Before、After&#x1f525;依赖冲突调解_最短路径优先原则&#x1f525;依赖冲突调解_最先声明原则&#x1f525;依赖冲突调解_排除依赖、锁定版本 &a…

Netty源码解读

Netty源码解读 Netty线程模型 1、定义了两组线程池BossGroup和WorkerGroup&#xff0c;BossGroup专门负责接收客户端的连接, WorkerGroup专门负责网络的读写 2、BossGroup和WorkerGroup类型都是NioEventLoopGroup&#xff0c;Group中维护了多个事件循环线程NioEventLoop&#…

案例3:Java汽车保养维修系统设计与实现开题报告

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

linux系统防火墙开启放行其他端口

linux系统防火墙开启放行其他端口 弹性云主机防火墙放行对应端口 1、WDCP 系统端口放行&#xff1a; &#xff08;1&#xff09;3.2版本 登录wdcp面板后点击“安全管理”——“防火墙设置”——“快速添加”&#xff0c;如图填写端口&#xff08;协议默认都使用tcp&#xf…

【Linux基本指令和权限(1)】

本文思维导图&#xff1a; 文章目录 一、Linux操作的特点二、使用指令从Xhell登录云服务器三、基本指令1.ls指令2. pwd指令&#xff1a;3.cd指令4. touch指令5. rm指令 写在最后 Linux是一个操作系统&#xff0c;操作系统是一款做软硬件管理的软件。 一、Linux操作的特点 Li…

transformer 网络概述

1. RNN存在的问题 RNN对并行计算并不友好&#xff0c;下一输出依赖于上一输入&#xff0c;难以实现并行高效计算RNN相比较与self-attension模块&#xff0c;缺少对部分变量权重的预估&#xff0c;输出的数据默认拥有一致的权重 2. self-attension self-attension是干嘛的&am…

2023年商票研究报告

第一章 行业概况 1.1 定义 商票是指出票人依托商业汇票系统&#xff0c;以数据电文形式制作的&#xff0c;委托付款人在指定日期无条件支付确定的金额给收款人或者持票人的票据。按承兑人的不同&#xff0c;商业汇票分为银行承兑汇票和商业承兑汇票&#xff08;即商票&#x…

Linux进程(1)

目录 ⛹&#x1f3fd;进程简介⛹&#x1f3fd;查看进程⛹&#x1f3fd;系统调用&#x1f6b4;&#x1f3fd;获取进程标示符&#x1f6b4;&#x1f3fd;创建进程 ⛹&#x1f3fd;进程状态&#x1f6b4;&#x1f3fd;孤儿进程&#xff1a;&#x1f6b4;&#x1f3fd;进程优先级 ⛹…

新一代边缘计算盒子,英码科技边缘计算盒子SY-E160

SY-E160 是英码科技推出的新一代智能工作站&#xff0c;内部集成了 4 核强悍处理器 A551.5 GHz&#xff0c;其内置的算力核拥有 16Tops 超强算力。SY-E160 工作站采用低功耗技术设计&#xff0c;支持 宽温度环境工作&#xff0c;可以灵活部署于各种 AI 场景中。 SY-E160 深元 A…

每日一个小技巧:1招教你提取伴奏怎么做

伴奏是指在演唱或演奏时&#xff0c;用来衬托或补充主唱或乐器的音乐声音。而伴奏提取是一种技术&#xff0c;它可以帮助我们从歌曲中将人声和乐器分离出来。当我们听到一些喜欢的歌曲时&#xff0c;往往会被它的旋律深深吸引&#xff0c;想要将其作为自己的演唱曲目&#xff0…

Domino的线程ID和操作系统的进程ID对应关系

大家好&#xff0c;才是真的好。 很多时候&#xff0c;在Domino中运行的任务出现一些错误提示&#xff0c;如果能够准确定位到和提示信息相关任务时&#xff0c;对我们排错有着巨大的帮助&#xff0c;也能节省很多时间。 例如&#xff0c;我们可能在Domino实时控制台上看到以…

InstructGPT原理讲解及ChatGPT类开源项目

InstructGPT原理讲解及ChatGPT类开源项目 Generative Pre-Trained Transformer&#xff08;GPT&#xff09; 是OpenAI的提出的生成式预训练语言模型&#xff0c;目前已经发布了GPT-1、GPT-2、GPT-3和GPT-4&#xff0c;未来也将发布GPT-5。 最近非常火的ChatGPT是基于Instruct…

想提高应用程序的用户满意度——APK体积包优化少不了

作者&#xff1a;子不语Any 前言 减少应用程序安装包的大小&#xff0c;不仅仅减少用户的网络数据流量&#xff0c;还减少了下载等待的时间。毋庸置疑&#xff0c;尽量减少程序安装包的大小是十分有必要的。 通常来说&#xff0c;减少程序安装包的大小有两条规律&#xff1a;…

Java_常用API

Java_常用API ​ API即Application Programming Interface&#xff0c;即应用程序接口。一般来说API就是软件组件之间信息交互的桥梁&#xff0c;通过它无需访问源码。API除了有应用程序接口的含义外&#xff0c;还特质API的说明文档&#xff0c;也称为帮助文档。 1.字符串的…

Linux服务使用宝塔面板搭建网站,并发布公网访问 - 内网穿透(1)

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 转载自远程内网穿透的文章&#xff1a;Linux使用宝塔面板搭建网站&#xff0c;并内网穿透实现公网访问 前言 宝塔面板作为简单好用的服务器运维管理面板&#…

读书笔记---植物基因组学(樊龙江主编)

读书笔记---植物基因组学&#xff08;樊龙江主编&#xff09; 最近看了这本书&#xff0c;作者是樊龙江教授&#xff08;浙江大学&#xff09;&#xff0c;里面主要分为两个大部分&#xff1a; 总论&#xff1a;15章 各论&#xff1a;10章详细目录可以参看下面链接&#xff1a…

MySQL中使用批量插入,但需要校验每条数据是否重复且是否已经存在数据库中

问题 批量插入一组数据&#xff0c;数据库中name和age字段组合起来不能有重复&#xff0c;如果出现重复&#xff0c;则直接跳过不插入。 name和age字段组合起来不重复&#xff0c;要求如下&#xff1a; 解决方法 建立name和age的复合索引&#xff0c;并设置为唯一索引 场景…

数列分段 马蹄集

数列分段 难度&#xff1a;黄金 0时间限制&#xff1a;1秒 巴占用内存&#xff1a;128M 对于给定的一个长度为N的正整数数列A,,现要将其分成连续的若干段&#xff0c; 并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足 要求。 格式 输入格式&#xff1a;第一行包含…

基于Java开发的分布式在线教育系统,支持考试、直播、问答

一、开源项目简介 知道学习平台是一个基于 Java 开发的分布式在线教育系统项目采用前后端分离的企业级微服务架构引入组件化的思想实现高内聚低耦合&#xff0c;项目代码简洁注释丰富上手容易注重代码规范&#xff0c;严格控制包依赖可以帮助个人、企业或机构快速搭建一个在线…

刷爆朋友圈!前百度总裁陆奇最新AI重磅演讲:我的大模型世界观

文 / 高扬 陆奇的演讲刷屏了&#xff0c;我认真看了他的演讲稿&#xff0c;收获颇丰。 陆奇提到&#xff0c;人类社会的发展&#xff0c;大致可分为&#xff1a;农业化、工业化和数字化三个阶段。 在三个递进的阶段中&#xff0c;人类一直在探索如何减少烦琐且消耗能量的体力和…