2026-01-16 14:13:44 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 去字符串空格
|
|
|
|
|
|
*/
|
|
|
|
|
|
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');
|
2026-03-01 23:40:06 +08:00
|
|
|
|
|
|
|
|
|
|
// 定义一个内部函数来执行DOM操作添加菜单
|
|
|
|
|
|
var appendS223Menu = function() {
|
|
|
|
|
|
var $menu = $('#menu');
|
|
|
|
|
|
|
|
|
|
|
|
// 查找“纳管企业清单”所在的菜单项
|
|
|
|
|
|
// 情况1: 一级菜单,名称在 span 中
|
|
|
|
|
|
var $targetSpan = $menu.find("span").filter(function() {
|
|
|
|
|
|
return $(this).text().trim() === '纳管企业清单';
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
var $targetLi = null;
|
|
|
|
|
|
|
|
|
|
|
|
if ($targetSpan.length > 0) {
|
|
|
|
|
|
$targetLi = $targetSpan.closest('li');
|
|
|
|
|
|
} else {
|
|
|
|
|
|
// 情况2: 二级菜单,名称直接在 a 标签中(可能是文本节点)
|
|
|
|
|
|
var $targetLink = $menu.find('a').filter(function() {
|
|
|
|
|
|
// 克隆节点,移除子元素(如图标),只获取自身的文本
|
|
|
|
|
|
return $(this).clone().children().remove().end().text().trim() === '纳管企业清单';
|
|
|
|
|
|
});
|
|
|
|
|
|
if ($targetLink.length > 0) {
|
|
|
|
|
|
$targetLi = $targetLink.closest('li');
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if ($targetLi && $targetLi.length > 0) {
|
|
|
|
|
|
var $treeviewMenu = $targetLi.find('> .treeview-menu');
|
|
|
|
|
|
|
|
|
|
|
|
// 确保 treeview-menu 存在
|
|
|
|
|
|
if ($treeviewMenu.length === 0) {
|
|
|
|
|
|
$treeviewMenu = $('<ul class="treeview-menu"></ul>');
|
|
|
|
|
|
$targetLi.append($treeviewMenu);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 检查是否已经添加过,防止重复添加
|
|
|
|
|
|
// 注意:新菜单项可能直接是文本,也可能包含 i 标签
|
|
|
|
|
|
var exists = false;
|
|
|
|
|
|
$treeviewMenu.find('li').each(function() {
|
2026-03-05 00:35:31 +08:00
|
|
|
|
// if ($(this).text().indexOf('管道管理') > -1) {
|
|
|
|
|
|
// exists = true;
|
|
|
|
|
|
// }
|
2026-03-01 23:40:06 +08:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
if (!exists) {
|
|
|
|
|
|
// 根据层级决定样式,通常二级或三级菜单项不需要 span 包裹文字,或者保持一致
|
|
|
|
|
|
// 这里的样式参考了 menuitems.jsp 中的 Level 3: <li><a ...><i ...></i> Name</a></li>
|
|
|
|
|
|
// 使用 addTab 函数而不是 refreshPage,以支持在 tab 页中打开(如果系统支持)或者在当前 iframe 打开
|
|
|
|
|
|
// 检查 addTab 是否存在,如果存在则使用它,否则回退到 refreshPage
|
|
|
|
|
|
var newMenuHtml = '';
|
|
|
|
|
|
if (typeof addTab === 'function') {
|
|
|
|
|
|
// 假设 addTab(id, name, url)
|
|
|
|
|
|
} else {
|
|
|
|
|
|
// 如果没有 addTab,尝试使用 iframe 加载或者直接跳转(但在框架内)
|
|
|
|
|
|
// refreshPage 通常是 location.replace,这会刷新整个页面。
|
|
|
|
|
|
// 如果目标是内嵌,我们应该寻找 iframe 的加载方式。
|
|
|
|
|
|
// 查看 comm.js 其他部分,发现有 refreshPage(url) 实现为 location.replace(url)。
|
|
|
|
|
|
// 如果要内嵌,通常是设置某个 iframe 的 src。
|
|
|
|
|
|
// 假设主内容区域是一个 iframe,或者支持通过 data-url 加载。
|
|
|
|
|
|
// 暂时使用 refreshPage,但确认它是在当前窗口(iframe)中加载,而不是弹出新窗口。
|
|
|
|
|
|
// 用户反馈说“不要新开特么弹窗”,可能是指 window.open 或者 target="_blank"。
|
|
|
|
|
|
// refreshPage 使用 location.replace,是在当前窗口打开。
|
|
|
|
|
|
// 如果当前窗口是整个 index 页面,那就会刷新整个页面。
|
|
|
|
|
|
// 如果是 SPA 或者 iframe 架构,我们需要找到正确的方法。
|
|
|
|
|
|
|
|
|
|
|
|
// 观察 menuitems.jsp,发现二级菜单使用 addTab('${cumcl2.id}','${cumcl2.name}','${cumcl2.location}')
|
|
|
|
|
|
// 所以我们应该优先使用 addTab。
|
|
|
|
|
|
// 如果 addTab 未定义(可能在 index.jsp 中定义),我们尝试模拟它。
|
|
|
|
|
|
// 由于 comm.js 被 index.jsp 引用,addTab 应该可用。
|
|
|
|
|
|
}
|
|
|
|
|
|
$treeviewMenu.append(newMenuHtml);
|
|
|
|
|
|
|
|
|
|
|
|
// 确保父菜单是展开状态(可选)
|
|
|
|
|
|
// $targetLi.addClass('active menu-open');
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2026-01-16 14:13:44 +08:00
|
|
|
|
if (sessionStorage.menu != undefined) {
|
|
|
|
|
|
$('#menu').html(sessionStorage.menu);
|
2026-03-01 23:40:06 +08:00
|
|
|
|
|
|
|
|
|
|
// 即使是缓存加载,也尝试添加新菜单
|
|
|
|
|
|
appendS223Menu();
|
|
|
|
|
|
|
2026-01-16 14:13:44 +08:00
|
|
|
|
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) {
|
2026-02-02 14:44:36 +08:00
|
|
|
|
var bigScreenHtml = '<li class="treeview">' +
|
|
|
|
|
|
'<a href="#">' +
|
|
|
|
|
|
'<i class="fa fa-desktop"></i> <span>大屏展示</span>' +
|
|
|
|
|
|
'<span class="pull-right-container">' +
|
|
|
|
|
|
'<i class="fa fa-angle-left pull-right"></i>' +
|
|
|
|
|
|
'</span>' +
|
|
|
|
|
|
'</a>' +
|
|
|
|
|
|
'<ul class="treeview-menu">' +
|
|
|
|
|
|
'<li><a href="javascript:void(0);" onclick="window.open(\'' + ext.contextPath + '/jsp/bigScreen.jsp\', \'_blank\');"><i class="fa fa-circle-o"></i> 水厂大屏</a></li>' +
|
|
|
|
|
|
'<li><a href="javascript:void(0);" onclick="window.open(\'' + ext.contextPath + '/jsp/bigScreen2.jsp\', \'_blank\');"><i class="fa fa-circle-o"></i> 区域管线大屏</a></li>' +
|
|
|
|
|
|
'<li><a href="javascript:void(0);" onclick="window.open(\'' + ext.contextPath + '/jsp/bigScreen3.jsp\', \'_blank\');"><i class="fa fa-circle-o"></i> 排污户大屏</a></li>' +
|
|
|
|
|
|
'</ul>' +
|
|
|
|
|
|
'</li>';
|
|
|
|
|
|
result = result + bigScreenHtml;
|
2026-03-01 23:40:06 +08:00
|
|
|
|
// 替换源头GIS管理页面链接为JSP
|
|
|
|
|
|
result = result.replace('newSourceGISPage.html', 'newSourceGISPage.jsp');
|
|
|
|
|
|
result = result.replace('newGIS.html', 'newSourceGISPage.jsp');
|
|
|
|
|
|
|
2026-01-16 14:13:44 +08:00
|
|
|
|
$('#menu').html(result);
|
2026-03-01 23:40:06 +08:00
|
|
|
|
|
|
|
|
|
|
// 在设置HTML后执行DOM注入
|
|
|
|
|
|
appendS223Menu();
|
|
|
|
|
|
|
|
|
|
|
|
sessionStorage.setItem("menu", $('#menu').html()); // 保存修改后的HTML到sessionStorage
|
|
|
|
|
|
|
2026-01-16 14:13:44 +08:00
|
|
|
|
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">×</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">×</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">×</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">×</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">×</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',
|
2026-02-02 14:44:36 +08:00
|
|
|
|
'skin-green-light',
|
|
|
|
|
|
'skin-app-style'
|
2026-01-16 14:13:44 +08:00
|
|
|
|
];
|
|
|
|
|
|
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,//开始显示时间类型 0:天;1:月;2:年;
|
|
|
|
|
|
minViewMode: 1,//最小显示时间类型 0:天;1:月;2:年;
|
|
|
|
|
|
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,//开始显示时间类型 0:天;1:月;2:年;
|
|
|
|
|
|
minViewMode: 1,//最小显示时间类型 0:天;1:月;2:年;
|
|
|
|
|
|
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的id,type:时间类型
|
|
|
|
|
|
|
|
|
|
|
|
说明: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;
|
|
|
|
|
|
}
|