/******************************************工具栏查询条件、操作按钮的解析**********************************************************/ //初始化数据. var treeKey = []; var dllKey = []; var xmlSelectKey = []; var cbKey = []; function InitToolbar(type) { //创建处理器. var handler = new HttpHandler("BP.WF.HttpHandler.WF_Comm"); handler.AddUrlData(); //增加参数. //获得map基本信息. mapBase = handler.DoMethodReturnJSON("Search_MapBaseInfo"); document.title = mapBase.EnDesc; //获得查询信息,包含了查询数据表. var data = handler.DoMethodReturnJSON("Search_SearchAttrs"); var IsTableShow = false; //绑定外键枚举查询条件. var attrs = data["Attrs"]; //扩展属性 var mapExts = data["Sys_MapExt"]; mapExts = mapExts || []; //search通用的查询条件,关键字查询、字符串查询、数值型查询、外键/枚举的查询 //计算查询条件的数量 //字符串的查询 var searchFields = mapBase.SearchFields; if (searchFields == null || searchFields == "" || searchFields == undefined) searchFields = ""; var stringFields = searchFields == "" ? [] : searchFields.split("@"); //数字型的查询 var searchFieldsOfNum = mapBase.SearchFieldsOfNum; if (searchFieldsOfNum == null || searchFieldsOfNum == "" || searchFieldsOfNum == undefined) searchFieldsOfNum = ""; var intFields = searchFieldsOfNum == "" ? [] : searchFieldsOfNum.split("@"); //查询条件的数据合 var len = 0; var _html = "
"; //关键字的查询 if (stringFields.length == 0 && mapBase.IsShowSearchKey == "1") { var keyLabel = cfg.KeyLabel; if (keyLabel == null || keyLabel == undefined || keyLabel == "") keyLabel = "关键字"; var keyPlaceholder = cfg.KeyPlaceholder; if (keyPlaceholder == null || keyPlaceholder == undefined) keyPlaceholder = ""; _html += GetInputHtml(keyLabel, "Key", ur.SearchKey, keyPlaceholder); len = len + 1; } if (stringFields.length != 0) { $.each(stringFields, function (i, field) { if (field == "") return true; var strs = field.split("="); if (strs.length < 2 || strs[0] == "" || strs[1] == "") return true; if (len != 0 && len % 4 == 0) { _html += "
"; _html += "
"; } //存入查询条件 fields.push(strs[1]); //获取查询的历史数据 fieldV = ur.GetPara(strs[1]); if (fieldV == null || fieldV == undefined) fieldV = ""; //增加字符串的查询 _html += GetInputHtml(strs[0], strs[1], fieldV); len++; }) } //数字型的查询 if (intFields.length != 0) { $.each(intFields, function (i, field) { if (field == "") return true; var strs = field.split("="); if (strs.length < 2 || strs[0] == "" || strs[1] == "") return true; if (len != 0 && len % 4 == 0) { _html += "
"; _html += "
"; } //存入查询条件 fields.push(strs[1]); //获取查询的历史数据 fieldV = ur.GetPara(strs[1]); if (fieldV == null || fieldV == undefined) fieldV = ""; fieldV = ur.GetPara(strs[1]); if (fieldV == null || fieldV == undefined || fieldV == "") { val1 = ""; val2 = ""; } else { val1 = fieldV.split(',')[0]; val2 = fieldV.split(',')[1]; } //增加字符串的查询 _html += GetInputPartHtml(strs[0], strs[1], val1, val2); len++; }) } //时间的查询条件 if (mapBase.DTSearchWay != 0) { if (len != 0 && len % 4 == 0) { _html += "
"; _html += "
"; } var dataInfo = "yyyy-MM-dd"; if (mapBase.DTSearchWay == 2) dataInfo = "yyyy-MM-dd HH:mm"; if (mapBase.DTSearchWay == 3) dataInfo = "yyyy-MM"; if (mapBase.DTSearchWay == 4) dataInfo = "yyyy"; _html += GetDateInputPart(mapBase.DTSearchWay, mapBase.DTSearchLabel, ur.DTFrom, ur.DTTo, dataInfo); len = len + 1; } var json = AtParaToJson(ur.Vals); var isSelectMore = cfg.IsSelectMore; //增加下拉、枚举的 if (attrs.length > 0) { $.each(attrs, function (i, attr) { if (len != 0 && len % 4 == 0) { _html += "
"; _html += "
"; } //复选框 if (attr.UIContralType == 2) { var selectVal = json[attr.Field]||"0"; _html += GetCheckBoxHtml(attr.Name, attr.Field, selectVal); len = len + 1; cbKey.push(attr.Field); return true; } if (attr.IsTree == "0") { if (isSelectMore == 0) { dllKey.push(attr.Field); _html += GetDDLHtml(attr.Name, attr.Field, data, attr); len = len + 1; return true; } if (mapExts.length == 0) { //解析成多选 xmlSelectKey.push(attr.Field); _html += GetXmlSelectHtml(attr.Name, attr.Field); } else { //判断是不是存在级联关系,存在selext下拉框 var items = $.grep(mapExts, function (obj) { return obj.AttrOfOper == attr.Field || obj.AttrsOfActive == attr.Field; }) if (items.length > 0) { dllKey.push(attr.Field); _html += GetDDLHtml(attr.Name, attr.Field, data, attr); } else { xmlSelectKey.push(attr.Field); _html += GetXmlSelectHtml(attr.Name, attr.Field); } } len = len + 1; return true; } if (attr.IsTree == "1") { treeKey.push(attr.Field); _html += GetXmlSelectHtml(attr.Name, attr.Field); len = len + 1; return true; } }) } //增加按钮的操作 if (len != 0 && len % 4 == 0) { _html += "
"; _html += "
"; } _html += "
"; if (type == "search" || type == "batch") { //查询 _html += ""; //自定义按钮 var btnLab1 = cfg.BtnLab1; if (btnLab1 != null && btnLab1 != undefined && btnLab1 != "") _html += ""; var btnLab2 = cfg.BtnLab2; if (btnLab2 != null && btnLab2 != undefined && btnLab2 != "") _html += ""; var btnLab3 = cfg.BtnLab3; if (btnLab3 != null && btnLab3 != undefined && btnLab3 != "") _html += ""; //新增 if (mapBase.IsInsert.toString().toLowerCase() == "true") _html += ""; if (type == "batch" && mapBase.IsDelete.toString().toLowerCase() == "true") _html += ""; //导出 if (cfg.IsExp == 1 || mapBase.IsExp.toString().toLowerCase() == "true") _html += ""; //导入 if (mapBase.IsImp.toString().toLowerCase() == "true") _html += ""; //设置 if (new WebUser().IsAdmin == true) _html += ""; } if (type == "group") { //分析 _html += ""; //设置 if (new WebUser().IsAdmin == true) _html += ""; //查询 //_html += ""; } _html += "
"; _html += "
"; $("#toolbar").append(_html); layui.form.render(); layui.dropdown.render({ elem: '#Exp', trigger: 'click', data: [ { title: '导出到Excel文件', id: "ExpExcel" }, { title: '导出到Csv文件', id: "ExpCsv" } ], click: function (data, oThis) { if (data.id == "ExpExcel") Exp(0, type); if (data.id == "ExpCsv") Exp(1, type); } }) $.each(xmlSelectKey, function (i, field) { var selectVal = json[field]; var urlVal = GetQueryString(field); if (urlVal != null && urlVal != undefined) selectVal = GetQueryString(field); selectVal = selectVal || "all"; selectVal = "," + selectVal + ","; var items = data[field]; var selectData = []; $.each(items, function (idx, item) { if (typeof item.No == "undefined") { selectData.push({ name: item.Lab, value: item.IntKey, selected: selectVal.indexOf("," + item.IntKey + ",") != -1 ? true : false }) } else { selectData.push({ name: item.Name, value: item.No, selected: selectVal.indexOf("," + item.No + ",") != -1 ? true : false }) } }) xmSelect.render({ el: "#XmlSelect_" + field, autoRow: true, radio: false, clickClose: false, model: { label: { type: 'text' } }, data: selectData, toolbar: { show: true, list: ['ALL', 'CLEAR', { name: '确定', icon: 'layui-icon layui-icon-ok', key: "#XmlSelect_" + field, method(event) { //$("xm-select").css("border-color", ""); //$(".xm-icon-expand").removeClass("xm-icon-expand"); //$(".xm-body").addClass("dis"); $(this.key).find("xm-select").click(); } }] }, }); }) //树形结构 $.each(treeKey, function (i, field) { var parentNo = 1; if (field.toLowerCase().includes("dept")) parentNo = webUser.FK_Dept; if (webUser.CCBPMRunModel === 1) parentNo = webUser.OrgNo; var treeData = findChildren(data[field], parentNo); xmSelect.render({ el: "#XmlSelect_" + field, autoRow: true, radio: true, clickClose: true, model: { label: { type: 'text' } }, tree: { show: true, showLine: true, strict: false, clickCheck: false, expandedKeys: true }, data: treeData, toolbar: { show: true, } }); }) //时间类型 if ($(".ccdate").length > 0) { $.each($(".ccdate"), function (i, item) { var format = $(item).attr("data-info"); var type = "date"; if (format == "yyyy-MM-dd HH:mm") type = "datetime"; if (format == "yyyy-MM") type = "month"; if (format == "yyyy") type = "year"; layui.laydate.render({ elem: '#' + item.id, //指定元素 format: format, type: type, done: function (value, date, endDate) { //判断结束时间不能小于开始时间 if(value == "") return; //比对的时间字段值 var operVal = $('#TB_DTFrom').val(); var msg = ""; var searchLabel = '开始时间'; if (value < operVal && operVal != "") { msg = "所选日期不能小于[" + searchLabel + "]对应的日期时间"; } if (msg != "") { layer.alert(msg); value = ""; } $(this.elem).val(value); } }); }) } //级联外键赋值. $.each(dllKey, function (i, field) { var selectVal = json[field]; var urlVal = GetQueryString(field); if (urlVal != null && urlVal != undefined) selectVal = GetQueryString(field); selectVal = selectVal || "all"; var exts = $.grep(mapExts, function (obj) { return obj.AttrOfOper == field; }); $("#DDL_" + field).val(selectVal); if (exts.length == 0) return true; var ddlPerant = $("#DDL_" + mapExt.AttrOfOper); var ddlChild = $("#DDL_" + mapExt.AttrsOfActive); if (ddlPerant != null && ddlChild != null) { ddlPerant.attr("onchange", "DDLRelation(this.value,\'" + "DDL_" + exts[0].AttrsOfActive + "\', \'" + exts[0].MyPK + "\',\'" + selectVal + "\')"); } }) $("#TB_Key").val(GetQueryString("Key")); layui.form.render(); } /** * 点击下三角选择列的显示隐藏 */ function dropDownLayuiCols(attrs) { if (isSecHeader == true || isThrHeader == true) return; var h = $(document).height() - $("#toolbar").height() - 150; var _html = GetDropdownHtml(attrs, h); //筛选列的显示 var inst = layui.dropdown.render({ elem: '.analyseCols', content: _html, style: 'height: ' + h + 'px; box-shadow: 1px 1px 30px rgb(0 0 0 / 12%);border: 1px solid #d2d2d2;' , ready: function () { inst.reload({ show: true //重载即显示 , content: GetDropdownHtml(attrs, h), }); layui.form.render(); } }) } function GetDropdownHtml(attrs, h) { var _html = '
'; return _html; } function GetInputHtml(labName, key, val, keyPlaceholder) { var _html = ""; _html += "
"; _html += "" _html += "
"; _html += ""; _html += "
"; _html += "
"; return _html; } function GetInputPartHtml(labName, key, val1, val2) { var _html = ""; _html += "
"; _html += "" _html += "
"; _html += "
-
"; _html += "
"; _html += "
"; return _html; } function GetDateInputPart(dtSearchWay, labName, val1, val2, dateInfo) { var _html = ""; _html += "
"; _html += "" if (dtSearchWay == 1 || dtSearchWay == 2) { _html += "
"; _html += "
-
"; _html += "
"; } if (dtSearchWay == 3 || dtSearchWay == 4) { _html += "
"; } _html += "
"; return _html; } function GetCheckBoxHtml(labName, key, val) { var _html = ""; _html += "
"; // _html += "" _html += "
"; var checkStr = val == "1" ? "checked" : ""; _html += ""; _html += "
"; _html += "
"; return _html; } function GetDDLHtml(labName, key, formData, attr) { var _html = ""; _html += "
"; _html += "" _html += "
"; _html += ""; _html += "
"; _html += "
"; return _html; } function GetXmlSelectHtml(labName, key) { var _html = ""; _html += "
"; _html += "" _html += "
"; _html += "
"; _html += "
"; _html += "
"; _html += "
"; return _html; } //初始化下拉列表框的OPERATION function InitDDLOperation(frmData, mapAttr, defVal) { var operations = ""; operations += ""; var ens = frmData[mapAttr.Field]; if (ens == null) { ens = [{ 'IntKey': 0, 'Lab': '否' }, { 'IntKey': 1, 'Lab': '是' }]; } for (var i = 0; i < ens.length; i++) { var en = ens[i]; if (en.No == undefined) operations += ""; else operations += ""; } return operations; } /******************************************工具栏查询条件、操作按钮的解析**********************************************************/ /******************************************获取查询列表字段的信息**********************************************************/ /** * 获取查询table的列集合处理 * @param {any} data 数据集合 * @param {any} thrMultiTitle 三级表头的内容 * @param {any} secMultiTitle 二级表头的内容 * @param {any} ColorSet 列字段颜色显示 * @param {any} attrs 显示列的集合 * @param {any} sortColumns 排序的字段 * * @param {any} focusField 焦点字段,超链接显示 * * @param {any} isBatch 是否是批处理 */ //判断是否是多级表头 var isThrHeader = false; //是否是三级表头 var isSecHeader = false;//是否是二级表头 var richAttrs = []; var dtMs = null; function GetColoums(data, thrMultiTitle, secMultiTitle, colorSet, sortColumns, focusField, isBatch) { colorSet = colorSet || ""; colorSet = colorSet.replace(/@/g, "@"); var hideAttrs = cfield.Attrs; var attrs = data.Attrs; dtMs = data["dtM"]; var sysMapData = data["Sys_MapData"][0]; sysMapData = new Entity("BP.Sys.MapData", sysMapData); //把他转化成entity. enPK = sysMapData.GetPara("PK"); if (attrs == undefined) { alert('没有取得属性.'); return; } if (thrMultiTitle == null || thrMultiTitle == undefined) thrMultiTitle = ""; if (thrMultiTitle != "") isThrHeader = true; if (secMultiTitle == null || secMultiTitle == undefined) secMultiTitle = ""; if (isThrHeader == false && secMultiTitle != "") isSecHeader = true; var firstColumns = new Array(); //一级菜单 var secondColumns = new Array(); //二级菜单 var threeColumns = new Array(); //三级菜单 var fieldColumns = {}; var foramtFunc = cfg.ForamtFunc; if (foramtFunc == null || foramtFunc == undefined || foramtFunc == "") foramtFunc = ""; if (isBatch && isBatch == true) { fieldColumns = { type: 'checkbox', field: '', align: 'center', width: 50, rowspan: isThrHeader == true ? 3 : isSecHeader == true ? 2 : 1, }; AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, isThrHeader == true ? 3 : isSecHeader == true ? 2 : 1); } var title = `序`; if (isSecHeader == false && isThrHeader == false) title = `序`; fieldColumns = { title: title, field: '', align: 'center', width: 80, rowspan: isThrHeader == true ? 3 : isSecHeader == true ? 2 : 1, templet: function (d) { return pageSize * (pageIdx - 1) + d.LAY_INDEX; // 返回每条的序号: 每页条数 *(当前页 - 1 )+ 序号 } }; AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, isThrHeader == true ? 3 : isSecHeader == true ? 2 : 1); for (var i = 0; i < attrs.length; i++) { var attr = attrs[i]; if (attr.UIVisible == 0 || attr.KeyOfEn == "OID" || attr.KeyOfEn == "WorkID" || attr.KeyOfEn == "NodeID" || attr.KeyOfEn == "MyNum" || attr.KeyOfEn == "MyPK") { keyOfEn = attr.KeyOfEn continue; } var keyRowSpan = GetAttrKeyRowSpan(attr.KeyOfEn, secMultiTitle, thrMultiTitle); if (keyRowSpan == 3 && thrcolspan.field != undefined) { threeColumns.push(thrcolspan); thrcolspan = {}; } //是否增加二级或者三级分组 if ((isSecHeader == true && keyRowSpan == 1) || isThrHeader == true && keyRowSpan != 3) AddSecOrThrColumn(attr.KeyOfEn, keyRowSpan, secondColumns, threeColumns, secMultiTitle, thrMultiTitle); var field = attr.KeyOfEn; var title = attr.Name; var width = attr.Width; var sortable = false; if (sortColumns != null && sortColumns != "") sortable = sortColumns.indexOf(field) != -1 ? true : false; if (width < 100) { width = 100; } if (field == "Title") { width = 230; } if (attr.UIContralType == 1) { if (width == null || width == "" || width == undefined) width = 120; field = field + "Text"; fieldColumns = { field: field, title: title, fixed: false, minWidth: width, sort: sortable, hide: hideAttrs.indexOf("," + field + ",") != -1, rowspan: keyRowSpan, templet: function (row) { var formatter = ""; var val = row[this.field]; if (typeof val == 'undefined') { val = row[this.field.substring(0, this.field.length-4)]; } var field = this.field.substring(0, this.field.length - 4); if (foramtFunc != "" && foramtFunc.indexOf(field + "@") != -1) { formatter = foramtFunc.substring(foramtFunc.indexOf(field + "@")); formatter = formatter.substring(0, formatter.indexOf(";")); var strs = formatter.split("@"); if (strs.length == 2) { val = eval(strs[1] + "('" + row[field] + "','" + JSON.stringify(row) + "')"); } } if (drillFields.indexOf(field + ",") != -1 && typeof Drill == "function") { var _html = cceval("Drill('" + field + "','" + val + "','" + JSON.stringify(row) + "')"); return _html; } return val; } }; AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, keyRowSpan); continue; } if (attr.UIContralType == 2) { fieldColumns = { field: field, title: title, minWidth: width, fixed: false, sort: sortable, rowspan: keyRowSpan, hide: hideAttrs.indexOf("," + field + ",") != -1, templet: function (row) { var val = ""; if (row[this.field] == "0") val = "否"; if (row[this.field] == "1") val = "是"; if (drillFields.indexOf(this.field + ",") != -1 && typeof Drill == "function") { var _html = cceval("Drill('" + this.field + "','" + val + "','" + JSON.stringify(row) + "')"); return _html; } return val; } }; AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, keyRowSpan); continue; } if (width == null || width == "" || width == undefined) width = 100; if (attr.IsRichText == "1") { richAttrs.push(attr.KeyOfEn); fieldColumns = { field: field, title: title, minWidth: width, fixed: false, sort: sortable, hide: hideAttrs.indexOf("," + field + ",") != -1, rowspan: keyRowSpan, templet: function (row) { var val = row[this.field]; if (val == "") return val; val = htmlDecodeByRegExp(val); return "
" + val + "
"; } }; AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, keyRowSpan); continue; } if (attr.MyDataType == "6") { fieldColumns = { field: field, title: title, minWidth: width, fixed: false, sort: sortable, rowspan: keyRowSpan, hide: hideAttrs.indexOf("," + field + ",") != -1, templet: function (row) { var val = row[this.field]; if (val == null || val == undefined || val == "") return ""; val = FormatDate(new Date(val), "yyyy-MM-dd"); if (drillFields.indexOf(this.field + ",") != -1 && typeof Drill == "function") { var _html = cceval("Drill('" + this.field + "','" + val + "','" + JSON.stringify(row) + "')"); return _html; } return val; } }; AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, keyRowSpan); continue; } fieldColumns = { field: field, title: title, minWidth: width, fixed: false, sortable: true, sort: sortable, hide: hideAttrs.indexOf("," + field + ",") != -1, align: field.toLowerCase() == "icon" ? "center" : "left", rowspan: keyRowSpan, templet: function (row) { //如果这个字段是Icon if (this.field.toLowerCase() == "icon" && row[this.field] != "") { return ""; } var val = row[this.field]; if (val == null) val = ""; var formatter = ""; if (foramtFunc != "" && foramtFunc.indexOf(this.field + "@") != -1) { formatter = foramtFunc.substring(foramtFunc.indexOf(this.field + "@")); formatter = formatter.substring(0, formatter.indexOf(";")); var strs = formatter.split("@"); if (strs.length == 2) { val = eval(strs[1] + "('" + val + "','" + JSON.stringify(row) + "')"); } } if (this.field == focusField) { var pkval = row[enPK]; var paras = "&" + enPK + "=" + pkval; for (var i = 0; i < attrs.length; i++) { var attr = attrs[i]; if (attr.UIContralType == 1) paras += "&" + attr.KeyOfEn + "=" + row[attr.KeyOfEn]; } var rowstr = JSON.stringify(row); rowstr = encodeURIComponent(rowstr); return "" + val + ""; } if (drillFields.indexOf(this.field + ",") != -1 && typeof Drill == "function") { var _html = cceval("Drill('" + this.field + "','" + val + "','" + JSON.stringify(row) + "')"); return _html; } var fieldColor = []; if (colorSet.indexOf("@" + this.field + ":") != -1) { fieldColor = getFieldColor(colorSet, this.field); } if (fieldColor.length == 0) return val + ""; for (var i = 0; i < fieldColor.length; i++) { var color = fieldColor[i]; if (color.From <= row[this.field] && color.To >= row[this.field]) return "
" + val + "
"; } } }; AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, keyRowSpan); } if (thrcolspan.field != undefined) threeColumns.push(thrcolspan); //获取屏幕的长宽 var W = document.body.clientWidth - 40; var H = document.body.clientHeight - 40; var entityAthType = sysMapData.GetPara("BPEntityAthType"); if (dtMs.length > 0 || entityAthType == 1 || entityAthType == 2 || (cfg.EnBtnLab1 && cfg.EnBtnLab1 != "") || (cfg.EnBtnLab2 && cfg.EnBtnLab2 != "")) { var len = dtMs.length; if (cfg.EnBtnLab1 && cfg.EnBtnLab1 != "") len++; if (cfg.EnBtnLab2 && cfg.EnBtnLab2 != "") len++; fieldColumns = { field: '', title: '操作', minWidth: len * 100 + 50, align: 'center', rowspan: isThrHeader == true ? 3 : isSecHeader == true ? 2 : 1, templet: function (row) { return rowbar(dtMs, row); } } AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, isThrHeader == true ? 3 : isSecHeader == true ? 2 : 1); } var isEnableOpen = cfg.GetPara("IsEnableOpenICON"); //添加显示详情列 if (isEnableOpen == "1") { //加入操作下载文件 fieldColumns = { field: 'viewDetail', title: '详细信息', minWidth: 80, align: 'center', rowspan: isThrHeader == true ? 3 : isSecHeader == true ? 2 : 1, templet: function (row) { var pkval = row[enPK]; var paras = "&" + enPK + "=" + pkval; for (var i = 0; i < attrs.length; i++) { var attr = attrs[i]; if (attr.UIContralType == 1) paras += "&" + attr.KeyOfEn + "=" + row[attr.KeyOfEn]; } var rowstr = JSON.stringify(row); rowstr = encodeURIComponent(rowstr); return "详情"; } } AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, isThrHeader == true ? 3 : isSecHeader == true ? 2 : 1); } if (thrcolspan.field != undefined) threeColumns.push(thrcolspan); var columns = new Array(); if (isThrHeader == false && isSecHeader == false) columns[0] = firstColumns; if (isSecHeader == true) { columns.push(secondColumns); columns.push(firstColumns); } if (isThrHeader == true) { columns.push(threeColumns); columns.push(secondColumns); columns.push(firstColumns); } return columns; } /** * 解析行事件 * @param {any} dtMs * @param {any} entityAthType */ function rowbar(dtMs, row) { var _html = ''; $.each(dtMs, function (idx, dtM) { //根据行中的数据显示 var isShowForEnsCondtion = dtM.IsShowForEnsCondtion; if (isShowForEnsCondtion != null && isShowForEnsCondtion != "") { var strs = isShowForEnsCondtion.split("@"); var isShow = true; $.each(strs, function (i, obj) { var items = obj.split("="); if (row[items[0]] != items[1]) { isShow = false; return true; } }); if (isShow == false) return true; } if (dtM.Icon != "" && dtM.Icon != null) _html += '  ' + dtM.Title + ''; else _html += '' + dtM.Title + ''; }); if (row.MyFileName != null && row.MyFileName != undefined && row.MyFileName != "") _html += '下载'; var btnLab1 = cfg.EnBtnLab1; if (btnLab1 != null && btnLab1 != undefined && btnLab1 != "") _html += '' + btnLab1 + ''; var btnLab2 = cfg.EnBtnLab2; if (btnLab2 != null && btnLab2 != undefined && btnLab2 != "") _html += '' + btnLab2 + ''; if (_html != "") { $("#Btns").append(_html); } if (_html == "") _html = "-"; return _html; } /** * 处理行操作 * @param {any} dtm * @param {any} row */ function DealRowBarOper(dtm, row) { var pkval = row[enPK]; var warning = dtm.Warning; var refMethodType = parseInt(dtm.RefMethodType); var url = dtm.Url; url = url.replace("@WorkID", pkval); url = url.replace("@OID", pkval); url = url.replace("@PKVal", pkval); url = dtm.Url + pkval; //获取屏幕的宽 var W = document.body.clientWidth - 40; switch (refMethodType) { case RefMethodType.LinkeWinOpen: WinOpenIt(url, dtm.Title); break; case RefMethodType.LinkModel: case RefMethodType.RightFrameOpen: OpenLayuiDialog(url, dtm.Title, W, 100, "r", false); break; case RefMethodType.Func: if (dtm.FunPara == true || dtm.FunPara == "true") OpenLayuiDialog(url, dtm.Title, W, 100, "r", false); else { if (warning == null || warning == "null" || warning == "") { warning = "确定要执行吗?"; } else { warning = warning.replace(/,\s+/g, ","); warning = warning.replace(/\s+/g, "\r\n"); } openFun(warning, url, dtm.Title); } break; case RefMethodType.TabOpen: if (window.top && window.top.vm) { window.top.vm.openTab(dtm.Title, url); break; } OpenLayuiDialog(url, dtm.Title, W, 100, "r", false); break; default: break; } } /** * 把列增加到对应的数组中 * @param column 列信息 * @param firstColumns 一级表头数组 * @param secondColumns 二级表头数组 * @param threeColumns 三级表头数组 * @param columnIdx 隶属那个表头 */ function AddColumn(column, firstColumns, secondColumns, threeColumns, columnIdx) { if (columnIdx == 1) firstColumns.push(column); if (columnIdx == 2) secondColumns.push(column); if (columnIdx == 3) threeColumns.push(column); } /** * 获取数据字段跨的行数 * @param keyOfEn */ function GetAttrKeyRowSpan(keyOfEn) { //一级表头 if (isThrHeader == false && isSecHeader == false) return 1; //先判断是否是隶属于二级表头下的字段 if (secMultiTitle.indexOf("," + keyOfEn + ",") != -1) return 1; //是否是隶属于三级表头下的字段 if (thrMultiTitle.indexOf("," + keyOfEn + ",") != -1) return 2; return isThrHeader == true ? 3 : 2; } /** * 增加二级或三级表头的分组 * @param keyOfEn * @param keyRowSpan * @param secondColumns * @param threeColumns */ var curSecGroup = ""; var curTreGroup = ""; var thrcolspan = {}; var isSecChange = false; function AddSecOrThrColumn(keyOfEn, keyRowSpan, secondColumns, threeColumns) { //计算二级表头分组 var secfilds = getMutliFile(keyOfEn, secMultiTitle); var secRowSpan = 1; if (isSecHeader == true && keyRowSpan == 1) secRowSpan = 1; if (isThrHeader == true && keyRowSpan == 1) { if (thrMultiTitle.indexOf("," + secfilds[0] + ",") == -1) secRowSpan = 2; else secRowSpan = 1; } if (isThrHeader == true && keyRowSpan == 2) secRowSpan = 0; //增加二级表头 if (secRowSpan == 1) { var colspan = secfilds.length - 1; if (curSecGroup == "" || curSecGroup != secfilds[0]) { curSecGroup = secfilds[0]; isSecChange = true; secondColumns.push({ title: secfilds[0], field: '', align: 'center', colspan: colspan, rowspan: secRowSpan }); } else { isSecChange = false; } //增加三级表头 if (isThrHeader == true && secRowSpan == 1) { var filds = getMutliFile(secfilds[0], thrMultiTitle); if (curTreGroup == "" || curTreGroup != filds[0]) { //增加三级表头 if (curTreGroup != "" && curTreGroup != filds[0]) { threeColumns.push(thrcolspan); thrcolspan = {}; } thrcolspan = { title: filds[0], field: '', align: 'center', colspan: colspan, } curTreGroup = filds[0]; } else { if (isSecChange == true) thrcolspan.colspan = thrcolspan.colspan + colspan; } } } //三级表头 if (secRowSpan == 2) { if (thrcolspan.title != undefined) { threeColumns.push(thrcolspan); thrcolspan = {}; } if (curTreGroup == "" || curTreGroup != secfilds[0]) { curTreGroup = secfilds[0]; threeColumns.push({ title: secfilds[0], field: '', align: 'center', colspan: secfilds.length - 1, rowspan: secRowSpan }); } } if (secRowSpan == 0) { filds = getMutliFile(keyOfEn, thrMultiTitle); if (curTreGroup == "" || curTreGroup != filds[0]) { //增加三级表头 if (curTreGroup != "" && curTreGroup != filds[0]) { threeColumns.push(thrcolspan); } thrcolspan = { title: filds[0], field: '', align: 'center', colspan: 1, }; curTreGroup = filds[0]; } else { thrcolspan.colspan = thrcolspan.colspan + 1; } } } function getMutliFile(keyOfEn, multi) { var fields = multi.split(";"); for (var i = 0; i < fields.length; i++) { var str = fields[i]; if (str == "") continue; if (str.indexOf("," + keyOfEn + ",") == -1) continue; var strs = str.substring(0, str.length - 1).split(","); return strs; } return ""; } /** * 获取字段的设置 * @param colorSet 颜色总体设置 * @param keyOfEn 字段 */ function getFieldColor(colorSet, keyOfEn) { var fieldColor = []; var colorSets = colorSet.split('@'); for (var i = 0; i < colorSets.length; i++) { if (colorSets[i] == "") continue; var strs = colorSets[i].split(':'); if (strs.length == 0 || strs.length == 1) continue; if (strs[0] != keyOfEn) continue; var ss = strs[1].split(';'); for (var k = 0; k < ss.length; k++) { if (ss[k] == "") continue; var ts = ss[k].split(','); if (ts.length < 3) { alert('字段' + keyOfEn + '范围颜色设置格式错误'); break; } fieldColor.push({ "From": parseInt(ts[0].replace("From=", "")), "To": parseInt(ts[1].replace("To=", "")), "Color": ts[2].replace("Color=", "") }); } } return fieldColor; } /******************************************获取查询列表字段的信息**********************************************************/ //执行查询. function Search(pageType) { pageType = pageType || "search"; SearchCondtion(); pageIdx = 1; var tableData = SearchData(pageType); //分页 layui.table.reload('tableSearch', { data: transferHtmlData(tableData["DT"]) }); dropDownLayuiCols(tableData.Attrs); renderLaypage(); } function SearchCondtion() { //保存查询条件. var ensName = GetQueryString("EnsName"); ur = GetUserRegedit(); if ($("#TB_Key") != null && $("#TB_Key").val() != "") ur.SearchKey = $("#TB_Key").val(); else ur.SearchKey = ""; //增加字段查询 var val = ""; for (var i = 0; i < fields.length; i++) { var field = fields[i]; var strs = $("input[name='TB_" + field + "']"); if (strs.length == 1) { ur.SetPara(field, $("#TB_" + field).val()); } else { if ($("#TB_" + field + "_0").val() == "" && $("#TB_" + field + "_1").val() == "") ur.SetPara(field, ""); else ur.SetPara(field, $("#TB_" + field + "_0").val() + "," + $("#TB_" + field + "_1").val()); } } //设置查询时间. if ($("#TB_DTFrom").length == 1) ur.DTFrom = $("#TB_DTFrom").val(); if ($("#TB_DTTo").length == 1) ur.DTTo = $("#TB_DTTo").val(); //获得外键的查询条件,存储里面去. var str = ""; $.each(cbKey, function (i, key) { if ($("#CB_" + key).is(':checked')==true) str += "@" + key + "=1"; else str += "@" + key + "=0"; }) $.each(dllKey, function (i, key) { str += "@" + key + "=" + $("#DDL_" + key).val(); }); $.each(xmlSelectKey, function (i, key) { var val = xmSelect.get('#XmlSelect_' + key, true).getValue('value'); str += "@" + key + "=" + val.join(","); }) $.each(treeKey, function (i, key) { var val = xmSelect.get('#XmlSelect_' + key, true).getValue('value'); str += "@" + key + "=" + val.join(","); }); ur.FK_Emp = webUser.No; ur.CfgKey = "SearchAttrs"; ur.Vals = str; ur.FK_MapData = ensName; ur.SetPara("RecCount", count); var i = ur.Update(); } function SearchData(pageType, orderBy, orderWay) { pageType = pageType || "search"; //ur = GetUserRegedit() SearchCondtion(); var handler = new HttpHandler("BP.WF.HttpHandler.WF_Comm"); handler.AddUrlData(); handler.AddPara("PageIdx", pageIdx); handler.AddPara("PageSize", pageSize); if (orderBy != null && orderBy != undefined) ur.OrderBy = orderBy; if (orderWay != null && orderWay != undefined) ur.OrderWay = orderWay; ur.Update(); //查询集合 var data = handler.DoMethodReturnString("Search_SearchIt"); if (data.indexOf('err@') == 0) { alert(data); return; } data = JSON.parse(data); if (pageType == "batch") { batchData.forEach(function (item) { data["DT"].forEach(function (obj) { if (obj[enPK] == item[enPK]) { obj.LAY_CHECKED = true; return false; } }) }) } //当前用户页面信息. ur.MyPK = webUser.No + "_" + ensName + "_SearchAttrs"; ur.SetPKVal(ur.MyPK); ur.RetrieveFromDBSources(); count = ur.GetPara("RecCount"); if (count % pageSize != 0) pages = parseInt(count / pageSize) + 1; else pages = parseInt(count / pageSize); if (pages == 0) pages = 1; //设置查询总数居的合计、平均等信息 var heji = data["Search_HeJi"]; var _html = ""; if (heji != null && heji != undefined) { $.each(heji, function (i, item) { var val = item.Value; if (val == null || val == "" || val == undefined) val = 0; if (item.Type == "Sum") _html += item.Field + "(总合计):" + val + " "; if (item.Type == "Avg") _html += item.Field + "(总平均):" + val + " "; }); } $("#JsResult").html("").html(_html); return data; } var searchTableData = []; function transferHtmlData(tableData) { tableData = JSON.parse(filterXSS(JSON.stringify(tableData))) var val = ""; if (richAttrs.length != 0) { $.each(tableData, function (i, item) { richAttrs.forEach(key => { val = item[key]; if (val != "") { // val = htmlEncodeByRegExp(val); // val = val.replace(/<[^>]+>/g, "") item[key] = filterXSS(val); console.log(item[key]) } }) }); } searchTableData = tableData; return tableData; } function htmlEncodeByRegExp(str) { var s = ''; if (str == null || str == undefined) return ""; if (str && str.length === 0) { return ''; } s = str.replace(/&/g, '&'); s = s.replace(//g, '>'); s = s.replace(/ /g, ' '); s = s.replace(/\'/g, '''); s = s.replace(/\"/g, '"'); return s; } function htmlDecodeByRegExp(str) { var s = ''; if (str == null || str == undefined) return ""; if (str && str.length === 0) { return ''; } s = str.replace(/&/g, '&'); s = s.replace(/</g, '<'); s = s.replace(/>/g, '>'); s = s.replace(/ /g, ' '); s = s.replace(/'/g, '\''); s = s.replace(/"/g, '\"'); return s; } function OpenEn(pk, paras, flag, row, obj, openType) { if (row != null && row != undefined && row != "") row = JSON.parse(decodeURIComponent(row)); var str = GetHrefUrl(); //当前URL参数 var currUrl = str.substring(str.indexOf('?') + 1); // window.location.search.substring(1); //去除URL中的参数 EnsName、 PKVal var currUrls = currUrl.split("&"); currUrl = ""; $.each(currUrls, function (i, param) { if (param.indexOf("EnsName") >= 0 || param.indexOf("PKVal") >= 0) return true; currUrl += "&" + param; }); var ensName = GetQueryString("EnsName"); var enName = ensName.substring(0, ensName.length - 1); //考虑兼容旧版本. var url = cfg.GetPara("WinOpenUrl"); if (url && url.length > 4) { cfg.Url = url; cfg.Update(); } url = cfg.UrlExt; var urlOpenType = cfg.SearchUrlOpenType; if (urlOpenType == 0 || urlOpenType == undefined) url = "./RefFunc/En.htm?EnName=" + mapBase.EnName + "&PKVal=" + pk + currUrl; if (urlOpenType == 1) url = "./RefFunc/EnOnly.htm?EnName=" + mapBase.EnName + "&PKVal=" + pk + currUrl; if (urlOpenType == 2) url = "../CCForm/FrmGener.htm?FK_MapData=" + GetQueryString("EnsName") + "&PKVal=" + pk + currUrl; if (urlOpenType == 3) url = "../CCForm/FrmGener.htm?FK_MapData=" + GetQueryString("EnsName") + "&PKVal=" + pk + currUrl; if (urlOpenType == 9) { if (url.indexOf('?') == -1) url = url + "?1=1"; if (url.indexOf('FrmID') != -1) url = url + "&WorkID=" + pk + "&OID=" + pk; } //url中包含@符号需要进行替换 if (url.indexOf("@") != -1) { url = DealJsonExp(row, url); } var winCardW = cfg.WinCardW; var windowW = document.body.clientWidth; if (winCardW == 0) windowW = windowW * 3 / 4; if (winCardW == 1) windowW = windowW * 1 / 2; if (winCardW == 3) windowW = windowW * 1 / 4; var openModel = cfg.OpenModel; if (openModel == 0) { var tName = "详细"; if(openType == 'New'){ tName = "新建"; } if(openType == 'Edit'){ tName = "编辑"; } var isRefresh = cfg.IsRefreshParentPage == 1 ? true : false; if (isRefresh) OpenLayuiDialog(url, mapBase.EnDesc + ' : ' + tName, windowW, 100, "r", false, false, false, null, function () { if(pk== null || pk == undefined || pk=="" ){ SearchData(); return; } ChangeTableData(pk,enName,obj); }); else OpenLayuiDialog(url, mapBase.EnDesc + ' : ' + tName, windowW, 100, "r", false); } else { var windowObj = window.open(url); if (flag == 0 || cfg.IsRefreshParentPage == 1) { var loop = setInterval(function () { if (windowObj.closed) { clearInterval(loop); SearchData(); } }, 1000); } } } function ChangeTableData(pkVal, enName, obj) { if (typeof obj != "undefined") { //根据PK获取到改行的最新信息 var en = new Entity(enName); en.SetPKVal(pkVal); en.RetrieveFromDBSources(); searchTableData.forEach(item => { if (item[enPK] == pkVal) { if (richAttrs.length != 0) { richAttrs.forEach(key => { var val = item[key]; if (val != "") { en[key] = filterXSS(val); console.log(item[key]) } }); } for (var key in item) item[key] = en[key]; if (typeof obj != "undefined") { obj.update(item); } return; } }); } if (typeof obj === "undefined") { pageIdx = 1; var data = SearchData("search"); //获取列 var tableData = transferHtmlData(data["DT"]); layui.table.reload('tableSearch', { data: tableData }); } } function New() { OpenEn("", "", 0, null, "New"); } function Exp(type, pageType) { var searchData = []; if (pageType == "search") { SearchCondtion(); var handler = new HttpHandler("BP.WF.HttpHandler.WF_Comm"); handler.AddPara("EnsName", GetQueryString("EnsName")); //查询集合 var data = handler.DoMethodReturnString("Search_Exp"); if (data.indexOf("err@") == 0) { layer.alert(data); return; } searchData = JSON.parse(data); var richtext = "," + richAttrs.join(",") + "," $.each(searchData, function (i, item) { for (var key in item) { if (item[key] == null || item[key] == undefined) item[key] = ""; if (type == 0) item[key] = item[key] + ""; if (richtext.indexOf("," + key + ",") != -1) { var val = item[key]; val = replaceAll(val, "<[^>]+>", ""); val = replaceAll(val, "&[^;]+;", ""); item[key] = val; } } }) } if (pageType == "batch") { searchData = batchData; } if (searchData.length == 0) { layer.alert("没有需要导出的数据"); return ""; } if (type == 0) { layui.table.exportFile("tableSearch", searchData, 'xls'); } if (type == 1) layui.table.exportFile("tableSearch", searchData, 'csv'); return; } ///导入. function Imp() { var ensName = GetQueryString("EnsName"); var en = new Entity("BP.Sys.EnCfg", ensName); var url = "./Sys/ImpData.htm?EnsName=" + GetQueryString("EnsName") + "&m=" + Math.random(); if (en.ImpFuncUrl != '') url = en.ImpFuncUrl; //获取屏幕的长宽 var W = document.body.clientWidth - 80; OpenLayuiDialog(url, '导入数据', W, 100, "r", true); } //设置 function Setting() { //先判断是否有该笔数据. var ensName = GetQueryString("EnsName"); var en = new Entity("BP.Sys.EnCfg"); en.SetPKVal(ensName); var i = en.RetrieveFromDBSources(); if (i == 0) { en.No = ensName; en.Insert(); } var url = "./RefFunc/En.htm?EnName=BP.Sys.EnCfg&No=" + GetQueryString("EnsName") + "&m=" + Math.random(); //获取屏幕的长宽 var W = document.body.clientWidth - 340; OpenLayuiDialog(url, "", W, 100, "r", true); } function openFun(warning, url, title) { var W = document.body.clientWidth - 40; if (confirm(warning)) { OpenLayuiDialog(url, title, W, 100, "r", false); } } function downLoadFile(PKVal) { if (plant == "CCFlow") SetHref(basePath + '/WF/Comm/ProcessRequest?DoType=HttpHandler&HttpHandlerName=BP.WF.HttpHandler.WF_CommEntity&DoMethod=EntityFile_Load&DelPKVal=' + PKVal + '&EnsName=' + GetQueryString("EnsName")); else { var currentPath = GetHrefUrl(); var path = currentPath.substring(0, currentPath.indexOf('/WF') + 1); Url = path + '/WF/Ath/EntityFileLoad.do?DelPKVal=' + PKVal + '&EnsName=' + GetQueryString("EnsName"); SetHref(url); } } //执行方法 function executeFunction(jsString, label) { jsString = jsString.replace(/~/g, "'"); if (jsString.indexOf("/") != -1) { var W = document.body.clientWidth - 40; OpenLayuiDialog(jsString, label, W, 100, "r", false); } else { if (jsString.indexOf('(') == -1) cceval(jsString + "()"); else cceval(jsString); } } //执行删除 function Delete() { if (batchData.length == 0) { layer.alert("请选择要删除的行"); return; } if (confirm("确定要删除选择的行吗") == false) return; var deleteRow = batchData; //执行删除操作 var enName = ensName.substring(0, ensName.length - 1); $.each(deleteRow, function (idx, item) { var en = new Entity(enName); en.Delete(enPK, item[enPK]); }) Search("batch"); batchData = []; } /* 级联下拉框 param 传到后台的一些参数 例如从表的行数据 主表的字段值 如果param参数在,就不去页面中取KVS 了,PARAM 就是*/ function DDLRelation(selectVal, ddlChild, fk_mapExt, param) { if (selectVal == "all") { $("#" + ddlChild).empty(); //无数据返回时,提示显示无数据,并将与此关联的下级下拉框也处理一遍,edited by liuxc,2015-10-22 $("#" + ddlChild).append(""); $.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; $("#" + ddlChild).append("