// ********************** 根据关键字动态查询. ******************************** // var oldValue = ""; var oid; var highlightindex = -1; function DoAnscToFillDiv(sender, selectVal, tbid, fk_mapExt, dbSrc, dbType) { openDiv(sender, tbid); var myEvent = window.event || arguments[0]; var myKeyCode = myEvent.keyCode; // 获得ID为divinfo里面的DIV对象 . var autoNodes = $("#divinfo").children("div"); if (myKeyCode == 38) { if (highlightindex != -1) { autoNodes.eq(highlightindex).css("background-color", "white"); autoNodes.eq(highlightindex).css("color", "Black"); if (highlightindex == 0) { highlightindex = autoNodes.length - 1; } else { highlightindex--; } } else { highlightindex = autoNodes.length - 1; } autoNodes.eq(highlightindex).css("background-color", "rgb(40, 132, 250)"); autoNodes.eq(highlightindex).css("color", "white"); } else if (myKeyCode == 40) { if (highlightindex != -1) { autoNodes.eq(highlightindex).css("background-color", "white"); autoNodes.eq(highlightindex).css("color", "black"); highlightindex++; } else { highlightindex++; } if (highlightindex == autoNodes.length) { autoNodes.eq(autoNodes.length).css("background-color", "white"); autoNodes.eq(autoNodes.length).css("color", "black"); highlightindex = 0; } autoNodes.eq(highlightindex).css("background-color", "rgb(40, 132, 250)"); autoNodes.eq(highlightindex).css("color", "white"); } else if (myKeyCode == 13) { if (highlightindex != -1) { //获得选中的那个的文本值 var textInputText = autoNodes.eq(highlightindex).text(); var strs = textInputText.split('|'); autoNodes.eq(highlightindex).css("background-color", "white"); $("#" + tbid).val(strs[0]); $("#divinfo").hide(); oldValue = strs[0]; // 填充. FullIt(oldValue, tbid, fk_mapExt); highlightindex = -1; } } else { if (selectVal != oldValue) { $("#divinfo").empty(); //获得对象. var mapExt = new Entity("BP.Sys.MapExt", fk_mapExt); var dataObj = GenerDB(mapExt.Doc, selectVal, mapExt.DBType); if ($.isEmptyObject(dataObj)) { $("#divinfo").hide(); return; } var columns = mapExt.Tag3; //普通No、Name展示 if (columns == null || columns == "") { $.each(dataObj, function (idx, item) { var no = item.No; if (no == undefined) no = item.NO; var name = item.Name; if (name == undefined) name = item.NAME; $("#divinfo").append("
" + no + '|' + name + "
"); }); //datagrid 展示 } else { showDataGrid(sender, tbid, dataObj, columns, mapExt); } oldValue = selectVal; } } } function showDataGrid(sender, tbid, dataObj, columns,mapExt) { $("#divinfo").append("
"); //取消DIV的宽度 document.getElementById("divinfo").style.width=""; var searchTableColumns = [{ //title: 'Number',//标题 可不加 formatter: function (value, row, index) { return index+1; } }]; //显示列的中文名称. if (typeof columns == "string") { $.each(columns.split(","), function (i, o) { var exp = o.split("="); var field; var title; if (exp.length == 1) { field = title = exp[0]; } else if (exp.length == 2) { field = exp[0]; title = exp[1]; } if (!isLegalName(field)) { return true; } searchTableColumns.push({ field: field, title: title }); }); var options = { striped: true, cache: false, showHeader:true, sortOrder: "asc", strictSearch: true, minimumCountColumns: 2, highlightSelected: true, clickToSelect: true, singleSelect: true, sortable: false, cardView: false, detailView: false, uniqueId: "No", columns: searchTableColumns }; options.onClickRow = function (row, element) { $("#divinfo").empty(); $("#divinfo").css("display", "none"); highlightindex = -1; $("#" + tbid).val(row.No); var dataObj = [row]; var dbSrc = mapExt.Tag4; if (dbSrc == null || dbSrc == "") dbSrc = mapExt.Doc; if (dbSrc != null && dbSrc != "") { //包含有填充其他数据控件的数据源时 dataObj = GenerDB(dbSrc, JSON.stringify(row), mapExt.DBType); } //填充主表数据源 TableFullCtrl(dataObj) //填充其他数据源 //执行个性化填充下拉框,比如填充ddl下拉框的范围. if(mapExt.Tag!=null && mapExt.Tag!="") FullCtrlDDL(row.No, tbid, mapExt); //执行填充从表. if (mapExt.Tag1 != null && mapExt.Tag1 != "") FullDtl(row.No, mapExt.MyPK, mapExt); }; $('#viewGrid').bootstrapTable(options); $('#viewGrid').bootstrapTable("load", dataObj); } } function isLegalName(name) { if (!name) { return false; } return name.match(/^[a-zA-Z\$_][a-zA-Z\d\$_]*$/); } //填充其他的控件. function FullIt(selectVal, tbid, fk_mapExt) { if (oid == null) oid = GetQueryString('OID'); if (oid == null) oid = GetQueryString('WorkID'); if (oid == null) { oid = 0; return; } //获得对象. var mapExt = new Entity("BP.Sys.MapExt", fk_mapExt); //生成关键字. GenerPageKVs(); //执行填充主表的控件. FullCtrl(selectVal, tbid, mapExt); //执行个性化填充下拉框,比如填充ddl下拉框的范围. FullCtrlDDL(selectVal, tbid, mapExt); //执行填充从表. FullDtl(selectVal, fk_mapExt, mapExt); ////执行m2m 关系填充. //FullM2M(oldValue, fk_mapExt, dbSrc, dbType); } function openDiv(e, tbID) { if (document.getElementById("divinfo").style.display == "none") { var txtObject = e; // document.getElementById(tbID); var orgObject = document.getElementById("divinfo"); var rect = getoffset(txtObject); var t = rect[0] + 22; var l = rect[1]; orgObject.style.top = t + 'px'; orgObject.style.left = l + 'px'; orgObject.style.display = "block"; txtObject.focus(); } } function getoffset(e) { var t = e.offsetTop; var l = e.offsetLeft; while (e = e.offsetParent) { if (e.id == 'divCCForm') { break; } t += e.offsetTop; l += e.offsetLeft; } var rec = new Array(1); rec[0] = t; rec[1] = l; return rec } /* 内置的Pop自动返回值. */ function ReturnValCCFormPopVal(ctrl, fk_mapExt, refEnPK, width, height, title) { //update by dgq 修改路径 //url = 'CCForm/FrmPopVal.aspx?FK_MapExt=' + fk_mapExt + '&RefPK=' + refEnPK + '&CtrlVal=' + ctrl.value; var wfpreHref = GetLocalWFPreHref(); url = wfpreHref + '/WF/CCForm/PopVal.htm?FK_MapExt=' + fk_mapExt + '&RefPK=' + refEnPK + '&CtrlVal=' + ctrl.value; var v = window.showModalDialog(url, 'opp', 'scrollbars=yes;resizable=yes;center=yes;minimize:yes;maximize:yes;dialogHeight: ' + (height || 600) + 'px; dialogWidth: ' + (width || 850) + 'px; dialogTop: 100px; dialogLeft: 150px;'); if (v == null || v == '' || v == 'NaN') { return; } ctrl.value = v; ctrl.value = v; return; } //根据Name设置元素的值 分为 tb,ddl,rd function SetEleValByName(eleName, val) { var ele = $('[name$=_' + eleName + ']'); if (ele != undefined && ele.length > 0) { switch (ele[0].tagName.toUpperCase()) { case "INPUT": switch (ele[0].type.toUpperCase()) { case "CHECKBOX": //复选框 0:false 1:true val.indexOf('1') >= 0 ? $(ele).attr('checked', true) : $(ele).attr('checked', false); break; case "TEXT": //文本框 $(ele).val(val); break; case "RADIO": //单选钮 $(ele).attr('checked', false); $('[name=RB_' + eleName + '][value=' + val + ']').attr('checked', true); break; case "HIDDEN": $(ele).val(val); break; } break; //下拉框 case "SELECT": $(ele).val(val); break; //文本区域 case "TEXTAREA": $(ele).val(val); break; } } } function PopFullCtrl(val1, val2) { alert(val1, val2); } /* 内置的Pop自动返回值. google 版 软通*/ function ReturnValCCFormPopValGoogle(ctrl, fk_mapExt, refEnPK, width, height, title, formData, dtlNo, extType) { //设置摸态框的宽度和高度 $('#returnPopValModal .modal-dialog').height(height); $('#returnPopValModal .modal-dialog').width(width); $('#returnPopValModal .modal-dialog').css('margin-left', 'auto'); $('#returnPopValModal .modal-dialog').css('margin-right', 'auto'); //ctrl = $('#' + ctrl); if (typeof ctrl == "string") { ctrl = document.getElementById(ctrl); } var wfpreHref = GetLocalWFPreHref(); var fd; var dtlWin = dtlNo ? document.getElementById("F" + dtlNo).contentWindow : null; if (formData) { fd = formData; } else { fd = getFormData(false, false); } var url = ""; if (extType == "PopVal" || extType == undefined) url = wfpreHref + '/WF/CCForm/PopVal.htm?FK_MapExt=' + fk_mapExt + '&RefPK=' + refEnPK + '&CtrlVal=' + ctrl.value + "&FormData=" + escape(fd) + "&m=" + Math.random(); if (extType == "PopFullCtrl") url = wfpreHref + '/WF/CCForm/PopFullCtrl.htm?FK_MapExt=' + fk_mapExt + '&RefPK=' + refEnPK + '&CtrlVal=' + ctrl.value + "&FormData=" + escape(fd) + "&m=" + Math.random(); //杨玉慧 模态框 先用这个. $('#returnPopValModal .modal-header h4').text("请选择:" + $(ctrl).parent().parent().prev().text()); $('#iframePopModalForm').attr("src", url); //绑定连接. $('#btnPopValOK').unbind('click'); $('#btnPopValOK').bind('click', function () { //$(ctrl).val(""); setValForPopval(ctrl.id, dtlWin, ""); //为表单元素反填值。 var returnValSetObj = frames["iframePopModalForm"].window.pageSetData; var returnValObj = frames["iframePopModalForm"].window.returnVal; //设置值. if (extType == "PopFullCtrl") { PopFullCtrl(returnValSetObj, returnValObj); return; } if (returnValSetObj != null && returnValObj != null) { if (returnValSetObj[0].PopValWorkModel == "Tree" || returnValSetObj[0].PopValWorkModel == "TreeDouble") { //树模式 分组模式 frames["iframePopModalForm"].window.GetTreeReturnVal(); if (returnValSetObj[0].PopValFormat == "OnlyNo") { setValForPopval(ctrl.id, dtlWin, returnValObj.No); } else if (returnValSetObj[0].PopValFormat == "OnlyName") { //$(ctrl).val(returnValObj.Name); setValForPopval(ctrl.id, dtlWin, returnValObj.Name); } else { // ?????????? for (var property in returnValObj) { //$('[id$=_' + property + ']').val(returnValObj[property]); SetEleValByName(property, returnValObj[property]); } setValForPopval(ctrl.id, dtlWin, returnValObj.Name); } } else if (returnValSetObj[0].PopValWorkModel == "Group") { //分组模式 frames["iframePopModalForm"].window.GetGroupReturnVal(); //alert(returnValObj.Value + "|" + ctrl.id); //$(ctrl).val(returnValObj.Value); setValForPopval(ctrl.id, dtlWin, returnValObj.Value); } else if (returnValSetObj[0].PopValWorkModel == "TableOnly" || returnValSetObj[0].PopValWorkModel == "TablePage") { //表格模式 if (returnValSetObj[0].PopValFormat == "OnlyNo") { $(ctrl).val(returnValObj.No); setValForPopval(ctrl.id, dtlWin, returnValObj.No); } else if (returnValSetObj[0].PopValFormat == "OnlyName") { //$(ctrl).val(returnValObj.Name); setValForPopval(ctrl.id, dtlWin, returnValObj.Name); } else { // ?????????? for (var property in returnValObj) { //$('[id$=_' + property + ']').val(returnValObj[property]); SetEleValByName(property, returnValObj[property]); } setValForPopval(ctrl.id, dtlWin, returnValObj.Name); } } else if (returnValSetObj[0].PopValWorkModel == "SelfUrl") { //自定义URL //frames["iframePopModalForm"].window.GetTreeReturnVal(); if (frames["iframePopModalForm"].window.GetReturnVal != undefined && typeof (frames["iframePopModalForm"].window.GetReturnVal) == "function") { frames["iframePopModalForm"].window.GetReturnVal() } //$(ctrl).val(returnValObj.Value); setValForPopval(ctrl.id, dtlWin, returnValObj.Value); } } else { if (frames["iframePopModalForm"].window.returnValue != undefined) { var Value = frames["iframePopModalForm"].window.returnValue; } //$(ctrl).val(Value); setValForPopval(ctrl.id, dtlWin, Value); } //把树等都变成不显示 解决点击一个后另一个会把原来的先显示一下的问题 $(frames["iframePopModalForm"].window.document.getElementById('poptablew')).css('display', 'none'); $(frames["iframePopModalForm"].window.document.getElementById('main')).css('display', 'none'); $(frames["iframePopModalForm"].window.document.getElementById('orgjstree')).css('display', 'none'); $(frames["iframePopModalForm"].window.document.getElementById('groupTable')).css('display', 'none'); // $(".jstree-clicked").removeClass("jstree-clicked"); }); $('#btnPopValCancel').unbind('click'); $('#btnPopValCancel').bind('click', function () { //把树等都变成不显示 解决点击一个后另一个会把原来的先显示一下的问题 $(frames["iframePopModalForm"].window.document.getElementById('poptablew')).css('display', 'none'); $(frames["iframePopModalForm"].window.document.getElementById('main')).css('display', 'none'); $(frames["iframePopModalForm"].window.document.getElementById('orgjstree')).css('display', 'none'); $(frames["iframePopModalForm"].window.document.getElementById('groupTable')).css('display', 'none'); }) $('#returnPopValModal').modal().show(); //修改标题,失去焦点时进行保存 if (typeof self.parent.TabFormExists != 'undefined') { var bExists = self.parent.TabFormExists(); if (bExists) { self.parent.ChangTabFormTitle(); } } return; } /* 设置控件值,仅用在主表单/明细表(且为iframe内的)中设置控件值,目前仅用于Popval弹窗设置返回值 */ function setValForPopval(id, dtlWin, val) { if (dtlWin && dtlWin.SetTextboxValue) { dtlWin.SetTextboxValue(id, val); } else { $("#" + id).val(val); } } /* ReturnValTBFullCtrl */ function ReturnValTBFullCtrl(ctrl, fk_mapExt) { var wfPreHref = GetLocalWFPreHref(); var url = wfPreHref + '/WF/CCForm/FrmReturnValTBFullCtrl.aspx?CtrlVal=' + ctrl.value + '&FK_MapExt=' + fk_mapExt; var v = window.showModalDialog(url, 'wd', 'scrollbars=yes;resizable=yes;center=yes;minimize:yes;maximize:yes;dialogHeight: 650px; dialogWidth: 850px; dialogTop: 100px; dialogLeft: 150px;'); if (v == null || v == '' || v == 'NaN') { return; } ctrl.value = v; // 填充. FullIt(oldValue, ctrl.id, fk_mapExt); return; } var kvs = null; function GenerPageKVs() { var ddls = null; ddls = parent.document.getElementsByTagName("select"); kvs = ""; for (var i = 0; i < ddls.length; i++) { var id = ddls[i].name; if (id.indexOf('DDL_') == -1) { continue; } var myid = id.substring(id.indexOf('DDL_') + 4); kvs += '~' + myid + '=' + ddls[i].value; } ddls = document.getElementsByTagName("select"); for (var i = 0; i < ddls.length; i++) { var id = ddls[i].name; if (id.indexOf('DDL_') == -1) { continue; } var myid = id.substring(id.indexOf('DDL_') + 4); kvs += '~' + myid + '=' + ddls[i].value; } return kvs; } /* 自动填充 */ function DDLFullCtrl(selectVal, ddlChild, fk_mapExt) { FullIt(selectVal, ddlChild, fk_mapExt); } /* 级联下拉框 param 传到后台的一些参数 例如从表的行数据 主表的字段值 如果param参数在,就不去页面中取KVS 了,PARAM 就是*/ function DDLAnsc(selectVal, ddlChild, fk_mapExt, param) { //1.初始值为空或者NULL时,相关联的字段没有数据显示 if (selectVal == null || selectVal == "") { $("#" + ddlChild).empty(); //无数据返回时,提示显示无数据,并将与此关联的下级下拉框也处理一遍,edited by liuxc,2015-10-22 $("#" + ddlChild).append("