批量处理的form表单

    前言:有时候会table from tr的需求,即每行为一个表单。但在html格式上,这是不被允许的,详见http://blog.sina.com.cn/s/blog_6903bf1d0100k6zv.html。为此,我们需要转换一下思路,才能达到我们的要求。


思路:先做单个处理,批量处理=checkbox + ajax提交单个事项的数据+单个处理。

方法:form表单每行数据name属性唯一化,ajax提交+单个处理。

当我们在办理事项时,当点击办理按钮会出现一个form表单,填写相关信息,提交后台,后台代码处理信息,信息办理完成。 这是整个流程。

    有时会有批量处理的情况,即一次性处理多项事项。按理推应是同一页面多个表单,至于多表单提交的问题暂且不提。 我们来看一下批量处理怎么用一个表单来处理。

   页面:

<a id="plbl" class="button" title="批量办理" ref="bl"><span>办理</span></a>
<from id="form">
 <table>
       <#list data as jj>
           <!--每一行为一个基础事项-->
           <tr>
              <!-- 勾选框-->
              <td><input type="checkbox" name="checkedTask" value="${(jj.id)!}" checked="checked"></td>
              <td>${(jj.bt)!}</td>
              <td><input type="text" name="yj_${jj.id}" ></td>
              <td><input type="text" name="nextPerson_${jj.id}"></td>
           </tr>
     </#list>
   </table>
          
 </form>

js(此处用到了js的遍历$.each()):
$("#plbl").click(function(){
		$("input[name='checkedTask']:checked").each(function(index){
			
			var id = $(this).val();
			
			var yj = $("input[name='yj_"+id+"']").val();
			var nextPerson = $("input[name='nextPerson_"+id+"']").val();
			
			if(closeProc=="0" && nextPerson==""){
				alert("下一节点人不能为空!");
				return;
			}
			var params = {
					taskId:id,
					yj:yj,
					nextPerson:nextPerson
			};
			$.ajax({
				type:"POST",
			    url:"activiti/saveTaskVars",
			    data:params,
			    contentType:"application/x-www-form-urlencoded",
			    dataType: "json",
			    success: function(data){
			    	taskDetailDialogAjaxDone(data);
			    },
			    error: function(data){
			    	alert("错误");
			    }
			});
			
			
		});
	});

其中contentType:"application/x-www-form-urlencoded" 必须加上。详情请参考:http://blog.youkuaiyun.com/eyebrother/article/details/36007145


后台代码:
@RequestMapping("saveTaskVars")
	@ResponseBody
	public Map<String, Object> saveTaskVars(@RequestParam(name = "taskId", required = false) String taskId,
			HttpServletRequest request, HttpSession session) {
		Map<String, Object> variables = getParamsMap(request);
		session.setAttribute(ProcInfoType.BASEFORMVARS.toString(), variables);
		Account account = (Account) session.getAttribute(Constants.ACCOUNT);
		if(variables.get("reProcdefId").equals("653")) {//欠税公告处理
			String procInstId = (String) variables.get("procInstId");
			String ggbj = (String) variables.get("ggbj");
			String auditOpinion = (String) variables.get("auditOpinion");
			Map<String, String> params = new HashMap<>();
			params.put("procInstId", procInstId);
			params.put("ggbj", ggbj);
			taxInfoService.updateByProcInstId(params);//更新公告意见
		}
		// 如果下一个节点不需要配置人,跳过受理人指定
		try {
			Map<String, Object> vars = new HashMap<String, Object>();
			vars.putAll(variables); // 防止在getNextTaskDef方法里篡改session里的变量variables
			TaskDefinition td = getNextTaskDef(taskId, vars);
			if (td == null || // 流程结束或下一节点是子流程
					(td.getAssigneeExpression() != null
							&& StringUtils.isNotBlank(td.getAssigneeExpression().getExpressionText()))
					|| "1".equals(variables.get("SkipPageToSetReceiver"))) {
				return DwzResponse.getInstance().putData("taskId", taskId).putData("tailPath", "complete")
						.closeCurrent().responseMap();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

		return DwzResponse.getInstance().putData("tailPath", "ruTask").putData("taskId", taskId).closeCurrent()
				.responseMap();
	}



 



 

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值