/** * 说明 * [formtype="window"]主要是处理子表弹出框模式, * table.listTable 处理子表的块模式和表内模式 */ if (typeof QueryUI == 'undefined') { QueryUI = {}; } /** * queryedCacheData保存当前页面的已经查询出来的数据 * 数据格式: * queryedCacheData{ * * } */ QueryUI.queryedCacheData={}; /** * 加上targetObj,针对该对象下的级联进行初始化, * 在CustomForm.js中初始化子表级联时使用 */ QueryUI.init = function(targetObj){ var querys; var filters = "select[selectquery][selectqueryed!='selectqueryed']"; if(targetObj){//绑定指定对象下的级联 querys = $(targetObj).find(filters); }else { querys = $(filters); } querys.each(function(){ var me = $(this), selectquery = me.attr("selectquery"); if (!selectquery) return true; selectquery = selectquery.replaceAll("'", "\""); var queryJson = JSON2.parse(selectquery); var query = queryJson.query; for (var i = 0; i < query.length; i++) { var field; if(query[i].trigger=='-1') continue; // isMain是true 就是绑定主表的字段 if (query[i].isMain=="true") { field = $(".formTable [name$=':" + query[i].trigger + "']"); } else { field = me.closest('tr').find("[name='" + query[i].trigger + "']"); if(field.length==0){ field = me.parents('table,[formtype="window"]').find("[name='" + query[i].trigger + "']"); } field.unbind("change"); } if (field != ""){ QueryUI.change(field, me, queryJson); } } QueryUI.getvalue(me, queryJson, true); }); }; QueryUI.change = function(field, SelectObj, queryJson) { field.bind("change", function() { QueryUI.getvalue(SelectObj, queryJson); }); }; QueryUI.replaceValue = function(objValue) { return objValue.replaceAll(",", "#,"); } var cachedJson={}; QueryUI.getCachedHtml = function(queryJson) { return cachedJson[queryJson.name+'_'+queryJson.binding.key+'_'+queryJson.binding.value]; } QueryUI.setCachedHtml = function(queryJson, html) { cachedJson[queryJson.name+'_'+queryJson.binding.key+'_'+queryJson.binding.value] = html; } /** * isInit,表示是否为表单初始化设置级联 * 表单初始化时,如果B级联需要的查询条件为A级联的值,则不初始化B级联下拉框,在A级联的值改变时,才会触发B级联的初始化 */ QueryUI.getvalue = function(SelectObj, queryJson, isInit) { var query = queryJson.query; if(query.length==0){// 对没有查询条件的级联进行缓存 var cachedHtml = QueryUI.getCachedHtml(queryJson); if(typeof(cachedHtml)=='undefined'){// 如果没有缓存 QueryUI.setCachedHtml(queryJson, 1);// 标识正在建立缓存 }else {// 如果有缓存 // cachedHtml==1时,表示正在初始化所有级联,但缓存未完全建立,在建立缓存时,会填充下拉框数据 if(cachedHtml != 1) {// cachedHtml!=1时,可直接填充缓存数据 SelectObj.html(cachedHtml); //添加一个属性,标识已经处理过, SelectObj.attr("selectqueryed","selectqueryed"); } return; } } var fieldValue, subfield, checkfield,field; var querydataStr = "{"; for (var i = 0; i < query.length; i++) { var triggerField = query[i].trigger; if (query[i].isMain=="true") { //输入框,下拉框,数据字典 subfield = $(".formTable [name$=':" + triggerField + "']"); // 选择器 field = $(".formTable [name$=':" + triggerField + "ID']"); // 单选、复选框 checkfield = $(":checked[name$=':" + triggerField + "']"); } else { subfield = SelectObj.closest('tr').find("[name='" + triggerField + "']"); if(subfield && subfield.length>0){ field = SelectObj.closest('tr').find("input[name='" + triggerField + "ID']"); checkfield = SelectObj.closest('tr').find(":checked[name='" + triggerField + "']"); }else { subfield = SelectObj.parents('table,[formtype="window"]').find("[name='" + triggerField + "']"); field = SelectObj.parents('table,[formtype="window"]').find("input[name='" + triggerField + "ID']"); checkfield = SelectObj.parents('table,[formtype="window"]').find(":checked[name='" + triggerField + "']"); } } if(isInit && subfield.is('select')) { return false; } //级联参数值为空时,将子级联清空 if((typeof subfield.val() == "undefined" || subfield.val() =="") && query[i].initValue==""){ SelectObj.html(''); SelectObj.trigger("change").trigger('blur'); return false; } switch (query[i].controlType) { //没有绑定任何表字段controlType=-1而有预设值时 case '-1':break; // 输入框,下拉框,数据字典是一类直接获取值 case '1' : case '2' : case '3' : case '11' : case '15' : fieldValue = subfield.val(); break; // 选择器 case '4' : case '5' : case '6' : case '7' : case '8' : case '17' : case '18' : case '19' : fieldValue =field.val(); fieldValue = QueryUI.replaceValue(fieldValue); break; // 单选、复选框 case '13' : case '14' : var tempvalue; checkfield.each(function() { var obj = $(this); if (typeof(tempvalue) != "undefined" && tempvalue != "") { tempvalue += "#," + obj.val(); } else { tempvalue = obj.val(); } }); fieldValue = tempvalue; tempvalue = ""; break; } //如果对应的绑定字段有值则使用该值,没有值则判断设计时有没有输入预设值,有预设值则使用,没有则不做输入条件 var condition = query[i].condition; var initValue = query[i].initValue; if (fieldValue && fieldValue!==0) { querydataStr += condition + ":\"" + fieldValue + "\","; }else if(initValue!='' && initValue!==0){ querydataStr += condition + ":\"" + initValue + "\","; } } if (querydataStr.length > 1){ querydataStr = querydataStr.substring(0, querydataStr.length - 1); } querydataStr += "}"; SelectObj.empty(); queryCond = { alias : queryJson.name, querydata : querydataStr, page : 0, pagesize : 0 }; DoQuery(queryCond, function(data) { var list = data.list; if (data.errors || list.length==0) return; QueryUI.handData(list,queryJson,SelectObj); },false); }; /** * 获取数据以后经过处理,显示多下拉列表中 * 修改时间:2015-05-18 14:05 */ QueryUI.handData=function(data,queryJson,currSelectObj){ var selectObj=$(currSelectObj); var queryValue = queryJson.binding.value.toLowerCase(); var queryKey = queryJson.binding.key.toLowerCase(); selectObj.html(""); for (var i = 0; i < data.length; i++) { var dataobj = data[i]; var datavalue = dataobj[queryValue]; var datakey = dataobj[queryKey]; var opt = $("