二十一、线索转换1:点击转换按钮加载信息、搜索市场活动

news2024/11/19 17:51:07

功能需求

         *在线索转换页面,展示:fullName,appellation,company,owner

 

流程图

 

代码实现

1.ClueMapper

    /**
     * 通过id查询线索详情
     * @param id 线索id
     * @return 对应id的线索
     */
    Clue selectClueForDetailById(String id);

ClueMapper.xml

    <select id="selectClueForDetailById" parameterType="string" resultMap="BaseResultMap">
        select cl.id,cl.fullname,dicv1.value as appellation,u1.name as owner,cl.company,cl.job,cl.email,cl.phone,
               cl.website,cl.mphone,dicv2.value as state,dicv3.value as source,u2.name as create_by,cl.create_time,
               u3.name as edit_by,cl.edit_time,cl.description,cl.contact_summary,cl.next_contact_time,cl.address
        from tbl_clue cl
                 left join tbl_dic_value dicv1 on cl.appellation=dicv1.id
                 left join tbl_dic_value dicv2 on cl.state=dicv2.id
                 left join tbl_dic_value dicv3 on cl.source=dicv3.id
                 join tbl_user u1 on cl.owner=u1.id
                 join tbl_user u2 on cl.create_by=u2.id
                 left join tbl_user u3 on cl.edit_by=u3.id
        where cl.id = #{id,jdbcType=CHAR}
    </select>

2.ClueService

	/**
	 * 线索详情1:线索明细
	 */
	Clue queryClueForDetailById(String id);
	@Override
	public Clue queryClueForDetailById(String id) {
		return clueMapper.selectClueForDetailById(id);
	}

3.ClueController

	/**
	 * 线索转换1:查询信息加载到模态窗口
	 */
	@RequestMapping("/workbench/clue/toConvert.do")
	public String toConvert(String id,HttpServletRequest request){
		// 调用Service 查询线索
		Clue clue = clueService.queryClueForDetailById(id);
		List<DicValue> stageList = dicValueService.queryDicValueByTypeCode("stage");
		// 保存到request
		request.setAttribute("clue",clue);
		request.setAttribute("stageList",stageList);
		return "workbench/clue/convert";
	}

前端

1.detail.jsp点击转换按钮

            /**
             * 线索转换
             */
            $("#convertClueBtn").click(function () {
                window.location.href="workbench/clue/toConvert.do?id=${clue.id}";
            });

2.convert.jsp

<div id="title" class="page-header" style="position: relative; left: 20px;">
	<h4>转换线索 <small>${clue.fullname}${clue.appellation}-${clue.company}</small></h4>
</div>
<div id="create-customer" style="position: relative; left: 40px; height: 35px;">
	新建客户:${clue.company}
</div>
<div id="create-contact" style="position: relative; left: 40px; height: 35px;">
	新建联系人:${clue.fullname}${clue.appellation}
</div>
<div id="create-transaction1" style="position: relative; left: 40px; height: 35px; top: 25px;">
	<input type="checkbox" id="isCreateTransaction"/>
	为客户创建交易
</div>
<div id="create-transaction2" style="position: relative; left: 40px; top: 20px; width: 80%; background-color: #F7F7F7; display: none;" >

	<form>
		<div class="form-group" style="width: 400px; position: relative; left: 20px;">
			<label for="amountOfMoney">金额</label>
			<input type="text" class="form-control" id="amountOfMoney">
		</div>
		<div class="form-group" style="width: 400px;position: relative; left: 20px;">
			<label for="tradeName">交易名称</label>
			<input type="text" class="form-control" id="tradeName" value="${clue.company}-">
		</div>
		<div class="form-group" style="width: 400px;position: relative; left: 20px;">
			<label for="expectedClosingDate">预计成交日期</label>
			<input type="text" class="form-control my-date" id="expectedClosingDate" readonly>
		</div>
		<div class="form-group" style="width: 400px;position: relative; left: 20px;">
			<label for="stage">阶段</label>
			<select id="stage"  class="form-control">
				<option></option>
				<c:forEach items="${stageList}" var="stage">
					<option value="${stage.id}">${stage.value}</option>
				</c:forEach>
			</select>
		</div>
		<div class="form-group" style="width: 400px;position: relative; left: 20px;">
			<label for="activityName">市场活动源&nbsp;&nbsp;<a href="javascript:void(0);" id="searchActivityBtn" style="text-decoration: none;"><span class="glyphicon glyphicon-search"></span></a></label>
			<input type="hidden" id="activityId">
			<input type="text" class="form-control" id="activityName" placeholder="点击上面搜索" readonly>
		</div>
	</form>

</div>

<div id="owner" style="position: relative; left: 40px; height: 35px; top: 50px;">
	记录的所有者:<br>
	<b>${clue.owner}</b>
</div>


搜索功能需求

*市场活动源是可搜索的

市场活动都是本线索关联过的

