/*******************************************************************************
*
* JS文件说明:公用JS方法
*
*
*
* 建立:liudg
*
* 时间:2012-01-09
*
*
*
* 扩展:可自行扩展该对象下的验证方法,命名规则类同JAVA
*
*
*
* 使用方法:
*
* util.getBytesLength("www");
*
******************************************************************************/
var _showLoadingMsg = "";
var _isShowLoading = false;
var _showTopLoadingMsg = "";
var _isShowTopLoading = false;
var _DICT_MAP_GOL = new Object();
var _LANG_MAP_GOL = new Object();
var _isMothMakrControl=true;// 用于标记用户是否超时未操作平台功能, cjd ldg
// _isMothMakrControl=false To Cjd 2018-01-25
var _isMotParkBackMark =true;// _isMotParkBackMark=true为后台,_isMotParkBackMark=false前端
// 2018-02-01 cjd
function Util() {
this.submit_default_info = "\u6570\u636e\u52a0\u8f7d\u4e2d\uff0c\u8bf7\u7a0d\u5019...";
/* 弹出提示信息,入参:要显示的字符串 */
this.alert = function (msg,backFun,paramObj) {
//优化layer 可能被跨系统调用的时候 top.layer报错的问题。
if(layui){
var topLayer;
var index = layui.use(['layer'],function(){
var layer = layui.layer;
layer.ready(function(){
try{
topLayer = top.layer
}
catch(err){
topLayer = layer;
}
topLayer.open({
content: msg,
title: _GLO_CONFIRM_ICON_TITLE,
skin: 'layui-layer-molv',
btn: [_GLO_VALIDATE_OK],
yes: function(index){
// var index = parent.layer.getFrameIndex(window.name);
if(null!=backFun){
backFun(paramObj);
}
top.layer.close(index);
},
success:function(layero,index){
var yesBtn = layero[0].getElementsByClassName('layui-layer-btn')[0].getElementsByTagName('a')[0];
yesBtn.href = 'javascript:void(0)';
layero[0].getElementsByClassName('layui-layer-btn')[0].getElementsByTagName('a')[0].focus();
//响应键盘事件
$(yesBtn).keyup(function (event) {
// 获取键值
var keyEvent = event || window.event;
var key = keyEvent.keyCode;
if(key==32){
if(null!=backFun){
backFun(paramObj);
}
top.layer.close(index);
}
});
}
});
})
});
return;
}
var topMaskLayDiv = document.getElementById("_top_mask_lay_alertMsgDiv");
if(null==topMaskLayDiv){
var divStr = "
\n" +
"";
var tmpDiv = document.createElement("div");
tmpDiv.innerHTML = divStr;
var body = document.getElementsByTagName("body")[0];
body.appendChild(tmpDiv);
topMaskLayDiv = document.getElementById("_top_mask_lay_alertMsgDiv");
}
if (null == msg || "" == msg) {
msg = _popmenu_js_msg;
}
document.getElementById("alertMsg_msg").innerHTML = msg;
var bgObj = document.getElementById("bgDiv2");
bgObj.style.width = 0 + "px";
bgObj.style.height = 0 + "px";
topMaskLayDiv.style.display = "block";
var msgObj = document.getElementById("alertMsgDiv");
bgObj.style.display = msgObj.style.display = "block";
msgObj.style.marginTop = -75 + document.documentElement.scrollTop + "px";
msgObj.style.display = bgObj.style.display = "block";
var alertBut = document.getElementById("_alertMsgbut");
alertBut.focus();// 默认选中确定按钮
alertBut.onclick = function () {
bgObj.style.display = msgObj.style.display = "none";
topMaskLayDiv.style.display = "none";
if(null!=backFun){
backFun(paramObj);
}
};
// 响应键盘事件
$("#_top_mask_lay_alertMsgDiv").keyup(function (event) {
// 获取键值
var keyEvent = event || window.event;
var key = keyEvent.keyCode;
// 获得当前对象
var input_blur = $(this);
switch (key) {
case 27:// 按下esc键,取消
bgObj.style.display = msgObj.style.display = "none";
topMaskLayDiv.style.display = "none";
if(null!=backFun){
backFun(paramObj);
}
break;
}
});
$("#alertMsgDiv").keyup(function (event) {
// 获取键值
var keyEvent = event || window.event;
var key = keyEvent.keyCode;
// 获得当前对象
var input_blur = $(this);
switch (key) {
case 27:// 按下esc键,取消
bgObj.style.display = msgObj.style.display = "none";
topMaskLayDiv.style.display = "none";
if(null!=backFun){
backFun(paramObj);
}
break;
}
});
alertBut.focus();// 默认选中确定按钮
};
/* 弹出确认窗口,入参:(回调函数,要显示的字符串,回调参数) */
this.confirm = function (callBackFun, msg,paramObj) {
if (null == msg || "" == msg) {
msg = "\u786E\u8BA4\u6267\u884C\u64CD\u4F5C";
util.initLangMap('["确认执行操作"]');
msg = util.getLangShow("确认执行操作");
}
_confirm_(callBackFun, msg,paramObj);
};
this.confirmall = function (callBackFun, msg,paramObj) {
if (null == msg || "" == msg) {
msg = "\u786E\u8BA4\u6267\u884C\u64CD\u4F5C";
util.initLangMap('["确认执行操作"]');
msg = util.getLangShow("确认执行操作");
}
_confirm_all(callBackFun, msg,paramObj);;
};
/* 转字符串 */
this.toString = function (obj) {
return (null == obj ? "" : obj.toString());
};
/* 去除字符串的左右空格,入参:字符串 */
this.trim = function (str) {
return str.replace(/(^\s*)|(\s*$)/g, "");
};
/**
* 得到标准时区的时间的函数
*/
this.getLocalTime = function (i) {
// 参数i为时区值数字,比如北京为东八区则输进8,西5输入-5
if (typeof i !== 'number') return;
var d = new Date();
// 得到1970年一月一日到现在的秒数
var len = d.getTime();
// 本地时间与GMT时间的时间偏移差
var offset = d.getTimezoneOffset() * 60000;
// 得到现在的格林尼治时间
var utcTime = len + offset;
return new Date(utcTime + 3600000 * i);
};
/* 去除字符串的所有空格 */
this.allTrim = function (str) {
if(str!=""){
var result = str.replace(/(^\s*)|(\s*$)/g, "");
return result.replace(/\s/g, "");
}
return str;
};
/* 取得字符串的字节长度,入参:字符串 */
this.getBytesLength = function (str) {
/* 在GBK编码里,除了ASCII字符,其它都占两个字符宽 */
return (str.replace(/[^\x00-\xff]/g, "xx")).length;
};
//插件二期-ajax成功调用后回调通知插件
this.successCallBackStudioFun = function (data, editType) {
//调用前面Java代码中window绑定的eclipseBridge对象
//这里需要判断下是否有定义window.eclipseBridge,
//因为不是从jxbrowser插件访问的话是没有window.eclipseBridg属性的
console.log('jsonStr='+JSON.stringify(data));
if (typeof(window.eclipseBridge) != "undefined" ) {
//alert('window.eclipseBridge属性存在,开始传递类codeId');
console.log('window.eclipseBridge属性存在,开始传递类codeId');
/*var tableModel={
"base" : "1", //1勾选 0未选
"oracle" : "1", //1勾选 0未选
"mysql" : "0", //1勾选 0未选
"sqlserver" : "0", //1勾选 0未选
"pg" : "0", //1勾选 0未选
"className" : "com.more.${db.dialect}.aaa", //类全名
"historyClassName" : "com.more.${db.dialect}.bbb", //曾用名
"status" : "0" //状态 0新增 1修改 2删除
};
data = tableModel; */
//editType 修改的是 java类 还是jsp页面
if("java_json"==editType){
//console.log("111java");
//这里调用Java对象eclipseBridge的notifyModify方法
window.eclipseBridge.addListModelDataJava(data);
}else if("java"==editType){
//console.log("111java");
//这里调用Java对象eclipseBridge的notifyModify方法
var jsonStrJava = JSON.stringify(data);
window.eclipseBridge.addListModelDataJava(jsonStrJava);
}else if("java_list"==editType){
//console.log("111java");
//这里调用Java对象eclipseBridge的notifyModify方法
var jsonStrJava = JSON.stringify(data);
window.eclipseBridge.addListModelDataJavaList(jsonStrJava);
}else{
//console.log("111jsp");
var jsonStrJsp = JSON.stringify(data);
window.eclipseBridge.addListModelDataJsp(jsonStrJsp);
}
}else {
//alert('未定义window.eclipseBridge');
console.log('未定义window.eclipseBridge');
}
};
/* 设置TABLE的背景图片,入参:表格ID */
this.setTableBackImg = function (tableId) {
if (null == tableId || "" == tableId) {
return;
}
var dataList = document.getElementById(tableId);
if (null == dataList) {
return;
}
var tableHeardHeight = 28;
if (dataList.rows.length > 0) {
tableHeardHeight = dataList.rows[0].offsetHeight + 2;
}
if (null == document.getElementById("_bag_pageTcl")) {
var imgUrl = this.getContextPath() + "/images/LOGO.jpg";
var divHtml = "" + "
" + "
";
var body = document.getElementsByTagName("body")[0];
if (null == body) {
return;
}
var tmpDiv = document.createElement("div");
tmpDiv.innerHTML = divHtml;
body.appendChild(tmpDiv);
}
var divObj = document.getElementById("_bag_pageTcl");
if (null != dataList && null != divObj) {
var backImg = document.getElementById("_bag_backImg");
var width = dataList.offsetWidth;
var height = dataList.offsetHeight;
if ((dataList.offsetHeight - tableHeardHeight) < divObj.offsetHeight) {
backImg.style.height = (dataList.offsetHeight - tableHeardHeight);
}
divObj.style.top = (height - tableHeardHeight - divObj.offsetHeight) / 2 + dataList.offsetTop + tableHeardHeight;
divObj.style.left = (width - divObj.offsetWidth) / 2 + dataList.offsetLeft;
window.setTimeout("setTableBackImg_('" + tableId + "')", 50);
}
};
/* 显示loading背景图片,入参:显示提示信息,若为空则显示默认信息 */
this.showLoading = function (msg) {
var body = document.getElementsByTagName("body")[0];
if (null == body) {
return;
}
var fullHeight = getViewportHeight();
var viewHeight = document.body.scrollHeight;
var fullWidth = getViewportWidth();
if (fullHeight < viewHeight) {
fullHeight = viewHeight;
} else {
viewHeight = fullHeight;
}
var scLeft, scTop;
if (null == msg || "" == msg) {
msg = this.submit_default_info;
util.initLangMap('["数据加载中 请稍后"]');
msg = util.getLangShow("数据加载中 请稍后")+"...";
}
_showLoadingMsg = msg;
var imgUrl = this.getContextPath() + "/plf/images/loadingGIF.gif";
if (null == document.getElementById("_loading_div")) {
var iframeLay = "";// ""
// ;
var lay1 = "" + iframeLay + "
";
var divHtml = "" + "
|
" + msg + " |
" + "";
var tmpDiv = document.createElement("div");
tmpDiv.innerHTML = lay1 + divHtml;
body.appendChild(tmpDiv);
} else {
document.getElementById("_loading_div").style.display = "";
document.getElementById("_loading_img").src = imgUrl;
}
var divObj = document.getElementById("_loading_div");
var divLayObj = document.getElementById("_loading_lay_div");
divObj.style.display = "";
divLayObj.style.display = "";
var iWidth = divObj.offsetWidth; // 弹出窗口的宽度;
var iHeight = divObj.offsetHeight; // 弹出窗口的高度;
divObj.style.display = "none";
divLayObj.style.width = fullWidth + "px";
divLayObj.style.height = viewHeight + "px";
if (self.pageYOffset) {
scLeft = self.pageXOffset;
scTop = self.pageYOffset;
} else {
if (document.documentElement && document.documentElement.scrollTop) {
scLeft = document.documentElement.scrollLeft;
scTop = document.documentElement.scrollTop;
} else {
if (document.body) {
scLeft = document.body.scrollLeft;
scTop = document.body.scrollTop;
}
}
}
var topMargin = scTop + ((fullHeight - iHeight) / 2);
if (topMargin < 0) {
topMargin = 0;
}
divObj.style.top = topMargin + "px";
divObj.style.left = (scLeft + ((fullWidth - iWidth) / 2)) + "px";
if (gHideSelects) {
hideSelectBoxes();
}
divObj.style.display = "";
_isShowLoading = true;
resizeTimer_showLoading = null;
};
/* 关闭loading背景图片,入参:空 */
this.closeLoading = function () {
_isShowLoading = false;
if (gHideSelects) {
displaySelectBoxes();
}
var divObj = document.getElementById("_loading_div");
if (null != divObj) {
divObj.style.display = "none";
}
var _loading_lay_div = document.getElementById("_loading_lay_div");
if (null != _loading_lay_div) {
_loading_lay_div.style.display = "none";
}
window.setTimeout("util._closeLoadingTimeOut()", 60);
};
this._closeLoadingTimeOut = function () {
_isShowLoading = false;
if (gHideSelects) {
displaySelectBoxes();
}
var divObj = document.getElementById("_loading_div");
if (null != divObj) {
divObj.style.display = "none";
}
var _loading_lay_div = document.getElementById("_loading_lay_div");
if (null != _loading_lay_div) {
_loading_lay_div.style.display = "none";
}
};
this.resizeShowLoading = function (msg) {
if (_isShowLoading) {
this.showLoading(msg);
}
};
/* 跨站点特殊字符替换 */
this.replaceLikeVal=function(comp){
if (comp.value.indexOf("'") != -1 ||comp.value.indexOf("\"") != -1||comp.value.indexOf("<") != -1||comp.value.indexOf(">") != -1
||comp.value.indexOf("{") != -1||comp.value.indexOf("}") != -1||comp.value.indexOf("[") != -1||comp.value.indexOf("]") != -1
||comp.value.indexOf("(") != -1||comp.value.indexOf(")") != -1||comp.value.indexOf("/") != -1) {
comp.value = comp.value.replace(/\'/g,"").replace(/\"/g,"").replace(//g,"")
.replace(/{/g,"").replace(/\(/g,"").replace(/\)/g,"").replace(/\[/g,"").replace(/\]/g,"").replace(/\}/g,"").replace(/\//g,"");
this.alert("不能输入单引号双引号<>{}()[]/");
}
}
/* 判断是否IE */
this.isIE = function () {
try{
return (/(?:microsoft|opera)/i.test(navigator.appName));
}catch(e){
return false;
}
};
/* 判断是否Chrome谷哥浏览器 */
this.isChrome = function () {
try{
return window.navigator.userAgent.indexOf("Chrome") !== -1;
}catch(e){
return false;
}
};
/* 在顶层窗口显示loading背景图片,入参:显示提示信息,若为空则显示默认信息 */
this.showTopLoading = function (msg) {
try {
if (window.top._topIframe != null) {
// this.showTopLoading();
} else {
this.showLoading();
return;
}
}
catch (e) {
}
var ieop = this.isIE();
var xDom;
var xBody;
try {
xDom = (window.top.document == document) ? document : (window.top.document.body.tagName != "BODY") ? document : window.top.document;
xBody = (window.top.document == document) ? document.body : (window.top.document.body.tagName == "BODY") ? window.top.document.body : (ieop) ? document.body : window.top.document.documentElement;
}
catch (e) {
try {
xDom = (window.parent.document == document) ? document : (window.parent.document.body.tagName != "BODY") ? document : window.parent.document;
xBody = (window.parent.document == document) ? document.body : (window.parent.document.body.tagName == "BODY") ? window.parent.document.body : (ieop) ? document.body : window.parent.document.documentElement;
xDom = (window.parent.parent.document == document) ? document : (window.parent.parent.document.body.tagName != "BODY") ? document : window.parent.parent.document;
xBody = (window.parent.parent.document == document) ? document.body : (window.parent.parent.document.body.tagName == "BODY") ? window.parent.parent.document.body : (ieop) ? document.body : window.parent.parent.document.documentElement;
xDom = (window.parent.parent.parent.document == document) ? document : (window.parent.parent.parent.document.body.tagName != "BODY") ? document : window.parent.parent.parent.document;
xBody = (window.parent.parent.parent.document == document) ? document.body : (window.parent.parent.parent.document.body.tagName == "BODY") ? window.parent.parent.parent.document.body : (ieop) ? document.body : window.parent.parent.parent.document.documentElement;
xDom = (window.parent.parent.parent.parent.document == document) ? document : (window.parent.parent.parent.parent.document.body.tagName != "BODY") ? document : window.parent.parent.parent.parent.document;
xBody = (window.parent.parent.parent.parent.document == document) ? document.body : (window.parent.parent.parent.parent.document.body.tagName == "BODY") ? window.parent.parent.parent.parent.document.body : (ieop) ? document.body : window.parent.parent.parent.parent.document.documentElement;
xDom = (window.parent.parent.parent.parent.parent.document == document) ? document : (window.parent.parent.parent.parent.parent.document.body.tagName != "BODY") ? document : window.parent.parent.parent.parent.parent.document;
xBody = (window.parent.parent.parent.parent.parent.document == document) ? document.body : (window.parent.parent.parent.parent.parent.document.body.tagName == "BODY") ? window.parent.parent.parent.parent.parent.document.body : (ieop) ? document.body : window.parent.parent.parent.parent.parent.document.documentElement;
}
catch (e) {
if (null == xDom) {
xDom = (window.document == document) ? document : (window.document.body.tagName != "BODY") ? document : window.document;
xBody = (window.document == document) ? document.body : (window.document.body.tagName == "BODY") ? window.document.body : (ieop) ? document.body : window.document.documentElement;
}
}
}
var body = xBody;
if (null == body) {
return;
}
var fullHeight = body.scrollHeight;
var fullWidth = getViewportWidth();
var viewHeight = getViewportHeight();
if (fullHeight < viewHeight) {
fullHeight = viewHeight;
}
var scLeft, scTop;
if (null == msg || "" == msg) {
msg = this.submit_default_info;
util.initLangMap('["数据加载中 请稍后"]');
msg = util.getLangShow("数据加载中 请稍后")+"...";
}
_showTopLoadingMsg = msg;
var imgUrl = this.getContextPath() + "/plf/images/loading_h1.gif";
if (null == xDom.getElementById("_top_loading_div")) {
var xdoc = xDom.createDocumentFragment();
body.appendChild(xdoc);
var lay1 = "";
var divHtml = "" + "
|
" + msg + " |
" + "";
var tmpDiv = xDom.createElement("div");
tmpDiv.innerHTML = lay1 + divHtml;
body.appendChild(tmpDiv);
} else {
xDom.getElementById("_top_loading_div").style.display = "";
xDom.getElementById("_top_loading_lay_div").style.display = "";
xDom.getElementById("_top_loading_img").src = imgUrl;
}
var divObj = xDom.getElementById("_top_loading_div");
var divLayObj = xDom.getElementById("_top_loading_lay_div");
var iWidth = divObj.offsetWidth; // 弹出窗口的宽度;
var iHeight = divObj.offsetHeight; // 弹出窗口的高度;
divObj.style.top = body.scrollTop + body.offsetHeight / 2 - (iHeight / 2) + "px";
divObj.style.left = body.scrollLeft + body.offsetWidth / 2 - (iWidth / 2) + "px";
if (gHideSelects) {
hideSelectBoxes();
}
_isShowTopLoading = true;
};
/* 关闭top loading背景图片,入参:空 */
this.closeTopLoading = function () {
_isShowTopLoading = false;
var xDom;
try {
xDom = (window.top.document == document) ? document : (window.top.document.body.tagName != "BODY") ? document : window.top.document;
xBody = (window.top.document == document) ? document.body : (window.top.document.body.tagName == "BODY") ? window.top.document.body : (ieop) ? document.body : window.top.document.documentElement;
}
catch (e) {
try {// 如果页面被iframe跨域嵌套时,查找顶层页面时最多向上查找5层
xDom = (window.parent.document == document) ? document : (window.parent.document.body.tagName != "BODY") ? document : window.parent.document;
xDom = (window.parent.parent.document == document) ? document : (window.parent.parent.document.body.tagName != "BODY") ? document : window.parent.parent.document;
xDom = (window.parent.parent.parent.document == document) ? document : (window.parent.parent.parent.document.body.tagName != "BODY") ? document : window.parent.parent.parent.document;
xDom = (window.parent.parent.parent.parent.document == document) ? document : (window.parent.parent.parent.parent.document.body.tagName != "BODY") ? document : window.parent.parent.parent.parent.document;
xDom = (window.parent.parent.parent.parent.parent.document == document) ? document : (window.parent.parent.parent.parent.parent.document.body.tagName != "BODY") ? document : window.parent.parent.parent.parent.parent.document;
}
catch (e) {
if (null == xDom) {
xDom = (window.document == document) ? document : (window.document.body.tagName != "BODY") ? document : window.document;
}
}
}
var loadingDiv = xDom.getElementById("_top_loading_div");
var loadingLayDiv = xDom.getElementById("_top_loading_lay_div");
if (null != loadingDiv) {
if (gHideSelects) {
displaySelectBoxes();
}
loadingDiv.style.display = "none";
loadingLayDiv.style.display = "none";
}
};
this._closeTopLoadingTimeOut = function () {
_isShowTopLoading = false;
var xDom;
try {
xDom = (window.top.document == document) ? document : (window.top.document.body.tagName != "BODY") ? document : window.top.document;
xBody = (window.top.document == document) ? document.body : (window.top.document.body.tagName == "BODY") ? window.top.document.body : (ieop) ? document.body : window.top.document.documentElement;
}
catch (e) {
try {// 如果页面被iframe跨域嵌套时,查找顶层页面时最多向上查找5层
xDom = (window.parent.document == document) ? document : (window.parent.document.body.tagName != "BODY") ? document : window.parent.document;
xDom = (window.parent.parent.document == document) ? document : (window.parent.parent.document.body.tagName != "BODY") ? document : window.parent.parent.document;
xDom = (window.parent.parent.parent.document == document) ? document : (window.parent.parent.parent.document.body.tagName != "BODY") ? document : window.parent.parent.parent.document;
xDom = (window.parent.parent.parent.parent.document == document) ? document : (window.parent.parent.parent.parent.document.body.tagName != "BODY") ? document : window.parent.parent.parent.parent.document;
xDom = (window.parent.parent.parent.parent.parent.document == document) ? document : (window.parent.parent.parent.parent.parent.document.body.tagName != "BODY") ? document : window.parent.parent.parent.parent.parent.document;
}
catch (e) {
if (null == xDom) {
xDom = (window.document == document) ? document : (window.document.body.tagName != "BODY") ? document : window.document;
}
}
}
var loadingDiv = xDom.getElementById("_top_loading_div");
var loadingLayDiv = xDom.getElementById("_top_loading_lay_div");
if (null != loadingDiv) {
if (gHideSelects) {
displaySelectBoxes();
}
loadingDiv.style.display = "none";
loadingLayDiv.style.display = "none";
}
window.setTimeout("util._closeTopLoadingTimeOut()", 60);
};
/* js 取contextPath,如/mes */
this.getContextPath = function () {
var contextPath = document.location.pathname;
if ("/" == contextPath.substr(0, 1)) {
index = contextPath.substr(1).indexOf("/");
} else {
contextPath = "/" + contextPath;
}
var index = contextPath.substr(1).indexOf("/");
contextPath = contextPath.substr(0, index + 1);
return contextPath;
};
/* 改按钮图片样式 */
this.btnMouseEvent = function (thisObj, appendStr) {
$(thisObj).find("td").each(function () {
var oldClass = $(this).attr("class");
if (oldClass.indexOf("_Sed") > 0) {
oldClass = oldClass.substr(0, oldClass.indexOf("_Sed"));
} else {
if (oldClass.indexOf("_Hover") > 0) {
oldClass = oldClass.substr(0, oldClass.indexOf("_Hover"));
}
}
var newClass = oldClass + appendStr;
$(this).removeClass();
$(this).addClass(newClass);
});
};
/* json对象转字符串 */
this.jsonToString = function (o) {
if (o == undefined) {
return "";
}
var r = [];
if (typeof o == "string") {
return "\"" + o.replace(/([\"\\])/g, "\\$1").replace(/(\n)/g, "\\n").replace(/(\r)/g, "\\r").replace(/(\t)/g, "\\t") + "\"";
}
if (typeof o == "object") {
if (!o.sort) {
for (var i in o) {
r.push("\"" + i + "\":" + this.jsonToString(o[i]));
}
if (!!document.all && !/^\n?function\s*toString\(\)\s*\{\n?\s*\[native code\]\n?\s*\}\n?\s*$/.test(o.toString)) {
r.push("toString:" + o.toString.toString());
}
r = "{" + r.join() + "}";
} else {
for (var i = 0; i < o.length; i++) {
r.push(this.jsonToString(o[i]));
}
r = "[" + r.join() + "]";
}
return r;
}
return o.toString().replace(/\"\:/g, "\":\"\"");
};
/* json对象转字符串 */
this.jsonToStr = function (jsonObj){
return JSON.stringify(jsonObj);
};
/* 字符串转json对象 */
this.toJsonObj = function (str){
return JSON.parse(str);
};
/* 数字转换成大写人民币 */
this.toCnMoney = function (money) {
var cnNums = new Array("\u96f6", "\u58f9", "\u8d30", "\u53c1", "\u8086", "\u4f0d", "\u9646", "\u67d2", "\u634c", "\u7396"); // 汉字的数字
var cnIntRadice = new Array("", "\u62fe", "\u4f70", "\u4edf"); // 基本单位
var cnIntUnits = new Array("", "\u4e07", "\u4ebf", "\u5146"); // 对应整数部分扩展单位
var cnDecUnits = new Array("\u89d2", "\u5206", "\u6beb", "\u5398"); // 对应小数部分单位
var cnInteger = "\u6574"; // 整数金额时后面跟的字符
var cnIntLast = "\u5706"; // 整型完以后的单位(u5143元或u5706圆)
var maxNum = 1000000000000000; // 最大处理的数字
var IntegerNum; // 金额整数部分
var DecimalNum; // 金额小数部分
var ChineseStr = ""; // 输出的中文金额字符串
var parts; // 分离金额后用的数组,预定义
if (money == "") {
return "";
}
money = parseFloat(money);
if (money >= maxNum) {
alert("\u8d85\u51fa\u6700\u5927\u5904\u7406\u6570\u5b57");
return "";
}
if (money == 0) {
ChineseStr = cnNums[0] + cnIntLast + cnInteger;
return ChineseStr;
}
money = money.toString(); // 转换为字符串
if (money.indexOf(".") == -1) {
IntegerNum = money;
DecimalNum = "";
} else {
parts = money.split(".");
IntegerNum = parts[0];
DecimalNum = parts[1].substr(0, 4);
}
if (parseInt(IntegerNum, 10) > 0) { // 获取整型部分转换
var zeroCount = 0;
var IntLen = IntegerNum.length;
for (var i = 0; i < IntLen; i++) {
var n = IntegerNum.substr(i, 1);
var p = IntLen - i - 1;
var q = p / 4;
var m = p % 4;
if (n == "0") {
zeroCount++;
} else {
if (zeroCount > 0) {
ChineseStr += cnNums[0];
}
zeroCount = 0; // 归零
ChineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
}
if (m == 0 && zeroCount < 4) {
ChineseStr += cnIntUnits[q];
}
}
ChineseStr += cnIntLast;// 整型部分处理完毕
}
if (DecimalNum != "") { // 小数部分
var decLen = DecimalNum.length;
for (var i = 0; i < decLen; i++) {
var n = DecimalNum.substr(i, 1);
if (n != "0") {
ChineseStr += cnNums[Number(n)] + cnDecUnits[i];
}
}
}
if (ChineseStr == "") {
ChineseStr += cnNums[0] + cnIntLast + cnInteger;
} else {
if (DecimalNum == "") {
ChineseStr += cnInteger;
}
}
return ChineseStr;
};
this.setEditTable = function (editTableId) {
// 找到所有的td节点
var tds = $("#" + editTableId + " td");
// 给所有的td添加点击事件
tds.click(function () {
// 获得当前点击的对象
var td = $(this);
if ((null != td.attr("class") && td.attr("class").indexOf("_noedit") > -1)||td.hasClass("initComponent")) {
return;
}
var showObj = td.find("._show");// 显示部分
var editObj = td.find("._edit");// 数据部分
var formObj = editObj.children();// 数据提交部分
var formObjNodeName;
if(typeof(formObj[0])!="undefined" && formObj[0].nodeName){
formObjNodeName = formObj[0].nodeName;// 数据提交表单dom名称
}
var formObjType = formObj.attr("type");// 数据提交表单类型
if (showObj.css("display") == "none") {
return;
}
// 取出当前td的文本内容保存起来
var oldText = showObj.text();
// formObj.width("90%");
showObj.hide();
editObj.show();
// 当文本框得到焦点时触发全选事件
formObj.trigger("focus");
if (formObjType != "button") {
formObj.select();
}
// 当文本框失去焦点时重新变为文本
formObj.blur(function () {
// 保存当前文本框的内容
editObj.hide();
if (formObjType != "button") {
if ("SELECT" == formObjNodeName && "" != formObj.val()) {
showObj.html(formObj.find("option:selected").text());
} else {
if(editTableId == "left_data_table"){
var nowText = formObj.val();
if(nowText.length>6){
showObj.html(nowText.substring(0,6)+".......");
showObj.attr("title",nowText);
}else{
showObj.html(formObj.val());
}
}else{
showObj.html(formObj.val());
}
}
}
showObj.show();
});
// 响应键盘事件
formObj.keyup(function (event) {
if (formObjType == "button") {
return;
}
// 获取键值
var keyEvent = event || window.event;
var key = keyEvent.keyCode;
// 获得当前对象
var input_blur = $(this);
switch (key) {
case 13:// 按下回车键,保存当前文本框的内容
editObj.hide();
if ("SELECT" == formObjNodeName && "" != formObj.val()) {
showObj.html(formObj.find("option:selected").text());
} else {
showObj.html(formObj.val());
}
showObj.show();
break;
case 27:// 按下esc键,取消修改,把文本框变成文本
editObj.hide();
showObj.html(oldText);
showObj.show();
break;
}
});
});
};
/* 判断是否有重复字符串 */
this.isRepeat = function (arr) {
var resObj = new Object;
var hash = {};
for (var i in arr) {
if (hash[arr[i]]) {
resObj.res = true;
resObj.val = arr[i];
resObj.seq = i;
return resObj;
}
hash[arr[i]] = true;
}
resObj.res = false;
return resObj;
};
/* 判断是否有滚动条 */
this.isScroll = function (thisDoc) {
if (thisDoc.body.style.overflow != "hidden" && thisDoc.body.scroll != "no" && thisDoc.body.scrollHeight > thisDoc.body.offsetHeight) {
return true;
} else {
return false;
}
};
/*------selection operations-------*/
/** *********************以下为编辑器优化设置**************************** */
/*
* //截获了Tab按键,其他的textarea框不进行此配置 //下面的代码就是为了实现这个功能,原理很简单,采用上一行的缩进就行
* //只要在html中插入脚本调用reloadTabKey()函数就可以了
* //注1:需要jQuery支持,如果不喜欢jQuery改成javascript也很方便的 //兼容firefox和IE!
*/
this.reloadTabKey = function (jqObj) {
/* set all the tab indent for all the text areas */
jqObj.each(function () {
$(this).keydown(function (eve) {
if (eve.target != this) {
return;
}
if (eve.keyCode == 13) {
last_blanks = util.getCurrentLineBlanks(this);
} else {
if (eve.keyCode == 9) {
eve.preventDefault();
util.insertAtCursor(this, "\t");
this.returnValue = false;
}
}
}).keyup(function (eve) {
if (eve.target == this && eve.keyCode == 13) {
util.insertAtCursor(this, last_blanks);
}
});
});
};
this.insertAtCursor = function (obj, txt) {
obj.focus();
// IE support
if (document.selection) {
sel = document.selection.createRange();
sel.text = txt;
} else {
var startPos = obj.selectionStart;
var scrollTop = obj.scrollTop;
var endPos = obj.selectionEnd;
obj.value = obj.value.substring(0, startPos) + txt + obj.value.substring(endPos, obj.value.length);
startPos += txt.length;
obj.setSelectionRange(startPos, startPos);
obj.scrollTop = scrollTop;
}
};
this.getCaretPos = function (ctrl) {
var caretPos = 0;
if (document.selection) {
// IE Support
var range = document.selection.createRange();
// We'll use this as a 'dummy'
var stored_range = range.duplicate();
// Select all text
stored_range.moveToElementText(ctrl);
// Now move 'dummy' end point to end point of original range
stored_range.setEndPoint("EndToEnd", range);
// Now we can calculate start and end points
ctrl.selectionStart = stored_range.text.length - range.text.length;
ctrl.selectionEnd = ctrl.selectionStart + range.text.length;
caretPos = ctrl.selectionStart;
} else {
if (ctrl.selectionStart || ctrl.selectionStart == "0") {
// Firefox support
}
}
caretPos = ctrl.selectionStart;
return (caretPos);
};
this.getCurrentLineBlanks = function (obj) {
var pos = this.getCaretPos(obj);
var str = obj.value;
var i = pos - 1;
while (i >= 0) {
if (str.charAt(i) == "\n") {
break;
}
i--;
}
i++;
var blanks = "";
while (i < str.length) {
var c = str.charAt(i);
if (c == " " || c == "\t") {
blanks += c;
} else {
break;
}
i++;
}
return blanks;
};
// <%-- 设置textarea 自适应宽度 --%>
this.setTextAreaWidth = function (divId, areaId) {
var tdWh = $("#" + divId).width();
var docWh = $(document).width();
var winWh = $(window).width();
if (docWh > (winWh + 21)) {
$("#" + areaId).css({width:tdWh - (docWh - winWh + 7)});
} else {
$("#" + areaId).css({width:tdWh - 2});
}
};
// <%-- 设置textarea 自适应高度 --%>
this.setTextAreaHeight = function (areaId, divHeadH) {
var docWh = $(document).height();
var winWh = $(window).height();
$("#" + areaId).css({height:winWh - divHeadH - 21});
};
/* 数据字典翻译 */
this.getDictShow = function (code, key) {
if (null == code) {
return "";
}
if (null == key) {
return "";
}
try{
return _DICT_MAP_GOL[code][key].value;
}
catch(e){return "";}
/*
* var value = ""; jQuery.each(_DICT_MAP_GOL[code], function(i, map) {
* if(key == map.code){ value= map.value; return false; } }); return
* value;
*/
};
/* 初始化数据字典 */
this.initDictMap = function (dicts) {
jQuery.ajax({type:"POST", dataType:"json",async:false , cache:false , url:this.getContextPath() + "/comm/DictAction_getDictMap.ms", data:{"paraMap.dicts":dicts}, success:function (data) {
// alert(JSON.stringify(data));
// util.alert(data.ajaxMap.nextselectId);
if (null == data) {
return;
}
if (null == data.ajaxMap) {
return;
}
for (var key in data.ajaxMap) {
if (null == _DICT_MAP_GOL[key]) {
_DICT_MAP_GOL[key] = data.ajaxMap[key];
}
}
}, error:function (msg) {
util.closeLoading();
util.alert("error:" + msg);
}});
};
/* 取json对象长度 */
this.getJsonObjLen = function (jsonObj) {
if (null == jsonObj) {
return 0;
}
var length = 0;
for (var item in jsonObj) {
length++;
}
return length;
};
/*
* 随机获取颜色
*/
this.getRandomColor = function(){
var c = "#";
var cArray = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'];
for(var i = 0;i < 6;i++){
var cIndex = Math.round(Math.random()*15);
c += cArray[cIndex];
}
return c;
};
// 新增个获取UUID方法
this.getUUID = function(){
return ('xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
}));
};
/* 初始化多语言 */
//langs 要翻译的文字,传数组 '["中文"]'或者'["中文","英文"]'
//moName 模块标识 'mc_plf'
this.initLangMap = function (langs, moName) {
langs = _mcBase64JsToJava.getMcDealBase64Encode(langs);
jQuery.ajax({type:"POST", dataType:"json",async:false , cache:false ,
url:this.getContextPath() + "/comm/CacheAction_getLangMap.ms",
data:{"paraMap.langs":langs, "paraMap.moName":moName},
success:function (data) {
// alert(JSON.stringify(data));
// util.alert(data.ajaxMap.nextselectId);
if (null == data) {
return;
}
if (null == data.ajaxMap) {
return;
}
if(data.ajaxMap.RES == false){
alert(data.ajaxMap.RES_MSG);
return;
}
for (var key in data.ajaxMap) {
if (null == _LANG_MAP_GOL[key]) {
_LANG_MAP_GOL[key] = data.ajaxMap[key];
}
}
}, error:function (msg) {
util.closeLoading();
util.alert("error:" + msg);
}});
};
/* 多语言翻译 */
this.getLangShow = function (key) {
if (null == key) {
return "";
}
var lang = _LANG_MAP_GOL[key];
if(null==lang || ""==lang){
lang=key;
}
for(var i=1; i 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function(fmt)
{ // author: meizz
var o = {
"M+" : this.getMonth()+1, // 月份
"d+" : this.getDate(), // 日
"h+" : this.getHours(), // 小时
"m+" : this.getMinutes(), // 分
"s+" : this.getSeconds(), // 秒
"q+" : Math.floor((this.getMonth()+3)/3), // 季度
"S" : this.getMilliseconds() // 毫秒
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("("+ k +")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
return fmt;
}
Array.prototype.remove = function (dx) {
if(isNaN(dx)||dx>this.length){return false;}
this.splice(dx,1);
}
/**
* Simple Map
*
*
* var m = new Map(); m.put('key','value'); ... var s = "";
* m.each(function(key,value,index){ s += index+":"+ key+"="+value+"n"; });
* alert(s);
*
* @author dewitt
* @date 2008-05-24
*/
function Map() {
/** 存放键的数组(遍历用到) */
this.keys = new Array();
/** 存放数据 */
this.data = new Object();
/**
* 放入一个键值对
*
* @param {String}
* key
* @param {Object}
* value
*/
this.put = function (key, value) {
if (this.data[key] == null) {
this.keys.push(key);
}
this.data[key] = value;
};
/**
* 获取某键对应的值
*
* @param {String}
* key
* @return {Object} value
*/
this.get = function (key) {
return this.data[key];
};
/**
* 删除一个键值对
*
* @param {String}
* key
*/
this.remove = function (key) {
this.keys.remove(key);
this.data[key] = null;
};
/**
* 遍历Map,执行处理函数
*
* @param {Function}
* 回调函数 function(key,value,index){..}
*/
this.each = function (fn) {
if (typeof fn != "function") {
return;
}
var len = this.keys.length;
for (var i = 0; i < len; i++) {
var k = this.keys[i];
fn(k, this.data[k], i);
}
};
/**
* 获取键值数组(类似Java的entrySet())
*
* @return 键值对象{key,value}的数组
*/
this.entrys = function () {
var len = this.keys.length;
var entrys = new Array(len);
for (var i = 0; i < len; i++) {
entrys[i] = {key:this.keys[i], value:this.data[i]};
}
return entrys;
};
/**
* 判断Map是否为空
*/
this.isEmpty = function () {
return this.keys.length == 0;
};
/**
* 获取键值对数量
*/
this.size = function () {
return this.keys.length;
};
/**
* 重写toString
*/
this.toString = function () {
var s = "{";
for (var i = 0; i < this.keys.length; i++, s += ",") {
var k = this.keys[i];
s += k + "=" + this.data[k];
}
s += "}";
return s;
};
}
/* js map 测试 */
function testMap() {
var m = new Map();
m.put("key1", "Comtop");
m.put("key2", "\u5357\u65b9\u7535\u7f51");
m.put("key3", "\u666f\u65b0\u82b1\u56ed");
alert("init:" + m);
m.put("key1", "\u5eb7\u62d3\u666e");
alert("set key1:" + m);
m.remove("key2");
alert("remove key2: " + m);
var s = "";
m.each(function (key, value, index) {
s += index + ":" + key + "=" + value + "\n";
});
alert(s);
}
function closePopWin() {
hidePopWin(false);
}
var resizeTimer_showLoading = null;
var _isAlertAuthMsg = false;
function _canClose(){
$(window).unbind('beforeunload');
window.onbeforeunload = null;
}
// 全局的AJAX访问,处理AJAX清求时SESSION超时及无权限提示(这个有ajax加载的页面才需要用到)
try {
jQuery.ajaxSetup({contentType:"application/x-www-form-urlencoded;charset=utf-8", complete:function (XMLHttpRequest, textStatus) {
_mcAjaxBack(XMLHttpRequest);
} });
//对返回数据进行处理,mc session超时处理
jQuery.ajaxSetup({contentType:"application/x-www-form-urlencoded;charset=utf-8", dataFilter:function(mcResult,type,xml ) {
if(mcResult.indexOf("_sessionTimeOutGoToUrl")==-1){
return mcResult;
}else{
mcResult=JSON.parse(mcResult);
if("1"==mcResult._urlType){
window.top.location = util.getContextPath() + "/sys/LoginAction_mainFrame.ms?loadMark=10";// 有指定时,跳转到后台登录页
}else{
window.top.location = mcResult._sessionTimeOutGoToUrl;// 跳转之前请求的页面,让过滤器去判断跳转到前台或者是后台
}
}
} });
}
catch (e) {
}
/**
* ajax请求时没有权限的处理方法
*
* @param XMLHttpRequest
* @returns {Boolean}
*/
function _mcAjaxBack(XMLHttpRequest){
// 通过XMLHttpRequest取得响应头,sessionstatus
var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");
var isPlatform = XMLHttpRequest.getResponseHeader("isPlatform");
if (null != sessionstatus ) {
if(sessionstatus == "timeout"){
_canClose();
var _urlType = XMLHttpRequest.getResponseHeader("_urlType");
var _sessionTimeOutGoToUrl = XMLHttpRequest.getResponseHeader("_sessionTimeOutGoToUrl");
if("1"==_urlType){
window.top.location = util.getContextPath() + "/sys/LoginAction_mainFrame.ms?loadMark=10";// 有指定时,跳转到后台登录页
}else{
window.top.location = _sessionTimeOutGoToUrl;// 跳转之前请求的页面,让过滤器去判断跳转到前台或者是后台
}
}else if (sessionstatus == "noAuthority") {
util.initLangMap('["权限认证"]');
var msgStr= util.getLangShow("权限认证");
if (isPlatform=="1"){
var config = {
type: 2,
skin: 'layui-layer-molv',
title: msgStr,
area: ['500px', '350px'],
min: function(index, layero){
},
success: function(){
}
};
var mcIframeName = window.frameElement.name;
var type = "1";
if(mcIframeName=="leftFrame"){
mcIframeName = window.parent.name;
type = "2";
}else if(window.frameElement.name=="mainFrame"){
mcIframeName = window.parent.name;
type = "3";
}
config.content = util.getContextPath()+"/fp/FpAction_forPlatFormLogin.ms?mcIframeName="+mcIframeName+"&type="+type;
top.layer.open(config);
return false;
}else{
if (!_isAlertAuthMsg) {
alert(_GLO_NO_AUTHORITY_MSG);
}
_isAlertAuthMsg = true;
util.closeLoading();
isQuery = false;
}
}
}
return true;
}
function getViewportHeight() {
if (window.innerHeight != window.undefined) {
return window.innerHeight;
}
if (document.compatMode == "CSS1Compat") {
return document.documentElement.clientHeight;
}
if (document.body) {
return document.body.clientHeight;
}
return window.undefined;
}
function getViewportWidth() {
if (window.innerWidth != window.undefined) {
return window.innerWidth;
}
if (document.compatMode == "CSS1Compat") {
return document.documentElement.clientWidth;
}
if (document.body) {
return document.body.clientWidth;
}
return window.undefined;
}
var gHideSelects = false;
// check to see if this is IE version 6 or lower. hide select boxes if so
// maybe they'll fix this in version 7?
var ieVerIndex = window.navigator.userAgent.indexOf("MSIE");
// alert(parseInt(window.navigator.userAgent.substr(ieVerIndex+5,3), 10));
// alert(window.navigator.appVersion);
// alert(window.navigator.userAgent);
// alert(getInternetExplorerVersion());
if (ieVerIndex > -1 && getInternetExplorerVersion() < 8) {
gHideSelects = true;
}
// Returns the version of Windows Internet Explorer or a -1
// (indicating the use of another browser).
function getInternetExplorerVersion() {
var rv = -1; // Return value assumes failure.
if (navigator.appName == "Microsoft Internet Explorer") {
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");
if (re.exec(ua) != null) {
rv = parseFloat(RegExp.$1);
}
}
return rv;
}
/**
*
* Hides all drop down form select boxes on the screen so they do not appear
* above the mask layer.
*
* IE has a problem with wanted select form tags to always be the topmost
* z-index or layer
*
* Thanks for the code Scott!
*
*/
function hideSelectBoxes() {
var x = document.getElementsByTagName("SELECT");
for (i = 0; x && i < x.length; i++) {
x[i].style.visibility = "hidden";
}
}
/**
*
* Makes all drop down form select boxes on the screen visible so they do not
* reappear after the dialog is closed.
*
* IE has a problem with wanted select form tags to always be the topmost
* z-index or layer
*
*/
function displaySelectBoxes() {
var x = document.getElementsByTagName("SELECT");
for (i = 0; x && i < x.length; i++) {
x[i].style.visibility = "visible";
}
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*
* @returns {base64InOut}
*/
function base64InOut(){
var base64 = this;
var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1,
-1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
base64.database = {
base64EncodeChars : base64EncodeChars,
base64DecodeChars : base64DecodeChars,
};
/**
* base64解码
*
* @param {Object}
* str
*/
base64.base64decode = function (str){
var c1, c2, c3, c4;
var i, len, out;
len = str.length;
i = 0;
out = "";
while (i < len) {
/* c1 */
do {
c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
}
while (i < len && c1 == -1);
if (c1 == -1)
break;
/* c2 */
do {
c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
}
while (i < len && c2 == -1);
if (c2 == -1)
break;
out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
/* c3 */
do {
c3 = str.charCodeAt(i++) & 0xff;
if (c3 == 61)
return out;
c3 = base64DecodeChars[c3];
}
while (i < len && c3 == -1);
if (c3 == -1)
break;
out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
/* c4 */
do {
c4 = str.charCodeAt(i++) & 0xff;
if (c4 == 61)
return out;
c4 = base64DecodeChars[c4];
}
while (i < len && c4 == -1);
if (c4 == -1)
break;
out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
}
return out;
}
// 编码
base64.base64encode = function (str){
var out, i, len;
var c1, c2, c3;
len = str.length;
i = 0;
out = "";
while (i < len) {
c1 = str.charCodeAt(i++) & 0xff;
if (i == len) {
out += base64EncodeChars.charAt(c1 >> 2);
out += base64EncodeChars.charAt((c1 & 0x3) << 4);
out += "==";
break;
}
c2 = str.charCodeAt(i++);
if (i == len) {
out += base64EncodeChars.charAt(c1 >> 2);
out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
out += base64EncodeChars.charAt((c2 & 0xF) << 2);
out += "=";
break;
}
c3 = str.charCodeAt(i++);
out += base64EncodeChars.charAt(c1 >> 2);
out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));
out += base64EncodeChars.charAt(c3 & 0x3F);
}
return out;
};
// utf16转utf8
base64.utf16to8 = function(str){
var out, i, len, c;
out = "";
len = str.length;
for (i = 0; i < len; i++) {
c = str.charCodeAt(i);
if ((c >= 0x0001) && (c <= 0x007F)) {
out += str.charAt(i);
}
else
if (c > 0x07FF) {
out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}
else {
out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}
}
return out;
};
// utf-8转utf-16
base64.utf8to16 = function(str){
var out, i, len, c;
var char2, char3;
out = "";
len = str.length;
i = 0;
while (i < len) {
c = str.charCodeAt(i++);
switch (c >> 4) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
// 0xxxxxxx
out += str.charAt(i - 1);
break;
case 12:
case 13:
// 110x xxxx 10xx xxxx
char2 = str.charCodeAt(i++);
out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
break;
case 14:
// 1110 xxxx10xx xxxx10xx xxxx
char2 = str.charCodeAt(i++);
char3 = str.charCodeAt(i++);
out += String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0));
break;
}
}
return out;
};
};
base64InOut.prototype={
base64Encodes : function(data){
var me = this;
var s = me.base64encode(me.utf16to8(data));
return s;
},
base64Decodes : function(data){
var me = this;
var s = me.utf8to16(me.base64decode(data));
return s;
},
}
// //////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* 特殊字符反转义
*/
function decodeHtml(str){
if (str==null || str==undefined)
{
return str;
}
var result = str.replace(/</g, "<").replace(/>/g, ">").replace(/[/g, "\[").replace(
/]/g, "\]").replace(/(/g, "\(").replace(/)/g, "\)").replace(/+/g,
"\\+").replace(/'/g, "'").replace(/"/g, "\"");
return result;
}
/**
* 特殊字符转义
*/
function encodeHtml(str){
if (str==null || str==undefined)
{
return str;
}
var result = str.replace(//g, ">").replace(/\[/g, "[").replace(/\]/g, "]").replace(/\(/g, "(").replace(/\)/g, ")").replace(/\+/g,"+").replace(/'/g, "'").replace(/"/g, """);
return result;
}
/**
* 弹窗 显示多文本内容
*
* @argument width - int in pixels
* @argument height - int in pixels
* @argument title - 弹出层的标题(如果为空,则取引入页面标签内的值)
* @argument msgStr 内容
*
* 注意:调用完ShowMoreRow();在后面加上setPopScroll('#showMoreRow');
*
*/
function ShowMoreRow(width, height, title, msgStr) {
top.zcount=11000;
if (null == title || "" == title) {
title = document.title;
}
var tempPopupDivId = "MoreRowFpIdpop";
var shadowPopupDivId = "MoreRowFpIdshadow";
if (height > $(window).height()) {
height = $(window).height();
}
if (width > $(window).width()) {
width = $(window).width();
}
var iTop = ($(window).height() - height) / 2;
var iLeft = ($(window).width() - width) / 2;
var iHeight = height+8;
var divStr = ""
+ "
"
+ "
"
+ title
+ "
"
+ " "
+ "
"
+ "
";
divStr += "";
top.zcount++;
var tmpDiv = document.createElement("div");
tmpDiv.innerHTML = divStr;
var body = document.getElementsByTagName("body")[0];
body.appendChild(tmpDiv);
$("#" + shadowPopupDivId).show();
$("#" + tempPopupDivId).draggable();
}
// 关闭窗口
function closeMoreRowFpIdFp(tempPopupDivId) {
$("#" + tempPopupDivId).parent().remove();
}
// 弹窗根据当前选中的iframe调用里面定义好的方法
/**
* @argument isFramesetMethod - 是否是frameset中的方法,如果true
* 必须填入frameName,为false的时候frameName可以为空
* @argument methodName - 调用方法的名字
* @argument methodParames - 调用方法的参数值
* @argument frameName 如果isFramesetMethod为true的时候iframe的name为必填项
* {isFramesetMethod: true/false, methodName:'xxx',
* methodParames:'xxx', frameName:'xxx'}
*/
function runMethod(obj){
// 获取当前tab选中的iframe
var curTab= top.$("#LAY_app_body").find(".layui-show")[0];
var curIframe = $(curTab).children("iframe")[0];
if(obj.isFramesetMethod){
// 调用iframe中有frameset的frame中的方法
if(obj.frameName && obj.frameName.length > 0){
if(obj.methodParames){
curIframe.contentWindow.frames[obj.frameName][obj.methodName](obj.methodParames);
return;
}
curIframe.contentWindow.frames[obj.frameName][obj.methodName]();
return;
}
layui.use('layer',function(){
var layer = layui.layer;
layer.msg("请填入需要调取方法的frame的name值!");
});
}
else {
// 调用iframe中的方法
if(obj.methodParames){
curIframe.contentWindow[obj.methodName](obj.methodParames);
return;
}
curIframe.contentWindow[obj.methodName]();
return;
}
}
// layer弹窗与弹窗之间设值
/**
* @argument tarId - 需要插入对应目标区域的id
* @argument tarVal - 需要插入对应目标区域的值
* @argument closeSelf - 插入完成以后是否自动关闭 {tarId:'xxx', tarVal:'xxx', closeSelf:
* true/false}
*/
function inValToSrcIframe(obj){
var preLayerId = $("input[name='preLayerId']").val();
// 从顶层通过iframe id获取对应iframe
var contentScope = top.window.frames[preLayerId];
if(contentScope){
contentScope.$("body").find("#"+obj.tarId).html(obj.tarVal);
if(obj.closeSelf){
var index = parent.layer.getFrameIndex(window.name);
top.layer.close(index);
}
return;
}
layui.use('layer',function(){
var layer = layui.layer;
layer.msg("未获取到相应的iframe目标对象!");
});
}
// 获取弹出源的dom对象
/*
* @argument isFramesetMethod:true/false(默认值) 当前触发源的结构是否是frameset frame 结构。
* @argument frameName:'xxx' 当isFramesetMethod为true时,要填入当前frame的name值。 @argument
* type:document/window 如果调用的是对象,方法,属性 type:window; 如果调用的是DOM type:document
* {isFramesetMethod: true/false, frameName:'xxx',type: document/window}
*/
function getSrcDom(obj){
var preLayerId = $("input[name='preLayerId']").val();
var framesetParentLayerName = $("input[name='framesetParentLayerName']").val();
// 触发源是layer弹窗
if(preLayerId != "undefined"){
preLayerId = "layui-layer-iframe"+preLayerId;
// iframe中有frameset中有frame
if(obj.isFramesetMethod){
var l = top.window.frames[preLayerId].contentWindow;
if(obj.type == 'window'){
return l.frames[obj.frameName].contentWindow;
}
return l.frames[obj.frameName].document;
}
if(obj.type == 'window'){
return top.window.frames[preLayerId];
// return top.$("body").find("#"+preLayerId)[0].contentWindow;
// //写法上的差异
}
return top.window.frames[preLayerId].document;
// return top.$("body").find("#"+preLayerId)[0].contentDocument;
}
// 触发源不是layer弹窗
else {
if(framesetParentLayerName){
// layer里面有frameset frame中触发
var d = top.$("body").find("#"+framesetParentLayerName)[0].contentWindow.frames[obj.frameName];
/*
* if(obj.type == 'window'){ return d; } return d.document;
*/
return d;
}
else {
// 不是layer弹窗,只是iframe的情况下触发
var curTab;
var curIframe;
try{
curTab= top.$("#LAY_app_body").find(".layui-show")[0];
curIframe = $(curTab).children("iframe")[0];
}
catch(err){
try{
// window.open()页面场景
curIframe = top.$("#content").children("div").not(".hidecontent").find("iframe")[0];
}
catch(e){
console.log(e);
}
}
// iframe中有frameset中有frame
if(obj.isFramesetMethod){
var c = curIframe.contentWindow.frames[obj.frameName];
return c;
/*
* if(obj.type == 'window'){ return c.contentWindow; } return
* c.document;
*/
}
else {
if(obj.type == 'window'){
return curIframe.contentWindow;
}
return curIframe.contentDocument;
}
}
}
}
// 获取uuid
function getUuid() {
var s = [];
var hexDigits = "0123456789abcdef";
for (var i = 0; i < 36; i++) {
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the
// clock_seq_hi_and_reserved
// to 01
s[8] = s[13] = s[18] = s[23] = "-";
var uuid = s.join("");
return uuid;
}
// 根据frameName 来执行框架里面的方法
/*
* @argument mcIframeName 需要执行frame的name @argument methodName 需要执行方法的名字
* @argument methodParames 需要执行方法的参数 @argument isFrameSet
* 需要执行frame的父亲是frameset的父亲layer的iframe的name @argument isReloadTree true/false
* 是否需要刷新tree @argument reloadFrameName tree所在frame的name @argument
* reloadFrameMethodName tree所在frame需要执行的方法名字 @argument reloadFrameMethodParames
* tree所在frame需要执行的方法的参数
*/
function runFrameMethod(jsonObject){
var contentWindow;
if(obj.frameName != undefined || obj.frameName != null || obj.frameName !=""){
// layer弹窗中iframe包含frameset的情况下走这边
if(obj.frameSetParentLayerName != undefined || obj.frameSetParentLayerName != null || obj.frameSetParentLayerName !=""){
contentWindow = top.window.frames[obj.frameSetParentLayerName].contentWindow.frames[preLayerId];
if(obj.methodParames != undefined || obj.methodParames != null || obj.methodParames !="" ){
contentWindow[obj.methodName](obj.methodParames);
}
else {
contentWindow[obj.methodName]();
}
}
else {
contentWindow = top.window.frames[obj.frameName];
if(obj.methodParames != undefined || obj.methodParames != null || obj.methodParames !="" ){
obj.methodParames = obj.methodParames.join(",");
contentWindow[obj.methodName](obj.methodParames);
}
else {
contentWindow[obj.methodName]();
}
}
}
}
// 根据iframe name返回对应document / window
/*
* @argument mcIframeName:'xxx'。 @argument type:document/window 如果调用的是对象,方法,属性
* type:window; 如果调用的是DOM type:document {mcIframeName:'xxx', type:
* document/window}
*/
function getSrcByIframeName(jsonObject){
if(jsonObject.type == 'document'){
return top.window.frames[jsonObject.mcIframeName].document;
}
return top.window.frames[jsonObject.mcIframeName];
}
/*
* 新增 最外层iframe -> jsp是div(含有iframe) -> jsp是div(含有iframe)
* 获取最里层iframe的界面
* @argument mcIframeName:'xxx' parentIframeName:'yyy'
*/
function getInnerIframe(jsonObject){
var wrapContent = top.window.frames[jsonObject.mcIdePpIframeName];
var modelIfrm = wrapContent[jsonObject.mcIdePIframeName]['ifr'];
return modelIfrm;
}
function getInnerIframe2(jsonObject){
var wrapContent = top.window.frames[jsonObject.mcIdePpIframeName];
var modelIfrm = wrapContent[jsonObject.mcIdePIframeName];
return modelIfrm;
}
// 关闭当前页面
function closePage(){
try{
var index = parent.layer.getFrameIndex(window.name);
top.layer.close(index);
}
catch(err){
console.log(err);
}
}
// 刷新页面
function reloadPage(){
}
// 取当前窗口iframe的名字
function getCurIframeName(){
return window.frameElement.name;
}
// frameset情况下关闭父级iframe
function closePopWin_ui() {
var obj={"mcIframeName":window.parent.name,"type":"window"};
var window_ =getSrcByIframeName(obj);
window_.closePage();
}
// 给td中的input增加class
function inputFocus(){
$(".mc-list-input-edit").each(function(index,ele){
$(this).on("focus",function(){
$(this).addClass("input-outline");
$(this).parents("td").addClass("td-input");
});
$(this).on("blur",function(){
$(this).removeClass("input-outline");
$(this).parents("td").removeClass("td-input");
});
})
}
//lay 弹出
function alterWindows(msg,index,animType){
if(!animType){
animType = 6;
}
layer.msg(msg, {icon: index,anim: animType});
}
//lay 添加 layer
function mcAlterWindows(msg,index,animType){
if(!animType){
animType = 6;
}
layui.use(['layer'],function(layer){
layer = layui.layer;
layer.msg(msg, {icon: index,anim: animType});
});
}
/**
* 调试按钮处理
* create by hzp 2019.4.9
* param:className(类全名称)
* param:codeId(类Id)
* param:tableName(关联表id)
* param:tableName(关联表id)
*/
function debugPageDetail(classNameValue,codeId,codeType){
if(codeId==""||codeId==null||codeId=="null"){
util.alert("该类未提交,不能调试");
return false;
}
localStorage.codeType=codeType;
var classNameclassLength=classNameValue.lastIndexOf(".");//获取类全名长度
var packageName=classNameValue.substring(0,classNameclassLength);//包名称
var className=classNameValue.substring(classNameclassLength+1,classNameValue.length);//类名
localStorage.packageName=packageName;//包名存储本地
localStorage.className=className;//类名存储本地
localStorage.currentClassName=classNameValue;//类全面存储
localStorage.beforeCurrentClassName=classNameValue;//通配符未改之前
localStorage.codeId=codeId;//获取codeId
$.ajax({
type : "POST",
dataType : "text",
async:false,
url : "sys/pageDebugAction_checkOpen.ms",
data:{
"paraMap.codeType":codeType,
"paraMap.callClassName":classNameValue
},
success : function(data) {
if(data==""){
return ;
}
var resultJson=ajaxJSONSold(data);//判断是否有异常
if(resultJson.result==false){
var jsonText="['"+resultJson.msg+"']";
util.initLangMap(jsonText);
util.alert(util.getLangShow(resultJson.msg));
return false;
}else if(resultJson.isJson==false){
window.location.href = "${path}sys/LoginAction_forLogin.ms";
}
data=JSON.parse(data);
if(data.ajaxMap!=null&&data.ajaxMap.result=="true"){
localStorage.currentClassName=data.ajaxMap.className;//类全面存储
window.open("sys/pageDebugAction_pageDebug.ms");
}else{
if(data.ajaxMap.message=="otherOpen"){
util.initLangMap('["其他用户调试中"]');
util.alert(util.getLangShow("其他用户调试中"));
}else{
localStorage.currentClassName=data.ajaxMap.className;//类全面存储
util.initLangMap('["断点界面已打开,请切换断点界面"]');
util.alert(util.getLangShow("断点界面已打开,请切换断点界面"));
}
}
},
error : function(msg) {
alert();
}
});
}
/**
* ajax 异常数据处理
* create by hzp 2019.4.9
* param:str(传入字符串)
*/
function ajaxJSONSold(str) {
var returnJson={result:true,msg:"",isJson:true};
if (typeof str == 'string') {
try {
var obj=JSON.parse(str);
if(typeof obj == 'object' && obj ){
if(obj.ajaxMap!=undefined&&obj.ajaxMap.status=="false"){
returnJson={result:false,msg:obj.ajaxMap.msg};
}
return returnJson;
}else{
return returnJson;
}
} catch(e) {
returnJson.isJson=false;
return returnJson;
}
}
return returnJson;
}
//取平台参数
function getMemoryMcPara(pname)
{
var mcPara;
$.ajax({
type: "POST",
dataType: "json",
async:false,
url: util.getContextPath()+"/buss/bussModel_getMemoryMcPara.ms",
data: {
'pname' : pname
},
success: function(data){
mcPara= data.ajaxMap.mcPara;
},
error: function(msg){
if(msg.readyState!=0){
util.closeLoading();
utilsFp.confirmIcon(3,"","","", "error:"+msg,0,"","");
}
}
});
return mcPara;
}
//取平台参数VAL
function getMemoryMcParaVal(pname)
{
var mcPara =getMemoryMcPara(pname);
if(mcPara!=null) {
return mcPara.PVALUE;
}
return null;
}
/* 后台表格 控制列 按钮大于3个以上会显示... 功能
* by tangws 20191122
*/
function ControlButtons(){};
ControlButtons.prototype.showMoreBtns = function(_this){
if($(".cb-btn-wrap-all")){
$(".cb-btn-wrap-all").remove();
}
var scrollTop = $(document).scrollTop()+0; //页面滚动的距离
var _top = $(_this).offset().top+0-scrollTop;
$("body").append(""+$(_this).prev().html()+"
");
//绑定click 事件,点击的时候隐藏按钮div
$(".cb-btn-wrap-all").on("mouseleave",function(){
$(this).remove();
})
//滚动的时候消失
$(".cb-btn-wrap-all").on("mouseover",function(){
$(document).on('mousewheel DOMMouseScroll', onMouseScroll);
function onMouseScroll(e){
$(".cb-btn-wrap-all").remove();
}
})
}
ControlButtons.prototype.closeAllBtns = function(e){
$(e).prev().show();
$(e).remove();
}
ControlButtons.prototype.initBtnsShow = function(){
$(".td-more-hover").each(function(index,ele){
//当前操作列的宽度
var tdWidth=0;
//当前td中所有按钮的总宽度
var allBtnsWidth=0;
tdWidth = ele.getElementsByClassName("cb-btn-wrap")[0].offsetWidth;
$(ele).find("span a").each(function(index,_this){
allBtnsWidth+=$(_this).outerWidth(true);
if(allBtnsWidth <= tdWidth){
$(_this).addClass("show");
}
else{
$(_this).addClass("hide");
//为当前td中的.btn-more 添加 .btn-more-hover
ele.getElementsByClassName("cb-btn-more")[0].classList.add("cb-btn-more-hover");
}
});
})
}
var cb = new ControlButtons();
/*
* 表单属性选择公用控件
*/
function showAddCommFormuiFrame(){
var UI_MODEL_ID = $("#paraMap_UI_MODEL_ID").val();
var url = util.getContextPath() + "/commFormui/commFormuiAction_showAddCommFormuiFrame.ms?paraMap.UI_MODEL_ID=" + UI_MODEL_ID + "¶Map.UI_CONFIG_SRC=1&mcIframeName="+window.parent.name;
showPopWin(url, 900, 500,null,'');
}
function backfillCommFormuiData(layuiFrom, serializeFrom, UI_CONFIG_SRC_2, mcIframeName, dataValueId, callbackFn) {
var paraMap_UI_CONFIG_SRC = $("#paraMap_UI_CONFIG_SRC").val();
if(UI_CONFIG_SRC_2 == paraMap_UI_CONFIG_SRC) {
var mcDocument = getSrcByIframeName({mcIframeName: mcIframeName, type: 'document'});
if(dataValueId && mcDocument) {
var dataValue = $('#' + dataValueId, mcDocument);
if (dataValue && dataValue.val()) {
var formDataStr = unescape(dataValue.val());
var formDataJson = JSON.parse(formDataStr);
serializeFrom.deserialize($("#add_form"), formDataJson);
if(callbackFn && typeof callbackFn == 'function'){
callbackFn(layuiFrom, formDataJson);
}
}
}
}
}
function backfillInit(layuiFrom, formDataJson) {
try {
//如果有,设置数据来源
if(typeof(eval('setUiData')) == "function") {
setUiData($("#paraMap_UI_DATA_TYPE"));
}
} catch(e) {}
if(formDataJson['paraMap.codeType']) {
//如果有,显示SQL语句
showSql($("#codeType_"+formDataJson['paraMap.codeType']).get(0));
}
if($("#getFieldBtn").length > 0) {
$("#getFieldBtn").trigger("click");
}
var value = $("#paraMap_LANGUAGE_HELP").val();
layui.event.call($("#paraMap_LANGUAGE_HELP"),'form','select(lang_change)',{value: value});
layuiFrom.render();
}
/*
* 根据指定的key获取url中的search的值
* 例如:http://www.baidu.com?p=1&r=2;中的 p=1 根据p获取1的值
* name -> 是要获取的key如p,search -> ?p=1&r=2
* by tangws 20200225
*/
function getQueryString(name,search) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
var context = "";
if (r != null)
context = r[2];
reg = null;
r = null;
return context == null || context == "" || context == "undefined" ? "" : context;
}
/*
* 当MC被别的系统嵌入的时候 top的获取
*/
function mcGetTop(){
try{
if(top.EXTSYS_INCLUDE_MC == 'EXTSYS_INCLUDE_MC'){
if(top.document.getElementById("mcIncludeByIframe").contentWindow){
return top.document.getElementById("mcIncludeByIframe").contentWindow;
}
}
else {
//没有被嵌套 mainFrame.jsp
return top;
}
}
catch(err){
return top;
}
}
/**
* ***********************END************************
* **************************************************
*/