// ********************** 根据关键字动态查询. ******************************** //
var oldValue = "";
var oid;
var highlightindex = -1;
function DoAnscToFillDiv(sender, selectVal, tbid, fk_mapExt, dbSrc, dbType) {
openDiv(sender, tbid);
var mapExt = new Entity("BP.Sys.MapExt", fk_mapExt);
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, mapExt.MyPK, tbid);
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, mapExt.FK_DBSrc);
if ($.isEmptyObject(dataObj)) {
$("#divinfo").hide();
return;
}
//简洁模式
if (TBModel == "Simple"){
$.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 + "
");
});
}
//表格模式
if(TBModel=="Table")
showDataGrid(sender, tbid, dataObj, mapExt);
oldValue = selectVal;
}
}
}
function showDataGrid(sender, tbid, dataObj, mapExt) {
//加载bootStrap的js
if (GetHrefUrl().indexOf("CCForm") != -1) {
$('head').append('');
$('head').append('');
Skip.addJs("../Scripts/bootstrap/bootstrap-table/src/bootstrap-table.js");
} else {
$('head').append('');
$('head').append('');
Skip.addJs("./Scripts/bootstrap/bootstrap-table/src/bootstrap-table.js");
}
var columns = mapExt.Tag3;
$("#divinfo").append("");
//取消DIV的宽度
document.getElementById('divinfo').style.width = "";
//显示行号的添加
var searchTableColumns = [{
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,
clickToSelect: 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);
FullIt(row.No, mapExt.MyPK, tbid);
};
$('#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, refPK, elementId,type) {
if (oid == null)
oid = GetQueryString('OID');
if (oid == null)
oid = GetQueryString('WorkID');
if (oid == null) {
oid = 0;
return;
}
var mypk = "";
if (refPK.indexOf("FullData") != -1)
mypk = refPK;
else
mypk = refPK + "_FullData";
//获得对象.
var mapExt = new Entity("BP.Sys.MapExt");
mapExt.SetPKVal(mypk);
var i = mapExt.RetrieveFromDBSources();
//没有填充其他控件
if (i == 0)
return;
//生成关键字.
GenerPageKVs();
//执行填充主表的控件.
FullCtrl(selectVal, elementId, mapExt,type);
//执行个性化填充下拉框,比如填充ddl下拉框的范围.
FullCtrlDDL(selectVal, elementId, mapExt);
//执行填充从表.
FullDtl(selectVal, mapExt);
//执行确定后执行的JS
var backFunc = mapExt.Tag2;
if (backFunc != null && backFunc != "" && backFunc != undefined) {
var oid = GetQueryString("OID")
if (backFunc.indexOf("@OID") != -1 && oid==null) {
//获取OID的值
var oid = elementId.replace("TB_", "").replace("DDL_", "").replace("CB_", "").replace(mapExt.AttrOfOper + "_", "");
backFunc = backFunc.replace(/@OID/g, oid);
}
backFunc = DealSQL(backFunc, selectVal);
DBAccess.RunFunctionReturnStr(backFunc);
}
}
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] + 29;
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
}
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;
}
/* 自动填充 type: 0 主表 1 从表*/
function DDLFullCtrl(selectVal, ddlChild, fk_mapExt,type) {
FullIt(selectVal, fk_mapExt, ddlChild,type);
}
/* 级联下拉框 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("= 0) {
if (ddl.options[mylen].selected) {
oldVal = ddl.options[mylen].value;
}
mylen--;
}
//清空级联字段
$("#" + ddlChild).empty();
//查询数据为空时为级联字段赋值
if (dataObj == null || dataObj.length == 0) {
//无数据返回时,提示显示无数据,并将与此关联的下级下拉框也处理一遍,edited by liuxc,2015-10-22
$("#" + ddlChild).append("" + item.Name + "= 0) {
if (ddl.options[mylen].value == oldVal) {
ddl.options[mylen].selected = true;
isInIt = true;
break;
}
mylen--;
}
if(isInIt == false){
$("#" + ddlChild).val(dataObj[0].No);
var chg = $("#" + ddlChild).attr("onchange");
if (chg != null && chg != undefined && (chg.indexOf("DDLAnsc") == 0 || chg.indexOf("DDLFullCtrl")==0))
$("#" + ddlChild).change();
}
}
//填充明细.
function FullDtl(selectVal, mapExt) {
if (mapExt.Tag1 == "" || mapExt.Tag1 == null)
return;
var dbType = mapExt.DBType;
var dbSrc = mapExt.Tag1;
var url = GetLocalWFPreHref();
var dataObj;
if (dbType == 1) {
dbSrc = DealSQL(DealExp(dbSrc), e, kvs);
dataObj = DBAccess.RunDBSrc(dbSrc, 1,mapExt.FK_DBSrc);
//JQuery 获取数据源
} else if (dbType == 2) {
dataObj = DBAccess.RunDBSrc(dbSrc, 2,mapExt.FK_DBSrc);
} else {
var handler = new HttpHandler("BP.WF.HttpHandler.WF_CCForm");
handler.AddPara("Key", selectVal);
handler.AddPara("FK_MapExt", mapExt.MyPK);
handler.AddPara("KVs", kvs);
handler.AddPara("DoTypeExt", "ReqDtlFullList");
handler.AddPara("OID", oid);
var data = handler.DoMethodReturnString("HandlerMapExt");
if (data == "")
return;
if (data.indexOf('err@') == 0) {
alert(data);
return;
}
dataObj = cceval("(" + data + ")"); //转换为json对象
}
}
function FullCtrlDDL(selectVal, ctrlID, mapExt) {
if (mapExt.Tag == "" || mapExt.Tag == null)
return;
var dbSrcs = mapExt.Tag.split('$'); //获得集合.
for (var i = 0; i < dbSrcs.length; i++) {
var dbSrc = dbSrcs[i];
if (dbSrc == "" || dbSrc.length == 0)
continue;
var ctrlID = dbSrc.substring(0, dbSrc.indexOf(':'));
var src = dbSrc.substring(dbSrc.indexOf(':') + 1);
var db = GenerDB(src, selectVal, mapExt.DBType, mapExt.FK_DBSrc); //获得数据源.
//重新绑定下拉框.
$("#DDL_" + ctrlID).empty();
if (db && db.length != 0) {
$("#DDL_" + ctrlID).append(" 1) {
beforeID = ctrlIdBefore.substring(0, ctrlIdBefore.indexOf('DDL_'));
endId = ctrlIdBefore.substring(ctrlIdBefore.lastIndexOf('_'));
} else {
beforeID = ctrlIdBefore.substring(0, ctrlIdBefore.indexOf('TB_'));
endId = ctrlIdBefore.substring(ctrlIdBefore.lastIndexOf('_'));
}
if (frmMapAttrs != null && frmMapAttrs.length != 0 && type == 0) {
data = DealDataTableColName(data, frmMapAttrs);
} else {
data = DealDataTableColName(data, dtlmapAttrs);
}
//遍历属性,给属性赋值.
var valID;
for (var key in data) {
var val = data[key];
valID = $("#" + beforeID + "TB_" + key);
if (valID.length == 1) {
valID.val(val);
continue;
}
valID = $("#" + beforeID + "TB_" + key + endId);
if (valID.length == 1) {
valID.val(val);
continue;
}
valID = $("#" + beforeID + "DDL_" + key)
if (valID.length == 1) {
valID.val(val);
continue;
}
valID = $("#" + beforeID + "DDL_" + key + endId);
if (valID.length == 1) {
valID.val(val);
continue;
}
valID = $("#" + beforeID + 'CB_' + key);
if (valID.length == 1) {
if (val == '1') {
valID.attr("checked", true);
} else {
valID.attr("checked", false);
}
continue;
}
valID = $("#" + beforeID + 'CB_' + key + endId);
if (valID.length == 1) {
if (val == '1') {
valID.attr("checked", true);
} else {
valID.attr("checked", false);
}
continue;
}
//获取表单中所有的字段
if (valID.length == 0) {
var tbs = $('input');
$.each(tbs, function (i, tb) {
var name = $(tb).attr("id");
if (name == null || name == undefined)
return false;
if (name.toUpperCase().indexOf(key) >= 0) {
if (name.indexOf("TB_") == 0)
$("#" + name).val(val);
if (name.indexOf("CB_")) {
if (val == '1') {
$("#" + name).attr("checked", true);
} else {
$("#" + name).attr("checked", false);
}
}
return false;
}
});
var selects = $('select');
$.each(selects, function (i, select) {
var name = $(select).attr("id");
if (name.toUpperCase().indexOf(key) >= 0) {
$("#" + name).val(val);
return false;
}
});
}
}
}
var itemStyle = 'padding:2px;color: #000000;width:100%;border-bottom: 1px solid #c8c7cc;';
var itemStyleOfS = 'padding:2px;color: #000000;background-color:green;width:100%';
function ItemClick(sender, val, tbid, fk_mapExt) {
$("#divinfo").empty();
$("#divinfo").css("display", "none");
highlightindex = -1;
oldValue = val;
$("#" + tbid).val(oldValue);
// 填充.
FullIt(oldValue, fk_mapExt, tbid);
}
function MyOver(sender) {
if (highlightindex != -1) {
$("#divinfo").children("div").eq(highlightindex).css("background-color", "white");
}
highlightindex = $(sender).attr("name");
$(sender).css("background-color", "rgb(40, 132, 250)");
$(sender).css("color", "white");
}
function MyOut(sender) {
$(sender).css("background-color", "white");
$(sender).css("color", "black");
}
function hiddiv() {
$("#divinfo").css("display", "none");
}
//通过正则表达式检测
function CheckInput(oInput, filter) {
var re = filter;
if (typeof (filter) == "string") {
re = new RegExp(filter);
}
return re.test(oInput);
}
//正则表达式检查
function CheckRegInput(oInput, filter, tipInfo) {
var mapExt = $('#' + oInput).data();
var filter = mapExt.Doc.replace(/【/g, '[').replace(/】/g, ']').replace(/(/g, '(').replace(/)/g, ')').replace(/{/g, '{').replace(/}/g, '}');
var oInputVal = $("[name=" + oInput + ']').val();
var result = true;
if (oInput != '') {
var re = filter;
if (typeof (filter) == "string") {
if (filter.indexOf('/') == 0) {
filter = filter.substr(1, filter.length - 2);
}
re = new RegExp(filter);
} else {
re = filter;
}
result = re.test(oInputVal);
}
if (!result) {
mui.alert(tipInfo);
if ($('#' + oInput).attr("type") == "number")
$("#" + oInput).val(0);
else
$("#" + oInput).val("");
$("#" + oInput).trigger("change");
return result;
}
//NumEnterLimit($("#" + oInput));
return result;
}
//输入限制
function NumEnterLimit(element) {
var oInputVal = element.val();
//判断是否存在最大值,最小值的判断
var minVal = element.attr("data-min");
if (minVal == undefined || minVal == "") {
element.css("border", "none");
element.removeClass('compareClass');
return true;
}
if (oInputVal < parseInt(minVal)) {
mui.alert("不能小于最小值" + minVal);
element.addClass('compareClass');
var cssText = element.attr("style") + ";border:1px solid red !important;"
element.css("cssText", cssText);
return false;
}
var maxVal = element.attr("data-max");
if (maxVal == undefined || maxVal == "") {
element.removeClass('compareClass');
element.css("border", "none");
return true;
}
if (oInputVal > parseInt(maxVal)) {
var cssText = element.attr("style") + ";border:1px solid red !important;"
element.css("cssText", cssText);
element.addClass('compareClass');
mui.alert("不能大于最大值" + maxVal);
return false;
}
element.css("border", "none");
element.removeClass('compareClass');
return true;
}
function TB_ClickNum(ele, defVal) {
if (ele == null) return;
if (ele.value == "" && typeof (defVal) != 'undefined') {
ele.value = defVal;
return;
}
//赋值
if (ele.value == "0") ele.value = "";
if (ele.value == "0.00") ele.value = "";
//判断小数点数
var pointNum = ele.value.split('.');
if (pointNum) {
if (pointNum.length > 2) {
ele.value = pointNum[0] + "." + pointNum[1];
}
}
}
//获取WF之前路径
function GetLocalWFPreHref() {
var url = GetHrefUrl();
if (url.indexOf('/WF/') >= 0) {
var index = url.indexOf('/WF/');
url = url.substring(0, index);
} else {
url = "";
}
return url;
}
function DealSQL(dbSrc, key, kvs) {
dbSrc = dbSrc.replace(/~/g, "'");
dbSrc = dbSrc.replace(/@Key/g, key);
dbSrc = dbSrc.replace(/@Val/g, key);
var oid = GetQueryString("OID");
if (oid != null) {
dbSrc = dbSrc.replace("@OID", oid);
}
if (kvs != null && kvs != "" && dbSrc.indexOf("@") >= 0) {
var strs = kvs.split("[~]", -1);
for (var i = 0; i < strs.length; i++) {
var s = strs[i];
if (s == null || s == "" || s.indexOf("=") == -1)
continue;
var mykv = s.split("[=]", -1);
dbSrc = dbSrc.replace("@" + mykv[0], mykv[1]);
if (dbSrc.indexOf("@") == -1)
break;
}
}
if (dbSrc.indexOf("@") >= 0) {
alert('系统配置错误有一些变量没有找到:' + dbSrc);
}
return dbSrc;
}