|
|
//处理MapExt
|
|
|
function AfterBindEn_DealMapExt(tr, rowIndex) {
|
|
|
var workNode = workNodeData;
|
|
|
var mapExtArr = workNode.Sys_MapExt; // 扩展信息
|
|
|
var WorkId = GetQueryString("WorkId")
|
|
|
//表示从表还没有数据
|
|
|
var OID = 0;
|
|
|
if ($(tr).data().data == undefined)
|
|
|
return;
|
|
|
else
|
|
|
OID = $(tr).data().data.OID;
|
|
|
if (OID == 0)//数据还未保存
|
|
|
OID = WorkId + "_" + rowIndex;
|
|
|
for (var i = 0; i < mapExtArr.length; i++) {
|
|
|
var mapExt = mapExtArr[i];
|
|
|
//一起转成entity.
|
|
|
mapExt = new Entity("BP.Sys.MapExt", mapExt.MyPK);
|
|
|
if (mapExt.ExtType == "DtlImp"
|
|
|
|| mapExt.MyPK.indexOf(mapExt.FK_MapData + '_Table') >= 0
|
|
|
|| mapExt.MyPK.indexOf('PageLoadFull') >= 0)
|
|
|
continue;
|
|
|
|
|
|
if (mapExt.AttrOfOper == '')
|
|
|
continue; //如果是不操作字段,就conntinue;
|
|
|
|
|
|
var mapAttr = new Entity("BP.Sys.MapAttr");
|
|
|
mapAttr.SetPKVal(mapExt.FK_MapData + "_" + mapExt.AttrOfOper);
|
|
|
if (mapAttr.RetrieveFromDBSources() == 0) {
|
|
|
mapExt.Delete();
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
//处理Pop弹出框
|
|
|
var PopModel = mapAttr.GetPara("PopModel");
|
|
|
if (PopModel != undefined && PopModel != "" && mapExt.ExtType == mapAttr.GetPara("PopModel") && mapAttr.GetPara("PopModel") != "None") {
|
|
|
var tbAuto = $(tr).find("[name=TB_" + mapExt.AttrOfOper + ']');
|
|
|
var tbID = tbAuto.attr('id');
|
|
|
|
|
|
PopDtlMapExt(mapAttr, mapExt, tbID, rowIndex, OID, tr);
|
|
|
continue;
|
|
|
}
|
|
|
//处理文本自动填充
|
|
|
var TBModel = mapAttr.GetPara("TBFullCtrl");
|
|
|
if (TBModel != undefined && TBModel != "" && TBModel != "None" && (mapExt.ExtType == "FullData")) {
|
|
|
var tbAuto = $(tr).find("[name=TB_" + mapExt.AttrOfOper + ']');
|
|
|
if (tbAuto == null)
|
|
|
continue;
|
|
|
|
|
|
var tbID = tbAuto.attr('id');
|
|
|
if (tbID == undefined)
|
|
|
continue;
|
|
|
|
|
|
tbAuto.attr("ondblclick", "ReturnValTBFullCtrl(this,'" + mapExt.MyPK + "');");
|
|
|
tbAuto.attr("onkeyup", "DoAnscToFillDiv(this,this.value, '" + tbID + "', '" + mapExt.MyPK + "',\'" + TBModel + "\');");
|
|
|
tbAuto.attr("AUTOCOMPLETE", "OFF");
|
|
|
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
//下拉框填充其他控件
|
|
|
var DDLFull = mapAttr.GetPara("IsFullData");
|
|
|
if (DDLFull != undefined && DDLFull != "" && DDLFull == "1" && (mapExt.MyPK.indexOf("DDLFullCtrl") != -1)) {
|
|
|
//枚举类型
|
|
|
if (mapAttr.MyDataType == 2 && mapAttr.LGType == 1 && mapAttr.UIContralType == 3) {
|
|
|
var ddlOper = $(tr).find('input:radio[name="RB_' + mapExt.AttrOfOper + '"]');
|
|
|
if (ddlOper.length == 0)
|
|
|
continue;
|
|
|
|
|
|
ddlOper.attr("onchange", "DDLFullCtrl(this.value,\'" + "RB_" + mapExt.AttrOfOper + "\', \'" + mapExt.MyPK + "\')");
|
|
|
|
|
|
//初始化填充数据
|
|
|
var val = $('input:radio[name="RB_' + mapExt.AttrOfOper + '"]:checked').val();
|
|
|
DDLFullCtrl(val, "DDL_" + mapExt.AttrOfOper + "_" + rowIndex, mapExt.MyPK);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
//外键类型
|
|
|
var ddlOper = $("#DDL_" + mapExt.AttrOfOper + "_" + rowIndex);
|
|
|
if (ddlOper.length == 0)
|
|
|
continue;
|
|
|
|
|
|
ddlOper.attr("onchange", "DDLFullCtrl(this.value,\'" + "DDL_" + mapExt.AttrOfOper + "_" + rowIndex + "\', \'" + mapExt.MyPK + "\')");
|
|
|
//初始化填充数据
|
|
|
var val = ddlOper.val();
|
|
|
if (val != "" && val != undefined)
|
|
|
DDLFullCtrl(val, "DDL_" + mapExt.AttrOfOper + "_" + rowIndex, mapExt.MyPK);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
switch (mapExt.ExtType) {
|
|
|
case "MultipleChoiceSmall":
|
|
|
var tbMulti = $(tr).find("[name=TB_" + mapExt.AttrOfOper + ']');
|
|
|
var tbID = tbMulti.attr('id');
|
|
|
if (mapAttr.UIIsEnable == 0 && mapExt.Tag == 0) {
|
|
|
var oid = (pageData.WorkID || pageData.OID || "");
|
|
|
var ens = new Entities("BP.Sys.FrmEleDBs");
|
|
|
ens.Retrieve("FK_MapData", mapAttr.FK_MapData, "EleID", mapAttr.KeyOfEn, "RefPKVal", oid);
|
|
|
var val = "";
|
|
|
var defaultVal = tbMulti.val();
|
|
|
for (var k = 0; k < ens.length; k++) {
|
|
|
if (defaultVal.indexOf(ens[k].Tag1) == -1)
|
|
|
continue;
|
|
|
val += ens[k].Tag2 + ",";
|
|
|
}
|
|
|
tbMulti.val(val);
|
|
|
break;
|
|
|
}
|
|
|
MultipleChoiceSmall(mapExt, mapAttr, workNode, tbID, rowIndex, OID); //调用 /CCForm/JS/MultipleChoiceSmall.js 的方法来完成.
|
|
|
break;
|
|
|
case "MultipleChoiceSearch":
|
|
|
if (mapAttr.UIIsEnable == 0)
|
|
|
break;
|
|
|
var tbMulti = $(tr).find("[name=TB_" + mapExt.AttrOfOper + ']');
|
|
|
var tbID = tbMulti.attr('id');
|
|
|
MultipleChoiceSearch(mapExt, mapAttr, tbID, rowIndex, OID); //调用 /CCForm/JS/MultipleChoiceSearch.js 的方法来完成.
|
|
|
break;
|
|
|
|
|
|
case "RegularExpression": //正则表达式 统一在保存和提交时检查
|
|
|
var tb = $(tr).find('[name$=' + mapExt.AttrOfOper + ']');
|
|
|
|
|
|
if (tb.attr('class') != undefined && tb.attr('class').indexOf('CheckRegInput') > 0) {
|
|
|
break;
|
|
|
} else {
|
|
|
tb.addClass("CheckRegInput");
|
|
|
tb.data(mapExt)
|
|
|
tb.attr(mapExt.Tag, "CheckRegInput('" + tb.attr('id') + "','','" + mapExt.Tag1 + "')");
|
|
|
}
|
|
|
break;
|
|
|
case "InputCheck": //输入检查
|
|
|
if (mapExt.AttrOfOper.length == 0 || mapExt.Tag1.length == 0 || mapExt.Tag2.length == 0) {
|
|
|
continue;
|
|
|
}
|
|
|
//判断是否已经增加了函数
|
|
|
var ctrl = $(tr).find('[name$=' + mapExt.AttrOfOper + ']');
|
|
|
|
|
|
if (ctrl.length == 0) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
var changeEvent = ctrl.attr(mapExt.Tag2);
|
|
|
if (changeEvent && changeEvent.indexOf(mapExt.Tag1 + '(') != -1) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
ctrl.attr(mapExt.Tag2, mapExt.Tag1 + '(this);');
|
|
|
break;
|
|
|
case "BindFunction": //绑定函数
|
|
|
if (mapExt.AttrOfOper.length == 0 || mapExt.Doc.length == 0 || mapExt.Tag.length == 0) {
|
|
|
continue;
|
|
|
}
|
|
|
//判断是否已经增加了函数
|
|
|
var ctrl = $(tr).find('[name=TB_' + mapExt.AttrOfOper + ']');
|
|
|
|
|
|
if (ctrl.length == 0) {
|
|
|
ctrl = $(tr).find('[name=DDL_' + mapExt.AttrOfOper + ']');
|
|
|
if (ctrl.length == 0)
|
|
|
ctrl = $(tr).find('[name=RB_' + mapExt.AttrOfOper + ']');
|
|
|
if (ctrl.length == 0)
|
|
|
ctrl = $(tr).find('[name=CB_' + mapExt.AttrOfOper + ']');
|
|
|
}
|
|
|
|
|
|
if (ctrl.length == 0)
|
|
|
continue;
|
|
|
//获取ctr是否包含Wdate的class,有则是时间控件
|
|
|
if (ctrl.hasClass("Wdate")) {
|
|
|
var mapAttr = new Entity("BP.Sys.MapAttr", mapExt.FK_MapData + "_" + mapExt.AttrOfOper);
|
|
|
|
|
|
var minDate = ctrl.attr("data-info");
|
|
|
ctrl.attr("data-funcionPK", mapExt.MyPK); // 记录绑定事件的MyPK
|
|
|
ctrl.removeAttr("onfocus");
|
|
|
ctrl.unbind("focus");
|
|
|
var frmDate = mapAttr.IsSupperText; //获取日期格式
|
|
|
var dateFmt = '';
|
|
|
if (frmDate == 0) {
|
|
|
dateFmt = "yyyy-MM-dd";
|
|
|
} else if (frmDate == 1) {
|
|
|
dateFmt = "yyyy-MM-dd HH:mm";
|
|
|
} else if (frmDate == 2) {
|
|
|
dateFmt = "yyyy-MM-dd HH:mm:ss";
|
|
|
} else if (frmDate == 3) {
|
|
|
dateFmt = "yyyy-MM";
|
|
|
} else if (frmDate == 4) {
|
|
|
dateFmt = "HH:mm";
|
|
|
} else if (frmDate == 5) {
|
|
|
dateFmt = "HH:mm:ss";
|
|
|
} else if (frmDate == 6) {
|
|
|
dateFmt = "MM-dd";
|
|
|
} else if (frmDate == 7) {
|
|
|
dateFmt = "yyyy";
|
|
|
}
|
|
|
|
|
|
var mapextDoc = mapExt.Doc;
|
|
|
ctrl.data().MapExt = mapExt;
|
|
|
ctrl.bind("focus", function () {
|
|
|
if (minDate == "" || minDate == undefined)
|
|
|
WdatePicker({
|
|
|
dateFmt: dateFmt, onpicked: function (dp) {
|
|
|
$(this).blur(); //失去焦点
|
|
|
var id = ctrl[0].id;
|
|
|
curRowIndex = id.substring(id.lastIndexOf("_") + 1);
|
|
|
DBAccess.RunFunctionReturnStr(mapextDoc);
|
|
|
}
|
|
|
});
|
|
|
else
|
|
|
WdatePicker({
|
|
|
dateFmt: dateFmt, minDate: minDate, onpicked: function (dp) {
|
|
|
$(this).blur(); //失去焦点
|
|
|
var id = ctrl[0].id;
|
|
|
curRowIndex = id.substring(id.lastIndexOf("_") + 1);
|
|
|
DBAccess.RunFunctionReturnStr(mapextDoc);
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
ctrl.data().MapExt = mapExt;
|
|
|
ctrl.bind(mapExt.Tag, function (obj) {
|
|
|
var id = ctrl[0].id;
|
|
|
curRowIndex = id.substring(id.lastIndexOf("_") + 1);
|
|
|
var mapExtThis = $(obj.target).data().MapExt;
|
|
|
if (mapExtThis.Doc.indexOf("(") != -1)
|
|
|
cceval(mapExtThis.Doc);
|
|
|
else
|
|
|
cceval(mapExtThis.Doc + '(this)');
|
|
|
});
|
|
|
break;
|
|
|
case "DataFieldInputRole": //时间限制
|
|
|
|
|
|
//判断是否已经增加了函数
|
|
|
var ctrl = $(tr).find('[name=TB_' + mapExt.AttrOfOper + ']');
|
|
|
if (ctrl.length == 0)
|
|
|
break;
|
|
|
|
|
|
if (mapExt.DoWay == 1) {
|
|
|
var tag1 = mapExt.Tag1;
|
|
|
if (tag1 == 1) {
|
|
|
var mapAttr = new Entity("BP.Sys.MapAttr", mapExt.FK_MapData + "_" + mapExt.AttrOfOper);
|
|
|
ctrl.removeAttr("onfocus");
|
|
|
var frmDate = mapAttr.IsSupperText; //获取日期格式
|
|
|
var dateFmt = '';
|
|
|
if (frmDate == 0) {
|
|
|
dateFmt = "yyyy-MM-dd";
|
|
|
} else if (frmDate == 1) {
|
|
|
dateFmt = "yyyy-MM-dd HH:mm";
|
|
|
} else if (frmDate == 2) {
|
|
|
dateFmt = "yyyy-MM-dd HH:mm:ss";
|
|
|
} else if (frmDate == 3) {
|
|
|
dateFmt = "yyyy-MM";
|
|
|
} else if (frmDate == 4) {
|
|
|
dateFmt = "HH:mm";
|
|
|
} else if (frmDate == 5) {
|
|
|
dateFmt = "HH:mm:ss";
|
|
|
} else if (frmDate == 6) {
|
|
|
dateFmt = "MM-dd";
|
|
|
} else if (frmDate == 7) {
|
|
|
dateFmt = "yyyy";
|
|
|
}
|
|
|
|
|
|
var minDate = '%y-%M-#{%d}';
|
|
|
ctrl.attr("data-info", minDate); //绑定时间大小限制的记录
|
|
|
var functionPK = ctrl.attr("data-funcionPK");
|
|
|
if (functionPK == null || functionPK == undefined || functionPK == "") {
|
|
|
ctrl.bind("focus", function () {
|
|
|
WdatePicker({ dateFmt: dateFmt, minDate: minDate });
|
|
|
});
|
|
|
} else {
|
|
|
ctrl.unbind("focus");
|
|
|
var bindFunctionExt = null;
|
|
|
for (var idx = 0; idx < mapExtArr.length; idx++) {
|
|
|
if (mapExtArr[idx].MyPK == functionPK) {
|
|
|
bindFunctionExt = mapExtArr[idx];
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if (bindFunctionExt == null)
|
|
|
ctrl.bind("focus", function () {
|
|
|
var id = ctrl[0].id;
|
|
|
curRowIndex = id.substring(id.lastIndexOf("_") + 1);
|
|
|
WdatePicker({ dateFmt: dateFmt, minDate: minDate });
|
|
|
});
|
|
|
else
|
|
|
ctrl.bind("focus", function () {
|
|
|
|
|
|
WdatePicker({
|
|
|
dateFmt: dateFmt, minDate: minDate, onpicked: function (dp) {
|
|
|
$(this).blur(); //失去焦点
|
|
|
var id = ctrl[0].id;
|
|
|
curRowIndex = id.substring(id.lastIndexOf("_") + 1);
|
|
|
DBAccess.RunFunctionReturnStr(bindFunctionExt.Doc);
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
break;
|
|
|
case "ReqDays": //配置自动计算日期天数lz
|
|
|
//获取配置的字段
|
|
|
|
|
|
var ResRDT = mapExt.AttrOfOper;//接收计算天数结果
|
|
|
var StarRDT = mapExt.Tag1;//开始日期
|
|
|
var EndRDT = mapExt.Tag2;//结束日期
|
|
|
var RDTRadio = mapExt.Tag3;//是否包含节假日 0包含,1不包含
|
|
|
var res = "";
|
|
|
var result = $(tr).find("[name=TB_" + mapExt.AttrOfOper + ']');
|
|
|
var end = $(tr).find("[name=TB_" + EndRDT + ']');
|
|
|
var start = $(tr).find("[name=TB_" + StarRDT + ']');
|
|
|
if (end == null || start == null)
|
|
|
continue;
|
|
|
end.focus(function () {
|
|
|
result.val("");
|
|
|
});
|
|
|
//当结束日期文本框失去焦点时
|
|
|
end.blur(function () {
|
|
|
//计算量日期天数
|
|
|
res = CalculateRDT(start.val(), end.val(), RDTRadio);
|
|
|
if (res == "" || res == "NaN")
|
|
|
end.val("");
|
|
|
result.val(res);
|
|
|
});
|
|
|
|
|
|
break;
|
|
|
case "ActiveDDL": /*自动初始化ddl的下拉框数据. 下拉框的级联操作 已经 OK*/
|
|
|
var ddlParent = $(tr).find("[name=DDL_" + mapExt.AttrOfOper + ']');
|
|
|
var ddlChild = $(tr).find("[name=DDL_" + mapExt.AttrsOfActive + ']');
|
|
|
if (ddlParent == null || ddlChild == null)
|
|
|
continue;
|
|
|
var rowIndex = (parseInt($($(tr).find('td')[0]).text()) - 1);
|
|
|
ddlParent.data().MapExt = mapExt;
|
|
|
ddlParent.bind('change', function (obj) {
|
|
|
var trEle = $(obj.target).parent().parent();
|
|
|
var value = $(obj.target).val();
|
|
|
var mapExtThis = $(obj.target).data().MapExt;
|
|
|
var mapAttrOfActiveEleId = $(trEle).find("[name='DDL_" + mapExtThis.AttrsOfActive + "']").attr('id');
|
|
|
//获取这一行的数据
|
|
|
var rowIndexThis = (parseInt($($(trEle).find('td')[0]).text()) - 1);
|
|
|
setTrDataByData(rowIndexThis);
|
|
|
DDLAnsc(value, mapAttrOfActiveEleId, mapExtThis.MyPK, $(trEle).data().data);
|
|
|
});
|
|
|
|
|
|
DDLAnsc(ddlParent.val(), ddlChild.attr('id'), mapExt.MyPK, $(ddlParent.parent().parent()).data().data);
|
|
|
|
|
|
break;
|
|
|
case "AutoFullDLL": // 自动填充下拉框.
|
|
|
continue; //已经处理了。
|
|
|
case "AutoFull": //自动填充 //a+b=c DOC='@DanJia*@ShuLiang' 等待后续优化
|
|
|
//循环 KEYOFEN
|
|
|
//替换@变量
|
|
|
//处理 +-*%
|
|
|
|
|
|
//直接替换
|
|
|
if (mapExt.Doc != undefined && mapExt.Doc != '') {
|
|
|
//以 + -* 、% 来分割
|
|
|
//先来计算 + -* 、% 的位置
|
|
|
if (mapExt.Doc.indexOf('+') > 0 || mapExt.Doc.indexOf('-') > 0 || mapExt.Doc.indexOf('*') > 0 || mapExt.Doc.indexOf('/') > 0) {
|
|
|
var mapExtDocArr1 = []; // 字段@field
|
|
|
var lastOperatorIndex = -1;
|
|
|
var operatorArr = []; // 计算符+-*/
|
|
|
for (var j = 0; j < mapExt.Doc.length; j++) {
|
|
|
if (mapExt.Doc[j] == "+" || mapExt.Doc[j] == "-" || mapExt.Doc[j] == "*" || mapExt.Doc[j] == "/") {
|
|
|
operatorArr.push(mapExt.Doc[j]);
|
|
|
|
|
|
mapExtDocArr1.push(mapExt.Doc.substring(lastOperatorIndex + 1, j));
|
|
|
lastOperatorIndex = j;
|
|
|
}
|
|
|
}
|
|
|
mapExtDocArr1.push(mapExt.Doc.substring(lastOperatorIndex + 1, mapExt.Doc.length))
|
|
|
|
|
|
for (var m = 0; m < mapExtDocArr1.length; m++) {
|
|
|
var extDocObj1 = mapExtDocArr1[m].replace('@', '').replace('(', '').replace(')', '');
|
|
|
//将extDocObj1转换成KeyOfEn
|
|
|
var extObjAr = $.grep(workNodeData.Sys_MapAttr, function (val) {
|
|
|
return val.Name == extDocObj1 || val.KeyOfEn == extDocObj1;
|
|
|
});
|
|
|
|
|
|
if (extObjAr.length == 0) {
|
|
|
// alert("mapExt:" + mapExt.AttrOfOper + "配置有误");
|
|
|
} else {
|
|
|
extDocObj1 = extObjAr[0].KeyOfEn;
|
|
|
$(tr).find('[name=TB_' + mapExt.AttrOfOper + ']').attr('disabled', true);
|
|
|
var targetObj = $(tr).find('[name=TB_' + extDocObj1 + ']');
|
|
|
if (targetObj.length == 0) {
|
|
|
targetObj = $(tr).find('[name=DDL_' + extDocObj1 + ']');
|
|
|
if (targetObj.length == 0) {
|
|
|
targetObj = $(tr).find('[name=RB_' + extDocObj1 + ']')
|
|
|
if (targetObj.length > 0) {
|
|
|
targetObj.data().mapExt = mapExt;
|
|
|
targetObj.bind('click', function (obj) {
|
|
|
AutoFull(tr, obj, "RB_");
|
|
|
});
|
|
|
}
|
|
|
} else {
|
|
|
targetObj.data().mapExt = mapExt;
|
|
|
targetObj.bind('change', function (obj) {
|
|
|
AutoFull(tr, obj, "DDL_");
|
|
|
});
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
targetObj.data().mapExt = mapExt;
|
|
|
targetObj.bind('blur', function (obj) {
|
|
|
AutoFull(tr, obj, "TB_");
|
|
|
});
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 页面初始化后触第一个计算元素的onblur事件, 让表格行统计生效
|
|
|
*/
|
|
|
if (m == 0) { // 每一行第一列触发一次
|
|
|
//$(tr).find('[name=TB_' + extDocObj1 + ']').trigger("blur");
|
|
|
/**
|
|
|
* 该动作与<body onblur="SaveAll(this)">有冲突, 即:
|
|
|
* 页面初始化InitPage()调用到AfterBindEn_DealMapExt()并运行到这里
|
|
|
* 当input触发onblur事件后, body的onblur事件就被触发, 并调用SaveAll()方法
|
|
|
* SaveAll()方法又调用AjaxServiceGener()方法
|
|
|
* AjaxServiceGener()方法提交到后台返回后再次调用了InitPage()方法, 形成死循环
|
|
|
*
|
|
|
* 暂时将SaveAll()禁用
|
|
|
* 或将blur事件改为onchange事件
|
|
|
*/
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|