关联市场活动

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

用户在线索关联市场活动的模态窗口,输入搜索条件,每次键盘弹起,根据名称模糊查询市场活动,把所有符合条件的市场活动显示到列表中;用户选择要关联的市场活动,点击"关联"按钮,完成线索关联市场活动的功能.

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

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

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

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

1. 给关联市场活动按钮添加单击事件  (初始化工作,清空搜索框) 每次点击都清空搜索框

2.清空搜索市场活动列表 

3. 弹出“线索关联市场活动的模态窗口

 4.给市场活动搜索框添加键盘弹起事件(键盘弹出触发事件 搜索查询)

根据线索id和输入的市场活动名称  activityName 和clueId 查询

收集参数 var activityName=this.value

                var  clueId='${clue.id}';   //从线索主页面收集到的线索信息 clue 发送到作用域request 中

发送请求ajax:

         到url: ’workbench/clue/queryActivityForDetailByNameClueId.do'

把收集到的数据封装好 传到后端controller层

//给"关联市场活动"按钮添加单击事件
		$("#bundActivityBtn").click(function () {
			//初始化工作
			//清空搜索框
			$("#searchActivityTxt").val("");
			//清空搜索的市场活动列表
			$("#tBody").html("");

			//弹出"线索关联市场活动"的模态窗口
			$("#bundModal").modal("show");
		});


	//给市场活动搜索框添加键盘弹起事件
		$("#searchActivityTxt").keyup(function () {
			//收集参数
			var activityName=this.value;
			var clueId='${clue.id}';
			//发送请求
			$.ajax({
				url:'workbench/clue/queryActivityForDetailByNameClueId.do',
				data:{
					activityName:activityName,
					clueId:clueId
				},
				type:'post',
				dataType:'json',
				success:function (data) {
					//遍历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);
				}
			});
		});

controller层

在线索详情页面绑定市场活动中通过活动名模糊查询市场活动

把activityName和clueId封装成map 

调用service层的 根据

/*根据name模糊查询市场活动 并且把已经跟clueId关联过的
* 市场活动排除*/
List<Activity> selectActivityForDetailByNameAndClueId(Map<String ,Object> map);

查询出满足条件的市场活动列表 activityList 把数据以json格式发送到前端

前端ajax请求 执行回调函数success 

  遍历activityList列表,拼接html到tBody盒子中

  /*在线索详情页面绑定市场活动中通过市场活动名模糊查询市场活动*/

        @RequestMapping("/workbench/clue/queryActivityForDetailByNameClueId.do")
        @ResponseBody
        public Object queryActivityForDetailByNameClueId(String activityName,String clueId){
           //分装参数
            Map<String,Object> map=new HashMap<>();
            map.put("activityName",activityName);
            map.put("clueId",clueId);
           List<Activity> activityList=activityService.selectActivityForDetailByNameAndClueId(map);
             return activityList;
        }

 mapper 

  List<Activity> selectActivityForDetailByNameAndClueId(Map<String ,Object> map);
关联市场活动页面 模糊查询未关联的市场活动-->
<select id="selectActivityForDetailByNameAndClueId" parameterType="map" resultMap="BaseResultMap">
    select a.id,a.name,a.start_date,a.end_date,u.name as owner
        from tbl_activity a
    join tbl_user u on a.owner=u.id
    where a.name like '%' #{activityName} '%' and a.id not in (
       select activity_id
       from tbl_clue_activity_relation
       where clue_id=#{clueId}
    )
</select>

根据搜索到的列表给关联按钮添加事件

1.收集参数   获取列表中所有被选中的checkbox

var checkIds=$("#tBody input[type='checkbox']:checked");

2.获取被选中的列表框checkbox  进行表单验证 如果个数为0 提示信息

3.拼接字符串

var ids="";