流程图

代码实现

1.ActivityMapper

    /**
     * 线索转换:根据活动name和线索id,查询关联的市场
     */
    List<Activity> selectActivityForConvertByNameClueId(Map<String,Object> map);

ActivityMapper.xml

查询出来的市场活动是必须此线索关联的活动id

    <select id="selectActivityForConvertByNameClueId" resultMap="BaseResultMap">
        select a.id, a.name, a.start_date, a.end_date, u.name `owner`
        from tbl_activity a
                 join tbl_user u on a.owner = u.id
        where a.`name` like "%"#{activityName}"%"
        and a.id in(
            select activity_id
            from tbl_clue_activity_relation
            where clue_id = #{clueId}
        )
    </select>

2.ActivityService

	/**
	 * 线索转换:根据活动name和线索id,查询关联的市场
	 */
	List<Activity> queryActivityForConvertByNameClueId(Map<String,Object> map);
	@Override
	public List<Activity> queryActivityForConvertByNameClueId(Map<String, Object> map) {
		return activityMapper.selectActivityForConvertByNameClueId(map);
	}

3.ClueController

	/**
	 * 线索转换2:根据活动name和线索id,查询关联的市场
	 */
	@RequestMapping("/workbench/clue/convertSearch.do")
	public @ResponseBody Object convertSearch(String activityName,String clueId){
		Map<String,Object> map = new HashMap<>();
		map.put("activityName",activityName);
		map.put("clueId",clueId);
		List<Activity> activityList = activityService.queryActivityForConvertByNameClueId(map);
		return activityList;
	}

4.前端convert.jsp

