Files
zszq-trs/YLErpWeb/wwwroot/Scripts/utils.js
T
2024-05-09 14:06:26 +08:00

1094 lines
39 KiB
JavaScript

var main = main || { version: "1.2" };
main.getMaturityDayPicture = function (minDay) { //获取
var picture = "";
if (minDay <= 1) {
picture = "light_red.png";
} else if (minDay <= 2) {
picture = "light_yellow.png";
} else if (minDay <= 3) {
picture = "light_green.png";
}
return picture;
};
main.isDate = function (d) {
return moment(d).isValid() && /(\d)+\-(\d)+\-(\d)+/.test(d);
};
var g_columnset = false;
var g_targetName = "";
var g_subgridobj = "";
main.setcolumnChooser = function (jgrid, targetName, isReturnSub) { //设置显示列 只设置一次
if (g_columnset && g_targetName === targetName) return;
g_columnset = true;
g_targetName = targetName;
return main.post("/configcolumn/columnchose", { targetname: targetName }, { suppressError: true, waitMe: false }).done(function (res) {
if (res.obj && res.obj.data) {
var columndata = JSON.parse(res.obj.data);
columndata = _.uniqBy(columndata, "name");
var perm = new Array();
var canremap = true;
//检查column列是否被更新,如果更新调用 /System/RemoveColumnConfig
var current_colModel = jgrid.jqGrid('getGridParam', 'colModel');
var ss = _.filter(current_colModel.map(o => o.name), (val, i, iteratee) => _.includes(iteratee, val, i + 1));
ss.length && console.log("存在重复值" + ss);
var newCols = [];
var cbSetDataIndex = columndata.findIndex(o => o.name == "cb");
if (cbSetDataIndex >= 0) {
columndata.splice(cbSetDataIndex, 1);
}
var cbIndex = current_colModel.findIndex(o => o.name == "cb");
if (cbIndex>=0) {
columndata.unshift(current_colModel[cbIndex]);
}
$.each(current_colModel, function (i, d) {
var isExist = columndata.some(function (dd, ii) { return dd.name === d.name; });
if (!isExist) {
newCols.push(d.name);
columndata.push(d);
}
});
if (isReturnSub) g_subgridobj = columndata;
var undefinedColumnIndexList = _.range(0, current_colModel.length);
columndata.forEach(function (item, index) {
if (item !== null && (item.hidden || $.inArray(item.name, newCols) >= 0)) {
jgrid.setGridParam().hideCol([item.name]);
}
else {
jgrid.setGridParam().showCol([item.name]);
}
var i = current_colModel.findIndex(o => o.name == item.name);
if (i >= 0) {
perm.push(i);
_.remove(undefinedColumnIndexList, o => o === i);
}
});
if (undefinedColumnIndexList.length > 0) {
perm = perm.concat(undefinedColumnIndexList);
}
if (canremap) {
jgrid.jqGrid("remapColumns", perm, true);
}
//jgrid.trigger("reloadGrid");
}
});
};
main.setcolumnChooser2 = function (jgrid, targetName, isReturnSub) { //设置显示列 只设置一次
if (g_columnset && g_targetName === targetName) return;
g_columnset = true;
g_targetName = targetName;
return main.post("/configcolumn/columnchose", { targetname: targetName }, { suppressError: true }).done(function (res) {
if (res.obj && res.obj.data) {
var columndata = JSON.parse(res.obj.data);
columndata = _.uniqBy(columndata, "name");
var perm = new Array();
var canremap = true;
//检查column列是否被更新,如果更新调用 /System/RemoveColumnConfig
var current_colModel = jgrid.jqGrid('getGridParam', 'colModel');
var ss = _.filter(current_colModel.map(o => o.name), (val, i, iteratee) => _.includes(iteratee, val, i + 1));
ss.length && console.log("存在重复值" + ss);
var newCols = [];
$.each(current_colModel, function (i, d) {
var isExist = columndata.some(function (dd, ii) { return dd.name === d.name; });
if (!isExist) {
newCols.push(d.name);
columndata.push(d);
}
//isMatch = isMatch && isExist;
});
if (isReturnSub) g_subgridobj = columndata;
var tempGroupHeader = jgrid.getGridParam("groupHeader");
var groupHeaders = tempGroupHeader.groupHeaders;
var groupIndex = 0, groupIndexArray = [];
var colModel = jgrid.jqGrid('getGridParam', 'colModel');
if (tempGroupHeader) {
jgrid.jqGrid('destroyGroupHeader', true);
groupHeaders.forEach(function (item, index) {
groupIndexArray[index] = [];
var startIndex = -1;
for (var i = 0; i < colModel.length; i++) {
if (item.startColumnName === colModel[i].name) {
groupIndexArray[index].push(colModel[i].name);
startIndex = i;
} else if (startIndex >= 0) {
if (i < startIndex + item.numberOfColumns) {
groupIndexArray[index].push(colModel[i].name);
} else {
break;
}
}
}
item.startColumnName = null;
});
}
var currentGroupShowCount = -1;
var isInArray = false;
columndata.forEach(function (item, index) {
isInArray = false;
if (tempGroupHeader && !main.isEmpty(groupIndexArray) && groupIndex < groupIndexArray.length) {
if (main.isEmpty(groupIndexArray[groupIndex])) {
//groupIndexArray.splice(groupIndex, 1);
if (currentGroupShowCount === 0) {
//groupHeaders.splice(groupIndex, 1);
//groupIndexArray.splice(groupIndex, 1);
//groupIndex--;
groupHeaders[groupIndex].notShow = true;
}
groupIndex++;
currentGroupShowCount = -1;
}
if (!main.isEmpty(groupIndexArray[groupIndex])) {
if (currentGroupShowCount === -1) {
currentGroupShowCount = groupIndexArray[groupIndex].length;
}
var currentGroupColumnIndex = groupIndexArray[groupIndex].findIndex(function (currentValue) {
return item.name === currentValue;
});
if (currentGroupColumnIndex > -1) {
if (groupHeaders[groupIndex].startColumnName === null) {
groupHeaders[groupIndex].startColumnName = item.name;
}
isInArray = true;
groupIndexArray[groupIndex].splice(currentGroupColumnIndex, 1);
}
}
}
if (item !== null && (item.hidden || $.inArray(item.name, newCols) >= 0)) {
jgrid.setGridParam().hideCol([item.name]);
if (isInArray && currentGroupShowCount > 0) {
currentGroupShowCount--;
}
}
else {
jgrid.setGridParam().showCol([item.name]);
}
var i = colModel.findIndex(o => o.name == item.name);
if (i >= 0) {
perm.push(i);
}
});
if (currentGroupShowCount === 0) {
groupHeaders[groupIndex].notShow = true;
}
if (canremap) {
jgrid.jqGrid("remapColumns", perm, true);
}
if (tempGroupHeader) {
var tempGroupHeaders = groupHeaders.slice(0);
for (var i = groupHeaders.length - 1; i >= 0; i--) {
if (groupHeaders[i].notShow) {
groupHeaders[i].notShow = false;
groupHeaders.splice(i, 1);
}
}
jgrid.jqGrid('setGroupHeaders', tempGroupHeader);
tempGroupHeader = jgrid.getGridParam("groupHeader");
tempGroupHeader.groupHeaders = tempGroupHeaders;
}
//jgrid.trigger("reloadGrid");
}
});
};
main.showcolumnChooser = function (jgrid, targetName, options) {
options = options || {};
var _options = {
width: 550,
dialog_opts: {
modal: false,
minWidth: 470,
height: 470,
show: 'blind',
hide: 'explode',
dividerLocation: 0.5
},
done: function (perm) {
if (perm) {
this.jqGrid("remapColumns", perm, true);
var colModel = jgrid.jqGrid('getGridParam', 'colModel');
if (options.liteOnly) {
colModel = colModel.map(function (x) { return { name: x.name, hidden: x.hidden }; });
}
main.post("/configcolumn/saveconfig", { targetname: targetName, data: JSON.stringify(colModel) }).done(function (res) {
$(window).trigger("resize");
});
}
}
};
jgrid.jqGrid('columnChooser', _options);
};
main.showcolumnChooser2 = function (jgrid, targetName, opts) {
var _d = $.Deferred();
var defaultOpts = {
width: 580,
dialog_opts: {
modal: false,
minWidth: 470,
height: 700,
show: 'blind',
hide: 'explode',
dividerLocation: 0.5
},
done: function (perm) {
if (perm) {
var colModel = jgrid.jqGrid('getGridParam', 'colModel');
main.post("/configcolumn/saveconfig", { targetname: targetName, data: JSON.stringify(colModel) }).done(_d.resolve);
}
}
};
if (opts !== undefined && opts !== null) {
$.extend(defaultOpts, opts);
}
jgrid.jqGrid('columnChooser2', defaultOpts);
return _d.promise();
};
main.setsubcolumnChooser = function (jgrid, targetName, isReturnSub, removecb, removesubgrid) { //子列设置显示列
return main.post("/configcolumn/columnchose", { targetname: targetName }, { suppressError: true }).done(function (res) {
if (res.obj && res.obj.data) {
var columndata = JSON.parse(res.obj.data);
columndata = _.uniqBy(columndata, "name");
var perm = new Array();
var canremap = true;
var addNum = 0;
//检查column列是否被更新,如果更新调用 /System/RemoveColumnConfig
var current_colModel = jgrid.jqGrid('getGridParam', 'colModel');
var ss = _.filter(current_colModel.map(o => o.name), (val, i, iteratee) => _.includes(iteratee, val, i + 1));
ss.length && console.log("存在重复值" + ss);
var newCols = [];
$.each(current_colModel, function (i, d) {
var isExist = columndata.some(function (dd, ii) { return dd.name === d.name; });
if (!isExist) {
newCols.push(d.name);
columndata.push(d);
}
});
if (isReturnSub) g_subgridobj = columndata;
var colModel = jgrid.jqGrid('getGridParam', 'colModel');
columndata.forEach(function (item, index) {
if (item !== null && (item.hidden || $.inArray(item.name, newCols) >= 0)) {
jgrid.setGridParam().hideCol([item.name]);
}
else {
jgrid.setGridParam().showCol([item.name]);
}
var i = colModel.findIndex(o => o.name == item.name);
if (i >= 0) {
perm.push(i);
}
});
if (canremap) {
jgrid.jqGrid("remapColumns", perm, true);
}
}
});
};
main.showsubcolumnChooser = function (jgrid, targetName, options) {
options = options || {};
var _options = {
width: 550,
dialog_opts: {
modal: false,
minWidth: 470,
height: 470,
show: 'blind',
hide: 'explode',
dividerLocation: 0.5
},
done: function (perm) {
var subList = [];
if (options.expandSubs !== 'none') {
var rowIds = $("#listGrid").jqGrid('getDataIDs');
for (var k = 0; k < rowIds.length; k++) {
var curIndex = rowIds[k];
var curRowData = $("#listGrid").jqGrid('getRowData', curIndex);
var curCheckId = "jqg_listGrid_" + curIndex;
var cbTableId = "listGrid_" + curIndex + "_t";
var expanded = $("#" + curCheckId).parent().parent().find(".sgexpanded");
if (expanded.length > 0) {
subList.push($("#" + curCheckId).parent().parent().attr("id"));
}
}
}
if (!perm) return;
this.jqGrid("remapColumns", perm, true);
$.each(subList, function (index, value) {
var sub = "listGrid_" + value + "_t";
if (value !== 1) {
$("#" + sub).jqGrid("remapColumns", perm, true);
}
});
var colModel = jgrid.jqGrid('getGridParam', 'colModel');
if (options.liteOnly) {
colModel = colModel.map(function (x) { return { name: x.name, hidden: x.hidden }; });
}
main.post("/configcolumn/saveconfig",
{
targetname: targetName,
data: JSON.stringify(colModel)
}).done(function (res) {
//页面加载
window.location.href = window.location.href.replace(/#/g, '');
});
}
};
jgrid.jqGrid('columnChooser', _options);
};
//映射已经保存下来的列配置
main.mapSavedColModel = function (savedData, originals) {
if (!savedData) return originals;
var columndata = JSON.parse(savedData);
//必需完全匹配才可以
var isMatch = originals.length === columndata.length;
if (isMatch) {
$.each(originals, function (i, d) {
var item = columndata.find(dd => dd.name === d.name);
if (!item) {
isMatch = false;
return false;
}
item.formatter = d.formatter;
});
}
if (!isMatch) {
main.post("/configcolumn/removeConfig", { targetname: targetName });
return originals;
}
return columndata;
};
main.hasEventFunction = function (ele, eventName, func) {
var eventsData = $(ele).data("events");
if (main.isEmpty(eventsData)) {
return false;
}
if (!eventsData[eventName]) {
return false;
}
for (var i = 0; i < eventsData[eventName].length; i++) {
if (eventsData[eventName][i].handler === func) {
return true;
}
}
return false;
};
main.loadJs = function (url, callback) {
var script = document.createElement('script');
script.type = "text/javascript";
if (typeof callback !== "undefined") {
if (script.readyState) {
script.onreadystatechange = function () {
if (script.readyState === "loaded" || script.readyState === "complete") {
script.onreadystatechange = null;
callback();
}
};
} else {
script.onload = function () {
callback();
};
}
}
script.src = url;
document.body.appendChild(script);
};
main.toExcel = function (jqGrid, fileName, fileType, include, notInclude, formatters, useGroupHeader, numberWithTab) {
var callbackFunc = function () {
if (typeof jqGrid === "string") {
jqGrid = $("#" + jqGrid);
} else {
jqGrid = $(jqGrid);
}
fileType = fileType || "xls";
include = include || [];
notInclude = notInclude || [];
formatters = formatters || [];
useGroupHeader = useGroupHeader || false;
if (typeof include === "string") {
include = include.split(",");
}
if (typeof notInclude === "string") {
notInclude = notInclude.split(",");
}
var colModel = [];
var colModelOriginal = jQuery.extend(true, [], $(jqGrid).jqGrid('getGridParam', 'colModel'));
var groupHeader = jqGrid.getGridParam("groupHeader");
var groupHeaders, groupIndex, isInGroup, groupColumnCount, tempNumberOfColumns;
if (groupHeader) {
groupHeaders = groupHeader.groupHeaders;
groupIndex = 0;
isInGroup = false;
groupColumnCount = 0;
tempNumberOfColumns = 0;
}
var j = 0;
var formatterArray = [];
var cellattrArray = [];
for (var i = 0; i < colModelOriginal.length; i++) {
if (useGroupHeader && groupHeader) {
if (groupIndex < groupHeaders.length) {
if (colModelOriginal[i].name === groupHeaders[groupIndex].startColumnName) {
isInGroup = true;
tempNumberOfColumns = groupHeaders[groupIndex].numberOfColumns;
groupHeaders[groupIndex].numberOfColumns = 0;
groupColumnCount++;
groupHeaders[groupIndex].title = groupHeaders[groupIndex].titleText.replace(/<[^>]+>/g, "");
} else if (isInGroup) {
groupColumnCount++;
}
}
}
if (!colModelOriginal[i].hidden && colModelOriginal[i].name !== "cb" && colModelOriginal[i].name !== "subgrid"
&& $.inArray(colModelOriginal[i].label, notInclude) === -1 || $.inArray(colModelOriginal[i].label, include) > -1) {
if (useGroupHeader && groupHeader && isInGroup) {
if (groupHeaders[groupIndex].startColumnName === null) {
groupHeaders[groupIndex].startColumnName = colModelOriginal[i].name;
}
groupHeaders[groupIndex].numberOfColumns++;
}
var curCol = {
colName: colModelOriginal[i].label,
fieldName: colModelOriginal[i].name,
colIndex: j++,
keepFormatter: false
};
if (!main.isEmpty(formatters)) {
var colFormatter = formatters.find(function (currentValue) {
return colModelOriginal[i].label === currentValue.colName;
});
if (colFormatter) {
colModelOriginal[i].formatter = colFormatter.formatter;
curCol.keepFormatter = true;
}
}
if (colModelOriginal[i].formatter !== undefined && colModelOriginal[i].formatter !== null) {
if (typeof colModelOriginal[i].formatter === "string") {
if (colModelOriginal[i].formatter === "number" || colModelOriginal[i].formatter === "number2") {
curCol.formatter = "number";//"number2";
} else {
curCol.formatter = colModelOriginal[i].formatter;
}
formatterArray[j - 1] = curCol.formatter;
} else if (typeof colModelOriginal[i].formatter === "function") {
formatterArray[j - 1] = colModelOriginal[i].formatter;
curCol.formatter = function (colValue, rowModel, colIndex) {
var formaterFunc = formatterArray[colIndex];
return formaterFunc(colValue, null, rowModel);
};
}
} else {
formatterArray[j - 1] = null;
}
if (colModelOriginal[i].cellattr !== undefined && colModelOriginal[i].cellattr !== null) {
if (typeof colModelOriginal[i].cellattr === "function") {
cellattrArray[j - 1] = colModelOriginal[i].cellattr;
curCol.cellattr = function (colValue, rowModel, colIndex) {
var cellattrFunc = cellattrArray[colIndex];
return cellattrFunc(colValue, null, rowModel);
};
}
} else {
cellattrArray[j - 1] = null;
}
colModel.push(curCol);
} else if (useGroupHeader && groupHeader && colModelOriginal[i].name === groupHeaders[groupIndex].startColumnName) {
groupHeaders[groupIndex].startColumnName = null;
}
if (useGroupHeader && groupHeader && isInGroup && groupColumnCount >= tempNumberOfColumns) {
groupIndex++;
isInGroup = false;
groupColumnCount = 0;
}
}
var rowDatas = main.GetSortedGridObjs(jqGrid);
if (!main.isEmpty(rowDatas)) {
$.each(colModel, function () {
if (!this.keepFormatter) {
this.formatter = null;
}
});
$.fn.exportToExcel({
data: rowDatas,
colModel: colModel,
groupHeader: useGroupHeader ? groupHeader : null,
fileName: fileName,
fileType: fileType,
numberWithTab: numberWithTab
});
return;
}
var url = $(jqGrid).jqGrid('getGridParam', 'url');
var postData = $(jqGrid).jqGrid('getPostData');
postData.rows = 0;
postData.PageSize = 0;
$.fn.exportToExcel({
url: url,
remote: true,
postData: postData,
colModel: colModel,
groupHeader: useGroupHeader ? groupHeader : null,
fileName: fileName,
fileType: fileType,
numberWithTab: numberWithTab
});
};
if ($("script[src*='exportUtil.js']").length === 0) {
main.loadJs("/Statics/libs/v1/exportUtil.js?t=0.9", callbackFunc);
} else {
callbackFunc();
}
};
//只需要初始化一次
const __holiDays = (function () {
function getDatas() {
var val = [];
main.post("/calendar/GetCalendarsV2", "", { async: false }).done(function (res) {
if (res.version === '多日历') {
val = "多日历";
} else {
for (var i = 0; i < res.length; i++) {
var tempcal = eval(res[i].HolidayJson);
val = val.concat(tempcal);
}
}
});
return val;
}
var results;
return function () {
if (results) return results;
return results = getDatas();
};
})();
//为页面所有日期设置交易时间才可选择 deadline 之后的都不能选择
main.setTradeDatePicker = function (maturedate, picker, deadline, sel, hasHolidays) {
var natDays = __holiDays();
function noWeekendsOrHolidays(date) {
var deadlinetemp = $(this).attr("deadline");
if (deadlinetemp) deadline = deadlinetemp;
if (deadline && date > moment(deadline)) return [false];
return nationalDays(date);
}
function nationalDays(date) {
if (natDays === '多日历') {
if (moment(date).isoWeekday() > 5) {
return [false];
}
} else {
var m = date.getMonth();
var d = date.getDate();
var y = date.getFullYear();
for (var i = 0; i < natDays.length - 1; i++) {
var myDate = new Date(natDays[i]);
if (!hasHolidays && m === myDate.getMonth() && d === myDate.getDate() && y === myDate.getFullYear()) {
return [false];
}
}
}
if (maturedate && date > maturedate) {
return [false]; //大于到期日的都不能选
}
return [true];
}
$(picker || ".datepicker").datepicker({
beforeShowDay: noWeekendsOrHolidays,
changeMonth: true,
changeYear: true,
showButtonPanel: true,
showOtherMonths: true,
selectOtherMonths: true,
onSelect: sel
});
};
main.checkPhone = function (id) {
var tagObj = $("#" + id);
var phoneNumb = tagObj.val();
if (phoneNumb === "" || phoneNumb) {
var reg = /^1[345789]\d{9}$/;
if (!reg.test(phoneNumb)) {
main.notify("手机号码不符合要求,请重新输入!");
if (tagObj) {
tagObj.focus();
}
return false;
}
}
return true;
};
main.isEmpty = function (obj) {
if (obj === undefined || obj === null) {
return true;
}
if (typeof obj === "string" && obj === "") {
return true;
}
if (obj instanceof Array && obj.length === 0) {
return true;
}
if (typeof obj === "object" && $.isEmptyObject(obj)) {
return true;
}
return false;
};
//两元素交换位置
main.eleExchange = function (eleA, eleB) {
var n = eleA.next(), p = eleB.prev();
eleB.insertBefore(n);
eleA.insertAfter(p);
};
//layer弹窗和新页面
(function () {
function getWindowClientArea(window) {
let document = window.document;
let width = 0, height = 0;
// 获取窗口宽度
if (window.innerWidth)
width = window.innerWidth;
else if ((document.body) && (document.body.clientWidth))
width = document.body.clientWidth;
// 获取窗口高度
if (window.innerHeight)
height = window.innerHeight;
else if ((document.body) && (document.body.clientHeight))
height = document.body.clientHeight;
// 通过深入 Document 内部对 body 进行检测,获取窗口大小
if (document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth) {
height = document.documentElement.clientHeight;
width = document.documentElement.clientWidth;
}
return { width: width, height: height };
}
/**
* 打开弹窗
* @param {any} title 弹窗标题
* @param {any} url 弹窗url
* @param {any} options 弹窗选项(layer选项)
*/
main.open = function (title, url, options) {
let defaultOptions = {
type: 2,
title: title,
shadeClose: false,
shade: 0.4,
area: ['95%', '95%'],
content: url,
maxmin: true
};
if (window.parent && window.parent !== window) {
let parent = window.parent, layerWin = window;
while (parent.parent && parent.parent !== parent) {
layerWin = parent;
parent = parent.parent;
}
let area = getWindowClientArea(layerWin);
$.extend(defaultOptions, { area: [area.width + 'px', area.height + 'px'] }, options);
let successFn = defaultOptions.success;
defaultOptions.success = function (layero, index) {
let win = layero.find('iframe')[0].contentWindow;
win.opener = layerWin;
successFn && successFn();
layerWin.onunload = function () { win.opener = null; };
layerWin.onbeforeunload = function () { win.opener = null; };
};
return parent.layer.open(defaultOptions);
}
options && $.extend(defaultOptions, options);
return layer.open(defaultOptions);
};
/**
* 打开单一弹窗(同时关闭弹窗的弹窗)
* @param {any} title
* @param {any} url
* @param {any} options
*/
main.openMono = function (title, url, options) {
var index = window.parent.main.open(title, url, options);
if (window.parent !== window) {
var layer = window.parent.layer;
layer.close(layer.getFrameIndex(window.name));
}
return index;
};
//打开非iframe弹窗
main.open2 = function (title, html, options) {
var defaultOptions = {
type: 1,
title: title,
shadeClose: false,
shade: 0.4,
area: ['95%', '95%'],
content: html
};
if (options !== undefined && options !== null) {
$.extend(defaultOptions, options);
}
return layer.open(defaultOptions);
};
//main.open
main.infopage = function (title, url, options) {
return main.open(title, url, typeof options === 'object' ? $.extend({ area: ['700px', '90%'] }, options) : { area: ['700px', '90%'] });
};
//刷新父窗体(页面或数据)
main.parentReload = function (reload) {
let winp = window.opener || window.parent;
if (!winp || !reload) return;
if (reload.startsWith('#')) {
winp.history.replaceState(null, null, _.trimStart(reload, '#'));
winp.location.reload();
}
else if (reload === 'reload' || reload === true) {
winp.location.reload();
} else if (reload === 'reloadData') {
winp.reloadData && winp.reloadData();
} else if (typeof reload === 'string') {
reload = winp[reload];
typeof reload === 'function' && reload();
}
};
//刷新父窗体数据
main.parentReloadData = main.parentReload.bind(null, 'reloadData');
//以下为layer扩展
if (!layer || !layer.open) return;
//关闭当前IFrame
layer.closeMe = function (reload, message) {
if (!window.parent || window.parent === window) return;
main.parentReload(reload);
message && (typeof (message) === "string" || typeof (message) === "number") && parent.main.message(message);
let index;
if (window.name) {
index = parent.layer.getFrameIndex(window.name);
index && parent.layer.close(index);
}
if (!index) {
parent.layer.closeAll();
}
};
/**
* 激发顶层window的事件
* @param {string} winLoc 窗体位置:'top' or 'parent',默认'parent'
* @param {string} type 事件类型
* @param {any} data 事件数据
*/
layer.raiseParentEvent = function (winLoc, type, data) {
let win;
if (winLoc === 'top') {
win = window.top;
} else {
win = window.opener || window.parent;
}
if (win) {
win.$('body').trigger(type, data);
}
};
/**
* 调用顶层window的方法
* @param {string} winLoc 窗体位置:'top' or 'parent',默认'parent'
* @param {string} method 方法名称
* @param {any} data 方法参数,apply数组
*/
layer.callParentMethod = layer.invokeParentMethod = function (winLoc, method, data) {
let win;
if (winLoc === 'top') {
win = window.top;
} else {
win = window.opener || window.parent;
}
if (method && win && typeof win[method] === 'function') {
if (data && !Array.isArray(data)) {
data = [data];
}
win[method].apply(win, data);
}
};
//别名
layer.closeSelf = layer.closeMe;
}());
main.toDate = function (cellValue, options, rowObject) {
return new moment(cellValue).format("YYYY-MM-DD");
};
main.toTime = function (cellValue, options, rowObject) {
return new moment(cellValue).format("YYYY-MM-DD HH:mm");
};
main.SetDropdownText = function (idname, textname) {
$("#" + textname).val($("#" + idname).find(":selected").text());
};
main.GetGridObjs = function (ggrid) {
var rowIds = ggrid.jqGrid('getGridParam', 'selarrrow');
var ors = [];
for (var i = 0; i < rowIds.length; i++) {
var or = ggrid.getRowData(rowIds[i]);
ors.push(or);
}
return ors;
};
main.GetSortedGridObjs = function (ggrid) {
var rowIds = ggrid.jqGrid('getGridParam', 'selarrrow');
var rowDatas = ggrid.getRowData();
if (main.isEmpty(rowIds)) {
return [];
}
var ors = $.grep(rowDatas,
function (ele, index) {
return rowIds.some(function (rowId) { return rowId === ele.id; });
});
ors.forEach(function (item, index) {
if (item !== null) {
Object.keys(item).forEach(function (key) {
const regex = /#=(.*?)#/g;
var result = regex.exec(item[key]);
if (result) {
item[key] = result[1];
}
});
}
});
return ors;
};
main.GetGridIds = function (ggrid, propname) {
var rowIds = ggrid.jqGrid('getGridParam', 'selarrrow');
var ors = [];
for (var i = 0; i < rowIds.length; i++) {
var or = {};
if (propname) {
or = ggrid.getRowData(rowIds[i])[propname];
} else
or = ggrid.getRowData(rowIds[i]).id;
ors.push(or);
}
return ors;
};
//jqgrid,选中行不勾选,只在点击checkbox时勾选 true 可以选,false不可以
main.disableRowCheck = function (rowid, e) {
var $myGrid = $(this),
i = $.jgrid.getCellIndex($(e.target).closest('td')[0]),
cm = $myGrid.jqGrid('getGridParam', 'colModel');
return (cm[i].name === 'cb') && $(e.target).prop("tagName") !== "TD";
};
main.toInt = function (val, opt, data) {
var numdata = numeral(val).format("0");
if (numdata === "NaN") numdata = 0;
return numdata;
};
main.toNumber = function (data, decimalPlaces) {
var formatStr = "0.";
if (decimalPlaces !== undefined && decimalPlaces !== null) {
for (var i = 0; i < decimalPlaces; i++) {
formatStr += "0";
}
} else {
formatStr = "0.00";
}
return numeral(data).format(formatStr);
};
main.toNumberExcludingNaN = function (data, decimalPlaces) {
var formatStr = "0.";
if (decimalPlaces !== undefined && decimalPlaces !== null) {
for (var i = 0; i < decimalPlaces; i++) {
formatStr += "0";
}
} else {
formatStr = "0.00";
}
var numdata = numeral(data).format(formatStr);
if (numdata === "NaN") numdata = 0;
return numdata;
};
main.toNumberExcludingNaNEx = function (data, decimalPlaces) {
var formatStr = "0.";
if (decimalPlaces !== undefined && decimalPlaces !== null) {
for (var i = 0; i < decimalPlaces; i++) {
formatStr += "0";
}
} else {
formatStr = "0.00";
}
var numdata = numeral(data).format(formatStr);
if (numdata === "NaN" || numdata === "-NaN" || numdata === 0) numdata = "0.00";
return numdata;
};
//得到url参数值
main.getUrlParam = function (name) {
var urlPara = window.location.search.substr(1).split("&");
var paraCounts = urlPara.length;
for (var i = 0; i < paraCounts; i++) {
if (urlPara[i].substr(0, urlPara[i].indexOf("=")).indexOf(name) > -1) {
return urlPara[i].substr(urlPara[i].indexOf("=") + 1);
}
}
return "";
};
//转换为中文财务数字
main.changeMoneyToChinese = function (money) {
var hundredMillion = 100000000;
var tenThousand = 10000;
var countOfHundredMillion = Math.floor(money / hundredMillion);
var countOfTenThousand = Math.floor((money % hundredMillion) / tenThousand);
var lessThanTenThousand = money % tenThousand;
var result = lessThanTenThousand.toFixed(2);
if (countOfTenThousand > 0) {
result = countOfTenThousand + "万" + result;
}
if (countOfHundredMillion > 0) {
result = countOfHundredMillion + "亿" + result;
}
return result;
};
main.downloadFiles = (function () {
//解决pdf文件自动打开的问题
function downloadFile(file_path) {
var a = document.createElement('A');
a.href = file_path;
a.download = file_path.substr(file_path.lastIndexOf('/') + 1);
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
}
return function (files) {
if (files instanceof Array) {
let downFn = files.length > 1 ? downloadFile : window.open;
$.each(files, function (index, val) {
val && setTimeout(downFn.bind(null, val), 500);
});
} else {
if (files !== undefined && files !== null && files !== "") {
window.open(files);
}
}
};
}());
//清除非数字字符
main.clearNoNum = function (num) {
num = num + "";
num = num.replace(/[^\d.]/g, ""); //清除“数字”和“.”以外的字符
num = num.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的
num = num.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
num = num.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');//只能输入两个小数
if (num.indexOf(".") < 0 && num !== "") {//以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
num = parseFloat(num);
}
return num;
};
//转换为中文大写金额
main.toChineseCapital = function (numstr) {
var unit = "千百拾亿千百拾万千百拾元角分", str = "";
var p = numstr.indexOf('.');
if (p < 0) {
numstr += '00';
} else {
numstr = numstr.substring(0, p) + numstr.substr(p + 1, 2);
}
unit = unit.substr(unit.length - numstr.length);
for (var i = 0; i < numstr.length; i++) {
str += '零壹贰叁肆伍陆柒捌玖'.charAt(numstr.charAt(i)) + unit.charAt(i);
}
return str.replace(/零(千|百|拾|角|分)/g, "零").replace(/(零)+/g, "").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元");
}
main.formartDate = function (time,formatStr) {
if (!formatStr) {
formatStr = "YYYY-MM-DD";
}
var momDate = new moment(time);
if (!momDate.isValid() || typeof time === "undefined") return "";
return momDate.format(formatStr);
}
///校验邮件地址
main.checkEmail = function (email) {
const regex = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
return regex.test(email);
}