FieldVerify_wev8.js 12.2 KB
jQuery(document).ready(function($){
	
	var iscreate = $("#iscreate").val();
	if(iscreate == "0"){	// 查看界面,查看不需要拦截表单进行数据唯一性校验
		return;
	}
	
	var formId = $("#formid").val();
	var dataId = $("#billid").val();
	
	var verifyFieldObj = null;
	var verifyMainFieldArr = [];
	var verifyDetailFieldArr = [];
	var veriryFieldArr=null;
	var verifyDetailFieldArray = [];
	$.ajax({
		url: "/formmode/setup/formSettingsAction.jsp?action=getVerifyField&formId="+formId,
		cache: false,
		success: function(responseText, textStatus){
			verifyFieldObj = eval("(" + responseText + ")");
			if(verifyFieldObj!=null) {
				verifyMainFieldArr = verifyFieldObj["main"];
				verifyDetailFieldArr = verifyFieldObj["detail"];
			}
			
		}
	});
	
	$.aop.around( 
		{
			target: document.frmmain, 
			method: 'submit'
		},
		function(invocation) {
			veriryFieldArr = null;
			getFieldValue();
			
			if(veriryFieldArr==null) {
				invocation.proceed();
				return;
			}
			
			rightMenu.style.visibility = "hidden";// 验证之前隐藏掉右键菜单
			var isSuccess = true;
			createLoadingTip();
			
			var jsonstr = JSON.stringify(veriryFieldArr);
			var paramData = {"data":encodeURI(jsonstr), "formId":formId, "dataId":dataId};
			$.ajax({
				url: '/formmode/setup/formSettingsAction.jsp?action=validateVerifyFieldData',
				data: paramData, 
				dataType: 'json',
				type: 'POST',
				success: function (res) {
					dropLoadingTip();
					var dataMap = res["showNameMap"];
					var verifyList = res["resultList"];
					for(var i = 0; res && i < verifyList.length; i++){
						var r_verifyid = verifyList[i]["verifyid"];
						var r_datacount = verifyList[i]["datacount"];
						var message = verifyList[i]["message"];
						if(r_datacount > 0){
							// 此处统一更改集合中的状态,提示啥的再后面统一做,代码剥离
							for(var j = 0; j < veriryFieldArr.length; j++){
								var verifyField = veriryFieldArr[j];
								var verifyid = verifyField["id"];
								if(r_verifyid == verifyid){
									verifyField["checkStatus"] = "false";
									verifyField["message"]=message;
								}
							}
						}
					}
					var msg = "";
					var fieldTipHtml_break ="";
					var fieldTipHtml_continue="";
					var hasBreak = false;
					var index_break = 1;
					var index_continue =1;
					msg += "<span style='margin-right: 6px;'>您录入的数据不满足以下验证:<br/>"
					for(var i = 0; i<veriryFieldArr.length;i++) {
						var verifyField = veriryFieldArr[i];
						if(verifyField["checkStatus"] == "false"){
							isSuccess = false;
							var verifyid = verifyField["id"];
							var verifyOpreate = verifyField["operate"];
							
							var fieldTipHtml_temp = "";
							var message = verifyField["message"];
							if(message) {
								if(message == "ignore") {
									continue;
								}
								
								fieldTipHtml_temp ="、" + message;
								fieldTipHtml_temp+="<br/>"
							} else {
								fieldTipHtml_temp+="、组合验证";
								var fieldids = verifyField["fieldids"];
								for(var index = 0; index < fieldids.length; index++) {
									var fieldobj = fieldids[index];
									var fieldid = fieldobj["fieldid"];
									var labelname = fieldobj["labelname"];
									var fieldvalue = dataMap[dataId+"_"+fieldid];
									var $p_td = $("#field" + fieldid).closest("td");
									fieldTipHtml_temp +="【"+ labelname+":\""+fieldvalue+"\"】,";
								}
							
								if(fieldTipHtml_temp.length > 0){
									fieldTipHtml_temp = fieldTipHtml_temp.substring(0,fieldTipHtml_temp.length-1);
								}
								fieldTipHtml_temp+="已重复.<br/>"
							}
							if("0"==verifyOpreate) {
								hasBreak = true;
								fieldTipHtml_break+="&nbsp;&nbsp;&nbsp;&nbsp;"+index_break+fieldTipHtml_temp;
								index_break++;
							} else if("1"==verifyOpreate) {
								fieldTipHtml_continue+="&nbsp;&nbsp;&nbsp;&nbsp;"+index_continue+fieldTipHtml_temp;
								index_continue++;
							}
						}
					}
					
					if(isSuccess){
						invocation.proceed();	// 正常提交
					} else {
					
						if(hasBreak) {
							index_break+=2;
							addBreakClass();
							displayAllmenu();	//右键菜单改为可用
				    		frmmain.subnew.value="0";
							msg+=fieldTipHtml_break;
							msg += "请重新录入!</span>";
							Dialog.alert(msg,function(){
								if(typeof(setTabButtonUsage)=='function'){
									setTabButtonUsage(false);
								}
							},327,30*index_break);
						} else {
							index_continue+=2;
							addContinueClass();
							msg+=fieldTipHtml_continue;
							msg += "是否继续?</span>";
							Dialog.confirm(
								msg,
								function(){
									//继续
									invocation.proceed();
								},
								function(){
									//取消
									displayAllmenu();	//右键菜单改为可用
						    		frmmain.subnew.value="0";
									if(typeof(setTabButtonUsage)=='function'){
										setTabButtonUsage(false);
									}
								},327,index_continue*30,true,null,"继续","取消"
							);
						}
					}
				},
				error: function(){
					alert("error");
				}
			});
		} 
	);
	
	/*function verifyFormDetail(){
		var checkedArray = new Array();
		for(var i = 0; i < veriryFieldArr.length; i++){
			var verifyField = veriryFieldArr[i];
			var id = verifyField["id"];
			if(!checkedArray.contains(id)) {
				verifyFormDetailPer(id);
				checkedArray.push(id);
			}
		}
	}
	function verifyFormDetailPer(id) {
		for(var i = 0; i < veriryFieldArr.length; i++){
			var verifyField = veriryFieldArr[i];
			var tmpid = verifyField["id"];
			if(id==tmpid) {
				
			}
		}
	}*/
	function removeClass(){
		for(var i = 0; i < veriryFieldArr.length; i++){
			var verifyField = veriryFieldArr[i];
			var id = verifyField["id"];
			id = id.split("_")[0];
			var operate = verifyField["operate"];
			var fieldids = verifyField["fieldids"];
			for(var index = 0; index < fieldids.length; index++) {
				var fieldobj = fieldids[index];
				var fieldid = fieldobj["fieldid"];
				var $p_td = $("#field" + fieldid).closest("td");
				$p_td.removeClass("verifyFail_"+id);
			}
		}
	}
	function addBreakClass() {
		for(var i = 0; i < veriryFieldArr.length; i++){
			var verifyField = veriryFieldArr[i];
			var id = verifyField["id"];
			id = id.split("_")[0];
			var operate = verifyField["operate"];
			var status = verifyField["checkStatus"];
			if(operate == '0' && status == "false") {
				var fieldids = verifyField["fieldids"];
				for(var index = 0; index < fieldids.length; index++) {
					var fieldobj = fieldids[index];
					var fieldid = fieldobj["fieldid"];
					var $p_td = $("#field" + fieldid).closest("td");
					$p_td.addClass("verifyFail_"+id);
				}
			}
		}
	}
	function addContinueClass(){
		for(var i = 0; i < veriryFieldArr.length; i++){
			var verifyField = veriryFieldArr[i];
			var id = verifyField["id"];
			id = id.split("_")[0];
			var operate = verifyField["operate"];
			var status = verifyField["checkStatus"];
			if(operate == '1'&&status=="false") {
				var fieldids = verifyField["fieldids"];
				for(var index = 0; index < fieldids.length; index++) {
					var fieldobj = fieldids[index];
					var fieldid = fieldobj["fieldid"];
					var $p_td = $("#field" + fieldid).closest("td");
					$p_td.addClass("verifyFail_"+id);
				}
			}
		}
	}
	
	// 获取相应的字段元素的值
	function getFieldValue(){
		getMainFeildValueArray();
		getDetailFeildValueArray();
	}
	function getMainFeildValueArray(){
		for(var i = 0; i < verifyMainFieldArr.length; i++){
			var verifyField = verifyMainFieldArr[i];
			var id = verifyField["id"];
			verifyField["checkStatus"] = "true";
			var fieldids = verifyField["fieldids"];
			for(var index = 0; index < fieldids.length; index++) {
				var verify = fieldids[index];
				var fieldid = verify["fieldid"];
				var labelname = verify["labelname"];
				var fieldvalue = getMainFieldValue(fieldid);
				verify["fieldvalue"] = fieldvalue;
			}
			if(veriryFieldArr==null) {
				var jsonStrTmp = "["+JSON.stringify(verifyField)+"]";
				veriryFieldArr = eval('('+jsonStrTmp+')');
			} else {
				veriryFieldArr.push(verifyField)
			}
		}
	}
	function getDetailFeildValueArray(){
		
		for(var i = 0; i < verifyDetailFieldArr.length; i++){
			var verifyField = verifyDetailFieldArr[i];
			var id = verifyField["id"];
			var fieldids = verifyField["fieldids"];
			var detailtable = verifyField["detailtable"];
			var orderid = verifyField["roderid"];
			
			var detailCount = 0;
			var indexArray = new Array();
			for(var index = 0; index < fieldids.length; index++) {
				var verify = fieldids[index];
				var fieldid = verify["fieldid"];
				var labelname = verify["labelname"];
				var detailtabletmp = verify["detailtable"];
				if(detailtabletmp==detailtable) {
					var $fieldelement = $("input[id^='field"+fieldid+"_']");
					$.each($fieldelement, function(index, element){
						indexArray[indexArray.length] = $(element).attr("id").replace("field"+fieldid+"_", "");
					});
					
					break;
				}
			}
			
			createVerifyField4Detail(verifyField,indexArray);
		}
		for(var i = 0; veriryFieldArr!=null && i < veriryFieldArr.length; i++){
			var verifyField = veriryFieldArr[i];
			var id = verifyField["id"];
			id = id.split("_")[0];
			$(".verifyFail_"+id).removeClass(".verifyFail_"+id);
			verifyField["checkStatus"] = "true";
			var fieldids = verifyField["fieldids"];
			for(var index = 0; index < fieldids.length; index++) {
				var verify = fieldids[index];
				var fieldid = verify["fieldid"];
				var labelname = verify["labelname"];
				var detailtabletmp = verify["detailtable"];
				var fieldvalue = getMainFieldValue(fieldid);
				var $p_td = $("#field" + fieldid).closest("td");
				if(detailtabletmp!=null&&detailtabletmp!="") {
					var detaidateid = $p_td.parent().find("input[name^='dtl_id_']").val();
					verifyField["detaildataid"] = detaidateid;
				} else {
					verifyField["detaildataid"] = dataId;
				}
				verifyField["detaildataid"] = dataId;
				$p_td.removeClass("verifyFail_"+id);
				verify["fieldvalue"] = fieldvalue;
			}
		}
	}
	function createVerifyField4Detail(verifyField, indexArray) {
		for(var i=0;i<indexArray.length;i++) {
			var rowIndex = indexArray[i];
			var verifyFieldTmp = {};
			for(var key in verifyField) {
				if("id"==key) {
					verifyFieldTmp[key] = verifyField[key]+"_"+rowIndex;
				} else if(key=="fieldids") {
					var fieldids = verifyField["fieldids"];
					var fieldidstmp = null ;
					for(var index = 0; index < fieldids.length; index++) {
						var verify = fieldids[index];
						var fieldid = verify["fieldid"];
						var detailtabletmp = verify["detailtable"];
						if(detailtabletmp!=null&&detailtabletmp!=""){
							fieldid = fieldid+"_"+rowIndex;
						}
						var verifyTmp = {};
						for(var key1 in verify) {
							if(key1=="fieldid") {
								verifyTmp["fieldid"] = fieldid;
							} else {
								verifyTmp[key1] =  verify[key1];
							}
						}
					
						if(fieldidstmp==null) {
							var jsonStrTmp = "["+JSON.stringify(verifyTmp)+"]";
							fieldidstmp = eval('('+jsonStrTmp+')');
						} else {
							fieldidstmp.push(verifyTmp)
						}
					}
					
					verifyFieldTmp["fieldids"] = fieldidstmp;
				} else {
					verifyFieldTmp[key] = verifyField[key];
				} 
			}
			if(veriryFieldArr==null) {
				var jsonStrTmp = "["+JSON.stringify(verifyFieldTmp)+"]";
				veriryFieldArr = eval('('+jsonStrTmp+')');
			} else {
				veriryFieldArr.push(verifyFieldTmp)
			}
		}
	}
	function getMainFieldValue(fieldid){
		//console.log(fieldid);
		return document.getElementById("field" + fieldid).value;
	}
	function getDetailFieldValue(fieldid, index){
		return document.getElementById("field" + fieldid+"_"+index).value;
	}
	
	function createLoadingTip(){
		var $docBody = $(document.body);
		var w = document.body.scrollLeft + document.body.clientWidth/2 - 50;
		var h = document.body.scrollTop + document.body.clientHeight/2 - 50;
		var $loadingTip = $("<div id=\"verifyLoadingTip\" style=\"position: absolute;top: "+h+"px;left: "+w+"px;z-index: 10000;border: 1px solid #e9e9e9; background-color: #fff;padding: 6px 10px 3px 30px; vertical-align:middle; background-image: url('/images/messageimages/loading_wev8.gif');background-repeat: no-repeat;background-position: 10px center;\">数据唯一性验证中,请等待...</div>");
		$docBody.append($loadingTip);
	}
	
	function dropLoadingTip(){
		$("#verifyLoadingTip").remove();
	}
});