Files
2026-01-16 14:13:44 +08:00

1624 lines
53 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 去字符串空格
*/
function trim(str) {
return str.replace(/(^\s*)|(\s*$)/g, '');
};
function ltrim(str) {
return str.replace(/(^\s*)/g, '');
};
function rtrim(str) {
return str.replace(/(\s*$)/g, '');
};
/**
* 判断开始字符是否是XX
*/
function startWith(source, str) {
var reg = new RegExp("^" + str);
return reg.test(source);
};
/**
* 判断结束字符是否是XX
*/
function endWith(source, str) {
var reg = new RegExp(str + "$");
return reg.test(source);
};
/**
* iframe自适应高度
*
* @param iframe
*/
function autoIframeHeight(iframe) {
iframe.style.height = iframe.contentWindow.document.body.scrollHeight + "px";
};
/**
* 设置iframe高度
*
* @param iframe
*/
function setIframeHeight(iframe, height) {
iframe.height = height;
};
var commfile = function (mappernamespace, id) {
this.showUpload = function () {
var dialog = top.ext.modalDialog({
title: "上传文件",
url: ext.contextPath + "/base/fileupload.do?mappernamespace=" + mappernamespace + "&masterid=" + id,
width: 600,
height: 400,
onClose: function () {
new commfile(mappernamespace, id).loadfile();
}
});
};
this.loadfile = function () {
$.post(ext.contextPath + "/base/getFileList.do?mappernamespace=" + mappernamespace + "&masterid=" + id, function (data) {
var filehtml = "";
$.each(data, function (index, item) {
filehtml += "<div id='" + item.id + "'><img src='" + ext.contextPath + "/CSS/ext_icons/attach.png'/> " +
"<a class='linkbutton' href='" + ext.contextPath + "/base/downloadfile.do?mappernamespace=" + mappernamespace + "&id=" + item.id + "'>" + item.filename + "</a> " +
"<a class='linkbutton' style='color:red' href='javascript:new commfile(\"" + mappernamespace + "\",\"" + id + "\").deletefile(\"" + item.id + "\")'>删除</a></div>";
});
$('#fileList').html(filehtml);
}, 'json');
};
this.deletefile = function (itemid) {
top.$.messager.confirm('提示', '确定删除此文件?', function (r) {
if (r) {
$.post(ext.contextPath + "/base/deletefile.do?mappernamespace=" + mappernamespace + "&id=" + itemid, function (data) {
top.$.messager.alert("提示", data, "info", function () {
if (data.indexOf("成功") > 0) {
$("#" + itemid).remove();
}
});
});
}
});
};
};
/**
* 选择人员
* @param recvname 用户名称字段名
* @param recvid 用户名称id字段名
* @param iframeId 当前窗口Id由父窗口传递过来
*/
function selectUsers(recvname, recvid, iframeId) {
var dialog = parent.ext.modalDialog({
title: '选择人员',
width: 600,
height: 480,
closeOnEscape: true,
url: ext.contextPath + '/user/userForSelect.do?iframeId=' + iframeId + '&recvid=' + recvid,
buttons: [
{
text: '选中',
handler: function () {
dialog.find('iframe').get(0).contentWindow.addToSelectMulti();
}
}, {
text: '全选',
handler: function () {
dialog.find('iframe').get(0).contentWindow.addToSelectAll();
}
}, {
text: '清除',
handler: function () {
dialog.find('iframe').get(0).contentWindow.removeFromSelectAll();
}
}, {
text: '确定',
iconCls: 'icon-ok',
handler: function () {
var res = dialog.find('iframe').get(0).contentWindow.selectOK();
if (res != null) {
dialog.dialog('destroy');
var recvuser = res.split(";");
var recvidstr = "";
var recvnamestr = "";
for (var i = 0; i < (recvuser.length - 1); i++) {//leng-1去空格
recvidstr += recvuser[i].split(",")[0] + ",";
recvnamestr += recvuser[i].split(",")[1] + ",";
}
if (recvidstr.length > 1) {
recvidstr = recvidstr.substring(0, recvidstr.length - 1);
}
if (recvnamestr.length > 1) {
recvnamestr = recvnamestr.substring(0, recvnamestr.length - 1);
}
$("#" + recvname).textbox('setValue', recvnamestr);//easyui textbox赋值jquery不一样
$("#" + recvid).val(recvidstr);
}
}
}, {
text: '取消',
iconCls: 'icon-cancel',
handler: function () {
dialog.dialog('destroy');
}
}]
});
}
/**
* 选择人员--单选
* @param recvname 用户名称字段名
* @param recvid 用户名称id字段名
* @param iframeId 当前窗口Id由父窗口传递过来
*/
function selectSingleUser(recvname, recvid, iframeId) {
var dialog = parent.ext.modalDialog({
title: '选择人员',
width: 440,
height: 480,
closeOnEscape: true,
url: ext.contextPath + '/user/userForSingleSelect.do?iframeId=' + iframeId + '&recvid=' + recvid,
buttons: [
{
text: '确定',
iconCls: 'icon-ok',
handler: function () {
var res = dialog.find('iframe').get(0).contentWindow.selectOK();
if (res != null) {
dialog.dialog('destroy');
var recvuser = res.split(",");
$("#" + recvname).textbox('setValue', recvuser[1]);//easyui textbox赋值jquery不一样
$("#" + recvid).val(recvuser[0]);
}
}
}, {
text: '取消',
iconCls: 'icon-cancel',
handler: function () {
dialog.dialog('destroy');
}
}]
});
}
Date.prototype.Format = function (fmt) {
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;
}
/**
* 获取当前时间
*/
function getNowTime() {
const myDate = new Date;
const year = myDate.getFullYear(); //获取当前年
const mon = myDate.getMonth() + 1; //获取当前月
const day = myDate.getDate(); //获取当前日
const h = myDate.getHours();//获取当前小时数(0-23)
const m = myDate.getMinutes();//获取当前分钟数(0-59)
const s = myDate.getSeconds();//获取当前秒
const nowTime = year + "-" + (mon < 10 ? "0" + mon : mon) + "-" + (day < 10 ? "0" + day : day) + " " + (h < 10 ? "0" + h : h) + ":" + (m < 10 ? "0" + m : m) + ":" + (s < 10 ? "0" + s : s);
return nowTime;
}
/**
* 比较日期大小 1 sdt日期大sdt在edt后面 -1 sdt日期小sdt在edt前面 0 sdt日期与edt一样大
*/
function getCompareTime(sdt, edt) {
var start_time = sdt;
var subsidy_start_time = new Date(start_time.replace("-", "/").replace("-", "/"));
var end_time = edt;
var subsidy_end_time = new Date(end_time.replace("-", "/").replace("-", "/"));
if (subsidy_start_time.getTime() > subsidy_end_time.getTime()) {
return "1";
} else if (subsidy_start_time.getTime() == subsidy_end_time.getTime()) {
return "0";
} else if (subsidy_start_time.getTime() < subsidy_end_time.getTime()) {
return "-1";
}
return null;
}
/**
* 日期计算
*/
function getPlusTime(date, dateval, type) {
var d = new Date(date);
var sec = d.getSeconds();
var min = d.getMinutes();
var hour = d.getHours();
if (type == 'min') {
d.setMinutes(d.getMinutes() + Number(dateval));
let nowmon = d.getMonth() + 1;
if (Number(nowmon) < 10) {
nowmon = "0" + nowmon;
}
let nowday = d.getDate();
if (Number(nowday) < 10) {
nowday = "0" + nowday;
}
let nowhour = d.getHours();
if (Number(nowhour) < 10) {
nowhour = "0" + nowhour;
}
let nowmin = d.getMinutes();
if (Number(nowmin) < 10) {
nowmin = "0" + nowmin;
}
return d.getFullYear() + "-" + nowmon + "-" + nowday + " " + nowhour + ":" + nowmin + ":" + sec;
} else if (type == 'hour') {
d.setHours(d.getHours() + Number(dateval));
let nowmon = d.getMonth() + 1;
if (Number(nowmon) < 10) {
nowmon = "0" + nowmon;
}
let nowday = d.getDate();
if (Number(nowday) < 10) {
nowday = "0" + nowday;
}
let nowhour = d.getHours();
if (Number(nowhour) < 10) {
nowhour = "0" + nowhour;
}
return d.getFullYear() + "-" + nowmon + "-" + nowday + " " + nowhour + ":" + min + ":" + sec;
} else if (type == 'day') {
d.setDate(d.getDate() + Number(dateval));
let nowmon = d.getMonth() + 1;
if (Number(nowmon) < 10) {
nowmon = "0" + nowmon;
}
let nowday = d.getDate();
if (Number(nowday) < 10) {
nowday = "0" + nowday;
}
return d.getFullYear() + "-" + nowmon + "-" + nowday + " " + hour + ":" + min + ":" + sec;
} else if (type == 'month') {
d.setMonth(d.getMonth() + Number(dateval));
let nowmon = d.getMonth() + 1;
if (Number(nowmon) < 10) {
nowmon = "0" + nowmon;
}
let nowday = d.getDate();
if (Number(nowday) < 10) {
nowday = "0" + nowday;
}
return d.getFullYear() + "-" + nowmon + "-" + nowday + " " + hour + ":" + min + ":" + sec;
} else if (type == 'year') {
d.setFullYear(d.getFullYear() + Number(dateval));
let nowmon = d.getMonth() + 1;
if (Number(nowmon) < 10) {
nowmon = "0" + nowmon;
}
let nowday = d.getDate();
if (Number(nowday) < 10) {
nowday = "0" + nowday;
}
return d.getFullYear() + "-" + nowmon + "-" + nowday + " " + hour + ":" + min + ":" + sec;
}
return null;
}
function getMonthMaxDay(nowTime) {
let nextMonth = getPlusTime(nowTime, "1", "month").substring(0, 7) + "-01";
let endday = getPlusTime(nextMonth, "-1", "day").substring(8, 10);
return endday;
}
/**
* 输出数字添加千分符
*/
function numOutput(num) {
var numpart = String(num).split(".");//将数字通过jq split用小数点分隔为数组对象
numpart[0] = numpart[0].replace(new RegExp('(\\d)(?=(\\d{3})+$)', 'ig'), "$1,");
//将数组对象第一个数据(整数部分)通过正则表达式每三位用逗号分隔
return numpart.join(".");//把数组通过join方法用.进行拼接
}
/**
* 播读语音
*/
function speakText(text) {
let to_speak = window.speechSynthesis;
to_speak = new SpeechSynthesisUtterance(text);
window.speechSynthesis.speak(to_speak);
}
/**
* @param scope 范围 today yesterday week prevweek month prevmonth
* @param datestr 如果为null则直接取当前时间
* @return result (Array)
*/
function getDateStartEnd(scope, datestr) {
datestr = datestr == null ? new Date() : datestr;
var nowdate = new Date(datestr);
//今天时间
var year = nowdate.getFullYear();
var month = nowdate.getMonth() + 1;
var day = nowdate.getDate();
var today = nowdate.Format("yyyy-MM-dd");
//昨天时间
var dd = new Date(nowdate);
dd.setDate(dd.getDate() - 1);
var yesterday = dd.Format("yyyy-MM-dd");
// 获得本周时间 (周一到当天的时间)
var thisWeekStart; //本周周一的时间
if (nowdate.getDay() == 0) { //周天的情况
thisWeekStart = (new Date(today)).getTime() - ((nowdate.getDay()) + 6) * 86400000;
} else {
thisWeekStart = (new Date(today)).getTime() - ((nowdate.getDay()) - 1) * 86400000;
}
var weekStartDate = new Date(thisWeekStart).Format("yyyy-MM-dd");
var weekEndDate = nowdate.Format("yyyy-MM-dd");
//获得上周时间
var prevWeekStart = thisWeekStart - 7 * 86400000;//上周周一的时间
var prevWeekEnd = thisWeekStart - 1 * 86400000;//上周周日的时间
var prevweekStartDate = new Date(prevWeekStart).Format("yyyy-MM-dd");
var prevweekEndDate = new Date(prevWeekEnd).Format("yyyy-MM-dd");
//获得本月时间
var currentYear = nowdate.getFullYear();
var currentMonth = nowdate.getMonth();
var monthStartDate = new Date(currentYear, currentMonth, 1).Format("yyyy-MM-dd");
var monthEndDate = weekEndDate;
//获得上月时间
var currentYear = nowdate.getFullYear();
var currentMonth = nowdate.getMonth();
var prevCurrentYear = 0, prevCurrentMonth = 0;
if (currentMonth == 1) {
prevCurrentYear = currentYear - 1;
prevCurrentMonth = 12;
} else {
prevCurrentYear = currentYear;
prevCurrentMonth = currentMonth - 1;
}
var prevmonthLastday = (new Date(currentYear, currentMonth, 1)).getTime() - 86400000;
var prevmonthStartDate = new Date(prevCurrentYear, prevCurrentMonth, 1).Format("yyyy-MM-dd");
var prevmonthEndDate = new Date(prevmonthLastday).Format("yyyy-MM-dd");
var result = new Array();
if (scope == "today") {
result[0] = today + " 00:00:00";
result[1] = today + " 23:59:59";
} else if (scope == "yesterday") {
result[0] = yesterday + " 00:00:00";
result[1] = yesterday + " 23:59:59";
} else if (scope == "week") {
result[0] = weekStartDate + " 00:00:00";
result[1] = weekEndDate + " 23:59:59";
} else if (scope == "prevweek") {
result[0] = prevweekStartDate + " 00:00:00";
result[1] = prevweekEndDate + " 23:59:59";
} else if (scope == "month") {
result[0] = monthStartDate + " 00:00:00";
result[1] = monthEndDate + " 23:59:59";
} else if (scope == "prevmonth") {
result[0] = prevmonthStartDate + " 00:00:00";
result[1] = prevmonthEndDate + " 23:59:59";
}
return result;
}
/**
* @param tips 提示内容
* @param time 秒
*/
function showTips(tips, time) {
var windowWidth = document.documentElement.clientWidth;
var height = $(document).height();
var loadingDiv = "<div id='loadingDiv' style='position:absolute;top:0;left:0;width:100%;height:" + height + "px;background:#ccc;opacity:0.4;display:none'></div>";
var tipsDiv = '<div class="tipsClass">' + tips + '</div>';
$('body').append(loadingDiv + tipsDiv);
$('#loadingDiv').show();
$('div.tipsClass').css({
'top': height / 2 + 'px',
'left': (windowWidth / 2) - (tips.length * 13 / 2) + 'px',
'position': 'absolute',
'padding': '10px',
'background': '#fff',
'font-size': 12 + 'px',
'margin': '0 auto',
'text-align': 'center',
'width': 'auto',
'border': '2px solid #95B8E7'
}).show();
setTimeout(function () {
$('#loadingDiv').fadeOut();
$('div.tipsClass').fadeOut();
}, (time * 1000));
}
/**
* //测量点可视化图标路径 0正常1错误2故障
* */
var Scada_Mp_Pic = new Array(3)
Scada_Mp_Pic[0] = "/IMG/mpoint_pic/lg.png"
Scada_Mp_Pic[1] = "/IMG/mpoint_pic/lr.png"
Scada_Mp_Pic[2] = "/IMG/mpoint_pic/ly.png"
function getMpPic() {
var str = "";
for (i = 0; i < Scada_Mp_Pic.length; i++) {
if (str != "") {
str += ",";
}
str += "{\"id\":\"" + i + "\",\"path\":\"" + Scada_Mp_Pic[i] + "\"}";
}
str = "[" + str + "]";
return str;
}
function initMenu() {
var menu = $('#menu');
if (sessionStorage.menu != undefined) {
$('#menu').html(sessionStorage.menu);
if (sessionStorage.m1 != undefined) {
$('#' + sessionStorage.m1).addClass('treeview active menu-open')
}
if (sessionStorage.m2 != undefined) {
$('#' + sessionStorage.m2).addClass('treeview active menu-open')
}
if (sessionStorage.m3 != undefined) {
$('#' + sessionStorage.m3).addClass('treeview active menu-open')
}
//return;
} else {
$.post(ext.contextPath + "/user/showMenuListByCu.do", {}, function (result) {
$('#menu').html(result);
sessionStorage.setItem("menu", result);
if (sessionStorage.m1 != undefined) {
$('#' + sessionStorage.m1).addClass('treeview active menu-open')
}
if (sessionStorage.m2 != undefined) {
$('#' + sessionStorage.m2).addClass('treeview active menu-open')
}
if (sessionStorage.m3 != undefined) {
$('#' + sessionStorage.m3).addClass('treeview active menu-open')
}
});
}
var sidebar = $('.initMenuScroll');
initMenuScroll(sidebar);
$(window).resize(function () {
initMenuScroll(sidebar);
});
}
function initMenuScroll(menu) {
//菜单滚动条
var windowHeight = $(window).height();
var mainheaderHeight = $('.main-header').outerHeight(true);
var userpanelHeight = $('.user-panel').outerHeight(true);
var sidebarformHeight = $('.sidebar-form').outerHeight(true);
//最大高度计算
var menuHeight = windowHeight - mainheaderHeight - userpanelHeight - sidebarformHeight;
menu.slimScroll({
height: menuHeight,
color: '#fff',
});
}
/** 获取浏览器当前缩放比例
* @returns 100为100%
*/
function detectZoom() {
var ratio = 0,
screen = window.screen,
ua = navigator.userAgent.toLowerCase();
if (window.devicePixelRatio !== undefined) {
ratio = window.devicePixelRatio;
} else if (~ua.indexOf('msie')) {
if (screen.deviceXDPI && screen.logicalXDPI) {
ratio = screen.deviceXDPI / screen.logicalXDPI;
}
} else if (window.outerWidth !== undefined && window.innerWidth !== undefined) {
ratio = window.outerWidth / window.innerWidth;
}
if (ratio) {
ratio = Math.round(ratio * 100);
}
return ratio;
};
function initBody() {
//还原是否隐藏菜单
/*if(sessionStorage.bodyClass!=undefined){
$('body').addClass(sessionStorage.bodyClass);
}*/
}
function doforward(url, m1, m2, m3) {
url = ext.contextPath + '/' + url;
sessionStorage.setItem("bodyClass", $('body')[0].className)
sessionStorage.setItem("m1", m1);
sessionStorage.setItem("m2", m2);
sessionStorage.setItem("m3", m3);
// console.info(url);
location.replace(url);
};
/**获取当前菜单信息*/
/*
function getMenuInfo() {
if (sessionStorage.m3 != undefined) {
var m3 = sessionStorage.m3;
$.post(ext.contextPath + "/user/getMenuInfo.do", { id: m3 }, function (result) {
if (result.length == 0) {
$('#head_title').html('首页');
} else {
var res = result[0].name + '<small>' + result[0].description + '</small>';
$('#head_title').html(res);
$('#head_firstlevel').attr('onclick', 'refreshPage(\'' + ext.contextPath + '/' + result[0].location + '\')');
$('#head_firstlevel').append(result[0].name);
$('#head_firstlevel').children("i").attr("class", "glyphicon glyphicon-refresh");
}
}, 'json');
}
};
*/
function getMenuInfo() {
var menuId = "";
if (sessionStorage.m3 != undefined && sessionStorage.m3 != '') {
menuId = sessionStorage.m3;
} else if (sessionStorage.m2 != undefined && sessionStorage.m2 != '') {
menuId = sessionStorage.m2;
} else {
if (sessionStorage.m1 != undefined && sessionStorage.m1 != '') {
menuId = sessionStorage.m1;
} else {
try {
//通过父界面获取子界面菜单id
$(".tab-content", parent.document).children(".active").each(function () {
var iframeID = $(this).attr("id").split('_');
if (iframeID.length > 1) {
menuId = iframeID[1];
}
});
} catch (err) {
menuId = '';
console.log(err.message);
}
}
}
if (menuId != '') {
$.post(ext.contextPath + "/user/getMenuInfo.do", {id: menuId}, function (result) {
if (result.length == 0) {
$('#head_title').html('首页');
$('#head_firstlevel').attr('onclick', 'refreshPage(\'' + ext.contextPath + '/Login/main.do\')');
$('#head_firstlevel').children("i").attr("class", "glyphicon glyphicon-refresh");
} else {
var res = result[0].name + '<small>' + result[0].description + '</small>';
$('#head_title').html(res);
$('#head_firstlevel').attr('onclick', 'refreshPage(\'' + ext.contextPath + '/' + result[0].location + '\')');
$('#head_firstlevel').append(result[0].name);
$('#head_firstlevel').children("i").attr("class", "glyphicon glyphicon-refresh");
}
}, 'json');
}
};
/**
* 显示主页
* */
function goToMainPage() {
sessionStorage.setItem("m1", '');
sessionStorage.setItem("m2", '');
sessionStorage.setItem("m3", '');
location.replace(ext.contextPath);
}
/**
* 刷新页面
* */
function refreshPage(url) {
sessionStorage.setItem("bodyClass", $('body')[0].className)
location.replace(url);
};
function clearSession() {
sessionStorage.clear();
//清理菜单记录
/*sessionStorage.setItem("m1", '');
sessionStorage.setItem("m2", '');
sessionStorage.setItem("m3", '');*/
};
/**
* bootstrapTable 调整初始化显示
* */
function adjustBootstrapTableView(id) {
setDataCardView(id);
//$(".bs-checkbox").css({'text-align':'center','vertical-align':'middle'})
$("#" + id).find('input[type="checkbox"]').iCheck({
checkboxClass: 'icheckbox_flat-blue',
radioClass: 'iradio_flat-blue'
//长岗专用
/*checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',*/
});
//操作
var checkAll = $("#" + id + " input[name='btSelectAll']"); //全选的input
var checkboxs = $("#" + id + " input[name='btSelectItem']"); //所有单选的input
checkAll.on('ifChecked ifUnchecked', function (event) {
if (event.type == 'ifChecked') {
checkboxs.iCheck('check');
} else {
checkboxs.iCheck('uncheck');
}
});
checkboxs.on('ifChecked ifUnchecked', function (event) { //ifCreated 事件应该在插件初始化之前绑定
var index = $(this).parents('tr').attr("data-index");
if (event.type == 'ifChecked') {
$("#" + id).bootstrapTable('check', index);
} else {
$("#" + id).bootstrapTable('uncheck', index);
}
});
checkboxs.on('ifChanged', function (event) {
if (checkboxs.filter(':checked').length == checkboxs.length) {
checkAll.prop('checked', true);
} else {
checkAll.prop('checked', false);
}
checkAll.iCheck('update');
});
$(".bs-checkbox").css({'text-align': 'center', 'vertical-align': 'middle'})
}
/**
* bootstrapTable封装好的视图切换方法
* */
function setDataCardView(id) {
var options = $("#" + id).bootstrapTable('getOptions');
if ($(window).width() < 768) {
if (options.cardView === false) {
$("#" + id).bootstrapTable('toggleView');
}
} else {
if (options.cardView === true) {
$("#" + id).bootstrapTable('toggleView');
}
}
}
/**
* 依赖于adminLTE
* id存放alert的div
* type为提醒类型 d-danger i-info w-warning s-success
* text 提醒内容
*
* */
function showAlert(type, text, id) {
if (id == null || id == "") id = 'alertDiv';
var ht = "";
switch (type) {
case 'd':
ht = '<div class="alert alert-danger alert-dismissible">' +
'<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' +
' <h4><i class="icon fa fa-ban"></i> ' + text + '</h4>' +
'</div>';
break;
case 'i':
ht = '<div class="alert alert-info alert-dismissible">' +
'<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' +
' <h4><i class="icon fa fa-info"></i> ' + text + '</h4>' +
'</div>';
break;
case 'w':
ht = '<div class="alert alert-warning alert-dismissible">' +
'<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' +
' <h4><i class="icon fa fa-warning"></i> ' + text + '</h4>' +
'</div>';
break;
case 's':
ht = '<div class="alert alert-success alert-dismissible">' +
'<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' +
' <h4><i class="icon fa fa-success"></i> ' + text + '</h4>' +
'</div>';
break;
default:
ht = '<div class="alert alert-warning alert-dismissible">' +
'<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' +
' <h4><i class="icon fa fa-warning"></i> ' + text + '</h4>' +
'</div>';
}
$('#' + id).html(ht);
setTimeout(function () {
$('#' + id).empty();
}, 3000);
var $objTr = $("#" + id); //找到要定位的地方
var objTr = $objTr[0]; //转化为dom对象
$objTr.parents('.modal').animate({scrollTop: objTr.offsetTop}, "fast");
}
/**
* 打开modal
*
* */
function openModal(modalId) {
$('#' + modalId).modal({
backdrop: 'static',
keyboard: false
});
//同一个modal可能在一个页面多个地方调用所以要清空之前的
$('#' + modalId).on("hidden.bs.modal", function () {
$(this).removeData("bs.modal");
//modal重复打开会导致前面的滚动条失去作用
$('.modal').css("overflow", "auto");
});
$('#' + modalId).on('shown.bs.modal', function () {
// 执行一些动作...
//将多次弹出的modal窗口关闭
var modalDom = $('body').children('#' + modalId);
//console.info($(modalDom).length);
if (modalDom.length > 0) {
$(modalDom).remove();
for (var i = 0; i < modalDom.length; i++) {
$('body').children('.modal-backdrop').first().remove();
}
}
})
};
/**
* 关闭modal
*
* */
function closeModal(modalId) {
$('#' + modalId).modal("hide");
};
var mySkins = [
'skin-blue',
'skin-black',
'skin-red',
'skin-yellow',
'skin-purple',
'skin-green',
'skin-blue-light',
'skin-black-light',
'skin-red-light',
'skin-yellow-light',
'skin-purple-light',
'skin-green-light'
];
var myBgs = [
'bg-light-blue',
'bg-black',
'bg-red',
'bg-yellow',
'bg-purple',
'bg-green',
'bg-light-blue',
'bg-black',
'bg-red',
'bg-yellow',
'bg-purple',
'bg-green'
];
/**
* 设置某一行背景色
* */
function markRow(tableId, id) {
var rows = $("#" + tableId).bootstrapTable('getData');
//con
$.each(rows, function (index, value) {
if (rows[index].id == id) {
$("#" + tableId).find("tr").each(function () {
var area = $(this).attr("data-index");
//console.info(area)
if (area == index) {
var bodyClass = $("body").attr("class");
var bgClass = myBgs[0];
$.each(myBgs, function (index_, value_) {
if (bodyClass.indexOf(value_.substring(2, value_.length)) != -1) {
bgClass = myBgs[index_];
}
});
$(this).addClass(bgClass);
//$(this).css("background-color","#00c0ef");//将指定行背景设置为浅绿色
$('#' + tableId + ' tbody').find("tr").first().before(this);
}
});
}
})
}
var defaultThemeCls = "skin-blue";
function changeSkin(cls) {
$.each(mySkins, function (i) {
$('body').removeClass(mySkins[i])
})
$('body').addClass(cls)
//store('skin', cls)
//return false
}
/**
* 默认
* event阻止冒泡
* */
function stopBubbleDefaultEvent() {
var event = window.event || arguments.callee.caller.arguments[0];
stopBubble(event);
}
/**
* event阻止冒泡
* */
function stopBubble(e) {
//如果提供了事件对象则这是一个非IE浏览器
if (e && e.stopPropagation) {
e.stopPropagation(); //因此它支持W3C的stopPropagation()方法
} else {
window.event.cancelBubble = true; //否则我们需要使用IE的方式来取消事件冒泡
}
}
/**
* 通用的打开下载对话框方法,没有测试过具体兼容性
* @param url 下载地址也可以是一个blob对象必选
* @param saveName 保存文件名,可选
*/
function openDownloadDialog(url, saveName) {
if (typeof url == 'object' && url instanceof Blob) {
url = URL.createObjectURL(url); // 创建blob地址
}
var aLink = document.createElement('a');
aLink.href = url;
aLink.download = saveName || ''; // HTML5新增的属性指定保存文件名可以不要后缀注意file:///模式下不会生效
var event;
if (window.MouseEvent) event = new MouseEvent('click');
else {
event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
}
aLink.dispatchEvent(event);
}
/**
* 获取pdf链接
* @param htmlStr html页面字符结果
* */
var doExportPDF = function (htmlStr) {
$.post(ext.contextPath + '/base/getPDFUrl.do', {htmlStr: htmlStr}, function (data) {
openDownloadDialog(ext.basePath.replace(ext.contextPath, "") + "/" + data.res, "");
}, 'json');
}
/**
* 适配select2到表单
*/
var fixSelect2ToForm = function (id) {
$("#" + id).next().css({'height': '34px', 'line-height': '34px'});
$("#" + id).next().find(".select2-selection--single ").css({'height': '34px', 'line-height': '34px'});
$("#" + id).next().find(".select2-selection__arrow ").css({'margin-top': '3px'});
}
/**
* 适配select2到工具栏
*/
var fixSelect2ToTool = function (id) {
$("#" + id).next().find(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'});
}
/**
* 巡检记录颜色标注集合
*/
var myColors = [
'#00c0ef',
'#0073b7',
'#3c8dbc',
'#39cccc',
'#f39c12',
'#ff851b',
'#00a65a',
'#01ff70',
'#dd4b39',
'#605ca8'
];
/**
* 水球图形状
*/
var bucketPath = 'path://M209.09,56.997c-0.034-16.849-42.416-30.501-94.707-30.501c-52.291,0-94.662,13.652-94.697,30.501l-0.001,0v165.872c0,22.25,42.398,40.3,94.688,40.3c52.31,0,94.718-18.05,94.718-40.3L209.09,56.997L209.09,56.997z';
$(function () {
//initBody();
getMenuInfo();
$("#menu_search_form").attr("onsubmit", "return false;");
$("#searchForm").attr("onsubmit", "return false;");
$("#search_name").keyup(function () {
if (event.keyCode == 13) {
event.preventDefault();
//回车执行查询
dosearch();
event.stopPropagation();
}
});
$("#search_name_menu").keyup(function () {
if (event.keyCode == 13) {
event.preventDefault();
//回车执行查询
searchMenu();
event.stopPropagation();
}
});
//FastClick.attach(document.body);
//弹窗关闭触发方法
/*$(".modal").on("hidden.bs.modal", function() {
$('.modal').css("overflow","auto");
});*/
});
/**
* 判断浏览器为手机端登录还是PC端true为PC端false为手机端
* @returns {Boolean}
*/
function IsPC() {
var userAgentInfo = navigator.userAgent;
var Agents = ["Android", "iPhone",
"SymbianOS", "Windows Phone",
"iPad", "iPod"];
var flag = true;
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag = false;
break;
}
}
return flag;
}
/**
* 判断是否为APP进入网页true为是flase为否
* @returns {Boolean}
*/
function IsApp() {
var u = navigator.userAgent;
var flag = false;
var Agents = ["Android", "iPhone",
"SymbianOS", "Windows Phone",
"iPad", "iPod"];
for (var v = 0; v < Agents.length; v++) {
if (u.indexOf('iPhone') > -1 && u.indexOf('Safari') < 0) {
flag = true;
break;
} else if (u.indexOf('Android') > -1 && u.indexOf('wv') > -1) {
flag = true;
break;
} else {
}
}
//alert(flag);
return flag;
}
//限制输入内容为数字(小数)
function LimitNumber(num) {
num.value = num.value.replace(/[^\d^\.]+/g, '');
}
//ie添加Array.from方法
if (!Array.from) {
Array.from = (function () {
var toStr = Object.prototype.toString;
var isCallable = function (fn) {
return typeof fn === 'function' || toStr.call(fn) === '[object Function]';
};
var toInteger = function (value) {
var number = Number(value);
if (isNaN(number)) {
return 0;
}
if (number === 0 || !isFinite(number)) {
return number;
}
return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));
};
var maxSafeInteger = Math.pow(2, 53) - 1;
var toLength = function (value) {
var len = toInteger(value);
return Math.min(Math.max(len, 0), maxSafeInteger);
};
// The length property of the from method is 1.
return function from(arrayLike/*, mapFn, thisArg */) {
// 1. Let C be the this value.
var C = this;
// 2. Let items be ToObject(arrayLike).
var items = Object(arrayLike);
// 3. ReturnIfAbrupt(items).
if (arrayLike == null) {
throw new TypeError("Array.from requires an array-like object - not null or undefined");
}
// 4. If mapfn is undefined, then let mapping be false.
var mapFn = arguments.length > 1 ? arguments[1] : void undefined;
var T;
if (typeof mapFn !== 'undefined') {
// 5. else
// 5. a If IsCallable(mapfn) is false, throw a TypeError exception.
if (!isCallable(mapFn)) {
throw new TypeError('Array.from: when provided, the second argument must be a function');
}
// 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.
if (arguments.length > 2) {
T = arguments[2];
}
}
// 10. Let lenValue be Get(items, "length").
// 11. Let len be ToLength(lenValue).
var len = toLength(items.length);
// 13. If IsConstructor(C) is true, then
// 13. a. Let A be the result of calling the [[Construct]] internal method
// of C with an argument list containing the single item len.
// 14. a. Else, Let A be ArrayCreate(len).
var A = isCallable(C) ? Object(new C(len)) : new Array(len);
// 16. Let k be 0.
var k = 0;
// 17. Repeat, while k < len… (also steps a - h)
var kValue;
while (k < len) {
kValue = items[k];
if (mapFn) {
A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);
} else {
A[k] = kValue;
}
k += 1;
}
// 18. Let putStatus be Put(A, "length", len, true).
A.length = len;
// 20. Return A.
return A;
};
}());
}
//添加千分位符合
function toThousands(num) {
var nums = num;
var re = /\d{1,3}(?=(\d{3})+$)/g;
var n1 = 0;
if (nums != null && nums != '' && nums != undefined) {
n1 = nums.toString().replace(/^(\d+)((\.\d+)?)$/, function (s, s1, s2) {
return s1.replace(re, "$&,") + s2;
});
}
return n1;
/*var num = (num || 0).toString(), result = '';
while (num.length > 3) {
result = ',' + num.slice(-3) + result;
num = num.slice(0, num.length - 3);
}
if (num) { result = num + result; }
return result;*/
}
//验证是否为数字
function isNumber(value) {
var patrn = /^(-)?\d+(\.\d+)?$/;
if (patrn.exec(value) == null || value == "") {
return false
} else {
return true
}
}
/*
功能datepicker时间控件时间段选择初始化
参数beginSelector:开始时间input的id;endSelector:结束时间input的id
说明1.时间格式yyyy-mm-dd
*/
function DatePicker(beginSelector, endSelector) {
//开始时间
$(beginSelector).datepicker({
todayBtn: "linked",
autoclose: true,
todayHighlight: true,
endDate: new Date(),
format: 'yyyy-mm-dd',
language: 'zh-CN'
}).on('changeDate', function (e) {
var startTime = e.date;
$(endSelector).datepicker('setStartDate', startTime);
});
//结束时间
$(endSelector).datepicker({
todayBtn: "linked",
autoclose: true,
todayHighlight: true,
endDate: new Date(),
format: 'yyyy-mm-dd',
language: 'zh-CN'
}).on('changeDate', function (e) {
var endTime = e.date;
$(beginSelector).datepicker('setEndDate', endTime);
});
}
function DatePickerNotNow(beginSelector, endSelector) {
//开始时间
$(beginSelector).datepicker({
todayBtn: "linked",
autoclose: true,
todayHighlight: true,
format: 'yyyy-mm-dd',
language: 'zh-CN'
}).on('changeDate', function (e) {
var startTime = e.date;
$(endSelector).datepicker('setStartDate', startTime);
});
//结束时间
$(endSelector).datepicker({
todayBtn: "linked",
autoclose: true,
todayHighlight: true,
format: 'yyyy-mm-dd',
language: 'zh-CN'
}).on('changeDate', function (e) {
var endTime = e.date;
$(beginSelector).datepicker('setEndDate', endTime);
});
}
/*
功能datepicker时间控件时间段选择初始化
参数beginSelector:开始时间input的id;endSelector:结束时间input的id
说明1.时间格式yyyy-mm
*/
function DatePickerMonth(beginSelector, endSelector) {
//开始时间
$(beginSelector).datepicker({
todayBtn: "linked",
autoclose: true,
todayHighlight: true,
endDate: new Date(),
startView: 1,//开始显示时间类型 012
minViewMode: 1,//最小显示时间类型 012
format: 'yyyy-mm',
language: 'zh-CN'
}).on('changeDate', function (e) {
var startTime = e.date;
$(endSelector).datepicker('setStartDate', startTime);
});
//结束时间
$(endSelector).datepicker({
todayBtn: "linked",
autoclose: true,
todayHighlight: true,
endDate: new Date(),
startView: 1,//开始显示时间类型 012
minViewMode: 1,//最小显示时间类型 012
format: 'yyyy-mm',
language: 'zh-CN'
}).on('changeDate', function (e) {
var endTime = e.date;
$(beginSelector).datepicker('setEndDate', endTime);
});
}
// //时间戳转日期
function getLocalTime2(nS) {
var out = new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/, ' ');
// let date = new Date(parseInt(nS) * 1000);
// let year = date.getFullYear();
// let mon = date.getMonth() + 1;
// let day = date.getDate();
// let h = date.getHours();
// let m = date.getDate();
// let s = date.getSeconds();
//
// let out = year + "-" + (mon < 10 ? "0" + mon : mon) + "-" + (day < 10 ? "0" + day : day) + " " + (h < 10 ? "0" + h : h) + ":" + (m < 10 ? "0" + m : m) + ":" + (s < 10 ? "0" + s : s);
return out;
}
function getLocalTime(nS) {
var now = new Date(nS * 1000),
y = now.getFullYear(),
m = ("0" + (now.getMonth() + 1)).slice(-2),
d = ("0" + now.getDate()).slice(-2);
return '${y}-${m}-${d} ${now.toTimeString().substr(0, 8)}';
}
function createDatetimepicker(id, type) {
switch (type) {
case "I":
$("#" + id).datetimepicker({
language: 'zh-CN',
format: 'yyyy-mm-dd hh:ii:ss',
startView: "month", //初始化视图
minView: 0,
maxView: "year",
minuteStep: 1,//分钟间隔1分钟
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
}).on('changeDate', function () {
});
break;
case "H":
$("#" + id).datetimepicker({
language: 'zh-CN',
format: 'yyyy-mm-dd hh:ii',
startView: "month", //初始化视图
minView: 1,
maxView: "year",
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
}).on('changeDate', function () {
});
break;
case "D":
$("#" + id).datetimepicker({
language: 'zh-CN',
format: 'yyyy-mm-dd',
startView: "month", //初始化视图
minView: 2,
maxView: "year",
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
}).on('changeDate', function () {
});
break;
case "M":
$("#" + id).datetimepicker({
language: 'zh-CN',
format: 'yyyy-mm',
startView: "year", //初始化视图
minView: 3,
maxView: "year",
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
}).on('changeDate', function () {
});
break;
case "Y":
$("#" + id).datetimepicker({
language: 'zh-CN',
format: 'yyyy',
startView: "decade", //初始化视图
minView: 4,
maxView: "year",
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
}).on('changeDate', function () {
});
break;
default:
$("#" + id).datetimepicker({
language: 'zh-CN',
format: 'yyyy-mm-dd hh:ii:ss',
startView: "month", //初始化视图
minView: 0,
maxView: "year",
minuteStep: 1,//分钟间隔1分钟
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
}).on('changeDate', function () {
});
}
}
/* 功能DateTimePicker时间控件时间段选择初始化
参数beginSelector:开始时间input的id;endSelector:结束时间input的idtype:时间类型
说明1.时间格式•yyyy-mm-dd hh:ii
*/
function createDatetimepickerTwo(beginSelector, endSelector, type) {
switch (type) {
case "I":
//开始时间
$("#" + beginSelector).datetimepicker({
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
minuteStep: 5, //分钟间隔为5分
format: 'yyyy-mm-dd hh:ii:ss',
startView: "month", //初始化视图
minView: 0,
maxView: "year",
language: 'zh-CN'
}).on('changeDate', function (ev) {
$("#" + endSelector).datetimepicker('setStartDate', $("#" + beginSelector).val())
});
//结束时间
$("#" + endSelector).datetimepicker({
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
minuteStep: 5, //分钟间隔为5分
format: 'yyyy-mm-dd hh:ii:ss',
startView: "month", //初始化视图
minView: 0,
maxView: "year",
language: 'zh-CN'
}).on('changeDate', function (ev) {
$("#" + beginSelector).datetimepicker('setEndDate', $("#" + endSelector).val())
});
break;
case "H":
//开始时间
$("#" + beginSelector).datetimepicker({
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
minuteStep: 5, //分钟间隔为5分
format: 'yyyy-mm-dd hh:ii',
startView: "month", //初始化视图
minView: 1,
maxView: "year",
language: 'zh-CN'
}).on('changeDate', function (ev) {
$("#" + endSelector).datetimepicker('setStartDate', $("#" + beginSelector).val())
});
//结束时间
$("#" + endSelector).datetimepicker({
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
minuteStep: 5, //分钟间隔为5分
format: 'yyyy-mm-dd hh:ii',
startView: "month", //初始化视图
minView: 1,
maxView: "year",
language: 'zh-CN'
}).on('changeDate', function (ev) {
$("#" + beginSelector).datetimepicker('setEndDate', $("#" + endSelector).val())
});
break;
case "D":
//开始时间
$("#" + beginSelector).datetimepicker({
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
minuteStep: 5, //分钟间隔为5分
format: 'yyyy-mm-dd',
startView: "month", //初始化视图
minView: 2,
maxView: "year",
language: 'zh-CN'
}).on('changeDate', function (ev) {
$("#" + endSelector).datetimepicker('setStartDate', $("#" + beginSelector).val())
});
//结束时间
$("#" + endSelector).datetimepicker({
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
minuteStep: 5, //分钟间隔为5分
format: 'yyyy-mm-dd',
startView: "month", //初始化视图
minView: 2,
maxView: "year",
language: 'zh-CN'
}).on('changeDate', function (ev) {
$("#" + beginSelector).datetimepicker('setEndDate', $("#" + endSelector).val())
});
break;
case "M":
//开始时间
$("#" + beginSelector).datetimepicker({
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
minuteStep: 5, //分钟间隔为5分
format: 'yyyy-mm',
startView: "year", //初始化视图
minView: 3,
maxView: "year",
language: 'zh-CN'
}).on('changeDate', function (ev) {
$("#" + endSelector).datetimepicker('setStartDate', $("#" + beginSelector).val())
});
//结束时间
$("#" + endSelector).datetimepicker({
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
minuteStep: 5, //分钟间隔为5分
format: 'yyyy-mm',
startView: "year", //初始化视图
minView: 3,
maxView: "year",
language: 'zh-CN'
}).on('changeDate', function (ev) {
$("#" + beginSelector).datetimepicker('setEndDate', $("#" + endSelector).val())
});
break;
case "Y":
//开始时间
$("#" + beginSelector).datetimepicker({
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
minuteStep: 5, //分钟间隔为5分
format: 'yyyy',
startView: "decade", //初始化视图
minView: 4,
maxView: "year",
language: 'zh-CN'
}).on('changeDate', function (ev) {
$("#" + endSelector).datetimepicker('setStartDate', $("#" + beginSelector).val())
});
//结束时间
$("#" + endSelector).datetimepicker({
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
minuteStep: 5, //分钟间隔为5分
format: 'yyyy',
startView: "decade", //初始化视图
minView: 4,
maxView: "year",
language: 'zh-CN'
}).on('changeDate', function (ev) {
$("#" + beginSelector).datetimepicker('setEndDate', $("#" + endSelector).val())
});
break;
default:
//开始时间
$("#" + beginSelector).datetimepicker({
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
minuteStep: 5, //分钟间隔为5分
format: 'yyyy-mm-dd hh:ii:ss',
startView: "month", //初始化视图
minView: 0,
maxView: "year",
language: 'zh-CN'
}).on('changeDate', function (ev) {
$("#" + endSelector).datetimepicker('setStartDate', $("#" + beginSelector).val())
});
//结束时间
$("#" + endSelector).datetimepicker({
todayBtn: true,
clearBtn: true,
autoclose: true,
todayHighlight: 1,//今天高亮
endDate: new Date(),
minuteStep: 5, //分钟间隔为5分
format: 'yyyy-mm-dd hh:ii:ss',
startView: "month", //初始化视图
minView: 0,
maxView: "year",
language: 'zh-CN'
}).on('changeDate', function (ev) {
$("#" + beginSelector).datetimepicker('setEndDate', $("#" + endSelector).val())
});
}
}
//获取当月最后一天
function getMonthMaxDay(input) {
// const input = "2020-06"
const arr = input.split('-');
const maxDay = new Date(arr[0], arr[1], 0).getDate(); // 获取当月最后一日
return maxDay;
}