/**
* 常用工具和方法 本js依赖jQuery
*
* @author 姜友瑶
*/
var MTools = {
/**
* 用逗号分开的存的id是否包含对应的id
* 如比较 123,123,124 中是否包含12这个主键
* 比对的方法是 字符串中是否包含"^12$" "^12,.*" 或者 ".+,12$" 或者 ".+,12,$"或者 ".+,12,.+" 字符串
* */
isContainId: function (ids, id) {
var reg1 = new RegExp("^" + id + "$|^" + id + ",.*|.+," + id + "$|.+," + id + ",$|.+," + id + ",.+");
if (reg1.test(ids)) {
return true;
} else {
return false;
}
},
/**
* 对表格中单挑数据进行处理 请在url后添加参数 url: 远程地址 msg:提示信息 callbackfn:操作成功后回调函数
*/
handleItem: function (url, msg, callbackfn) {
layer.confirm(msg, function () {
$.AjaxProxy().invoke(url, function (loj) {
layer.msg(loj.getValue("info"), {icon: 1, time: 1000}, function () {
if (callbackfn) {
callbackfn();
}
});
});
});
},
/** 返回一个随机数 */
random: function () {
return Math.floor(Math.random() * (1000000000 + 1));
},
/** 返回一个随机字符串 */
randomStr: function () {
return 'pp' + Math.floor(Math.random() * (1000000000 + 1));
},
/** 页面定向 */
redirect: function (url) {
window.location.href = url;
},
/** 页面定向 无视iframe */
toPredirect: function (url) {
window.top.location.href = url;
},
/** 在页面删除一个节点 */
delThis: function (id) {
$('#' + id).remove();
},
/** 在页面删除一个节点,带上滑效果 */
delThisSlide: function (id) {
$('#' + id).slideUp("fast", function () {
$('#' + id).remove();
});
},
changeValidateCode: function (id) {
$("#" + id).attr("src",
basePath + "/common/validateImg?rand=" + this.random())
},
getTime:function() {
var date = new Date();
return date.getFullYear() + "-" + setFomartZero((date.getMonth() + 1))
+ "-" + setFomartZero(date.getDate()) + " " + setFomartZero(date.getHours())
+ ":" + setFomartZero(date.getMinutes());
},
chooesFile : function(fileText) {
$(fileText).trigger("click");
},
upFile : function(submitBtn) {
$(submitBtn).trigger("click");
},
selectFile : function(node,fileTextId,submitNode) {
var filePath = $(fileTextId).val()
var fileName = filePath.substring(filePath.lastIndexOf("\\") + 1,
filePath.length);
$(node).val(fileName);
$(submitNode).trigger("click");
},
/**
* 根据autoFull的css类自动填充select框里面的option selecteder :选择器名 value: 默认值为id file:
* 默认值name url: 请求路径 param:{type : ''} 对象 为查询条件属性 defaultValue: 默认值 by
* luoyuanhong 2016-7-13
*/
autoFullSelect: function (_initParam) {
var initParam = {
value: "id",// value默认值
filed: "name",// filed默认值
selecteder:".autoFull"
}
if(_initParam){
initParam=$.extend(initParam,_initParam)
}
$(initParam.selecteder)
.each(
function () {
var _this = $(this);
var def = _this.data("def");
console.log("autoFull");
var param = eval("(" + _this.data("param") + ")");
var value = _this.data("value") == null ? initParam.value
: _this.data("value");
var filed = _this.data("filed") == null ? initParam.filed
: _this.data("filed");
var url = _this.data("url");
// 增加一个排除不显示的 值得,参数是数组如 jsp的input属性data-hidden=1,2
eval("var hidden = [" + _this.data("hidden") + "]");
// 取服务器请求数据
$
.AjaxProxy({
p: param,
c: true
})
.invoke(
url,
function (loj) {
var html = '';
/* html += '";*/
a: for (var i = 0; i < loj
.getRowCount(); i++) {
b: for (var j = 0; j < hidden.length; j++) {
if (hidden[j]
&& hidden[j] == loj
.getString(
i,
value)) {
html += "";
continue a;
}
}
if (def) {
def = def + "";
var values = def.split(",");
var isSelect = false;
for (var k = 0; k < values.length; k++) {
if ((values[k] + "") == loj.getString(i, value)) {
html += '";
isSelect = true;
}
}
if (!isSelect) {
html += '";
}
} else {
html += '";
}
}
_this.append(html);
if(initParam && initParam.callback){
initParam.callback();
}
});
});
},
/**
* 初始化时间控件方法
* @param _initParam:
*/
ininDatetimepicker: function (_initParam) {
var initParam = {
format: "yyyy-mm-dd", //默认显示年与日,如果想显示十分秒:"yyyy-mm-dd hh:ii:ss"
maxView: 4, //日期时间选择器最高能展示的选择范围视图。
minView: "month", //"month",只显示年月日的选择,不会再跳转去选择时分秒;如果想要选择时分秒的:"hour"
autoclose: true, //true,选择完是否自动关闭,如果不关闭,改为:false
minuteStep: 5, //此数值被当做步进值用于构建小时视图。对于每个 minuteStep 都会生成一组预设时间(分钟)用于选择
weekStart: 1, //一周从哪一天开始。0(星期日)到6(星期六)
timeSelecter: ".datetimepicker", //时间选择器的类名
state: "none", //none,不做限制,beforeToday:只能选择当前日期之前,aferToday:只能选择当前日期之后
listenBlur: false //由于validform当输入日期后还提示输入,因此 时间按控件当日期更改后,触发该类元素的blur事件,validfrom会验证
}
if (_initParam != null) {
//把传过来的参数覆盖默认参数
initParam = $.extend(initParam, _initParam);
}
if (initParam.state == "beforeToday") {
initParam = $.extend(initParam, {endDate: new Date()});
//日期只能选择当前日,及当前日之前的日期
} else if (initParam.state == "aferToday") {
//日期只能选择当前日,及当前日之后的日期
initParam = $.extend(initParam, {startDate: new Date()});
}
//可以选择任意日期
var dataObj = $(initParam.timeSelecter).datetimepicker(initParam);
if (initParam.listenBlur) {
dataObj.on('changeDate', function (e) {
$(initParam.timeSelecter).trigger("blur");
});
}
},
/**
* 结束时间不能小于开始时间
* beginTimeId:开始时间控件的id,注意要传#
* endTimeId:结束时间控件的id,注意要传#
*/
limitStartEndTime: function (_initParam) {
var initParam = {
beginTimeId: "#beginTime",
endTimeId: "#endTime"
}
if (_initParam != null) {
initParam = $.extend(initParam, _initParam);
}
$(initParam.endTimeId).datetimepicker('setStartDate', $(initParam.beginTimeId).val());
$(initParam.beginTimeId).datetimepicker('setEndDate', $(initParam.endTimeId).val());
//限制结束时间不能大于开始时间
$(initParam.beginTimeId).datetimepicker().on('changeDate', function (e) {
var currentTime = e.date;
$(initParam.endTimeId).datetimepicker('setStartDate', currentTime);
});
$(initParam.endTimeId).datetimepicker().on('changeDate', function (e) {
var currentTime = e.date;
$(initParam.beginTimeId).datetimepicker('setEndDate', currentTime);
});
},
/* 关闭弹出的窗口 */
closeForm: function () {
var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
parent.layer.close(index);
},
padLeftZero: function (str) {
return ('00' + str).substr(str.length)
},
formatDate: function (date, fmt) {
var date=new Date(date);
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
}
let o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'h+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds()
}
for (let k in o) {
if (new RegExp(`(${k})`).test(fmt)) {
let str = o[k] + ''
fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? str : this.padLeftZero(str))
}
}
return fmt
},
}