///
var athDesc = {}
var editImg = "";
$(function () {
Skip.addJs(basePath + "/WF/Scripts/xss.js");
var theme = filterXSS(localStorage.getItem("themeColorInfo"));
if (theme == null || theme == undefined || theme == "")
return;
var data = JSON.parse(theme);
var styleScope = document.getElementById("theme-data");
if (styleScope != null && data != null) {
var html = "";
//按钮
html += "\n .layui-btn{\n background-color:" + data.selectedMenu + ";\n}";
if (filterXSS(localStorage.getItem("themeColor")) == "rynn") {
html += "\n button>img{\n filter: hue-rotate(90deg) brightness(220%);\n}\n .layui-btn-primary{\n color: white;\n}";
} else {
html += "\n .layui-btn-primary{\n background:0 0 \n}";
}
//分页信息
html += "\n .layui-laypage .layui-laypage-curr .layui-laypage-em{\n background-color:" + data.selectedMenu + ";\n}\n .layui-laypage input:focus,.layui-laypage select:focus{\n border-color:" + data.selectedMenu + " !important\n}";
//时间
html += "\n .layui-laydate .layui-this{\n background-color:" + data.selectedMenu + " !important;\n}";
//复选框
html += "\n .layui-form-checked[lay-skin=primary] i{\n background-color:" + data.selectedMenu + " !important;\n} \n .layui-form-select dl dd.layui-this{\n background-color:" + data.selectedMenu + " !important;\n}";
html += "\n .layui-form-onswitch{\n background-color:" + data.selectedMenu + " !important;\n border-color:" + data.selectedMenu + " !important;\n}";
//多选
html += "\n .layui-form-checked, .layui-form-checked:hover{\n border-color:" + data.selectedMenu + " !important;\n} \n .layui-form-checked:hover i{\n color:" + data.selectedMenu + " !important;\n}";
//单选
html += "\n .layui-form-radio:hover *, .layui-form-radioed, .layui-form-radioed>i{\n color:" + data.selectedMenu + " !important;\n} \n .layui-form-select dl dd.layui-this{\n background-color:" + data.selectedMenu + " !important;\n}";
styleScope.innerHTML = filterXSS(html);
}
})
var frmMapAttrs;
var mapData = "";
function LoadFrmDataAndChangeEleStyle(frmData) {
mapData = frmData.Sys_MapData[0];
//加入隐藏控件.
var mapAttrs = frmData.Sys_MapAttr;
frmMapAttrs = mapAttrs;
var checkData = null;
// 主要是这里开始,这个mapAttrs就是定义的字段属性。根据不同类型的字段处理,看是数字还是金额还是xxx
$.each(mapAttrs, function (i, mapAttr) {
if (mapAttr.UIContralType == 18)
return true;
var val = ConvertDefVal(frmData, mapAttr.DefVal, mapAttr.KeyOfEn);
if (mapAttr.UIVisible == 0 && $("#TB_" + mapAttr.KeyOfEn).length == 0) {
$('#CCForm').append($(""));
return true;
}
// 这里大致分为了三类
// TB_前缀是文本框
$('#TB_' + mapAttr.KeyOfEn).attr("name", "TB_" + mapAttr.KeyOfEn);
// DDL => 下拉框
$('#DDL_' + mapAttr.KeyOfEn).attr("name", "DDL_" + mapAttr.KeyOfEn);
// CB => 单选多选
$('#CB_' + mapAttr.KeyOfEn).attr("name", "CB_" + mapAttr.KeyOfEn);
//富文本绑数据
if ($("#editor_" + mapAttr.KeyOfEn).length > 0) {
if (mapAttr.UIHeight < 180)
mapAttr.UIHeight = 180;
$("#editor_" + mapAttr.KeyOfEn).data(mapAttr);
}
if (mapAttr.DefValType == 0 && mapAttr.LGType != 1 && (val == "0" || val == "0.0000"))
val = "";
//设置ICON,如果有icon,并且是文本框类型.
SetICONForCtrl(mapAttr);
//下拉框赋值
if ($('#DDL_' + mapAttr.KeyOfEn).length == 1) {
// 判断下拉框是否有对应option, 若没有则追加
if (val != "" && $("option[value='" + val + "']", '#DDL_' + mapAttr.KeyOfEn).length == 0) {
var mainTable = frmData.MainTable[0];
var selectText = mainTable[mapAttr.KeyOfEn + "Text"];
if (selectText == null || selectText == undefined || selectText == "")
selectText = mainTable[mapAttr.KeyOfEn + "T"];
if (selectText != null && selectText != undefined && selectText != "")
$('#DDL_' + mapAttr.KeyOfEn).append("");
}
if (val != "") {
$('#DDL_' + mapAttr.KeyOfEn).val(val);
}
return true;
}
$('#TB_' + mapAttr.KeyOfEn).val(val);
//文本框.
if (mapAttr.UIContralType == 0) {
if (mapAttr.MyDataType == 8 && val != "") {
//获取DefVal,根据默认的小数点位数来限制能输入的最多小数位数
var attrdefVal = mapAttr.DefVal;
var bit;
if (attrdefVal != null && attrdefVal !== "" && attrdefVal.indexOf(".") >= 0)
bit = attrdefVal.substring(attrdefVal.indexOf(".") + 1).length;
else
bit = 2;
val = formatNumber(val, bit, ",", 1);
}
$('#TB_' + mapAttr.KeyOfEn).val(val);
if (!!mapAttr.Tip&& mapAttr.UIIsEnable == "1" && pageData.IsReadonly != "1") {
$('#TB_' + mapAttr.KeyOfEn).attr("placeholder", mapAttr.Tip);
$('#TB_' + mapAttr.KeyOfEn).on("focus", function () {
debugger
var elementId = this.id;
layer.tips("" + $(this).attr("placeholder") + "", '#' + elementId, { tips: [3, "#fff"] });
$(".layui-layer-tips").css("box-shadow", "1px 1px 50px rgb(0 0 0 / 30%)");
})
}
return true;
}
//checkbox.
if (mapAttr.UIContralType == 2) {
if (val == "1")
$('#CB_' + mapAttr.KeyOfEn).attr("checked", "true");
else
$('#CB_' + mapAttr.KeyOfEn).attr("checked", false);
}
//枚举
if (mapAttr.MyDataType == 2 && mapAttr.LGType == 1) {
$("#RB_" + mapAttr.KeyOfEn + "_" + val).attr("checked", 'checked');
return true;
}
//枚举复选框
if (mapAttr.MyDataType == 1 && mapAttr.LGType == 1) {
var checkBoxArray = val.split(",");
for (var k = 0; k < checkBoxArray.length; k++) {
$("input[name='CB_" + mapAttr.KeyOfEn + "']").each(function () {
if ($(this).val() == checkBoxArray[k]) {
$(this).attr("checked", true);
}
});
}
return true;
}
if (mapAttr.UIContralType == 14) { //签批组件
$("#TB_" + mapAttr.KeyOfEn).hide();
$("#WorkCheck").remove();
$("#Group_FWC").hide();
if (GetHrefUrl().indexOf("AdminFrm.htm") != -1)
return true;
//获取审核组件信息
var node = frmData.WF_Node == undefined ? null : frmData.WF_Node[0];
if (node != null && (node.FWCVer == 0 || node.FWCVer == "" || node.FWCVer == undefined))
FWCVer = 0;
else
FWCVer = 1;
if (checkData == null && node != null) {
Skip.addJs(laybase + "WorkOpt/WorkCheck.js");
isFistQuestWorkCheck = false;
checkData = WorkCheck_Init(FWCVer);
}
if (checkData != null && checkData != undefined) {
var checkField = ""
if (frmData.WF_FrmNode != null && frmData.WF_FrmNode != undefined && frmData.WF_FrmNode[0].FK_Node != 0) {
checkField = frmData.WF_FrmNode[0].CheckField;
} else {
checkField = checkData.WF_FrmWorkCheck[0].CheckField;
}
var height = $("#TB_" + mapAttr.KeyOfEn).css("height");
var _Html = "
" + GetWorkCheck_Node(checkData, mapAttr.KeyOfEn, checkField, FWCVer) + "
";
$("#TB_" + mapAttr.KeyOfEn).after(_Html);
}
return true;
}
if (mapAttr.UIContralType == 15) { //评论组件
$("#TB_" + mapAttr.KeyOfEn).hide();
$("#TB_" + mapAttr.KeyOfEn).after("");
return true;
}
/*if (mapAttr.UIContralType == 110) { //公文正文组件
if (mapAttr.UIIsEnable == 1 && pageData.IsReadonly != "1") {
var localHref = GetLocalWFPreHref();
var url = localHref + "/WF/CCForm/Components/GovDocFile.htm?FrmID=" + frmData.Sys_MapData[0].No + "&OID=" + pageData.WorkID + "&FK_Flow=" + GetQueryString("FK_Flow");
$("#TB_GovDocFile").attr("readonly", "readonly");
$("#TB_GovDocFile").on("click", function () {
window.OpenBootStrapModal(url, "GovDocFileIFrame", "公文正文组件", 600, 200, "icon-edit", false);
})
}
return true;
}*/
if (mapAttr.UIContralType == 17) { //发文字号
if (mapAttr.UIIsEnable == 1 && pageData.IsReadonly != "1") {
var localHref = GetLocalWFPreHref();
var url = localHref + "/WF/CCForm/Components/DocWord.htm?FrmID=" + frmData.Sys_MapData[0].No + "&OID=" + pageData.WorkID + "&FK_Flow=" + GetQueryString("FK_Flow");
$("#TB_DocWord").attr("readonly", "readonly");
$("#TB_DocWord").on("click", function () {
window.OpenBootStrapModal(url, "DocWordIFrame", "发文字号", 600, 200, "icon-edit", false);
})
}
return true;
}
if (mapAttr.UIContralType == 170) { //收文字号
if (mapAttr.UIIsEnable == 1 && pageData.IsReadonly != "1") {
var localHref = GetLocalWFPreHref();
var url = localHref + "/WF/CCForm/Components/DocWordReceive.htm?FrmID=" + frmData.Sys_MapData[0].No + "&OID=" + pageData.WorkID + "&FK_Flow=" + GetQueryString("FK_Flow");
$("#TB_DocWordReceive").attr("readonly", "readonly");
$("#TB_DocWordReceive").on("click", function () {
window.OpenBootStrapModal(url, "DocWordReceiveIFrame", "收文字号", 600, 200, "icon-edit", false);
})
}
return true;
}
})
//增加审核组件附件上传的功能
if ($("#uploaddiv").length > 0) {
var explorer = window.navigator.userAgent;
if (((explorer.indexOf('MSIE') >= 0) && (explorer.indexOf('Opera') < 0) || (explorer.indexOf('Trident') >= 0)))
AddUploadify("uploaddiv", $("#uploaddiv").attr("data-info"));
else
AddUploafFileHtm("uploaddiv", $("#uploaddiv").attr("data-info"));
}
//获取正则表达式
var expressions = $.grep(frmData.Sys_MapExt, function (mapExt) {
return mapExt.ExtType == "RegularExpression";
})
var verifys = {
required: [/[\S]+/, "必填项不能为空"],
};
//设置只读,必填,正则表单式字段
for (var i = 0; i < mapAttrs.length; i++) {
var mapAttr = mapAttrs[i];
//去掉左右空格.
mapAttr.KeyOfEn = mapAttr.KeyOfEn.replace(/(^\s*)|(\s*$)/g, "");
//设置文本框只读.
if (mapAttr.UIVisible != 0 && (mapAttr.UIIsEnable == false || mapAttr.UIIsEnable == 0 || isReadonly == true)) {
$('#TB_' + mapAttr.KeyOfEn).attr('disabled', true);
$('#CB_' + mapAttr.KeyOfEn).attr('disabled', true);
$('#DDL_' + mapAttr.KeyOfEn).attr('disabled', true);
$('input[name=CB_' + mapAttr.KeyOfEn + ']').attr("disabled", "disabled");
$('input[name=RB_' + mapAttr.KeyOfEn + ']').attr("disabled", "disabled");
if (mapAttr.MyDataType == "8")
$('#TB_' + mapAttr.KeyOfEn).css("text-align", "");
}
// $('#TB_' + mapAttr.KeyOfEn).removeClass("form-control");
//$('#CB_' + mapAttr.KeyOfEn).removeClass("form-control");
// $('#RB_' + mapAttr.KeyOfEn).removeClass("form-control");
//$('#DDL_' + mapAttr.KeyOfEn).removeClass("form-control");
var layVerify = "";
var expression = $.grep(expressions, function (mapExt) {
return mapExt.AttrOfOper == mapAttr.KeyOfEn && mapExt.FK_MapData == mapAttr.FK_MapData;
});
if (mapAttr.UIIsInput == 1 && mapAttr.UIIsEnable == 1) {
if ($("#TB_" + mapAttr.KeyOfEn).hasClass("rich"))
layVerify = "";
else
layVerify = "required";
}
if (expression.length != 0) {
layVerify = layVerify == "" ? mapAttr.KeyOfEn : layVerify + "|" + mapAttr.KeyOfEn;
if (expression[0].Doc != null && expression[0].Doc != "") {
var doc = expression[0].Doc.replace(/【/g, '[').replace(/】/g, ']').replace(/(/g, '(').replace(/)/g, ')').replace(/{/g, '{').replace(/}/g, '}');
verifys[mapAttr.KeyOfEn] = [];
verifys[mapAttr.KeyOfEn].push(cceval(doc));
verifys[mapAttr.KeyOfEn].push(expression[0].Tag1);
$('#TB_' + mapAttr.KeyOfEn).addClass("CheckRegInput");
}
}
if (layVerify != "") {
$('#TB_' + mapAttr.KeyOfEn).attr("lay-verify", layVerify);
$('#CB_' + mapAttr.KeyOfEn).attr("lay-verify", layVerify);
$('#RB_' + mapAttr.KeyOfEn).attr("lay-verify", layVerify);
$('#DDL_' + mapAttr.KeyOfEn).attr("lay-verify", layVerify);
}
}
layui.form.verify(verifys);
//是否存在图标附件
if ($(".editimg").length > 0) {
layui.config({
base: laybase + 'Scripts/layui/ext/'
}).use(['form', 'croppers'], function () {
var croppers = layui.croppers
, layer = layui.layer;
//创建一个头像上传组件
$.each($(".editimg"), function (idex, item) {
croppers.render({
elem: '#' + item.id
, saveW: 150 //保存宽度
, saveH: 150 //保存高度
, mark: 1 / 1 //选取比例
, area: '900px' //弹窗宽度
, url: $(item).data("info") //图片上传接口返回和(layui 的upload 模块)返回的JOSN一样
, done: function (data) { //上传完毕回调
if (data.SourceImage != undefined) {
$('#Img' + $(item).data("ref")).attr('src', basePath + "/" + data.SourceImage + "?M=" + Math.random());
} else {
return layer.msg('上传失败');
}
}
});
});
});
}
//设置是否隐藏分组、获取字段分组所有的tr
var trs = $("#CCForm .FoolFrmGroupBar");
var isHidden = false;
// 这部分应该是在处理分组和隐藏字段
$.each(trs, function (i, obj) {
//获取所有跟随的同胞元素,其中有不隐藏的tr,就跳出循环
var sibles = $(obj).nextAll();
var isAllHidenField = false;
if (sibles.length == 0) {
$(obj).hide();
return true;
}
for (var k = 0; k < sibles.length; k++) {
var sible = $(sibles[k]);
if (k == 0 && sible.hasClass("FoolFrmFieldRow") == true)
break;
if (k == 0 && sible.hasClass("layui-row") == true)
break;
if (k == 0 && sible.hasClass("FoolFrmFieldRow") == true) {
isHidden = true;
break;
}
if (sibles[k].type == "hidden" && sibles[k].localName == "input") {
isAllHidenField = true;
continue;
}
isAllHidenField = false;
}
if (isHidden == true || isAllHidenField == true)
$(obj).hide();
});
}
/**
* 给字段增加图标
* @param {any} mapAttr
*/
function SetICONForCtrl(mapAttr) {
var icon = mapAttr.ICON;
var id = "TDIV_" + mapAttr.KeyOfEn;
if (mapAttr.ICON.length < 2 || mapAttr.UIContralType != 0) {
$('#' + id).removeClass("ccbpm-input-group");
return;
}
if (mapAttr.MyDataType >= 7)
return;
var ctrl = $('#' + id);
if (ctrl.length <= 0)
return;
if (icon) {
var htmlBefore = "";
htmlBefore += ' ';
ctrl.prepend(htmlBefore);
}
}
var currentURL = GetHrefUrl();
var laybase = "./";
if (currentURL.indexOf("CCForm") != -1 || currentURL.indexOf("CCBill") != -1)
laybase = "../";
if (currentURL.indexOf("AdminFrm.htm") != -1 || currentURL.indexOf("/Admin/") != -1 || currentURL.indexOf("Comm/RefFunc") != -1)
laybase = "../../";
//处理 MapExt 的扩展. 工作处理器,独立表单都要调用他.
function AfterBindEn_DealMapExt(frmData) {
var mapData = frmData.Sys_MapData[0];
var frmType = mapData.FrmType;
//字段扩展属性集合
var mapExts = frmData.Sys_MapExt;
//根据字段的主键分组
mapExts = GetMapExtsGroup(mapExts);
var mapAttrs = frmData.Sys_MapAttr;
var isFirstTBFull = true;
var baseUrl = "./CCForm/";
if (GetHrefUrl().indexOf("CCForm") != -1)
baseUrl = "./";
if (GetHrefUrl().indexOf("CCBill") != -1)
baseUrl = "../CCForm/";
if (GetHrefUrl().indexOf("AdminFrm.htm") != -1 || GetHrefUrl().indexOf("RefFunc") != -1)
baseUrl = "../../CCForm/";
var isHaveLoadMapExt = false;
var isHaveEnableJs = false;
// 这里是处理栅格,计算宽度百分比
$.each(mapAttrs, function (idx, mapAttr) {
//字段不可见
if (mapAttr.UIVisible == 0)
return true;
//证件类扩展
if (mapAttr.UIContralType == 13)
return true;
if (isHaveLoadMapExt == false) {
Skip.addJs(baseUrl + "MapExt2021.js");
isHaveLoadMapExt = true;
}
var mypk = mapAttr.MyPK;
if (mypk == null || mypk == undefined || mypk == "")
mapAttr.MyPK = mapAttr.FK_MapData + "_" + mapAttr.KeyOfEn;
//如果是枚举、下拉框、复选框判断是否有选项联动其他控件
if (mapAttr.LGType == 1 && (mapAttr.UIContralType == 1 || mapAttr.UIContralType == 3)
|| (mapAttr.LGType == "0" && mapAttr.MyDataType == "1" && mapAttr.UIContralType == 1)
|| (mapAttr.LGType == "2" && mapAttr.MyDataType == "1")
|| mapAttr.MyDataType == "4") {
var AtPara = mapAttr.AtPara;
var isEnableJS = AtPara == "" || AtPara == null || AtPara == undefined || AtPara.indexOf('@IsEnableJS=1') == -1 ? false : true;
//不存在联动其他控件且不存在其他扩展属性
if (isEnableJS == false && (mapExts[mapAttr.MyPK] == undefined || mapExts[mapAttr.MyPK].length == 0))
return true;
var model = mapAttr.LGType == 1 && (mapAttr.UIContralType == 2 || mapAttr.UIContralType == 3) ? "radio" : "select";
model = mapAttr.MyDataType == "4" ? "checkbox" : model;
var selectVal = "";
if (model == "radio") {
selectVal = $('input[name="RB_' + mapAttr.KeyOfEn + '"]:checked').val()
}
if (model == "select") {
selectVal = $("#DDL_" + mapAttr.KeyOfEn).val()
}
if (model == "checkbox") {
selectVal = $("#CB_" + mapAttr.KeyOfEn).val()
}
if (isEnableJS == true && isHaveEnableJs == false) {
Skip.addJs(baseUrl + "OptionLinkOthers2021.js");
isHaveEnableJs = true;
}
SetRadioSelectMapExt(mapExts[mapAttr.MyPK], mapAttr, selectVal, isEnableJS, model, frmType, false);
if (mapAttr.UIIsEnable == 0 || isReadonly == true)
return;
if (model == "radio") {
layui.form.on('radio(' + mapAttr.KeyOfEn + ')', function (element) {
var data = $(this).data();
SetRadioSelectMapExt(data.mapExts, data.mapAttr, element.value, data.isEnableJS, "radio", frmType, true, element);
});
} else if (model == "select") {
layui.form.on('select(' + mapAttr.KeyOfEn + ')', function (element) {
SetRadioSelectMapExt(data.mapExts, data.mapAttr, element.value, data.isEnableJS, "select", frmType, true, element);
});
} else if (model == "checkbox") {
var obj = $("#CB_" + mapAttr.KeyOfEn);
var sky = obj.attr("lay-skin");
sky = sky == null || sky == undefined ? "" : sky;
if (sky == "switch")
layui.form.on('switch(' + mapAttr.KeyOfEn + ')', function (element) {
if (element.elem.checked == true)
SetRadioSelectMapExt(data.mapExts, data.mapAttr, "1", data.isEnableJS, "select", frmType, true, element);
else
SetRadioSelectMapExt(data.mapExts, data.mapAttr, "0", data.isEnableJS, "select", frmType, true, element);
});
else
layui.form.on('checkbox(' + mapAttr.KeyOfEn + ')', function (element) {
SetRadioSelectMapExt(data.mapExts, data.mapAttr, element.value, data.isEnableJS, "select", frmType, true, element);
});
}
var data = {
mapAttr: mapAttr,
mapExts: mapExts[mapAttr.MyPK],
isEnableJS: isEnableJS
};
$("input[name=RB_" + mapAttr.KeyOfEn + "]").data(data);
$("#CB_" + mapAttr.KeyOfEn).data(data);
$("#DDL_" + mapAttr.KeyOfEn).data(data);
return true;
}
//如果是整数,浮点型,金额类型的扩展属性
if (mapAttr.MyDataType == 2 || mapAttr.MyDataType == 3 || mapAttr.MyDataType == 5 || mapAttr.MyDataType == 8) {
if (isReadonly == true)
return true;
//数值字段绑定的chang事件
var isEnableNumEnterLimit = GetPara(mapAttr.AtPara, "IsEnableNumEnterLimit");
isEnableNumEnterLimit = isEnableNumEnterLimit == null || isEnableNumEnterLimit == "" || isEnableNumEnterLimit == undefined || isEnableNumEnterLimit == "0" ? false : true;
var min = 0, max = 0;
if (isEnableNumEnterLimit == true) {
min = GetPara(mapAttr.AtPara, "MinNum");
if (min == undefined || min == "")
min = 0;
max = GetPara(mapAttr.AtPara, "MaxNum");
if (max == undefined || max == "")
max = 100000;
$("#TB_" + mapAttr.KeyOfEn).attr("data-min", min);
$("#TB_" + mapAttr.KeyOfEn).attr("data-max", max);
}
//没有扩展属性
if (mapExts[mapAttr.MyPK] == undefined || mapExts[mapAttr.MyPK].length == 0) {
$('#TB_' + mapAttr.KeyOfEn).bind("change", function () {
var expVal = $(this).val();//获取要转换的值
var min = $(this).attr("data-min");
var max = $(this).attr("data-max");
if (min && parseInt(expVal) < parseInt(min)) {
layer.alert("值不能小于设置的最小值:" + min);
expVal = min;
$(this).val(expVal);
}
if (max && parseInt(expVal) > parseInt(max)) {
layer.alert("值不能大于设置的最大值:" + max);
expVal = max;
$(this).val(expVal);
}
});
return true;
}
SetNumberMapExt(mapExts[mapAttr.MyPK], mapAttr);
return true;
}
//没有扩展属性
if (mapExts[mapAttr.MyPK] == undefined || mapExts[mapAttr.MyPK].length == 0)
return true;
//如果是日期型或者时间型
if (mapAttr.MyDataType == 6 || mapAttr.MyDataType == 7) {
if (mapAttr.UIIsEnable == 0 || isReadonly == true)
return true;
SetDateExt(mapExts[mapAttr.MyPK], mapAttr)
return true;
}
//文本字段扩展属性
$.each(mapExts[mapAttr.MyPK], function (k, mapExt1) {
var mapExt = new Entity("BP.Sys.MapExt", mapExt1);
mapExt.MyPK = mapExt1.MyPK;
//处理Pop弹出框的问题
var PopModel = GetPara(mapAttr.AtPara, "PopModel");
if (PopModel != undefined && PopModel != "" && mapExt.ExtType.indexOf("Pop") != -1) {
if (mapExt.ExtType != PopModel)
return true;
if (mapAttr.UIIsEnable == 0 || isReadonly == true || $("#TB_" + mapAttr.KeyOfEn).length == 0)
return true;
PopMapExt(PopModel, mapAttr, mapExt, frmData, baseUrl, mapExts);
return true;
}
//处理文本自动填充
var TBModel = GetPara(mapAttr.AtPara, "TBFullCtrl");
if (TBModel != undefined && TBModel != "" && TBModel != "None" && (mapExt.ExtType == "FullData")) {
if (mapAttr.UIIsEnable == 0 || isReadonly == true || $("#TB_" + mapExt.AttrOfOper).length == 0)
return true;
if (TBModel == "Simple") {
if (isFirstTBFull == true) {
layui.config({
base: laybase + 'Scripts/layui/ext/'
});
isFirstTBFull = false;
}
//判断时简洁模式还是表格模式
layui.use('autocomplete', function () {
var autocomplete = layui.autocomplete;
autocomplete.render({
elem: "#TB_" + mapAttr.KeyOfEn,
url: mapExt.MyPK,
response: { code: 'code', data: 'data' },
template_val: '{{d.No}}',
template_txt: '{{d.Name}} {{d.No}}',
onselect: function (data) {
FullIt(data.No, this.url, this.elem[0].id);
}
})
});
return true;
}
if (TBModel == "Table") {
var obj = $("#TB_" + mapAttr.KeyOfEn);
obj.attr("onkeyup", "showDataGrid(\'TB_" + mapAttr.KeyOfEn + "\',this.value, \'" + mapExt.MyPK + "\');");
//showDataGrid("TB_" + mapAttr.KeyOfEn, $("#TB_" + mapAttr.KeyOfEn).val(), mapExt);
}
}
//alert(mapExt.Doc);
switch (mapExt.ExtType) {
case "MultipleChoiceSmall"://小范围多选
case "SingleChoiceSmall"://小范围单选
if (mapExt.DoWay == 0)//不设置
break;
var tag = mapExt.Tag;
if (tag == null || tag == undefined || tag == "")
tag = "0";
if (tag == "0" && (mapAttr.UIIsEnable == 0 || isReadonly == true)) {
//只显示
$("#TB_" + mapAttr.KeyOfEn).hide();
var val = frmData.MainTable[0][mapAttr.KeyOfEn + "T"];
$("#TB_" + mapAttr.KeyOfEn).after("" + val + "
");
break;
}
var data = GetDataTableOfTBChoice(mapExt, frmData, $("#TB_" + mapAttr.KeyOfEn).val());
data = data == null ? [] : data;
$("#TB_" + mapAttr.KeyOfEn).hide();
//下拉框
if (tag == "0") {
$("#TB_" + mapAttr.KeyOfEn).after("")
layui.use('xmSelect', function () {
var xmSelect = layui.xmSelect;
xmSelect.render({
el: "#mapExt_" + mapAttr.KeyOfEn,
paging: data.length > 15 ? true : false,
data: data,
autoRow: true,
radio: mapExt.ExtType == "MultipleChoiceSmall" ? false : true,
clickClose: mapExt.ExtType == "MultipleChoiceSmall" ? false : true,
on: function (data) {
var arr = data.arr;
var vals = [];
var valTexts = [];
$.each(arr, function (i, obj) {
vals[i] = obj.value;
valTexts[i] = obj.name;
})
var elID = data.el.replace("mapExt", "TB");
$(elID).val(vals.join(","));
$(elID + "T").val(valTexts.join(","));
}
})
});
break;
}
var val = $("#TB_" + mapAttr.KeyOfEn).val();
if (data == null || data == undefined || data == "") {
$("#TB_" + mapAttr.KeyOfEn).after("数据获取有误,没有选项");
break;
}
var disabled = "";
if (mapAttr.UIIsEnable == 0 || isReadonly == true)
disabled = "disabled='disabled'";
var tbID = "TB_" + mapAttr.KeyOfEn;
var name = "CB_" + mapAttr.KeyOfEn + "_" + mapAttr.KeyOfEn;
var selectType = mapExt.ExtType == "MultipleChoiceSmall" ? 1 : 0;
var _html = ' ';
$.each(data, function (i, item) {
var id = "CB_" + mapAttr.KeyOfEn + "_" + item.value;
var checked = "";
if (selectType == 0 && val == item.value)
checked = " checked='checked'";
if (selectType == 1 && val.indexOf(item.value + ",") != -1)
checked = " checked='checked'";
_html += "";
if (selectType == 0)
_html += "";
if (tag == "2")
_html += "";
})
_html += "
";
$("#TB_" + mapAttr.KeyOfEn).after(_html);
if (selectType == 1)
layui.form.on('checkbox(' + name + ')', function (element) {
changeValue(element.value, $(this).data().info, 1);
});
if (selectType == 0)
layui.form.on('radio(' + name + ')', function (element) {
var data = $(this).data();
changeValue(element.value, $(this).data().info, 0);
});
layui.form.render();
break;
case "MultipleChoiceSearch"://搜索多选
if (mapAttr.UIIsEnable == 0 || isReadonly == true)
break;
var isLoad = true;
$("#TB_" + mapAttr.KeyOfEn).hide();
$("#TB_" + mapAttr.KeyOfEn).after("")
//单选还是多选
var selectType = mapExt.GetPara("SelectType");
selectType = selectType == null || selectType == undefined || selectType == "" ? 1 : selectType;
layui.use('xmSelect', function () {
var xmSelect = layui.xmSelect;
xmSelect.render({
el: "#mapExt_" + mapAttr.KeyOfEn,
autoRow: true,
prop: {
name: 'Name',
value: 'No',
},
radio: selectType == 1 ? false : true,
clickClose: selectType == 1 ? false : true,
toolbar: { show: selectType == 1 ? true : false },
filterable: true,
remoteSearch: true,
mapExt: mapExt.MyPK,
on: function (data) {
if (isLoad == true) {
isLoad = false;
return;
}
var arr = data.arr;
var vals = [];
var valTexts = [];
$.each(arr, function (i, obj) {
vals[i] = obj.No;
valTexts[i] = obj.Name;
})
var elID = data.el.replace("mapExt", "TB");
$(elID).val(valTexts.join(","));
SaveFrmEleDBs(arr, elID.replace("#TB_", ""), mapExt);
},
remoteMethod: function (val, cb, show) {
//这里如果val为空, 则不触发搜索
/*if (!val) {
return cb([]);
}*/
var mapExt = new Entity("BP.Sys.MapExt", this.mapExt);
//选中的值
var selects = new Entities("BP.Sys.FrmEleDBs");
selects.Retrieve("FK_MapData", mapExt.FK_MapData, "EleID", mapExt.AttrOfOper, "RefPKVal", pageData.WorkID);
var dt = GetDataTableByDB(mapExt.Doc, mapExt.DBType, mapExt.FK_DBSrc, val,mapExt,"Doc");
var data = [];
dt.forEach(function (item) {
data.push({
No: item.No,
Name: item.Name,
selected: IsHaveSelect(item.No, selects)
})
})
cb(data);
},
})
})
break;
case "FastInput": //是否启用快速录入
if (mapAttr.UIIsEnable == false || mapAttr.UIIsEnable == 0 || GetQueryString("IsReadonly") == "1")
break;
var tbFastInput = $("#TB_" + mapExt.AttrOfOper);
//获取大文本的长度
var left = 0;
if (tbFastInput.parent().length != 0)
left = tbFastInput.parent().css('left') == "auto" ? 0 : parseInt(tbFastInput.parent().css('left').replace("px", ""));
var width = tbFastInput.width() + left;
width = tbFastInput.parent().css('left') == "auto" ? width - 180 : width - 70;
var content = $("
");
content.append("常用词汇 清空");
tbFastInput.after(content);
tbFastInput.on("mouseover", function () {
$("#" + this.id.replace("TB_", "span_")).show();
});
tbFastInput.on("blur", function () {
$("#" + this.id.replace("TB_", "span_")).hide();
});
$("#span_" + mapExt.AttrOfOper).hide();
break;
case "MultipleInputSearch"://高级快速录入
break;
case "BindFunction"://绑定函数(现在只处理文本,其他的单独处理了)
if (mapAttr.UIIsEnable == 0 || isReadonly == true)
break;
if ($('#TB_' + mapExt.AttrOfOper).length == 1) {
$('#TB_' + mapExt.AttrOfOper).bind(DynamicBind(mapExt, "TB_"));
break;
}
break;
case "FieldNameLink": //标签名超链接
if (mapExt.DoWay == 0)
break;
var ctrl = $("#Lab_" + mapAttr.KeyOfEn);
$("#Lab_" + mapAttr.KeyOfEn).wrap($(''));
break;
case "ReadOnlyLink"://字段值超链接
if (mapExt.DoWay == 0)
break;
var val = $("#TB_" + mapAttr.KeyOfEn).val();
if (val == "")
break;
var frmEleDBs = new Entities("BP.Sys.FrmEleDBs");
frmEleDBs.Retrieve("EleID", mapExt.AttrOfOper, "RefPKVal", pageData.WorkID);
var container = $("");
$.each(frmEleDBs, function (idx, item) {
container.append($('' + item.Tag2 + ''))
})
$("#TB_" + mapAttr.KeyOfEn).after(container);
$("#TB_" + mapAttr.KeyOfEn).hide();
break;
case "FullData"://POP返回值的处理,放在了POP2021.js
break;
case "RegularExpression":
$('#TB_' + mapExt.AttrOfOper).data(mapExt);
$('#TB_' + mapExt.AttrOfOper).on(mapExt.Tag.substring(2), function () {
var mapExt = $(this).data();
var filter = mapExt.Doc.replace(/【/g, '[').replace(/】/g, ']').replace(/(/g, '(').replace(/)/g, ')').replace(/{/g, '{').replace(/}/g, '}');
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;
}
if (re.test($(this).val()) == false) {
layer.msg(mapExt.Tag1, { icon: 5 });
$(this).css("border-color", "red");
} else {
$(this).css("border-color", "#eee");
}
})
break;
case "StringJoint":
if (mapExt.Doc == undefined || mapExt.Doc == '')
break;
Stringcalculator(mapExt);
break;
default:
layer.alert(mapAttr.Name + "字段扩展属性" + mapExt.ExtType + "该类型还未解析,请反馈给开发人员");
break;
}
});
return true;
});
}
function GetFieldNameLink(name, extMyPK) {
var en = new Entity("BP.Sys.MapExt");
en.SetPKVal(extMyPK);
if (en.RetrieveFromDBSources() == 0) {
alert("字段名" + name + ":弹窗提示配置丢失");
return
}
if (en.DoWay == 0)
return;
var doc = en.Doc;
doc = DealExp(doc);
switch (parseInt(en.DoWay)) {
case 0:
return;
case 1:
layer.alert(doc);
return;
case 2:
OpenLayuiDialog(doc, "", window.innerWidth * 2 / 3, 100, "r");
return;
case 3:
OpenLayuiDialog(doc, "", window.innerWidth * 2 / 3, 80, "auto");
return;
case 4:
window.open(doc, '_blank').location
return;
}
}
function GetReadOnlyLink(name, val, extMyPK) {
var en = new Entity("BP.Sys.MapExt");
en.SetPKVal(extMyPK);
if (en.RetrieveFromDBSources() == 0) {
alert("字段值" + name + ":弹窗提示配置丢失");
return
}
if (en.DoWay == 0)
return;
var doc = en.Doc;
doc = doc.replace("@Key", val).replace("@key", val);
doc = DealExp(doc);
switch (parseInt(en.DoWay)) {
case 0:
return;
case 1:
layer.alert(doc);
return;
case 2:
OpenLayuiDialog(doc, "", window.innerWidth * 2 / 3, 100, "r");
return;
case 3:
OpenLayuiDialog(doc, "", window.innerWidth * 2 / 3, 80, "auto");
return;
case 4:
window.open(doc, '_blank').location
return;
}
}
function changeValue(tbval, tbID, type) {
var strgetSelectValue = "";
var getSelectValueMenbers = $("input[name='CB_" + tbID + "_" + tbID + "']:checked").each(function (j) {
if (type == 0)
strgetSelectValue = $(this).val();
else {
if (j >= 0) {
strgetSelectValue += $(this).val() + ",";
}
}
});
$("#TB_" + tbID).val(strgetSelectValue);
}
/**
* 对mapExt分组
* @param {any} mapExts
*/
var isFirstXmSelect = true;
function GetMapExtsGroup(mapExts) {
var map = {};
var mypk = "";
//对mapExt进行分组,根据AttrOfOper
$.each(mapExts, function (i, mapExt) {
//不是操作字段不解析
if (mapExt.AttrOfOper == "")
return true;
if (mapExt.ExtType == "DtlImp"
|| mapExt.MyPK.indexOf(mapExt.FK_MapData + '_Table') >= 0
|| mapExt.MyPK.indexOf('PageLoadFull') >= 0
|| mapExt.ExtType == 'StartFlow'
|| mapExt.ExtType == 'AutoFullDLL'
|| mapExt.ExtType == 'ActiveDDLSearchCond'
|| mapExt.ExtType == 'AutoFullDLLSearchCond'
|| mapExt.ExtType == 'HtmlText')
return true;
mypk = mapExt.FK_MapData + "_" + mapExt.AttrOfOper;
if (isFirstXmSelect == true) {
layui.config({
base: laybase + 'Scripts/layui/ext/'
});
isFirstXmSelect = false;
}
if (!map[mypk])
map[mypk] = [mapExt];
else
map[mypk].push(mapExt);
});
var res = [];
Object.keys(map).forEach(key => {
res.push({
attrKey: key,
data: map[key],
})
});
console.log(res);
return map;
}
/**
* 枚举,下拉框字段的扩展属性
* @param {any} mapExts 扩展属性集合
* @param {any} mapAttr 字段属性
* @param {any} selectVal 选中的值
* @param {any} isEnableJS 是否联动其他控件
* @param {any} model 类型 单选按钮 下拉框 复选框
* @param {any} frmType 表单类型 傻瓜表单 开发者表单
* @param {any} tag 标记,无实际意义
*/
function SetRadioSelectMapExt(mapExts, mapAttr, selectVal, isEnableJS, model, frmType, tag, element) {
//联动其他控件
if (isEnableJS == true && (selectVal != null && selectVal != undefined && selectVal != "")) {
if (model == "radio" && selectVal == -1) {
} else {
cleanAll(mapAttr.KeyOfEn, frmType);
setEnable(mapAttr.FK_MapData, mapAttr.KeyOfEn, selectVal, frmType);
}
}
if (mapExts == null || mapExts == undefined || mapExts.length == 0)
return;
//其他扩展属性
$.each(mapExts, function (idx, mapExt) {
//填充其他控件
switch (mapExt.ExtType) {
case "FullData": //填充其他控件
if (model == "checkbox")
break;
var isFullData = GetPara(mapAttr.AtPara, "IsFullData");
isFullData = isFullData == undefined || isFullData == "" || isFullData != "1" ? false : true;
if (isFullData == true)
DDLFullCtrl(selectVal, "DDL_" + mapExt.AttrOfOper, mapExt.MyPK);
break;
case "BindFunction"://绑定函数
if (tag == true) {
var doc = DealExp(mapExt.Doc);
DBAccess.RunFunctionReturnStr(doc);
}
break;
case "ActiveDDL"://级联其他控件
if (model == "checkbox")
break;
var ddlPerant = $("#DDL_" + mapExt.AttrOfOper);
var ddlChild = $("#DDL_" + mapExt.AttrsOfActive);
if (ddlPerant.length == 0 || ddlChild.length == 0)
break;
DDLAnsc(selectVal, "DDL_" + mapExt.AttrsOfActive, mapExt);
break;
case "FieldNameLink":
if (tag == true)
break;
//大块文本帮助.
if (mapExt.DoWay == 0)
break;
$("#Lab_" + mapAttr.KeyOfEn).wrap($(''));
break;
default:
layer.alert(mapAttr.Name + "字段扩展属性" + mapExt.ExtType + "该类型还未解析,请反馈给开发人员");
break;
}
})
layui.form.render();
}
/**
* 时间字段扩展属性的解析
* @param {any} mapExts
* @param {any} mapAttr
* @param {any} targetID
*/
function SetDateExt(mapExts, mapAttr) {
var funcDoc = "";
var roleExt = null;
var FullExt = null;
$.each(mapExts, function (k, mapExt1) {
var mapExt = new Entity("BP.Sys.MapExt", mapExt1);
mapExt.MyPK = mapExt1.MyPK;
if (mapExt.ExtType == "BindFunction")
funcDoc = mapExt.Doc;
if (mapExt.ExtType == "DataFieldInputRole" && mapExt.DoWay == 1) {
roleExt = mapExt;
}
if (mapExt.ExtType == "FullData") {
FullExt = mapExt;
}
if (mapExt.ExtType == "FieldNameLink") {
//大块文本帮助.
if (mapExt.DoWay == 0)
return true;
$("#Lab_" + mapAttr.KeyOfEn).wrap($(''));
}
});
var isFullData = GetPara(mapAttr.AtPara, "IsFullData");
isFullData = isFullData == undefined || isFullData == "" || isFullData != "1" ? false : true;
var format = $("#TB_" + mapAttr.KeyOfEn).attr("data-info");
var type = $("#TB_" + mapAttr.KeyOfEn).attr("data-type");
var dateOper = "";
if (roleExt != null) {
if (roleExt.Tag1 == 1) {//不能选择历史时间
dateOper = {
elem: '#TB_' + mapAttr.KeyOfEn,
format: format, //可任意组合
type: type,
min: 0,
funDoc: funcDoc,
keyOfEn: mapAttr.KeyOfEn,
fullMyPK: isFullData == false ? "" : FullExt.MyPK,
ready: function (date) {
if (this.format.indexOf("HH") != -1) {
var now = new Date();
var mm = "";
if (now.getMinutes() < 10)
mm = "0" + now.getMinutes();
else
mm = now.getMinutes();
var ss = "";
if (now.getSeconds() < 10)
ss = "0" + now.getSeconds();
else
ss = now.getSeconds();
this.dateTime.hours = now.getHours();
this.dateTime.minutes = mm;
this.dateTime.seconds = ss;
}
},
change: function (value, date, endDate) {
if (this.type != "year")
$('.laydate-btns-confirm').click();
},
done: function (value, date, endDate) {
$(this.elem).val(value);
if (this.funDoc != "")
DBAccess.RunFunctionReturnStr(this.funDoc);
var data = $(this.elem).data();
if (data && data.ReqDay != null && data.ReqDay != undefined)
ReqDays(data.ReqDay);
if (this.fullMyPK != "")
DDLFullCtrl(value, "TB_" + this.keyOfEn, this.fullMyPK);
}
}
}
if (roleExt.Tag2 == 1) {
//根据选择的条件进行日期限制
var isHaveOper = $("#TB_" + roleExt.Tag4).is(".ccdate");
var tagM = $.grep(frmData.Sys_MapAttr, function (item) {
return item.KeyOfEn == roleExt.Tag4 && item.FK_MapData == roleExt.FK_MapData;
})[0];
/** var startOper = "";
startOper = {
elem: '#TB_' + roleExt.Tag4,
format: format, //可任意组合
type: type,
operKey: mapAttr.KeyOfEn,
operKeyName: mapAttr.Name,
oper: roleExt.Tag3,
ready: function (date) {
if (this.format.indexOf("HH") != -1) {
var now = new Date();
var mm = "";
if (now.getMinutes() < 10)
mm = "0" + now.getMinutes();
else
mm = now.getMinutes();
var ss = "";
if (now.getSeconds() < 10)
ss = "0" + now.getSeconds();
else
ss = now.getSeconds();
this.dateTime.hours = now.getHours();
this.dateTime.minutes = mm;
this.dateTime.seconds = ss;
}
},
change: function (value, date, endDate) {
$('.laydate-btns-confirm').click();
},
done: function (value, date, endDate) {
//比对的时间字段值
var operVal = $('#TB_' + this.operKey).val();
var oper = this.oper;
var msg = "";
switch (oper) {
case "dayu":
if (value >= operVal && operVal != "")
msg = "所选日期不能大于等于[" + this.operKeyName + "]对应的日期时间";
break;
case "dayudengyu":
if (value > operVal && operVal != "")
msg = "所选日期不能大于[" + this.operKeyName + "]对应的日期时间";
break;
case "xiaoyu":
if (value <= operVal && operVal != "")
msg = "所选日期不能小于等于[" + this.operKeyName + "]对应的日期时间";
break;
case "xiaoyudengyu":
if (value < operVal && operVal != "")
msg = "所选日期不能小于[" + this.operKeyName + "]对应的日期时间";
break;
case "budengyu":
if (value == operVal && operVal != "")
msg = "所选日期不能等于[" + this.operKeyName + "]对应的日期时间";
break;
}
if (msg != "") {
layer.alert(msg);
this.value = "";
this.elem.val("");
}
}
} */
dateOper = {
elem: '#TB_' + mapAttr.KeyOfEn,
format: format, //可任意组合
type: type,
operKey: roleExt.Tag4,
operKeyName: tagM.Name,
oper: roleExt.Tag3,
mapAttr: mapAttr,
mapExt: mapExts,
funDoc: funcDoc,
fullMyPK: isFullData == false ? "" : FullExt.MyPK,
keyOfEn: mapAttr.KeyOfEn,
ready: function (date) {
if (this.format.indexOf("HH") != -1) {
var now = new Date();
var mm = "";
if (now.getMinutes() < 10)
mm = "0" + now.getMinutes();
else
mm = now.getMinutes();
var ss = "";
if (now.getSeconds() < 10)
ss = "0" + now.getSeconds();
else
ss = now.getSeconds();
this.dateTime.hours = now.getHours();
this.dateTime.minutes = mm;
this.dateTime.seconds = ss;
}
},
change: function (value, date, endDate) {
if (this.type != "year")
$('.laydate-btns-confirm').click();
},
done: function (value, date, endDate) {
//比对的时间字段值
var operVal = $('#TB_' + this.operKey).val();
var oper = this.oper;
var msg = "";
switch (oper) {
case "dayu":
if (value <= operVal && operVal != "") {
msg = "所选日期不能小于等于[" + this.operKeyName + "]对应的日期时间";
break;
}
break;
case "dayudengyu":
if (value < operVal && operVal != "") {
msg = "所选日期不能小于[" + this.operKeyName + "]对应的日期时间";
break;
}
break;
case "xiaoyu":
if (value >= operVal && operVal != "") {
msg = "所选日期不能大于等于[" + this.operKeyName + "]对应的日期时间";
break;
}
break;
case "xiaoyudengyu":
if (value > operVal && operVal != "") {
msg = "所选日期不能大于[" + this.operKeyName + "]对应的日期时间";
break;
}
break;
case "budengyu":
if (value == operVal && operVal != "") {
msg = "所选日期不能等于[" + this.operKeyName + "]对应的日期时间";
break;
}
break;
}
if (msg != "") {
layer.alert(msg);
value = "";
}
$(this.elem).val(value);
if (this.funDoc != "")
DBAccess.RunFunctionReturnStr(this.funDoc);
var data = $(this.elem).data();
if (data && data.ReqDay != null && data.ReqDay != undefined)
ReqDays(data.ReqDay);
if (this.fullMyPK != "")
DDLFullCtrl(value, "TB_" + this.keyOfEn, this.fullMyPK);
if (value == "") {
var elemenID = "TB_" + this.keyOfEn;
$("#" + elemenID).parent().append(``)
$("#" + elemenID).remove();
$(`#${elemenID}1`).attr("id", `${elemenID}`);
$(`#${elemenID}`).attr("name", `${elemenID}`);
SetDateExt(this.mapExt, this.mapAttr);
}
}
}
}
} else {
dateOper = {
elem: '#TB_' + mapAttr.KeyOfEn,
format: format, //可任意组合
type: type,
min: 0,
funDoc: funcDoc,
keyOfEn: mapAttr.KeyOfEn,
fullMyPK: isFullData == false ? "" : FullExt.MyPK,
ready: function (date) {
if (this.format.indexOf("HH") != -1) {
var now = new Date();
var mm = "";
if (now.getMinutes() < 10)
mm = "0" + now.getMinutes();
else
mm = now.getMinutes();
var ss = "";
if (now.getSeconds() < 10)
ss = "0" + now.getSeconds();
else
ss = now.getSeconds();
this.dateTime.hours = now.getHours();
this.dateTime.minutes = mm;
this.dateTime.seconds = ss;
}
},
change: function (value, date, endDate) {
if (this.type != "year")
$('.laydate-btns-confirm').click();
},
done: function (value, date, endDate) {
$(this.elem).val(value);
if (this.funDoc != "" && this.funcDoc != undefined)
DBAccess.RunFunctionReturnStr(this.funDoc);
var data = $(this.elem).data();
if (data && data.ReqDay != null && data.ReqDay != undefined)
ReqDays(data.ReqDay);
if (this.fullMyPK != "" && this.fullMyPK != undefined)
DDLFullCtrl(value, "TB_" + this.keyOfEn, this.fullMyPK);
}
}
}
layui.laydate.render(dateOper);
$("#TB_" + mapAttr.KeyOfEn).removeClass("ccdate");
}
/**
* 整数,浮点型,金额型扩展属性的解析
* @param {any} mapExts
* @param {any} mapAttr
*/
var statisticColumnsSet = new Set();
var statisticColumnsArr = [];
function SetNumberMapExt(mapExts, mapAttr) {
// 主表扩展(统计从表)
var detailExt = {};
$.each(mapExts, function (idx, mapExt) {
switch (mapExt.ExtType) {
case "RegularExpression"://正则表达式
$('#TB_' + mapExt.AttrOfOper).data(mapExt);
$('#TB_' + mapExt.AttrOfOper).on(mapExt.Tag.substring(2), function () {
var mapExt = $(this).data();
var filter = mapExt.Doc.replace(/【/g, '[').replace(/】/g, ']').replace(/(/g, '(').replace(/)/g, ')').replace(/{/g, '{').replace(/}/g, '}');
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;
}
if (re.test($(this).val()) == false) {
layer.msg(mapExt.Tag1, { icon: 5 });
$(this).css("border-color", "red");
} else {
$(this).css("border-color", "#eee");
}
})
break;
case "BindFunction"://绑定函数
$('#TB_' + mapExt.AttrOfOper).bind(DynamicBind(mapExt, "TB_"));
break;
case "AutoFull"://自动计算
if (mapExt.Doc == undefined || mapExt.Doc == '')
return true;
calculator(mapExt);
break;
case "AutoFullDtlField": //主表扩展(统计从表)
var docs = mapExt.Doc.split("\.");
//判断是否显示大写
var tag3 = mapExt.Tag3;
var DaXieAttrOfOper = "";
if (tag3 == 1)
DaXieAttrOfOper = mapExt.Tag4;
if (docs.length == 3) {
var ext = {
"DtlNo": docs[0],
"FK_MapData": mapExt.FK_MapData,
"AttrOfOper": mapExt.AttrOfOper,
"DaXieAttrOfOper": DaXieAttrOfOper,
"Doc": mapExt.Doc,
"DtlColumn": docs[1],
"exp": docs[2],
"Tag": mapExt.Tag,
"Tag1": mapExt.Tag1
};
if (!$.isArray(detailExt[ext.DtlNo])) {
detailExt[ext.DtlNo] = [];
}
detailExt[ext.DtlNo].push(ext);
$(":input[name=TB_" + ext.AttrOfOper + "]").attr("disabled", true);
}
break;
case "ReqDays"://两个日期自动求天数
if (mapExt.Tag1 == null || mapExt.Tag1 == "" ||
mapExt.Tag2 == null || mapExt.Tag2 == "")
break;
if (isReadonly == true)
break;
if ($('#TB_' + mapExt.AttrOfOper).val() == "" || $('#TB_' + mapExt.AttrOfOper).val() ==="0" )
ReqDays(mapExt);
$('#TB_' + mapExt.Tag1).data({ "ReqDay": mapExt })
$('#TB_' + mapExt.Tag2).data({ "ReqDay": mapExt });
break;
case "FieldNameLink":
//大块文本帮助.
if (mapExt.DoWay == 0)
break;
$("#Lab_" + mapAttr.KeyOfEn).wrap($(''));
break;
case "RMBDaXie"://转金额大写
if (mapExt.Doc == undefined || mapExt.Doc == '')
return true;
//动态加载转大写的js
if (location.href.indexOf("CCForm") > 0)
Skip.addJs("../Data/JSLibData/CovertMoneyToDaXie.js");
else if (location.href.indexOf("CCBill") > 0)
Skip.addJs("../Data/JSLibData/CovertMoneyToDaXie.js");
else
Skip.addJs("Data/JSLibData/CovertMoneyToDaXie.js");
//给大写的文本框赋值
$('#TB_' + mapExt.Doc).val(Rmb2DaXie($('#TB_' + mapExt.AttrOfOper).val()));
$('#TB_' + mapExt.AttrOfOper).bind("change", function () {
var expVal = $(this).val();//获取要转换的值
var min = $(this).attr("data-min");
var max = $(this).attr("data-max");
if (min && parseInt(expVal) < parseInt(min)) {
alert("值不能小于设置的最小值:" + min);
expVal = min;
$(this).val(expVal);
}
if (max && parseInt(expVal) > parseInt(max)) {
alert("值不能大于设置的最大值:" + max);
expVal = max;
$(this).val(expVal);
}
$('#TB_' + mapExt.Doc).val(Rmb2DaXie(expVal));//给大写的文本框赋值
});
$('#TB_' + mapExt.AttrOfOper).attr("data-daxie", mapExt.Doc);
break;
default:
layer.alert(mapAttr.Name + "字段扩展属性" + mapExt.ExtType + "还未解析,请反馈给开发人员")
break;
}
})
$.each(detailExt, function (idx, obj) {
var iframeKey = "#Frame_" + obj[0].DtlNo
var iframeDtl = $(iframeKey);
var statisticColumn = detailExt[obj[0].DtlNo]
if (!statisticColumnsSet.has(statisticColumn)) {
statisticColumnsSet.add(statisticColumn)
statisticColumnsArr.push(...statisticColumn)
console.log(statisticColumnsArr)
}
iframeDtl.load(function () {
$(this).contents().find(":input[id=formExt]").val(JSON.stringify(statisticColumnsArr));
if (this.contentWindow && typeof this.contentWindow.parentStatistics === "function") {
this.contentWindow.parentStatistics(statisticColumnsArr);
}
});
});
}
function DynamicBind(mapExt, ctrlType) {
if (ctrlType == "RB_") {
$('input[name="' + ctrlType + mapExt.AttrOfOper + '"]').on(mapExt.Tag, function () {
var doc = DealExp(mapExt.Doc);
doc = doc.replace("this", this.id);
DBAccess.RunFunctionReturnStr(doc);
});
} else if (ctrlType == "CB_") {
$('input[name="' + ctrlType + mapExt.AttrOfOper + '"]').on(mapExt.Tag, function () {
var doc = DealExp(mapExt.Doc);
doc = doc.replace("this", this.id);
DBAccess.RunFunctionReturnStr(doc);
});
}
else {
$('#' + ctrlType + mapExt.AttrOfOper).on(mapExt.Tag, function () {
var doc = DealExp(mapExt.Doc);
doc = doc.replace("this", this.id);
DBAccess.RunFunctionReturnStr(doc);
});
}
}
/**
* 自动计算两个日期的天数
* @param {any} mapExt
*/
function ReqDays(mapExt) {
var ResRDT = mapExt.AttrOfOper;//接收计算天数结果
var startField = mapExt.Tag1;//开始日期
var endField = mapExt.Tag2;//结束日期
var RDTRadio = mapExt.Tag3;//是否包含节假日 0包含,1不包含
//计算量日期天数
var StarRDT = $('#TB_' + startField).val();
var EndRDT = $('#TB_' + endField).val();
if (StarRDT == "" || EndRDT == "") {
$('#TB_' + ResRDT).val(0);
return ;
}
StarRDT = new Date(StarRDT);
EndRDT = new Date(EndRDT);
var countH = parseInt((EndRDT - StarRDT) / 1000 / 60 / 60);//总共的小时数
res = parseInt(countH / 24); //把相差的毫秒数转换为天数
//var day = res;
// var h = (countH - day * 24)/24;
//res = day + h;
//判断结束日期是否早于开始日期
if (parseInt(EndRDT / 1000 / 60 / 60 / 24) < parseInt(StarRDT / 1000 / 60 / 60 / 24)) {
layer.alert("结束日期不能早于开始日期");
res = "";
}
else {
//当不包含节假日的时候,需要排除节假日
if (RDTRadio == 1) {
var holidayEn = new Entity("BP.Sys.GloVar");
holidayEn.No = "Holiday";
if (holidayEn.RetrieveFromDBSources() == 1) {
var holidays = holidayEn.Val.split(",");
StarRDT = FormatDate(StarRDT, "MM-dd");
EndRDT = FormatDate(EndRDT, "MM-dd");
holidays.forEach(item => {
//判断节假日日期是否在时间范围内
if (StarRDT <= item && item <= EndRDT)
res = res - 1;
})
//检查计算的天数
if (res <= 0) {
layer.alert("请假时间内均为节假日");
res = "";
}
}
}
}
if (res === "" || res == "NaN" || Object.is(res, NaN)) {
$('#TB_' + endField).val("");
res = 0;
}
$('#TB_' + ResRDT).val(res);
}
/**
* pop弹出框的处理
* @param {any} mapAttr
* @param {any} mapExt
* @param {any} frmData
*/
function SetSelectExt(mapExts, mapAttr) {
//判断下拉框,枚举下拉框选中后事件(级联下拉框,填充其他控件,绑定函数,联动其他控件)
mapAttr.MapExt = mapExts;
$("#DDL_" + mapAttr.KeyOfEn).data(mapAttr);
layui.form.on('select(' + mapAttr.KeyOfEn + 'Event)', function (data) {
var elemID = this.elem.substring(1);
var mapAttr = $("#" + elemID).data();
var mapExts = mapAttr.mapExt;
if (mapAttr.UIIsEnable == 0 || isReadonly == true || $("#DDL_" + mapExt.AttrOfOper).length == 0)
return true;
$.each(mapExts, function (i, mapExt) {
//填充其他控件
var DDLFull = GetPara(mapAttr.AtPara, "IsFullData");
if (DDLFull != undefined && DDLFull != "" && DDLFull == "1" && (mapExt.MyPK.indexOf("DDLFullCtrl") != -1)) {
DDLFullCtrl(data.value, elemID, mapExt.MyPK);
return true;
}
//绑定函数
if (mapExt.ExtType == "BindFunction")
DynamicBind(mapExt, "DDL_");
//级联下拉框
if (mapExt.ExtType == "ActiveDDL") {
var ddlChild = $("#DDL_" + mapExt.AttrsOfActive);
if (ddlChild.length == 0)
return true;
DDLAnsc(data.value, "DDL_" + mapExt.AttrsOfActive, mapExt.MyPK);
}
return true;
});
//联动其他控件
InitFoolLink(mapAttr, 0);
layui.form.render('select');
});
}
/**
* 文本字段Pop弹出框属性扩展
* @param {any} popType
* @param {any} mapAttr
* @param {any} mapExt
* @param {any} frmData
*/
var isHaveLoadPop = false;
var isHaveLoagMtags = false;
function PopMapExt(popType, mapAttr, mapExt, frmData, baseUrl, mapExts) {
if (isHaveLoadPop == false) {
Skip.addJs(baseUrl + "/JS/Pop2021.js");
isHaveLoadPop = true;
}
switch (popType) {
case "PopBranches": //树干简单模式.
var showModel = GetPara(mapExt.AtPara, "ShowModel");
showModel = showModel == null || showModel == undefined || showModel == "" ? 0 : showModel;
if (showModel == "1")
CommPop(popType, mapAttr, mapExt, frmData, mapExts);
else {
if (isHaveLoagMtags == false) {
Skip.addJs(baseUrl + "JS/mtags2021.js");
isHaveLoagMtags = true;
}
CommPopDialog(popType, mapAttr, mapExt, null, frmData, baseUrl, mapExts);
}
break;
case "PopBranchesAndLeaf": //树干叶子模式.
case "PopTableSearch": //表格查询.
case "PopSelfUrl": //自定义url.
if (isHaveLoagMtags == false) {
Skip.addJs(baseUrl + "JS/mtags2021.js");
isHaveLoagMtags = true;
}
CommPopDialog(popType, mapAttr, mapExt, null, frmData, baseUrl, mapExts);
break;
case "PopBindSFTable": //绑定字典表,外部数据源.
case "PopBindEnum": //绑定枚举.
case "PopTableList": //绑定实体表.
case "PopGroupList": //分组模式.
CommPop(popType, mapAttr, mapExt, frmData, mapExts);
break;
default: break;
}
}
/**
* 判断当前的数据是不是已经存在Sys_FrmEeleDB中
* @param {any} keyVal
* @param {any} selects
*/
function IsHaveSelect(keyVal, selects) {
if (selects.length == 0)
return false;
var isHave = false
$.each(selects, function (i, item) {
if (item.Tag1 == keyVal) {
isHave = true;
return false;
}
});
return isHave;
}
/**
* 获取表单数据
* @param {any} dataJson 表单数据JSON集合
*/
function getFormData(dataJson) {
//处理特殊的表单字段
//1.富文本编辑器
if ($(".rich").length > 0 && richTextType == "tinymce") {
$(".rich").each(function (i, item) {
var edit = layui.tinymce.get('#' + item.id)
var val = edit.getContent();
dataJson[item.id] = val;
})
}
//2.复选框多选
var mcheckboxs = $(".mcheckbox");
if (mcheckboxs.length > 0) {
const sorted = groupBy(mcheckboxs, function (item) {
return item.name;
});
for (var key in sorted) {
var ids = [];
$("input[name='" + key + "']:checked").each(function (index, item) {
ids.push($(this).val())
});
dataJson[key] = ids.join(",");
}
}
//3.获取复选框
var checkboxs = $(".checkbox");
if (checkboxs.length > 0) {
$.each(checkboxs, function (idx, item) {
var itemID = item.id.replace("DIV_", "CB_");
if (dataJson[itemID] == undefined)
dataJson[itemID] = 0;
})
}
//4.获取外部数据源T的赋值
var ddls = $(".ddl-ext");
if (ddls.length > 0) {
$.each(ddls, function (idx, ddl) {
var ctrlID = ddl.id;
var item = $("#" + ctrlID).children('option:checked').text();
ctrlID = ctrlID.replace("DDL_", "TB_") + "T";
if ($("#" + ctrlID).length == 1)
dataJson[ctrlID] = item;
})
}
//5.树形结构
//6.获取URL上的值
return dataJson;
}
/**
* 表单字段中自动计算
* @param {any} mapExt
*/
function calculator(mapExt) {
if (!testExpression(mapExt.Doc)) {
console.log("MyPk: " + mapExt.MyPK + ", 表达式: '" + mapExt.Doc + "'格式错误");
return false;
}
var targets = [];
var index = -1;
for (var i = 0; i < mapExt.Doc.length; i++) { // 对于复杂表达式需要重点测试
var c = mapExt.Doc.charAt(i);
if (c == "(") {
index++;
} else if (c == ")") {
targets.push(mapExt.Doc.substring(index + 1, i));
i++;
index = i;
} else if (/[\+\-|*\/]/.test(c)) {
targets.push(mapExt.Doc.substring(index + 1, i));
index = i;
}
}
if (index + 1 < mapExt.Doc.length) {
targets.push(mapExt.Doc.substring(index + 1, mapExt.Doc.length));
}
//
var expression = {
"judgement": [],
"execute_judgement": [],
"calculate": mapExt.Doc
};
$.each(targets, function (i, o) {
if (o.indexOf("@") == -1)
return true;
var target = o.replace("@", "");
var element = "$(':input[name=TB_" + target + "]')";
expression.judgement.push(element + ".length==0");
expression.execute_judgement.push("!isNaN(parseFloat(" + element + ".val().replace(/,/g,'')))");
expression.calculate = expression.calculate.replace(o, "parseFloat(" + element + ".val().replace(/,/g,''))");
});
(function (targets, expression, resultTarget, pk, expDefined, fk_mapData) {
$.each(targets, function (i, o) {
if (o.indexOf("@") == -1)
return true;
var target = o.replace("@", "");
$(":input[name=TB_" + target + "]").bind("change", function () {
var evalExpression = "var result = '';";
if (expression.judgement.length > 0) {
var str = "if(" + expression.judgement.join("||") + "){";
evalExpression += str.replace(/\s|\xA0/g, "");
evalExpression += "alert('MyPk:" + pk + ",表达式:[" + expDefined.replace(/\s|\xA0/g, "") + "]" + "中有对象在当前页面不存在');"
evalExpression += "} ";
}
if (expression.execute_judgement.length > 0) {
evalExpression += "else if(" + expression.execute_judgement.join("&&").replace(/\s|\xA0/g, "") + "){";;
}
if (expression.calculate.length > 0) {
evalExpression += "result=" + expression.calculate.replace(/\s|\xA0/g, "") + "; ";
}
if (expression.execute_judgement.length > 0) {
evalExpression += "} ";
}
var result = cceval(evalExpression);
if (typeof result != "undefined") {
var mapAttr = $.grep(frmMapAttrs, function (item) {
return item.MyPK == fk_mapData + "_" + resultTarget;
});
if (mapAttr[0].MyDataType == 2)
result = parseInt(result);
else {
var defVal = mapAttr[0].DefVal;
var bit = null;
if (defVal != null && defVal !== "" && defVal.indexOf(".") >= 0)
bit = defVal.substring(defVal.indexOf(".") + 1).length;
if (bit == null || bit == undefined || bit == "")
bit = 2;
result = numberFormat(result, bit);
}
} else {
result = 0;
}
$(":input[name=TB_" + resultTarget + "]").val(result);
var daXie = $(":input[name=TB_" + resultTarget + "]").data("daxie");
if (daXie != null && daXie != undefined && daXie != "")
$("#TB_" + daXie).val(Rmb2DaXie(result));
});
if (i == 0) {
$(":input[name=TB_" + target + "]").trigger("change");
}
});
})(targets, expression, mapExt.AttrOfOper, mapExt.MyPK, mapExt.Doc, mapExt.FK_MapData);
$(":input[name=TB_" + mapExt.AttrOfOper + "]").attr("disabled", true);
}
function testExpression(exp) {
if (exp == null || typeof exp == "undefined" || typeof exp != "string") {
return false;
}
exp = exp.replace(/\s/g, "");
if (exp == "" || exp.length == 0) {
return false;
}
if (/[\+\-\*\/]{2,}/.test(exp)) {
return false;
}
if (/\(\)/.test(exp)) {
return false;
}
var stack = [];
for (var i = 0; i < exp.length; i++) {
var c = exp.charAt(i);
if (c == "(") {
stack.push("(");
} else if (c == ")") {
if (stack.length > 0) {
stack.pop();
} else {
return false;
}
}
}
if (stack.length != 0) {
return false;
}
if (/^[\+\-\*\/]|[\+\-\*\/]$/.test(exp)) {
return false;
}
if (/\([\+\-\*\/]|[\+\-\*\/]\)/.test(exp)) {
return false;
}
return true;
}
/**
* 表单文本字段中自动计算
* @param {any} mapExt
*/
function Stringcalculator(mapExt) {
if (!testExpression(mapExt.Doc)) {
console.log("MyPk: " + mapExt.MyPK + ", 表达式: '" + mapExt.Doc + "'格式错误");
return false;
}
var targets = [];
var index = -1;
for (var i = 0; i < mapExt.Doc.length; i++) { // 对于复杂表达式需要重点测试
var c = mapExt.Doc.charAt(i);
if (c == "(") {
index++;
} else if (c == ")") {
targets.push(mapExt.Doc.substring(index + 1, i));
i++;
index = i;
} else if (/[\+\-|*\/]/.test(c)) {
targets.push(mapExt.Doc.substring(index + 1, i));
index = i;
}
}
if (index + 1 < mapExt.Doc.length) {
targets.push(mapExt.Doc.substring(index + 1, mapExt.Doc.length));
}
//
var expression = {
"judgement": [],
"execute_judgement": [],
"calculate": mapExt.Doc
};
$.each(targets, function (i, o) {
if (o.indexOf("@") == -1)
return true;
var target = o.replace("@", "");
var element = "$(':input[name=TB_" + target + "]')";
expression.judgement.push(element + ".length==0");
expression.execute_judgement.push("!isNaN(parseFloat(" + element + ".val().replace(/,/g,'')))");
expression.calculate = expression.calculate.replace(o, "parseFloat(" + element + ".val().replace(/,/g,''))");
});
(function (targets, resultTarget, expression) {
$.each(targets, function (i, o) {
if (o.indexOf("@") == -1)
return true;
var target = o.replace("@", "");
$(":input[name=TB_" + target + "]").bind("change", function () {
var doc = expression;
doc = DealExp(doc);
var result = doc;
$(":input[name=TB_" + resultTarget + "]").val(result);
});
if (i == 0) {
$(":input[name=TB_" + target + "]").trigger("change");
}
});
})(targets, mapExt.AttrOfOper, mapExt.Doc);
$(":input[name=TB_" + mapExt.AttrOfOper + "]").attr("disabled", true);
}
/**
* 初始化获取下拉框字段的选项
* @param {any} frmData
* @param {any} mapAttr
* @param {any} defVal
*/
function InitDDLOperation(frmData, mapAttr, defVal) {
var operations = '';
var data = frmData[mapAttr.KeyOfEn];
if (data == undefined)
data = frmData[mapAttr.UIBindKey];
if (data == undefined) {
//枚举类型的.
if (mapAttr.LGType == 1) {
var enums = frmData.Sys_Enum;
enums = $.grep(enums, function (value) {
return value.EnumKey == mapAttr.UIBindKey;
});
if (mapAttr.DefVal == -1)
operations += "";
$.each(enums, function (i, obj) {
operations += "";
});
}
return operations;
}
//operations += "";
$.each(data, function (i, obj) {
operations += "";
});
return operations;
}
/**
* 获取字段值
* @param {any} frmData 表单属性数据
* @param {any} defVal 字段默认值
* @param {any} keyOfEn 字段英文名
*/
function ConvertDefVal(frmData, defVal, keyOfEn) {
//防止传值为null的情况
if (defVal == null) {
defVal = "";
}
//计算URL传过来的表单参数@TXB_Title=事件测试
var pageParams = getQueryString();
var pageParamObj = {};
$.each(pageParams, function (i, pageParam) {
if (pageParam.indexOf('@') == 0) {
var pageParamArr = pageParam.split('=');
pageParamObj[pageParamArr[0].substring(1, pageParamArr[0].length)] = pageParamArr[1];
}
});
var result = defVal;
//通过MAINTABLE返回的参数
for (var ele in frmData.MainTable[0]) {
if (keyOfEn == ele) {
result = frmData.MainTable[0][ele];
if (result == null) {
result = "";
}
break;
}
}
return result = unescape(result);
}
/**
* 星级评分事件
* @param {any} isReadonly
*/
function setScore(isReadonly) {
if (isReadonly == false) {
var scoreDiv = $(".score-star");
$.each(scoreDiv, function (idex, item) {
var divId = $(item).attr("id");
var KeyOfEn = divId.substring(3);//获取字段值
$("#Star_" + KeyOfEn + " img").click(function () {
var index = $(this).index() + 1;
$("#Star_" + KeyOfEn + " img:lt(" + index + ")").attr("src", "Style/Img/star_2.png");
$("#SP_" + KeyOfEn + " strong").html(index + " 分");
$("#TB_" + KeyOfEn).val(index);//给评分的隐藏input赋值
index = index - 1;
$("#Star_" + KeyOfEn + " img:gt(" + index + ")").attr("src", "Style/Img/star_1.png");
});
});
}
}
/**
* 地图选择
* @param {any} MapID
* @param {any} UIIsEnable
*/
function figure_Template_Map(MapID, UIIsEnable) {
//var mainTable = frmData.MainTable[0];
//var AtPara = "";
////通过MAINTABLE返回的参数
//for (var ele in mainTable) {
// if (ele == "AtPara" && mainTable != '') {
// AtPara = mainTable[ele];
// break;
// }
//}
//if (AtPara == "")
AtPara = $("#TB_AtPara").val();
var baseUrl = "./CCForm/";
if (currentURL.indexOf("CCForm") != -1)
baseUrl = "./";
if (currentURL.indexOf("CCBill") != -1)
baseUrl = "../CCForm/";
var url = baseUrl + "Map.htm?WorkID=" + pageData.WorkID + "&FK_Node=" + pageData.FK_Node + "&KeyOfEn=" + MapID + "&IsReadonly=" + isReadonly + "&Paras=" + AtPara;
OpenLayuiDialog(url, "地图", window.innerWidth / 2, 80, "auto");
}
/**
* 签字版
* @param {any} HandWriteID 签字版字段ID
*/
function figure_Template_HandWrite(HandWriteID) {
var url = "./CCForm/";
if (GetHrefUrl().indexOf("CCForm") != -1)
url = "./";
if (GetHrefUrl().indexOf("CCBill") != -1)
url = "../CCForm/";
url += "HandWriting.htm?WorkID=" + pageData.WorkID + "&FK_Node=" + pageData.FK_Node + "&KeyOfEn=" + HandWriteID;
OpenLayuiDialog(url, '签字板', window.innerWidth / 2 - 30, 50, "auto");
}
/**
* 给签字版赋值
* @param {any} HandWriteID 签字版字段ID
* @param {any} imagePath 签字版图片路径
* @param {any} type 类型 0 普通字段签字版 1审核组件签字版
*/
function setHandWriteSrc(HandWriteID, imagePath, type) {
var src = "../";
if (type == 0) {
if (currentURL.indexOf("CCForm") != -1 || currentURL.indexOf("CCBill") != -1)
src = "../../";
if (currentURL.indexOf("AdminFrm.htm") != -1)
src = "../../../";
src = src + imagePath.substring(imagePath.indexOf("DataUser"));
document.getElementById("Img" + HandWriteID).src = "";
$("#Img" + HandWriteID).attr("src", src);
$("#TB_" + HandWriteID).val(imagePath);
}
if (type == 1) {
$("#Img_" + HandWriteID).attr("src", imagePath);
if ("undefined" != typeof writeImg)
writeImg = imagePath;
}
layer.close(layer.index);
}
/**
* 使用卡片模式打开从表数据或者新增一条数据
* @param {any} ensName
* @param {any} refPKVal
* @param {any} pkVal
* @param {any} frmType
* @param {any} InitPage
*/
function DtlFrm(ensName, refPKVal, pkVal, frmType, InitPage) {
// model=1 自由表单, model=2傻瓜表单.
var wWidth = window.innerWidth * 2 / 3;
if (wWidth > 1200) {
wWidth = 1000;
}
var isNew = 1;
if (pkVal != "0")
isNew = 0;
var params = GetParentParams();
var url = basePath + '/WF/CCForm/DtlFrm.htm?EnsName=' + ensName + '&RefPKVal=' + refPKVal + "&FrmType=" + frmType + '&OID=' + pkVal + "&IsNew=" + isNew + params;
OpenLayuiDialog(url, '编辑', wWidth, null, "r", false, false, false, null, function () {
var iframe = $(window.frames["dlg"]).find("iframe");
if (iframe.length > 0) {
iframe[0].contentWindow.dtlFrm_Delete();
}
if (typeof InitPage === "function") {
InitPage.call();
} else {
alert("请手动刷新表单");
}
});
}
function GetParentParams() {
var params = "";
if (typeof parent.frmData == "undefined")
return "";
var mainAttrs = parent.frmData.Sys_MapAttr;
$.each(mainAttrs, function (idx, attr) {
if (attr.KeyOfEn == "OID" || attr.KeyOfEn == "WorkID" || attr.KeyOfEn == "PWorkID" || attr.KeyOfEn == "FID"
|| attr.KeyOfEn == "RDT" || attr.KeyOfEn == "Rec" || attr.KeyOfEn == "EnsName" || attr.KeyOfEn == "RefPkVal"
|| attr.KeyOfEn == "AtPara" || attr.KeyOfEn == "Title" || attr.KeyOfEn == "Emps" || attr.KeyOfEn == "FK_Dept" || attr.KeyOfEn == "FK_NY")
return true;
if (attr.TextModel == 2 || attr.TextModel == 3)
return true;
var ele = $("#TB_" + attr.KeyOfEn, parent.document);
if (ele.length != 0) {
params += "&" + attr.KeyOfEn + "=" + ele.val();
return true;
}
ele = $("#DDL_" + attr.KeyOfEn, parent.document);
if (ele.length != 0) {
params += "&" + attr.KeyOfEn + "=" + ele.val();
return true;
}
ele = $("#CB_" + attr.KeyOfEn, parent.document);
if (ele.length != 0) {
params += "&" + attr.KeyOfEn + "=" + ele.val();
return true;
}
ele = $("input[name='RB_" + attr.KeyOfEn + "']", parent.document);
if (ele.length != 0) {
params += "&" + attr.KeyOfEn + "=" + $("input[name='RB_" + attr.KeyOfEn + "']:checked", parent.document).val();
return true;
}
ele = $("input[name='CB_" + attr.KeyOfEn + "']", parent.document);
if (ele.length != 0) {
params += "&" + attr.KeyOfEn + "=" + $("input[name='CB_" + attr.KeyOfEn + "']:checked", parent.document).val();
return true;
}
})
return params;
}
/**
* 检查上传附件的数量
*/
function checkAths() {
//获取字段附件
var msg = "";
$.each(FiledFJ, function (i, item) {
if ($("#athModel_" + item.key).length != 0) {
var athNum = $("#athModel_" + item.key).find("a").length;
var minNum = item.info.minNum;
var maxNum = item.info.maxNum;
if (athNum < minNum)
msg += item.name + "上传附件数量不能小于" + minNum + ";";
if (athNum > maxNum)
msg += item.name + "您最多上传[" + maxNum + "]个附件" + ";";
}
})
if (msg != "")
return msg;
// 不支持火狐浏览器。
if ("undefined" != typeof AthParams && AthParams.AthInfo != undefined) {
var aths = document.getElementsByName("Ath");
for (var i = 0; i < aths.length; i++) {
var athment = aths[i].id.replace("Div_", "");
if (AthParams.AthInfo[athment] != undefined && AthParams.AthInfo[athment].length > 0) {
var athInfo = AthParams.AthInfo[athment][0];
var minNum = athInfo[0];
var maxNum = athInfo[1];
var athNum = $("#Div_" + athment + " table tbody .athInfo").length;
if (athNum.length == 0)
athNum = $("#Div_" + athment + " .athInfo").length;
if (athNum < minNum)
return athment + "上传附件数量不能小于" + minNum;;
if (athNum > maxNum)
return athment + "您最多上传[" + maxNum + "]个附件";
}
}
}
return "";
}
//必填项检查 名称最后是*号的必填 如果是选择框,值为'' 或者 显示值为 【*请选择】都算为未填 返回FALSE 检查必填项失败
function checkBlanks() {
var checkBlankResult = true;
//获得所有的class=mustInput的元素.
var lbs = $('.mustInput');
var msg = "";
$.each(lbs, function (i, obj) {
if ($(obj).parent().css('display') != 'none' && (($(obj).parent().next().css('display')) != 'none' || ($(obj).siblings("textarea").css('display')) != 'none')) {
} else {
return;
}
var keyofen = $(obj).data().keyofen;
if (keyofen == undefined)
return;
var ele = $("#TB_" + keyofen);
if (ele.length == 0)
ele = $("#DDL_" + keyofen);
if (ele.length == 0)
ele = $("#CB_" + keyofen);
if (ele.length == 0) {
ele = $("input[name='CB_" + keyofen + "']");
if (ele.length != 0) {
var val = $("input[name='CB_" + keyofen + "']:checked").val();
if (val == -1 || val == undefined) {
checkBlankResult = false;
$("input[name$='CB_" + keyofen + "']").parent().addClass('errorInput');
} else {
$("input[name$='CB_" + keyofen + "']").parent().removeClass('errorInput');
}
return;
} else {
var val = $("input[name='RB_" + keyofen + "']:checked").val();
if (val == -1 || val == undefined) {
checkBlankResult = false;
$("input[name$='RB_" + keyofen + "']").parent().addClass('errorInput');
} else {
$("input[name$='RB_" + keyofen + "']").parent().removeClass('errorInput');
}
return;
}
}
switch (ele[0].tagName.toUpperCase()) {
case "INPUT":
if (ele.attr('type') == "text") {
if (ele.val() == "") {
checkBlankResult = false;
ele.addClass('errorInput');
} else {
ele.removeClass('errorInput');
}
}
break;
case "SELECT":
if (ele.val() == null || ele.val() == "" || ele.val() == -1 || ele.children('option:checked').text() == "*请选择") {
checkBlankResult = false;
ele.parent().addClass('errorInput');
} else {
ele.parent().removeClass('errorInput');
}
break;
case "TEXTAREA":
if (ele.val() == "") {
checkBlankResult = false;
ele.addClass('errorInput');
} else {
ele.removeClass('errorInput');
}
break;
}
});
return checkBlankResult;
}
/**********************************************************其他通用的方法************************************************************************************/
function ReqDDL(ddlID) {
var v = document.getElementById('DDL_' + ddlID).value;
if (v == null) {
alert('没有找到ID=' + ddlID + '的下拉框控件.');
return;
}
return v;
}
// 获取TB值
function ReqTB(tbID) {
var v = document.getElementById('TB_' + tbID).value;
if (v == null) {
alert('没有找到ID=' + tbID + '的文本框控件.');
return;
}
return v;
}
// 获取CheckBox值
function ReqCB(cbID) {
var v = document.getElementById('CB_' + cbID).value;
if (v == null) {
alert('没有找到ID=' + cbID + '的文本框控件.');
return;
}
return v;
}
// 获取 单选按钮的 值.
function ReqRadio(keyofEn, enumIntVal) {
var v = document.getElementById('RB_' + keyofEn + '' + enumIntVal);
if (v == null) {
alert('没 有找到字段名=' + keyofEn + '值=' + enumIntVal + '的控件.');
return;
}
return v.checked;
}
/// 获取DDL Obj
function ReqDDLObj(ddlID) {
var v = document.getElementById('DDL_' + ddlID);
if (v == null) {
alert('没有找到ID=' + ddlID + '的下拉框控件.');
}
return v;
}
// 获取TB Obj
function ReqTBObj(tbID) {
var v = document.getElementById('TB_' + tbID);
if (v == null) {
alert('没有找到ID=' + tbID + '的文本框控件.');
}
return v;
}
// 获取CheckBox Obj值
function ReqCBObj(cbID) {
var v = document.getElementById('CB_' + cbID);
if (v == null) {
alert('没有找到ID=' + cbID + '的单选控件.');
}
return v;
}
//设置隐藏?
function SetDevelopCtrlHidden(key) {
var ctrl = $("#TB_" + key);
if (ctrl.length == 0)
ctrl = $("#DDL_" + key);
if (ctrl.length == 0)
ctrl = $("#CB_" + key);
if (ctrl.length == 0)
ctrl = $("#SR_" + key);
if (ctrl.length == 0)
ctrl = $("#SC_" + key);
if (ctrl.length == 0) {
layer.alert(key + "的类型判断不正确,请告知开发人员");
return;
}
var parent = ctrl.parent()[0];
if (parent.tagName.toLowerCase() != "td")
parent = $(parent).parent()[0];
if (parent.tagName.toLowerCase() == "td") {
if (parent.id != "CCForm")
$(parent).hide();
//当前节点的兄弟节点,如果没有input,select,就隐藏
var prev = $(parent).prev();
if (prev.find("input").length == 0 && prev.find("select").length == 0)
prev.hide();
}
}
// 获取附件文件名称,如果附件没有上传就返回null.
function ReqAthFileName(athID) {
var v = document.getElementById(athID);
if (v == null) {
return null;
}
var fileName = v.alt;
return fileName;
}
/**
* 字段附件的解析
* @param {any} mapAttr
*/
var FiledFJ = [];
function getFieldAth(mapAttr,aths) {
var Obj = {};
//获取上传附件列表的信息及权限信息
var nodeID = pageData.FK_Node;
var no = nodeID.toString().substring(nodeID.toString().length - 2);
var IsStartNode = 0;
if (no == "01")
IsStartNode = 1;
//创建附件描述信息.
var mypk = mapAttr.MyPK;
//获取附件显示的格式
var athShowModel = GetPara(mapAttr.AtPara, "AthShowModel")||"0";
let ath = $.grep(aths, function (ath) { return ath.MyPK == mypk });
ath = ath.length > 0 ? ath[0] : null;
if (ath == null) {
layer.alert("没有找到附件属性,请联系管理员");
return;
}
var noOfObj = mypk.replace(mapAttr.FK_MapData + "_", "");
var handler = new HttpHandler("BP.WF.HttpHandler.WF_CCForm");
handler.AddPara("WorkID", pageData.WorkID);
handler.AddPara("FID", pageData.FID);
handler.AddPara("FK_Node", nodeID);
handler.AddPara("FK_Flow", pageData.FK_Flow);
handler.AddPara("IsStartNode", IsStartNode);
handler.AddPara("PKVal", pageData.WorkID);
handler.AddPara("Ath", noOfObj);
handler.AddPara("FK_MapData", mapAttr.FK_MapData);
handler.AddPara("FromFrm", mapAttr.FK_MapData);
handler.AddPara("FK_FrmAttachment", mypk);
data = handler.DoMethodReturnString("Ath_Init");
if (data.indexOf('err@') == 0) {
layer.alert(data);
return;
}
if (data.indexOf('url@') == 0) {
var url = data.replace('url@', '');
SetHref(url);
return;
}
data = JSON.parse(data);
var dbs = data["DBAths"];
athDesc = data["AthDesc"][0];
var css = "style='text-align:left;padding-left:10px;border:1px solid #eee'";
var clickEvent = "";
if (athDesc.IsUpload == 1 && isReadonly == false) {
clickEvent = "";
FiledFJ.push({
key: mapAttr.KeyOfEn,
name: mapAttr.Name,
info: {
minNum: athDesc.NumOfUpload,
maxNum: athDesc.TopNumOfUpload
}
})
} else {
clickEvent = "";
FiledFJ.push({
key: mapAttr.KeyOfEn,
name: mapAttr.Name,
info: {
minNum: athDesc.NumOfUpload,
maxNum: athDesc.TopNumOfUpload
}
})
}
if (dbs.length == 0) {
if (athDesc.IsUpload == 1 && isReadonly == false)
return "" + clickEvent + "
";
else
return "";
}
var eleHtml = "";
if (athShowModel == "" || athShowModel == 0)
return "";
eleHtml = "" + clickEvent + "
";
var workID = GetQueryString("WorkID");
for (var i = 0; i < dbs.length; i++) {
var db = dbs[i];
var exts = db.FileExts;
if (getIsImg(exts) == true) {
var url = GetFileStream(db.MyPK, db.FK_FrmAttachment);
eleHtml += "
";
} else {
var url = "./Img/FileType/" + db.FileExts + ".gif";
eleHtml += "
" + db.FileName + "
"
}
}
eleHtml += "
";
return eleHtml;
}
function getIsImg(ext) {
switch (ext.toLowerCase()) {
case "gif":
case "jpg":
case "jepg":
case "bmp":
case "png":
case "tif":
case "gsp":
return true;
}
return false;
}
function ShowBigPic(obj) {
var _this = $(obj); //将当前的pimg元素作为_this传入函数
var src = _this.css("background-image").replace("url(\"", "").replace("\")", "")
imgShow(this, src);
}
/**
*图片附件预览
* @param {any} obj
*/
function imgShow(obj, src) {
if (src == null || src == undefined)
src = obj.src;
var img = new Image();
img.src = src;
img.onload = () => {
var height = img.height + 50; //获取图片高度
if (height > window.innerHeight - 150)
height = window.innerHeight - 150;
var width = img.width; //获取图片宽度
var imgHtml = "";
//弹出层
window.parent.layer.open({
type: 1,
shade: 0.8,
offset: 'auto',
area: ['80%', '80%'],
shadeClose: true,//点击外围关闭弹窗
scrollbar: false,//不现实滚动条
title: "",
closeBtn: 1,
content: imgHtml, //捕获的元素,注意:最好该指定的元素要存放在body最外层,否则可能被其它的相对元素所影响
cancel: function () {
//layer.msg('捕获就是从页面已经存在的元素上,包裹layer的结构', { time: 5000, icon: 6 });
}
});
}
}
//树形结构
function findChildren(jsonArray, parentNo) {
var appendToTree = function (treeToAppend, o) {
$.each(treeToAppend, function (i, child) {
if (o.id == child.ParentNo)
o.children.push({
"id": child.No,
"text": child.Name,
"children": []
});
});
$.each(o.children, function (i, o) {
appendToTree(jsonArray, o);
});
};
var jsonTree = [];
var jsonchildTree = [];
if (jsonArray.length > 0 && typeof parentNo !== "undefined") {
$.each(jsonArray, function (i, o) {
if (o.ParentNo == parentNo) {
jsonchildTree.push(o);
jsonTree.push({
"id": o.No,
"text": o.Name,
"children": []
});
}
});
$.each(jsonTree, function (i, o) {
appendToTree(jsonArray, o);
});
}
function _(treeArray) {
$.each(treeArray, function (i, o) {
if ($.isArray(o.children)) {
if (o.children.length == 0) {
o.children = undefined;
} else {
_(o.children);
}
}
});
}
_(jsonTree);
return jsonTree;
}
//修改公文正文组件的值,这里需要处理 todo:yln
function ChangeGovDocFilcceval(docWord) {
if ($("#TB_GovDocFile").length == 1) {
$("#TB_GovDocFile").val(docWord);
}
$('#bootStrapdlg').modal('hide');
}
function ChangeDocWordVal(docWord) {
if ($("#TB_DocWord").length == 1) {
$("#TB_DocWord").val(docWord);
}
$('#bootStrapdlg').modal('hide');
}
//此方法用于显示收文编号的值
function ChangeDocWordReceive(docWord) {
if ($("#TB_DocWordReceive").length == 1) {
$("#TB_DocWordReceive").val(docWord);
}
$('#bootStrapdlg').modal('hide');
}
/**
* 跳转常用短语页面
* @param {any} nodeID 当前节点ID
* @param {any} GroupKey 所属短语类型 CYY,FlowBBS,WorkReturn
* @param {any} elementID 选择短语后赋值元素
*/
function UsefulExpresFlow(attrKey, elementID) {
var url = basePath + "/WF/WorkOpt/UsefulExpresFlow.htm?AttrKey=" + attrKey + "&ElementID=" + elementID + "&m=" + Math.random();
var W = window.innerWidth / 2;
OpenLayuiDialog(url, "常用短语", W, 70, "auto");
}
//弹出附件
function OpenAth(title, keyOfEn, athMyPK, atPara, FK_MapData, frmType, isRead) {
var H = 70;
var W = window.innerWidth / 2;
var url = url = basePath + "/WF/CCForm/Ath.htm?1=1&AthPK=" + athMyPK + "&OID=" + pageData.WorkID + "&FK_MapData=" + FK_MapData + "&FK_Node=" + pageData.FK_Node + "&IsReadonly=" + isRead;
if (isRead == 1) {
OpenLayuiDialog(url, title, W, H, "auto", false);
return;
}
OpenLayuiDialog(url, title, W, H, "auto", false, false, false, null, function () {
//获取附件显示的格式
var athShowModel = GetPara(atPara, "AthShowModel")||"0";
var ath = new Entity("BP.Sys.FrmAttachment");
ath.MyPK = athMyPK;
if (ath.RetrieveFromDBSources() == 0) {
layer.alert("没有找到附件属性,请联系管理员");
return;
}
var data = Ath_Init(athMyPK, FK_MapData)
if (data.indexOf('err@') == 0) {
layer.alert(data);
return;
}
if (data.indexOf('url@') == 0) {
var url = data.replace('url@', '');
SetHref(url);
return;
}
data = JSON.parse(data);
var dbs = data["DBAths"];
var css = "style='text-align:left;padding-left:10px;border:1px solid #eee'";
var clickEvent = "";
if (athDesc == undefined) {
var athDesc = data["AthDesc"][0];
}
if (athDesc.IsUpload == 1 && isReadonly == false)
clickEvent = "";
if (dbs.length == 0 && frmType != 8) {
$("#athModel_" + keyOfEn).html(clickEvent);
return;
}
var eleHtml = "";
if (athShowModel == "" || athShowModel == 0) {
$("#athModel_" + keyOfEn).html(clickEvent + "");
return;
}
var workID = GetQueryString("WorkID");
var curUrl = GetHrefUrl();
var isRoot = false;
if (curUrl.indexOf("MyFlowGener.htm") != -1 || curUrl.indexOf("MyViewGener.htm"))
isRoot = true;
var url = "";
for (var i = 0; i < dbs.length; i++) {
var db = dbs[i];
if (isRoot == true)
url = "./Img/FileType/" + db.FileExts + ".gif";
else
url = "../Img/FileType/" + db.FileExts + ".gif";
var exts = db.FileExts;
if (getIsImg(exts) == true) {
url = GetFileStream(db.MyPK, db.FK_FrmAttachment);
eleHtml += "";
} else {
eleHtml += "" + db.FileName + "
"
}
}
if (frmType == 8)
$("#athModel_" + keyOfEn).children().last().html(eleHtml);
else
$("#athModel_" + keyOfEn).html(clickEvent + "
" + eleHtml);
});
}
function Ath_Init(mypk, FK_MapData) {
var IsStartNode = 0;
var nodeID = pageData.FK_Node;
if (nodeID == null || nodeID == undefined || nodeID == "")
nodeID = 0;
var no = nodeID.toString().substring(nodeID.toString().length - 2);
if (no == "01")
IsStartNode = 1;
var noOfObj = mypk.replace(FK_MapData + "_", "");
var handler = new HttpHandler("BP.WF.HttpHandler.WF_CCForm");
handler.AddPara("WorkID", pageData.WorkID);
handler.AddPara("FID", pageData.FID);
handler.AddPara("FK_Node", nodeID);
handler.AddPara("FK_Flow", pageData.FK_Flow);
handler.AddPara("IsStartNode", IsStartNode);
handler.AddPara("PKVal", pageData.WorkID);
handler.AddPara("Ath", noOfObj);
handler.AddPara("FK_MapData", FK_MapData);
handler.AddPara("FromFrm", FK_MapData);
handler.AddPara("FK_FrmAttachment", mypk);
data = handler.DoMethodReturnString("Ath_Init");
return data;
}
/**
* 傻瓜表单点击全屏时从表全屏显示
* @param {any} dtlNo
*/
function WindowOpenDtl(dtlNo) {
var iframeDtl = $("#Dtl_" + dtlNo);
iframeDtl[0].contentWindow.WindowOpenDtl();
}
//正则表达式检查
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 = $("#" + 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) {
$("#" + oInput).addClass('errorInput');
var errorId = oInput + "error";
if ($("#" + errorId).length == 0) {
var span = $("");
$("#" + oInput).parent().append(span);
}
$("#" + errorId).html(tipInfo);
} else {
$("#" + oInput).removeClass('errorInput');
var errorId = oInput + "error";
if ($("#" + errorId).length != 0)
$("#" + errorId).remove();
//$("[name=" + oInput + ']').parent().removeChild($("#" + errorId));
}
return result;
}
function TBHelp(ObjId, MyPK) {
var url = basePath + "/WF/CCForm/Pop/HelperOfTBEUIBS.htm?PKVal=" + MyPK + "&FK_Flow=" + GetQueryString("FK_Flow") + "&FK_Node=" + GetQueryString("FK_Node");
var W = document.body.clientWidth / 2.5;
OpenLayuiDialog(url, "词汇选择", W, 60, "auto", false);
}
function changeFastInt(ctrl, value) {
$("#TB_" + ctrl).val(value);
if ($('#eudlg').length > 0)
$('#eudlg').window('close');
if ($('#bootStrapdlg').length > 0)
$('#bootStrapdlg').modal('hide');
}
function clearContent(ctrl) {
$("#" + ctrl).val("");
}