|
|
|
|
var dblist = null;
|
|
|
|
|
/**
|
|
|
|
|
* 是否自动填充数据
|
|
|
|
|
* @param {any} mapAttr
|
|
|
|
|
*/
|
|
|
|
|
function isHaveAutoFull(mapAttr) {
|
|
|
|
|
if (mapExts == null || mapExts == undefined)
|
|
|
|
|
return false;
|
|
|
|
|
var isHave = false;
|
|
|
|
|
$.each(mapExts, function (idex, mapExt) {
|
|
|
|
|
if (mapExt.AttrOfOper == mapAttr.Field
|
|
|
|
|
&& mapExt.ExtType == "AutoFullDLLSearchCond") {
|
|
|
|
|
isHave = true;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
if (isHave)
|
|
|
|
|
return true;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 是否有联动数据
|
|
|
|
|
* @param {any} mapAttr
|
|
|
|
|
*/
|
|
|
|
|
function isHaveActiveDDLSearchCond(mapAttr) {
|
|
|
|
|
if (mapExts == null || mapExts == undefined)
|
|
|
|
|
return false;
|
|
|
|
|
var isHave = false;
|
|
|
|
|
$.each(mapExts, function (idex, mapExt) {
|
|
|
|
|
if (mapExt.AttrOfOper == mapAttr.Field
|
|
|
|
|
&& mapExt.ExtType == "ActiveDDLSearchCond") {
|
|
|
|
|
isHave = true;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
if (isHave)
|
|
|
|
|
return true;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 配置下拉框数据
|
|
|
|
|
* @param frmData
|
|
|
|
|
* @param mapAttr
|
|
|
|
|
* @param defVal
|
|
|
|
|
*/
|
|
|
|
|
function InitDDLOperation(frmData, mapAttr, defVal, ddlShowWays, selectSearch) {
|
|
|
|
|
var operations = [];
|
|
|
|
|
var isAutoFull = isHaveAutoFull(mapAttr);
|
|
|
|
|
var isActiveDDL = isHaveActiveDDLSearchCond(mapAttr);
|
|
|
|
|
if (isAutoFull == false && isActiveDDL == false)
|
|
|
|
|
operations.push({
|
|
|
|
|
name: "全部",
|
|
|
|
|
value: "all"
|
|
|
|
|
});
|
|
|
|
|
var ens = frmData[mapAttr.Field];
|
|
|
|
|
if (ens == null || ens == undefined) {
|
|
|
|
|
operations.push({
|
|
|
|
|
name: "否",
|
|
|
|
|
value: "0"
|
|
|
|
|
});
|
|
|
|
|
operations.push({
|
|
|
|
|
name: "是",
|
|
|
|
|
value: "1"
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
ens.forEach(function (en) {
|
|
|
|
|
if (en.No == undefined)
|
|
|
|
|
if (en.IntKey == undefined) {
|
|
|
|
|
operations.push({
|
|
|
|
|
name: en.Name,
|
|
|
|
|
value: en.BH,
|
|
|
|
|
selected: en.BH == defVal ? true : false
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
operations.push({
|
|
|
|
|
name: en.Lab,
|
|
|
|
|
value: en.IntKey,
|
|
|
|
|
selected: en.IntKey == defVal ? true : false
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
else
|
|
|
|
|
operations.push({
|
|
|
|
|
name: en.Name,
|
|
|
|
|
value: en.No,
|
|
|
|
|
selected: en.No == defVal ? true : false
|
|
|
|
|
});
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ((isAutoFull == true || isActiveDDL == true) && defVal == 'all') {
|
|
|
|
|
defVal = operations[0].value;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var showWay = ddlShowWays[mapAttr.Field];
|
|
|
|
|
showWay = showWay == null || showWay == undefined || showWay == "" ? 0 : showWay;
|
|
|
|
|
selectSearch.push({
|
|
|
|
|
key: mapAttr.Field,
|
|
|
|
|
label: mapAttr.Name,
|
|
|
|
|
value: defVal,
|
|
|
|
|
showWay: showWay, //0下拉 1平铺
|
|
|
|
|
operations: operations,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return selectSearch;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 获取查询table的列集合处理
|
|
|
|
|
* @param {any} thrMultiTitle 三级表头的内容
|
|
|
|
|
* @param {any} secMultiTitle 二级表头的内容
|
|
|
|
|
* @param {any} ColorSet 列字段颜色显示
|
|
|
|
|
* @param {any} attrs 显示列的集合
|
|
|
|
|
* @param {any} sortColumns 排序的字段
|
|
|
|
|
* @param {any} openModel 行打开方式
|
|
|
|
|
* @param {any} openTitle 弹窗的标题
|
|
|
|
|
* @param {any} entityType 当前表单是实体类,单据,数据源
|
|
|
|
|
* @param {any} isBatch 是否可以批处理
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
//判断是否是多级表头
|
|
|
|
|
var isThrHeader = false; //是否是三级表头
|
|
|
|
|
var isSecHeader = false;//是否是二级表头
|
|
|
|
|
var richAttrs = [];
|
|
|
|
|
function GetColoums(thrMultiTitle, secMultiTitle, colorSet, sortColumns, openModel, openTitle, entityType, isBatch) {
|
|
|
|
|
var foramtFunc = mapData.ForamtFunc;
|
|
|
|
|
foramtFunc = foramtFunc == null || foramtFunc == undefined ? "" : foramtFunc;
|
|
|
|
|
var handler = new HttpHandler("BP.CCBill.WF_CCBill");
|
|
|
|
|
handler.AddPara("FrmID", frmID);
|
|
|
|
|
var data = handler.DoMethodReturnString("Search_MapAttr");
|
|
|
|
|
if (data.indexOf("err@") != -1) {
|
|
|
|
|
layer.alert(data);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
data = JSON.parse(data);
|
|
|
|
|
var attrs = data.Attrs;
|
|
|
|
|
var sys_enums = data.Sys_Enum;
|
|
|
|
|
var methods = data.Frm_Method;
|
|
|
|
|
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 = {};
|
|
|
|
|
//判断查询列表是不是有其他删除,集合操作,无不显示复选框
|
|
|
|
|
if (isHaveDelOper == true || isHaveSeachOper == true || isBatch == true) {
|
|
|
|
|
fieldColumns = {
|
|
|
|
|
type: 'checkbox',
|
|
|
|
|
rowspan: isThrHeader == true ? 3 : isSecHeader == true ? 2 : 1
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, isThrHeader == true ? 3 : isSecHeader == true ? 2 : 1);
|
|
|
|
|
} else {
|
|
|
|
|
fieldColumns = {
|
|
|
|
|
title: '序',
|
|
|
|
|
field: '',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: 50,
|
|
|
|
|
rowspan: isThrHeader == true ? 3 : isSecHeader == true ? 2 : 1,
|
|
|
|
|
templet: function (d) {
|
|
|
|
|
return pageSize * (pageIdx - 1) + d.LAY_TABLE_INDEX + 1; // 返回每条的序号: 每页条数 *(当前页 - 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 (field == "BillState") {
|
|
|
|
|
fieldColumns = {
|
|
|
|
|
field: field,
|
|
|
|
|
title: title,
|
|
|
|
|
minWidth: attr.Width,
|
|
|
|
|
fixed: false,
|
|
|
|
|
sort: sortable,
|
|
|
|
|
rowspan: keyRowSpan,
|
|
|
|
|
templet: function (row) {
|
|
|
|
|
return GetBillState(row[this.field]);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, keyRowSpan);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (field == "Title") {
|
|
|
|
|
fieldColumns = {
|
|
|
|
|
field: field,
|
|
|
|
|
title: title,
|
|
|
|
|
minWidth: attr.Width,
|
|
|
|
|
fixed: false,
|
|
|
|
|
sort: sortable,
|
|
|
|
|
rowspan: keyRowSpan,
|
|
|
|
|
templet: function (row) {
|
|
|
|
|
var icon = GenerICON(false, row.BillState);
|
|
|
|
|
var rowstr = JSON.stringify(row);
|
|
|
|
|
rowstr = encodeURIComponent(rowstr);
|
|
|
|
|
return "<a href=\"javascript:OpenIt('" + row.OID + "'," + entityType + "," + row.BillState + ",'" + rowstr + "')\">" + row[this.field] + "</a>";
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, keyRowSpan);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
//枚举
|
|
|
|
|
if (attr.MyDataType == 2 && attr.LGType == 1) {
|
|
|
|
|
fieldColumns = {
|
|
|
|
|
field: field,
|
|
|
|
|
title: title,
|
|
|
|
|
fixed: false,
|
|
|
|
|
minWidth: width,
|
|
|
|
|
sort: sortable,
|
|
|
|
|
rowspan: keyRowSpan,
|
|
|
|
|
uibindkey: attr.UIBindKey,
|
|
|
|
|
templet: function (row) {
|
|
|
|
|
if (row[this.field] == -1)
|
|
|
|
|
return "无";
|
|
|
|
|
if (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 = cceval(strs[1] + "('" + row[this.field] + "')");
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var val = row[this.field + "Text"];
|
|
|
|
|
if ((val == undefined || val == "") && entityType == 100) {
|
|
|
|
|
//获取外键对应的文本值
|
|
|
|
|
val = GetDDLText(this.field, row[this.field], this.uibindkey, data);
|
|
|
|
|
}
|
|
|
|
|
if (val == undefined || val == null)
|
|
|
|
|
return row[this.field];
|
|
|
|
|
else
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, keyRowSpan);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
//枚举多选
|
|
|
|
|
if (attr.MyDataType == 1 && attr.LGType == 1 && attr.UIContralType == 2) {
|
|
|
|
|
fieldColumns = {
|
|
|
|
|
field: field,
|
|
|
|
|
title: title,
|
|
|
|
|
fixed: false,
|
|
|
|
|
minWidth: width,
|
|
|
|
|
sort: sortable,
|
|
|
|
|
rowspan: keyRowSpan,
|
|
|
|
|
uibindkey: attr.UIBindKey,
|
|
|
|
|
templet: function (row) {
|
|
|
|
|
var val = row[this.field];
|
|
|
|
|
if (val == -1 || val == "")
|
|
|
|
|
return "无";
|
|
|
|
|
if (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 = cceval(strs[1] + "('" + row[this.field] + "')");
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var bindkey = this.uibindkey
|
|
|
|
|
var enums = $.grep(sys_enums, function (item) {
|
|
|
|
|
return item.EnumKey == bindkey;
|
|
|
|
|
});
|
|
|
|
|
if (enums.length == 0)
|
|
|
|
|
return val;
|
|
|
|
|
val = val + ",";
|
|
|
|
|
var str = [];
|
|
|
|
|
$.each(enums, function (i, item) {
|
|
|
|
|
if (val.indexOf(item.IntKey + ",") != -1)
|
|
|
|
|
str.push(item.Lab);
|
|
|
|
|
})
|
|
|
|
|
return str.join(",");
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, keyRowSpan);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (attr.UIContralType == 1 || attr.UIContralType == 3) {
|
|
|
|
|
if (width == null || width == "" || width == undefined)
|
|
|
|
|
width = 180;
|
|
|
|
|
|
|
|
|
|
fieldColumns = {
|
|
|
|
|
field: field,
|
|
|
|
|
title: title,
|
|
|
|
|
fixed: false,
|
|
|
|
|
minWidth: width,
|
|
|
|
|
sort: sortable,
|
|
|
|
|
rowspan: keyRowSpan,
|
|
|
|
|
uibindKey: attr.UIBindKey,
|
|
|
|
|
style: {
|
|
|
|
|
css: { "white-space": "nowrap", "word-break": "keep-all", "width": "100%" }
|
|
|
|
|
},
|
|
|
|
|
templet: function (row) {
|
|
|
|
|
var val = row[this.field + "Text"];
|
|
|
|
|
if (val == undefined || val == null)
|
|
|
|
|
val = row[this.field + "T"];
|
|
|
|
|
if ((val == undefined || val == "") && row[this.field] != "" && entityType == 100) {
|
|
|
|
|
//获取外键对应的文本值
|
|
|
|
|
val = GetDDLText(this.field, row[this.field], this.uibindKey, data);
|
|
|
|
|
}
|
|
|
|
|
if (val == undefined || val == null)
|
|
|
|
|
return row[this.field];
|
|
|
|
|
else
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, keyRowSpan);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (attr.UIContralType == 2) {
|
|
|
|
|
fieldColumns = {
|
|
|
|
|
field: field,
|
|
|
|
|
title: title,
|
|
|
|
|
minWidth: attr.Width,
|
|
|
|
|
fixed: false,
|
|
|
|
|
sort: sortable,
|
|
|
|
|
rowspan: keyRowSpan,
|
|
|
|
|
templet: function (row) {
|
|
|
|
|
var val = "";
|
|
|
|
|
if (row[this.field] == "0")
|
|
|
|
|
val = "否";
|
|
|
|
|
if (row[this.field] == "1")
|
|
|
|
|
val = "是";
|
|
|
|
|
|
|
|
|
|
return FieldColorSet(colorSet, this.field, row[this.field], val)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, keyRowSpan);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (width == null || width == "" || width == undefined)
|
|
|
|
|
width = 100;
|
|
|
|
|
if (attr.IsRichText == "1") {
|
|
|
|
|
richAttrs.push(attr);
|
|
|
|
|
fieldColumns = {
|
|
|
|
|
field: field,
|
|
|
|
|
title: title,
|
|
|
|
|
width: width,
|
|
|
|
|
fixed: false,
|
|
|
|
|
sort: sortable,
|
|
|
|
|
rowspan: keyRowSpan,
|
|
|
|
|
templet: function (row) {
|
|
|
|
|
var val = row[this.field];
|
|
|
|
|
if (val == "")
|
|
|
|
|
return val;
|
|
|
|
|
val = htmlDecodeByRegExp(val);
|
|
|
|
|
return "<div style='margin:9px 0px 9px 15px'>" + val + "</div>";
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, keyRowSpan);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fieldColumns = {
|
|
|
|
|
field: field,
|
|
|
|
|
title: title,
|
|
|
|
|
minWidth: attr.Width,
|
|
|
|
|
fixed: false,
|
|
|
|
|
sort: sortable,
|
|
|
|
|
rowspan: keyRowSpan,
|
|
|
|
|
|
|
|
|
|
templet: function (row) {
|
|
|
|
|
var val = row[this.field];
|
|
|
|
|
|
|
|
|
|
if (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 = cceval(strs[1] + "('" + val + "')");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return FieldColorSet(colorSet, this.field, val, val);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
AddColumn(fieldColumns, firstColumns, secondColumns, threeColumns, keyRowSpan);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (dblist != null && dblist.DBType == 2 && methods.length == 0 && isHaveDelOper == false) {
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 查询数据
|
|
|
|
|
*/
|
|
|
|
|
function SearchData(key, val) {
|
|
|
|
|
var handler = new HttpHandler("BP.CCBill.WF_CCBill");
|
|
|
|
|
handler.AddUrlData()
|
|
|
|
|
handler.AddPara("PageIdx", pageIdx);
|
|
|
|
|
handler.AddPara("PageSize", pageSize);
|
|
|
|
|
if (key != null && key != undefined && key != "")
|
|
|
|
|
handler.AddPara(key, val);
|
|
|
|
|
if (orderBy != null && orderBy != undefined)
|
|
|
|
|
ur.OrderBy = orderBy;
|
|
|
|
|
if (orderWay != null && orderWay != undefined)
|
|
|
|
|
ur.OrderWay = orderWay;
|
|
|
|
|
ur.Update();
|
|
|
|
|
|
|
|
|
|
//查询集合
|
|
|
|
|
var data;
|
|
|
|
|
if (mapData.EntityType == 100)
|
|
|
|
|
data = handler.DoMethodReturnString("SearchDB_Init");
|
|
|
|
|
else
|
|
|
|
|
data = handler.DoMethodReturnString("Search_Init");
|
|
|
|
|
|
|
|
|
|
if (data.indexOf('err@') == 0) {
|
|
|
|
|
alert(data);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
data = JSON.parse(data);
|
|
|
|
|
|
|
|
|
|
ur = new Entity("BP.Sys.UserRegedit");
|
|
|
|
|
ur.MyPK = webUser.No + frmID + "_SearchAttrs";
|
|
|
|
|
ur.RetrieveFromDBSources();
|
|
|
|
|
|
|
|
|
|
return transferHtmlData(data["DT"]);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 打开新页面的方式
|
|
|
|
|
* @param {any} workid 实体的WorkID
|
|
|
|
|
* @param {any} frmID 实体的表单ID
|
|
|
|
|
* @param {any} openModel 打开方式 //0=新窗口打开 1=在本窗口打开 2=弹出窗口打开,关闭后不刷新列表 3=弹出窗口打开,关闭刷新
|
|
|
|
|
* @param {any} title 标题
|
|
|
|
|
*/
|
|
|
|
|
function OpenIt(workid, entityType, billstate, row, isOpenAdd) {
|
|
|
|
|
if (row != null && row != undefined && row != "")
|
|
|
|
|
row = JSON.parse(decodeURIComponent(row));
|
|
|
|
|
|
|
|
|
|
var IsReadonly = 0;
|
|
|
|
|
IsReadonly = billstate == 100 ? 1 : 0;
|
|
|
|
|
var url = "";
|
|
|
|
|
var frmID = GetQueryString("FrmID");
|
|
|
|
|
var systemNo = GetQueryString("SystemNo");
|
|
|
|
|
//页面打开方式
|
|
|
|
|
var urlOpenType = mapData.SearchDictOpenType;
|
|
|
|
|
var url = "";
|
|
|
|
|
if (urlOpenType == null || urlOpenType == undefined
|
|
|
|
|
|| urlOpenType == 0 || urlOpenType == 2) {
|
|
|
|
|
url = "MyDict.htm?WorkID=" + workid + "&FrmID=" + frmID + "&FK_MapData=" + frmID + "&IsReadonly=" + IsReadonly + "&SystemNo=" + systemNo;
|
|
|
|
|
if (entityType == 1)
|
|
|
|
|
url = "MyBill.htm?WorkID=" + workid + "&FrmID=" + frmID + "&FK_MapData=" + frmID + "&IsReadonly=" + IsReadonly + "&SystemNo=" + systemNo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (urlOpenType == 1)
|
|
|
|
|
url = "MyDict.htm?WorkID=" + workid + "&FrmID=" + frmID + "&FK_MapData=" + frmID + "&IsReadonly=" + IsReadonly + "&SystemNo=" + systemNo;
|
|
|
|
|
|
|
|
|
|
if (urlOpenType == 9) {
|
|
|
|
|
url = mapData.UrlExt + "&SystemNo=" + systemNo;
|
|
|
|
|
if (url.indexOf('?') == -1)
|
|
|
|
|
url = url + "?1=1";
|
|
|
|
|
if (url.indexOf('FrmID') != -1)
|
|
|
|
|
url = url + "&WorkID=" + workid + "&OID=" + workid;
|
|
|
|
|
|
|
|
|
|
if (url.indexOf("@") != -1) {
|
|
|
|
|
url = DealJsonExp(row, url);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SetHref(url);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 查询数据
|
|
|
|
|
*/
|
|
|
|
|
function Search() {
|
|
|
|
|
if ($("#TB_Key") != null && $("#TB_Key").val() != "")
|
|
|
|
|
ur.SearchKey = $("#TB_Key").val();
|
|
|
|
|
else
|
|
|
|
|
ur.SearchKey = "";
|
|
|
|
|
|
|
|
|
|
//设置查询时间.
|
|
|
|
|
if ($("#TB_DTFrom").length == 1)
|
|
|
|
|
ur.DTFrom = $("#TB_DTFrom").val();
|
|
|
|
|
|
|
|
|
|
if ($("#TB_DTTo").length == 1)
|
|
|
|
|
ur.DTTo = $("#TB_DTTo").val();
|
|
|
|
|
|
|
|
|
|
//获得外键的查询条件,存储里面去.
|
|
|
|
|
var str = "";
|
|
|
|
|
$("select[name^='DDL_']").each(function () {
|
|
|
|
|
var id = $(this).attr("id");
|
|
|
|
|
id = id.replace("DDL_", "");
|
|
|
|
|
str += "@" + id + "=" + $(this).val();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$.each(searchData["inputSearch"], function (i, item) {
|
|
|
|
|
if (item.key == "key")
|
|
|
|
|
return true;
|
|
|
|
|
var strs = $("input[name='TB_" + item.key + "']");
|
|
|
|
|
if (strs.length == 1) {
|
|
|
|
|
ur.SetPara(item.key, $("#TB_" + item.key).val());
|
|
|
|
|
} else {
|
|
|
|
|
if ($("#TB_" + item.key + "_0").val() == "" && $("#TB_" + item.key + "_1").val() == "")
|
|
|
|
|
ur.SetPara(item.key, "");
|
|
|
|
|
else
|
|
|
|
|
ur.SetPara(item.key, $("#TB_" + item.key + "_0").val() + "," + $("#TB_" + item.key + "_1").val());
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
ur.FK_Emp = webUser.No;
|
|
|
|
|
ur.CfgKey = "SearchAttrs";
|
|
|
|
|
ur.Vals = str;
|
|
|
|
|
ur.FK_MapData = frmID;
|
|
|
|
|
ur.Update();
|
|
|
|
|
pageIdx = 1;
|
|
|
|
|
tableData = SearchData();
|
|
|
|
|
|
|
|
|
|
if ($("#lay_table_bill").length != 0)
|
|
|
|
|
layui.table.reload('lay_table_bill', { data: tableData });
|
|
|
|
|
else
|
|
|
|
|
layui.table.reload('lay_table_dict', { data: tableData });
|
|
|
|
|
renderLaypage();
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* tab时间的选择的查询
|
|
|
|
|
* @param {any} selectVal
|
|
|
|
|
* @param {any} selectType
|
|
|
|
|
* @param {any} obj
|
|
|
|
|
* @param {any} type
|
|
|
|
|
*/
|
|
|
|
|
function SearchByDate(type, selectVal, selectType, obj) {
|
|
|
|
|
//去掉选择的节点的class
|
|
|
|
|
if (obj != null) {
|
|
|
|
|
if (selectType == "year")
|
|
|
|
|
//修改其他年度的情况
|
|
|
|
|
$(".layui-year").removeClass("layui-a-this");
|
|
|
|
|
else
|
|
|
|
|
$(obj).siblings().removeClass("layui-a-this");
|
|
|
|
|
|
|
|
|
|
$(obj).addClass("layui-a-this");
|
|
|
|
|
$("a[name=" + selectVal + "]").addClass("layui-a-this");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if (selectType != null && selectType != undefined) {
|
|
|
|
|
if (selectType == "year")
|
|
|
|
|
searchData.dateTabSearch.value[0] = selectVal;
|
|
|
|
|
if (selectType == "month")
|
|
|
|
|
searchData.dateTabSearch.value[1] = selectVal;
|
|
|
|
|
if (selectType == "jidu")
|
|
|
|
|
searchData.dateTabSearch.value[2] = selectVal;
|
|
|
|
|
}
|
|
|
|
|
var dateValue = searchData.dateTabSearch.value;
|
|
|
|
|
//设置时间段
|
|
|
|
|
if (type == "year") {
|
|
|
|
|
selectVal = selectVal == null || selectVal == undefined ? dateValue[0] : selectVal;
|
|
|
|
|
ur.DTFrom = selectVal + "-01-01";
|
|
|
|
|
ur.DTTo = selectVal + "-12-31";
|
|
|
|
|
}
|
|
|
|
|
if (type == "month") {
|
|
|
|
|
selectVal = selectVal == null || selectVal == undefined ? dateValue[1] : selectVal;
|
|
|
|
|
selectVal = selectVal.replace("月", "");
|
|
|
|
|
var month = parseInt(selectVal) < 10 ? "0" + selectVal : selectVal;
|
|
|
|
|
var year = searchData.dateTabSearch.value[0];
|
|
|
|
|
var date = new Date(parseInt(year), parseInt(month), 0)
|
|
|
|
|
var days = date.getDate();
|
|
|
|
|
ur.DTFrom = year + "-" + month + "-01";
|
|
|
|
|
ur.DTTo = year + "-" + month + "-" + days;
|
|
|
|
|
}
|
|
|
|
|
if (type == "jidu") {
|
|
|
|
|
selectVal = selectVal == null || selectVal == undefined ? dateValue[2] : selectVal;
|
|
|
|
|
var jidu = 0;
|
|
|
|
|
if (selectVal == "二季度")
|
|
|
|
|
jidu = 1;
|
|
|
|
|
if (selectVal == "三季度")
|
|
|
|
|
jidu = 2;
|
|
|
|
|
if (selectVal == "四季度")
|
|
|
|
|
jidu = 3;
|
|
|
|
|
var year = searchData.dateTabSearch.value[0];
|
|
|
|
|
var beginMonth = jidu * 3 + 1;
|
|
|
|
|
var endMonth = (jidu + 1) * 3;
|
|
|
|
|
var date = new Date(parseInt(year), parseInt(endMonth), 0)
|
|
|
|
|
var days = date.getDate();
|
|
|
|
|
endMonth = endMonth < 10 ? "0" + endMonth : "" + endMonth;
|
|
|
|
|
beginMonth = beginMonth < 10 ? "0" + beginMonth : "" + beginMonth;
|
|
|
|
|
ur.DTFrom = year + "-" + beginMonth + "-01";
|
|
|
|
|
ur.DTTo = year + "-" + endMonth + "-" + days;
|
|
|
|
|
}
|
|
|
|
|
Search();
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 根据下拉框执行
|
|
|
|
|
* @param {any} ddlKey
|
|
|
|
|
* @param {any} ddlVal
|
|
|
|
|
*/
|
|
|
|
|
function SearchBySelect(ddlKey, ddlVal) {
|
|
|
|
|
$("#DDL_" + ddlKey).val(ddlVal);
|
|
|
|
|
layui.form.render("select");
|
|
|
|
|
var select = 'dd[lay-value=' + ddlVal + ']';
|
|
|
|
|
$("#DDL_" + ddlKey).siblings("div.layui-form-select").find('dl').find(select).click();//触发
|
|
|
|
|
Search();
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 把列增加到对应的数组中
|
|
|
|
|
* @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, secMultiTitle, thrMultiTitle) {
|
|
|
|
|
//一级表头
|
|
|
|
|
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, secMultiTitle, thrMultiTitle) {
|
|
|
|
|
//计算二级表头分组
|
|
|
|
|
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 {any} isCanDo
|
|
|
|
|
* @param {any} BillState
|
|
|
|
|
*/
|
|
|
|
|
function GenerICON(isCanDo, BillState) {
|
|
|
|
|
|
|
|
|
|
if (BillState == 3)
|
|
|
|
|
icon = "./Img/BillState/Complete.png"; //已经完成.
|
|
|
|
|
else if (BillState == 2)
|
|
|
|
|
icon = "./Img/BillState/Runing.png"; //运行中.
|
|
|
|
|
else if (BillState == 5)
|
|
|
|
|
icon = "./Img/BillState/ReturnSta.png"; //退回.
|
|
|
|
|
else
|
|
|
|
|
icon = "./Img/BillState/Etc.png"; //其他.
|
|
|
|
|
|
|
|
|
|
if (isCanDo == true && BillState != 3)
|
|
|
|
|
icon = "./Img/BillState/Todo.png"; //其他.
|
|
|
|
|
|
|
|
|
|
return icon;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取字段的设置
|
|
|
|
|
* @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": ts[0].replace("From=", ""),
|
|
|
|
|
"To": ts[1].replace("To=", ""),
|
|
|
|
|
"Color": ts[2].replace("Color=", "")
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
return fieldColor;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取字段颜色
|
|
|
|
|
* @param {any} colorSet
|
|
|
|
|
* @param {any} field
|
|
|
|
|
* @param {any} val
|
|
|
|
|
* @param {any} valText
|
|
|
|
|
*/
|
|
|
|
|
function FieldColorSet(colorSet, field, val, valText) {
|
|
|
|
|
var fieldColor = [];
|
|
|
|
|
if (colorSet.indexOf("@" + field + ":") != -1) {
|
|
|
|
|
fieldColor = getFieldColor(colorSet, field);
|
|
|
|
|
}
|
|
|
|
|
if (fieldColor.length == 0)
|
|
|
|
|
return valText;
|
|
|
|
|
var reg = /^[0-9]+.?[0-9]*/;
|
|
|
|
|
for (var i = 0; i < fieldColor.length; i++) {
|
|
|
|
|
var color = fieldColor[i];
|
|
|
|
|
//说明是字符串,需要修改
|
|
|
|
|
if (reg.test(color.From) == false && reg.test(color.To) == false && (color.From == valText || color.To == valText)) {
|
|
|
|
|
var stylecss = "padding: 0 5px;font-size: 14px;color: #fff;white-space: nowrap;border-radius: 2px;text-align:center;";
|
|
|
|
|
return '<div style="' + stylecss + 'background-color:' + color.Color + ';">' + valText + '</div>'
|
|
|
|
|
}
|
|
|
|
|
if (reg.test(color.From) == true && reg.test(color.To) == true
|
|
|
|
|
&& parseInt(color.From) <= val && parseInt(color.To) >= val) {
|
|
|
|
|
var stylecss = "padding: 0 5px;font-size: 14px;color: #fff;white-space: nowrap;border-radius: 2px;text-align:center;";
|
|
|
|
|
return '<div style="' + stylecss + 'background-color:' + color.Color + ';">' + valText + '</div>'
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return valText;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 打开链接
|
|
|
|
|
* @param {any} no
|
|
|
|
|
* @param {any} source
|
|
|
|
|
*/
|
|
|
|
|
function OpenLink(no, source) {
|
|
|
|
|
var enName = "BP.CCBill.Template.CollectionLink";
|
|
|
|
|
if (source == "Method")
|
|
|
|
|
enName = "BP.CCBill.Template.MethodLink";
|
|
|
|
|
var link = new Entity(enName, no);
|
|
|
|
|
var url = link.Tag1;
|
|
|
|
|
if (url == null || url == undefined || url == "") {
|
|
|
|
|
layer.alert("自定义按钮/超链接的内容为空,请联系管理员");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
url = url.indexOf("?") == -1 ? url + "?1=1" : url;
|
|
|
|
|
url += "&FrmID=" + frmID
|
|
|
|
|
if (link.RefMethodType == 0) {//0=模态窗口打开@1=新窗口打开@2=右侧窗口打开@4=转到新页面
|
|
|
|
|
OpenLayuiDialog(url, link.Name, window.innerWidth * 2 / 3, null, "r", false);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
window.top.vm.openTab(link.Name, url);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 列表集合的方法操作
|
|
|
|
|
* @param {any} no
|
|
|
|
|
* @param {any} source
|
|
|
|
|
*/
|
|
|
|
|
function OpenFunc(no, source) {
|
|
|
|
|
var enName = "BP.CCBill.Template.CollectionFunc";
|
|
|
|
|
if (source == "Method")
|
|
|
|
|
enName = "BP.CCBill.Template.MethodFunc";
|
|
|
|
|
var func = new Entity(enName, no);
|
|
|
|
|
|
|
|
|
|
var checkStatus = layui.table.checkStatus("lay_table_dict");
|
|
|
|
|
if (checkStatus.data.length == 0) {
|
|
|
|
|
layer.alert("请选择" + func.Name + "的行");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
layer.confirm('确定要' + func.Name + '选择的数据吗?', function (index) {
|
|
|
|
|
layer.close(index);
|
|
|
|
|
var workids = [];
|
|
|
|
|
for (var i = 0; i < checkStatus.data.length; i++) {
|
|
|
|
|
workids.push(checkStatus.data[i]["OID"]);
|
|
|
|
|
}
|
|
|
|
|
workids = workids.join(",");
|
|
|
|
|
//执行方法.
|
|
|
|
|
var isHaveAttr = false;
|
|
|
|
|
var attrs = new Entities("BP.Sys.MapAttrs", "FK_MapData", func.MyPK);
|
|
|
|
|
if (attrs.length > 0)
|
|
|
|
|
isHaveAttr = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//带有参数的方法.
|
|
|
|
|
if (isHaveAttr == true) {
|
|
|
|
|
var url = "./Opt/DoMethodPara.htm?No=" + func.MethodID + "&WorkIDs=" + workids + "&FrmID=" + frmID;
|
|
|
|
|
OpenLayuiDialog(url, func.Name, window.innerWidth * 2 / 3, null, 'r', true)
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var url = "./Opt/DoMethod.htm?No=" + func.MethodID + "&WorkIDs=" + workids + "&FrmID=" + frmID;
|
|
|
|
|
OpenLayuiDialog(url, func.Name, window.innerWidth * 2 / 3, null, 'r', true)
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 批量发起单据信息
|
|
|
|
|
* @param {any} no
|
|
|
|
|
* @param {any} source
|
|
|
|
|
*/
|
|
|
|
|
function OpenBill(no, source) {
|
|
|
|
|
|
|
|
|
|
var enName = "BP.CCBill.Template.MethodBill";
|
|
|
|
|
var bill = new Entity(enName, no);
|
|
|
|
|
var billFrm = bill.Tag1;
|
|
|
|
|
if (billFrm == null || billFrm == undefined || billFrm == "") {
|
|
|
|
|
layer.alert("批量发起的单据为空,请联系管理员");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var checkStatus = layui.table.checkStatus("lay_table_dict");
|
|
|
|
|
if (checkStatus.data.length == 0) {
|
|
|
|
|
layer.alert("请选择" + bill.Name + "操作的行");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//发起单据流程
|
|
|
|
|
layer.confirm('确定要' + bill.Name + '选择的数据吗?', function (index) {
|
|
|
|
|
layer.close(index);
|
|
|
|
|
var workids = [];
|
|
|
|
|
for (var i = 0; i < checkStatus.data.length; i++) {
|
|
|
|
|
workids.push(checkStatus.data[i]["OID"]);
|
|
|
|
|
}
|
|
|
|
|
workids = workids.join(",");
|
|
|
|
|
var handler = new HttpHandler("BP.CCBill.WF_CCBill");
|
|
|
|
|
handler.AddPara("FrmID", billFrm);
|
|
|
|
|
handler.AddPara("FromFrmID", bill.FrmID);
|
|
|
|
|
handler.AddPara("MethodNo", no);
|
|
|
|
|
handler.AddPara("WorkIDs", workids);
|
|
|
|
|
var data = handler.DoMethodReturnString("MyDict_DoBill_Start");
|
|
|
|
|
if (data.indexOf("err@") != -1) {
|
|
|
|
|
layer.alert(data);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
OpenLayuiDialog(data, "", window.innerWidth * 2 / 3, null, 'r', true)
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 发起流程
|
|
|
|
|
* @param {any} no
|
|
|
|
|
* @param {any} source
|
|
|
|
|
*/
|
|
|
|
|
function OpenFlow(no, source) {
|
|
|
|
|
|
|
|
|
|
var enName = "BP.CCBill.Template.CollectionFlowBatch";
|
|
|
|
|
var flowM = new Entity(enName, no);
|
|
|
|
|
var flowNo = flowM.Tag1;
|
|
|
|
|
if (flowNo == null || flowNo == undefined || flowNo == "") {
|
|
|
|
|
layer.alert("批量发起的流程编号为空,请联系管理员");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var checkStatus = layui.table.checkStatus("lay_table_dict");
|
|
|
|
|
if (checkStatus.data.length == 0) {
|
|
|
|
|
layer.alert("请选择" + flowM.Name + "操作的行");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//发起单据流程
|
|
|
|
|
layer.confirm('确定要' + flowM.Name + '选择的数据吗?', function (index) {
|
|
|
|
|
layer.close(index);
|
|
|
|
|
var workids = [];
|
|
|
|
|
for (var i = 0; i < checkStatus.data.length; i++) {
|
|
|
|
|
workids.push(checkStatus.data[i]["OID"]);
|
|
|
|
|
}
|
|
|
|
|
workids = workids.join(",");
|
|
|
|
|
var handler = new HttpHandler("BP.CCBill.WF_CCBill");
|
|
|
|
|
handler.AddPara("FK_Flow", flowNo);
|
|
|
|
|
handler.AddPara("FromFrmID", flowM.FrmID);
|
|
|
|
|
handler.AddPara("MethodNo", no);
|
|
|
|
|
handler.AddPara("WorkIDs", workids);
|
|
|
|
|
var data = handler.DoMethodReturnString("MyDict_DoFlowBatchBaseData_StartFlow");
|
|
|
|
|
if (data.indexOf("err@") != -1) {
|
|
|
|
|
layer.alert(data);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
window.top.vm.openTab(flowM.Name, data);
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 新增实体类流程
|
|
|
|
|
* @param {any} no
|
|
|
|
|
* @param {any} source
|
|
|
|
|
*/
|
|
|
|
|
function OpenFlowEntity(no, source) {
|
|
|
|
|
|
|
|
|
|
var enName = "BP.CCBill.Template.Collection";
|
|
|
|
|
var flowM = new Entity(enName, no);
|
|
|
|
|
var flowNo = flowM.FlowNo;
|
|
|
|
|
if (flowNo == null || flowNo == undefined || flowNo == "") {
|
|
|
|
|
layer.alert("新增实体类流程编号不能为空,请联系管理员");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var menuNo = flowM.FrmID + "_" + flowNo;
|
|
|
|
|
var url = "../CCBill/Opt/StartFlowByNewEntity.htm?FK_Flow=" + flowNo + "&MenuNo=" + menuNo;
|
|
|
|
|
window.top.vm.openTab(flowM.Name, url);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 删除选择的列数据
|
|
|
|
|
* @param {any} oid
|
|
|
|
|
* @param {any} entityType
|
|
|
|
|
*/
|
|
|
|
|
function DeleteIt(oid, entityType) {
|
|
|
|
|
layer.confirm('确定要删除改行数据信息吗?', function (index) {
|
|
|
|
|
|
|
|
|
|
var handler = new HttpHandler("BP.CCBill.WF_CCBill");
|
|
|
|
|
handler.AddPara("FrmID", GetQueryString("FrmID"));
|
|
|
|
|
handler.AddPara("WorkID", oid);
|
|
|
|
|
var data = null;
|
|
|
|
|
if (entityType == 1)
|
|
|
|
|
data = handler.DoMethodReturnString("MyBill_Delete");
|
|
|
|
|
if (entityType == 2)
|
|
|
|
|
data = handler.DoMethodReturnString("MyDict_Delete");
|
|
|
|
|
if (data.indexOf('err@') == 0) {
|
|
|
|
|
layer.alert(data);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
pageIdx = 1;
|
|
|
|
|
var tableData = SearchData();
|
|
|
|
|
layui.table.reload('lay_table_dict', { data: tableData });
|
|
|
|
|
renderLaypage();
|
|
|
|
|
layui.laypage.render();
|
|
|
|
|
layer.close(index);
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 执行操作中的方法
|
|
|
|
|
* @param {any} methodNo
|
|
|
|
|
* @param {any} workid
|
|
|
|
|
*/
|
|
|
|
|
function DoMethod(methodNo, workid) {
|
|
|
|
|
var method = new Entity("BP.CCBill.Template.Method", methodNo);
|
|
|
|
|
if (method.MethodModel === "Bill")
|
|
|
|
|
method.Docs = "./Opt/Bill.htm?FrmID=" + method.Tag1 + "&MethodNo=" + method.No + "&WorkID=" + workid + "&From=Dict";
|
|
|
|
|
//如果是一个方法.
|
|
|
|
|
if (method.MethodModel === "Func") {
|
|
|
|
|
if (method.IsHavePara == 0) {
|
|
|
|
|
Skip.addJs("../../DataUser/JSLibData/Method/" + method.No + ".js");
|
|
|
|
|
DBAccess.RunFunctionReturnStr(method.MethodID + "(" + workid + ")");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
method.Docs = "./Opt/DoMethod.htm?FrmID=" + method.FrmID + "&No=" + method.No + "&WorkID=" + workid + "&From=Search";
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (method.MethodModel === "FrmBBS")
|
|
|
|
|
method.Docs = "./OptComponents/FrmBBS.htm?FrmID=" + method.FrmID + "&No=" + method.No + "&WorkID=" + workid;
|
|
|
|
|
if (method.MethodModel === "QRCode")
|
|
|
|
|
method.Docs = "./OptComponents/QRCode.htm?FrmID=" + method.FrmID + "&MethodNo=" + method.No + "&WorkID=" + workid;
|
|
|
|
|
|
|
|
|
|
//单个实体发起的流程汇总.
|
|
|
|
|
if (method.MethodModel === "SingleDictGenerWorkFlows")
|
|
|
|
|
method.Docs = "./OptOneFlow/SingleDictGenerWorkFlows.htm?FrmID=" + method.FrmID + "&No=" + method.No + "&MethodNo=" + method.No + "&WorkID=" + workid;
|
|
|
|
|
|
|
|
|
|
//修改基础数据的的流程.
|
|
|
|
|
if (method.MethodModel === "FlowBaseData") {
|
|
|
|
|
var url = "./OptOneFlow/FlowBaseData.htm?WorkID=" + workid;
|
|
|
|
|
url += "&FrmID=" + method.FrmID;
|
|
|
|
|
url += "&MethodNo=" + method.No;
|
|
|
|
|
url += "&FlowNo=" + method.FlowNo;
|
|
|
|
|
method.Docs = url;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//其他业务流程.
|
|
|
|
|
if (method.MethodModel == "FlowEtc") {
|
|
|
|
|
|
|
|
|
|
var url = "./OptOneFlow/FlowEtc.htm?WorkID=" + workid;
|
|
|
|
|
url += "&FrmID=" + method.FrmID;
|
|
|
|
|
url += "&MethodNo=" + method.No;
|
|
|
|
|
url += "&FlowNo=" + method.FlowNo;
|
|
|
|
|
|
|
|
|
|
method.Docs = url;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//数据版本.
|
|
|
|
|
if (method.MethodModel == "DataVer") {
|
|
|
|
|
method.Docs = "./OptComponents/DataVer.htm?FrmID=" + method.FrmID + "&WorkID=" + workid;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//日志.
|
|
|
|
|
if (method.MethodModel == "DictLog") {
|
|
|
|
|
method.Docs = "./OptComponents/DictLog.htm?FrmID=" + method.FrmID + "&WorkID=" + workid;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//超链接.
|
|
|
|
|
if (method.MethodModel == "Link") {
|
|
|
|
|
if (method.Tag1.indexOf('?') > 0)
|
|
|
|
|
method.Docs = method.Tag1 + "&FrmID=" + method.FrmID + "&WorkID=" + workid;
|
|
|
|
|
else
|
|
|
|
|
method.Docs = method.Tag1 + "?FrmID=" + method.FrmID + "&WorkID=" + workid;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (method.Docs === "") {
|
|
|
|
|
|
|
|
|
|
var url = method.UrlExt;
|
|
|
|
|
if (url === "") {
|
|
|
|
|
layer.alert("没有解析的Url-MethodModel:" + method.MethodModel + " - " + method.Mark);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (url.indexOf('?') > 0)
|
|
|
|
|
method.Docs = url + "&FrmID=" + method.FrmID + "&WorkID=" + workid;
|
|
|
|
|
else
|
|
|
|
|
method.Docs = url + "?FrmID=" + method.FrmID + "&WorkID=" + workid;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (method.MethodModel === "Func")
|
|
|
|
|
OpenLayuiDialog(method.Docs, method.Name, window.innerWidth / 2, 50, "auto");
|
|
|
|
|
else
|
|
|
|
|
window.top.vm.openTab(method.Name, method.Docs);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetBillState(BillState) {
|
|
|
|
|
if (BillState == 0)
|
|
|
|
|
return "空白";
|
|
|
|
|
|
|
|
|
|
if (BillState == 1)
|
|
|
|
|
return "草稿";
|
|
|
|
|
|
|
|
|
|
if (BillState == 2)
|
|
|
|
|
return "编辑中";
|
|
|
|
|
|
|
|
|
|
if (BillState == 100)
|
|
|
|
|
return "归档";
|
|
|
|
|
|
|
|
|
|
return BillState;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDDLText(field, val, uibindKey, data) {
|
|
|
|
|
//获取这个字段对应的值
|
|
|
|
|
if (uibindKey == null || uibindKey == undefined || uibindKey == "")
|
|
|
|
|
return "";
|
|
|
|
|
var options = data[uibindKey];
|
|
|
|
|
if (options == null || options == undefined) {
|
|
|
|
|
var enums = data.Sys_Enum;
|
|
|
|
|
if (enums.length > 0) {
|
|
|
|
|
var text = "";
|
|
|
|
|
$.each(enums, function (i, item) {
|
|
|
|
|
if (item.EnumKey == uibindKey && item.IntKey == val) {
|
|
|
|
|
text = item.Lab;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
if (text != "")
|
|
|
|
|
return text;
|
|
|
|
|
}
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var item = $.grep(options, function (option) {
|
|
|
|
|
return option.No == val;
|
|
|
|
|
});
|
|
|
|
|
if (item.length == 0)
|
|
|
|
|
return "";
|
|
|
|
|
return item[0].Name;
|
|
|
|
|
}
|
|
|
|
|
function transferHtmlData(tableData) {
|
|
|
|
|
var val = "";
|
|
|
|
|
if (richAttrs.length != 0) {
|
|
|
|
|
$.each(tableData, function (i, item) {
|
|
|
|
|
richAttrs.forEach(attr => {
|
|
|
|
|
val = item[attr.KeyOfEn];
|
|
|
|
|
if (val != "") {
|
|
|
|
|
|
|
|
|
|
val = htmlEncodeByRegExp(val);
|
|
|
|
|
val = val.replace(/<[^>]+>/g, "")
|
|
|
|
|
item[attr.KeyOfEn] = val;
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
return tableData;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function htmlEncodeByRegExp(str) {
|
|
|
|
|
var s = '';
|
|
|
|
|
if (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 htmlDecodeByRegExp(str) {
|
|
|
|
|
var s = '';
|
|
|
|
|
if (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;
|
|
|
|
|
}
|