$.each(checkIds,function(){

  ids+='' activityId="+this.value+"&";);

ids+="clueId=${clue.id};

前端把获取到的参数 checkbox的id和线索id 收集起来

把参数ajax发送给后台

url:'workbench/clue/saveBund.do'
	//给"关联"按钮添加单击事件
		$("#saveBundActivityBtn").click(function () {
			//收集参数
			//获取列表中所有被选中的checkbox
			var chckedIds=$("#tBody input[type='checkbox']:checked");
			//表单验证
			if(chckedIds.size()==0){
				alert("请选择要关联的市场活动");
				return;
			}
			var ids="";
			$.each(chckedIds,function () {//activityId=xxxx&activityId=xxxx&....&activityId=xxxx&
				ids+="activityId="+this.value+"&";
			});
			ids+="clueId=${clue.id}";//activityId=xxxx&activityId=xxxx&....&activityId=xxxx&clueId=xxxxx

			//发送请求
			$.ajax({
				url:'workbench/clue/saveBund.do',
				data:ids,
				type:'post',
				dataType:'json',
				success:function (data) {
					if(data.code=="1"){
						//关闭模态窗口
						$("#bundModal").modal("hide");
						//刷新已经关联过的市场活动列表
						var htmlStr="";
						$.each(data.retDate,function (index,obj) {
							htmlStr+="<tr id=\"tr_"+obj.id+"\">";
							htmlStr+="<td>"+obj.name+"</td>";
							htmlStr+="<td>"+obj.startDate+"</td>";
							htmlStr+="<td>"+obj.endDate+"</td>";
							htmlStr+="<td>"+obj.owner+"</td>";
							htmlStr+="<td><a href=\"javascript:void(0);\" activityId=\""+obj.id+"\"  style=\"text-decoration: none;\"><span class=\"glyphicon glyphicon-remove\"></span>解除关联</a></td>";
							htmlStr+="</tr>";
						});
						$("#relationedTBody").append(htmlStr);
					}else{
						//提示信息
						alert(data.message);
						//模态窗口不关闭
						$("#bundModal").modal("show");
					}
				}
			});
		});

 

controller层

 接收id参数数组 activityId和线索id

把activityId中的每一个市场活动id 和线索id 封装成一个线索活动关系表

car =new ClueActivityRelation();
relationList.add(car);

调用service层方法 批量保存线索市场活动关联关系

int ret = clueActivityRelationService.insertClueActivityRelationByList(relationList);

 前端ajax接受到请求 success

关闭模态窗口,刷新关联过的市场活动列表

  @RequestMapping("/workbench/clue/saveBund.do")
        @ResponseBody
       public Object saveBound(String[] activityId,String clueId){
         //封装参数
            ClueActivityRelation car=null;
            List<ClueActivityRelation> relationList=new ArrayList<>();
            for(String ai:activityId){
              car =new ClueActivityRelation();
              car.setActivityId(ai);
              car.setClueId(clueId);
              car.setId(UUID.randomUUID().toString().replaceAll("-",""));
                relationList.add(car);
            }
            ReturnObject returnObject=new ReturnObject();
            try{
                //调用service方法 批量保存线索和市场活动的关联关系
                int ret = clueActivityRelationService.insertClueActivityRelationByList(relationList);
                if(ret>0){
                    returnObject.setCode("1");
                   List<Activity> activityList= activityService.selectActivityForDetailByIds(activityId);
                  returnObject.setRetDate(activityList);
                 }else {
                    returnObject.setCode("0");
                    returnObject.setMessage("批量保存有误 稍后");
                }
            }catch (Exception e){
                e.printStackTrace();
                returnObject.setCode("0");
                returnObject.setMessage("批量保存有误 稍后");
            }
              return returnObject;
        }

mapper

<!--    int insertClueActivityRelationByList(List<ClueActivityRelation> list);
-->
 <insert id="insertClueActivityRelationByList" parameterType="com.bjpowernode.crm.workbench.domain.ClueActivityRelation">
    insert into tbl_clue_activity_relation(id,clue_id,activity_id)
values
       <foreach collection="list" item="obj" separator=",">
         (#{obj.id},#{obj.clueId},#{obj.activityId})
       </foreach>

 </insert>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值