// 文本框搜索
			$("#searchActivityTxt").keyup(function () {
				// 获取参数
				var clueId = '${clue.id}';
				var activityName = $("#searchActivityTxt").val();
				// 发送请求
				$.ajax({
					url: 'workbench/clue/convertSearch.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=\"radio\" value=\"" + obj.id + "\" activityName=\""+obj.name+"\" name=\"activity\"//></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.coloradmin.cn/o/502543.html

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

相关文章

考研数学武忠祥 高等数学0基础课笔记

函数和映射 常见的函数 取整函数的基本性质 函数的有界性 例题 sinx 是从-1到1的&#xff0c;但是x是无界的 遇到这种带sin的&#xff0c;就要试着取特殊值&#xff0c;让它为1或者为0 函数的单调性 函数的奇偶性 函数的周期性 举例 数学中Q表示有理数集&#xff0c;下面…

Docker服务编排(Docker Compose) :部署上线nginx+springboot项目

Docker服务编排(Docker Compose) 微服务应用一般包含若干个微服务每个微服务一般会部署多个实例&#xff0c;如果每个微服务需要手动启停 维护工作量大 从Dockerfile build image 或者去dockerhub拉去image 创建多个容器 管理容器 Docker Compose 一个编排多容器分布式…

设计原则之【接口隔离原则】

文章目录 一、什么是接口隔离原则二、实例三、总结接口隔离原则与单一职责原则的区别 一、什么是接口隔离原则 接口隔离原则&#xff08;Interface Segregation Principle, ISP&#xff09;是指用多个专门的接口&#xff0c;而不使用单一的总接口&#xff0c;客户端不应该依赖…

自学Java多久可以就业?Java这样自学实习都能过万!

昨天有00后学妹私信小源&#xff0c;她在学校已经学过java、C等相关课程&#xff0c;未来想走计算机的方向&#xff0c;问我建议还要学习什么语言&#xff0c;是否需要继续学Java?今天好程序员简单介绍下Java必学的技术&#xff01;想自学Java的真的可以试一试&#xff01; 一…

哈希数据结构的概念、实现和应用

一、认识哈希表 1.unordered_set和unordered_map STL实现了两个数据结构unordered_map和unordered_set顾名思义&#xff0c;因为底层的实现方式不同&#xff0c;它们成为了无序的map和set&#xff0c;但是它们的使用与普通的map和set是一样的。 我们可以通过代码测试两种数据…

【力扣--622】设计循环队列

&#x1f58a;作者 : D. Star. &#x1f4d8;专栏 : 数据结构 &#x1f606;今日分享 : 丢脸其实并没有那么可怕&#xff0c;我们可以从另一个角度来想&#xff1a;别人能够记住我了&#xff0c;而且过了还有多少人能记得我呢&#xff1f;虽然这种出场不太优雅&#x1f606; 设…

python制作散点动图

目录 示例1&#xff1a;简单的散点图示例2&#xff1a;添加颜色和大小示例3&#xff1a;实时更新动图完整代码 本教程将介绍如何使用Python制作散点动图。我们将通过三个示例代码&#xff0c;从易到难&#xff0c;逐步说明如何使用Python绘制出散点动图。 示例1&#xff1a;简单…

图书馆客流人数统计分析系统方案

智慧客流人数统计分析系统可以帮助图书馆管理者更好地管理人群流量。系统能够自动统计区域内的人流量高峰期&#xff0c;并通过数据分析提供更加合理的管控&#xff0c;从而提区域内人群流动性&#xff0c;避免拥堵的情况。 AI客流视觉监控 客流量管控分析系统意义 讯鹏客流量管…

雪花算法生成ID

1.简介 SnowFlake 中文意思为雪花&#xff0c;故称为雪花算法。最早是 Twitter 公司在其内部用于分布式环境下生成唯一 ID。在2014年开源 scala 语言版本。 雪花算法的原理就是生成一个的 64 位比特位的 long 类型的唯一 id。 最高 1 位固定值 0&#xff0c;因为生成的 id 是…

Python的HTTP库及示例

13.3 HTTP库 HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;是一个客户端和服务器端请求和应答的标准。客户端是终端用户&#xff0c;服务器端是网站。客户端发起一个到服务器上指定端口的HTTP请求&#xff0c;服务器向客户端发回一个状态行和响应的消息。 可以…

ICV: 2025年全球QKD产业规模有望达到25亿美元

近日&#xff0c;专注于量子、智能驾驶等前沿科技领域的国际咨询机构ICV发布了《全球量子安全通信产业研究报告》&#xff0c;报告主要内容包括量子安全通信的概念、量子密钥分发 (QKD)发展历程、QKD的优势、产业链、应用领域、QKD产业规模及预测、全球主要参与者。 量子安全通…

ubuntu18.04中PCL点云库依赖的安装以及PCL点云库和Eigen的卸载与安装

一、PCL点云库依赖的安装、遇到问题的解决方法 sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl sudo apt-get update sudo apt-get install libpcl-all 以上是官方给出的&#xff0c;但是会出很多报错&#xff0c;这里建议自己配置。 配置步骤&#xff…

【Android学习专题】安卓样式学习(学习内容记录)

学习记录内容来自《Android编程权威指南&#xff08;第三版&#xff09;》 样式调整和添加 调整颜色资源&#xff08;res/values/colors.xml&#xff09; 格式&#xff1a; 添加样式&#xff08;res/values/styles.xml&#xff09;&#xff0c;&#xff08;创建BeatBox项目时…

开源狂潮让巨头惨败!谷歌内部文件曝光:我们和OpenAI都没有护城河

因为开源&#xff0c;AI军备竞赛&#xff0c;谷歌和OpenAI全是输家&#xff1f; 来源丨新智元 重磅&#xff01; 谷歌的一份名为《我们没有护城河&#xff0c;OpenAI也没有》的内部文件疑似被泄露&#xff0c; 今天早上&#xff0c;外媒SemiAnalysis公布了这份重磅炸弹泄露…

日撸 Java 三百行day45

文章目录 说明day45 冒泡排序1. 基本思路2.代码 说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护&#xff1a;https://github.com/fulisha-ok/sampledata day45 冒泡排序 …

IP地址技术原理

IP地址用于唯一地标识一个网络设备&#xff08;如计算机、路由器等&#xff09;在互联网或局域网中的位置。IP地址由32位二进制数表示&#xff0c;通常分为4个8位二进制数&#xff0c;每个数用点号隔开&#xff0c;如106.110.92.215。IP地址可用于数据传输、网络管理和安全控制…

Springboot +Flowable,服务任务ServiceTask执行的三种方式(一)

一.简介 ServiceTask 从名字上看就是服务任务&#xff0c;它的图标是像下面这样&#xff0c;截图如下&#xff1a; ServiceTask 一般由系统自动完成&#xff0c;当流程走到这一步的时候&#xff0c;不会自动停下来&#xff0c;而是会去执行我们提前在 ServiceTask 中配置好的…

托福高频真词List06 // 附阅读真题 14:26~15:12 // 15:12~16:12

目录 生词 熟词 阅读真题 生词 inducecausecause the formation of increasestimulate&#xff08;导致&#xff09; v 导致 inevitableunavoidable certainnecessary&#xff08;不可避免地&#xff09; adj 不可避免的accommodateallowv 顺应 modestreasonablesmall modera…

【Git 教程】—git指令详细解析,上机操作,简单易懂

目录 一. 集中式和分布式的区别 1. 集中式版本控制工具 2. 分布式版本控制工具 3. 基本概念 4. 配置信息 二. 创建本地仓库&#xff08;git init) 三.基础指令 1. 获取git版本号 2.查看文件的状态 3. 查看提交记录 4. 版本回退 5. git reflog 6. .gitignore文件…

数据机房温湿度监控系统解决应用案例

机房温湿度监控系统之POE以太网温湿度传感器解决方案 物联网工业级高精度传感器 以太网智能RJ45温湿度传感器&#xff08;POE12VDC供电型&#xff09; 智 能 传 感 器 介 绍 目 录 一、关键词…………………………………………………………………………3 二、 产品概述…