1249 lines
41 KiB
JavaScript
1249 lines
41 KiB
JavaScript
|
||
function customAjax(url, Id, data) {
|
||
var ajax = $.ajax({
|
||
type: 'get',
|
||
url: url,
|
||
async: 'false',
|
||
dataType: "html",
|
||
timeout: 20000,
|
||
xhrFields: {
|
||
withCredentials: true
|
||
},
|
||
success: function (data) {
|
||
$("#" + Id + "").empty();
|
||
$("#" + Id + "").html(data);
|
||
},
|
||
error: function (err) {
|
||
}
|
||
});
|
||
}
|
||
|
||
function SetDateRange(startElem, endElem) {
|
||
layui.use(['laydate'], function () {
|
||
//日期控件渲染
|
||
var laydate = layui.laydate;
|
||
|
||
var start = laydate.render({
|
||
elem: startElem,
|
||
btns: ['clear', 'confirm'],
|
||
done: function (value, datas) {
|
||
if (value != "") {
|
||
end.config.min.year = datas.year;
|
||
end.config.min.month = datas.month - 1;
|
||
end.config.min.date = datas.date;
|
||
}
|
||
}
|
||
});
|
||
var end = laydate.render({
|
||
elem: endElem,
|
||
btns: ['clear', 'confirm'],
|
||
done: function (value, datas) {
|
||
if (value != "") {
|
||
start.config.max.year = datas.year;
|
||
start.config.max.month = datas.month - 1;
|
||
start.config.max.date = datas.date;
|
||
}
|
||
}
|
||
});
|
||
|
||
});
|
||
}
|
||
|
||
/*
|
||
* 获取获取地址栏参数
|
||
* 使用:GetQueryString("参数名1")
|
||
*/
|
||
function GetQueryString(name) {
|
||
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
|
||
var r = window.location.search.substr(1).match(reg);
|
||
if (r != null) return unescape(r[2]); return null;
|
||
}
|
||
|
||
//表单查看时,禁用文本框
|
||
function setDisabledToForm(formId) {
|
||
$("#" + formId + " input").attr("disabled", "disabled").addClass("disabled");
|
||
$("#" + formId + " select").attr("disabled", "disabled").addClass("disabled");
|
||
$("#" + formId + " textarea").attr("disabled", "disabled").addClass("disabled");
|
||
$("#" + formId + " a").addClass("layui-btn-disabled");
|
||
$("#" + formId + " button").addClass("layui-btn-disabled");
|
||
}
|
||
//转化日期
|
||
|
||
function getTimeByStampChinese(str, format) {
|
||
if (str == null || str == "")
|
||
return "";
|
||
if (str.indexOf("Date(") >= 0) {
|
||
str = parseInt(str.substr(6, 13));
|
||
}
|
||
var date = new Date(str);
|
||
Y = date.getFullYear();
|
||
M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);
|
||
D = date.getDate().toString().length < 2 ? "0" + date.getDate() : date.getDate();
|
||
h = date.getHours().toString().length < 2 ? "0" + date.getHours() : date.getHours();
|
||
m = date.getMinutes().toString().length < 2 ? "0" + date.getMinutes() : date.getMinutes();
|
||
s = date.getSeconds().toString().length < 2 ? "0" + date.getSeconds() : date.getSeconds();
|
||
if (format == "ymd") {
|
||
return Y + '年' + M + '月' + D + "日";;
|
||
}
|
||
else if (format == "ym") {
|
||
return Y + '年' + M + '月';
|
||
}
|
||
else if (format == "ymdhms") {
|
||
return Y + '年' + M + '月' + D + '日' + h + ':' + m + ':' + s;
|
||
}
|
||
else if (format == "ymdhm") {
|
||
return Y + '年' + M + '月' + D + '日' + h + ':' + m;
|
||
}
|
||
else {
|
||
return Y + '年' + M + '月' + D + '日' + h + ':' + m + ':' + s;
|
||
}
|
||
|
||
}
|
||
//class名
|
||
//e 控件id或class type:控件类型
|
||
function setCtrDisabled(e, type) {
|
||
if (type && type != "") {
|
||
$(e + " " + type).attr("disabled", "disabled");
|
||
} else {
|
||
$(e + " input").attr("disabled", "disabled");
|
||
$(e + " select").attr("disabled", "disabled");
|
||
$(e + " textarea").attr("disabled", "disabled");
|
||
$(e + " a").addClass("layui-btn-disabled");
|
||
$(e + " button").addClass("layui-btn-disabled");
|
||
$(e + " ul").attr("disabled", "disabled");
|
||
}
|
||
|
||
}
|
||
|
||
/*
|
||
* formId 最外层表单名称
|
||
* element
|
||
*/
|
||
function setFormDisabled(formId) {
|
||
var data = $(formId).find($(":input"));
|
||
$(data).each(function (index, item) {
|
||
if (item.nodeName == "SELECT") {
|
||
$(formId).find("div").css("pointer-events", "none");
|
||
}
|
||
$(this).css("pointer-events", "none");
|
||
$(this).attr("disabled", "true");
|
||
});
|
||
}
|
||
|
||
function setFormElement(element) {
|
||
$(element).css("pointer-events", "none");
|
||
}
|
||
|
||
function setDisableBtn(element) {
|
||
$(element).css("pointer-events", "none");
|
||
$(element).addClass("layui-btn-disabled");
|
||
}
|
||
|
||
//去除按钮不可用
|
||
function removeDisableBtn(element) {
|
||
$(element).removeAttr("style");
|
||
$(element).removeClass("layui-btn-disabled");
|
||
}
|
||
|
||
/*通用加载下拉框*/
|
||
//ids: html页面上需要填充数据的select的id
|
||
//codeType: 字典类型
|
||
//isAll:是否自动加个全部的选项(默认true)
|
||
//codes:指定的code(多个逗号隔开)
|
||
function initSelectbox(ids, codeType, isAll, codes) {
|
||
if (!ids) {
|
||
return;
|
||
}
|
||
var ids = ids.split(',');
|
||
for (var i = 0; i < ids.length; i++) {
|
||
$("#" + ids[i]).html("");
|
||
}
|
||
var url = '/ListCode/GetListCode?rdo=' + Math.random();
|
||
$.ajax({
|
||
type: "GET",
|
||
url: url,
|
||
contentType: "application/json;charset=utf-8",
|
||
data: { CodeType: codeType, Codes: codes },
|
||
async: false,
|
||
success: function (data) {
|
||
var list = data;
|
||
var options = "";
|
||
if (typeof isAll == 'undefined' || isAll == true) {
|
||
options = "<option value=''>--全部--</option>";
|
||
}
|
||
|
||
if (list == null || list.length == 0) {
|
||
for (var i = 0; i < ids.length; i++) {
|
||
$("#" + ids[i]).append(options);
|
||
}
|
||
renderSelect();
|
||
return;
|
||
}
|
||
for (var i = 0; i < ids.length; i++) {
|
||
var ddl = $("#" + ids[i]);
|
||
if (ddl) {
|
||
for (var k = 0; k < list.length; k++) {
|
||
options += "<option value='" + list[k].Code + "'>" + list[k].CodeName + "</option>";
|
||
}
|
||
|
||
ddl.append(options);
|
||
renderSelect();
|
||
}
|
||
}
|
||
}
|
||
});
|
||
}
|
||
|
||
/*
|
||
* 重新渲染下拉框
|
||
*/
|
||
function renderSelect(ctrl) {
|
||
layui.use('form', function () {
|
||
var form = layui.form;
|
||
if (typeof ctrl == 'undefined' || ctrl == "" || ctrl == null) {
|
||
form.render("select");
|
||
} else {
|
||
form.render(ctrl);
|
||
}
|
||
});
|
||
}
|
||
|
||
/*请求后台方法*/
|
||
function AjaxPost(url, data, appendDiv, successFun, errorFun, aysnc) {
|
||
var index = 0;
|
||
//是否异步(如果没有传值默认异步)
|
||
if (aysnc == undefined || aysnc == null) {
|
||
aysnc = true;
|
||
}
|
||
$.ajax({
|
||
url: url,
|
||
data: data,
|
||
dataType: 'json',
|
||
type: 'post',
|
||
async: aysnc,
|
||
beforeSend: function (data) {
|
||
//开启遮罩层
|
||
LoadingModelPage(true, appendDiv);
|
||
},
|
||
success: function (data) {
|
||
successFun(data);
|
||
},
|
||
error: function (e) {
|
||
errorFun(e);
|
||
},
|
||
complete: function (XMLHttpRequest, textStatus) {
|
||
//关闭遮罩层
|
||
LoadingModelPage(false, appendDiv);
|
||
}
|
||
});
|
||
}
|
||
|
||
/*请求后台方法*/
|
||
function AjaxPost(url, data, appendDiv, successFun, errorFun, aysnc, requestGet) {
|
||
var index = 0;
|
||
if (requestGet) {
|
||
requestGet = 'get';
|
||
} else {
|
||
requestGet = 'post';
|
||
}
|
||
//是否异步(如果没有传值默认异步)
|
||
if (aysnc == undefined || aysnc == null) {
|
||
aysnc = true;
|
||
}
|
||
$.ajax({
|
||
url: url,
|
||
data: data,
|
||
dataType: 'json',
|
||
type: requestGet,
|
||
async: aysnc,
|
||
beforeSend: function (data) {
|
||
//开启遮罩层
|
||
LoadingModelPage(true, appendDiv);
|
||
},
|
||
success: function (data) {
|
||
successFun(data);
|
||
},
|
||
error: function (e) {
|
||
errorFun(e);
|
||
},
|
||
complete: function (XMLHttpRequest, textStatus) {
|
||
//关闭遮罩层
|
||
LoadingModelPage(false, appendDiv);
|
||
}
|
||
});
|
||
}
|
||
/*
|
||
* 编辑的时候给表单赋值
|
||
* formId:表单ID
|
||
* data:json字符串
|
||
*/
|
||
function setValueToForm(formId, data) {
|
||
//data = JSON.parse(data);//根据ID获取对象后已是JSON格式,不需要转换JSON
|
||
//给input文本框的赋值
|
||
if ($("#" + formId + " input").length > 0) {
|
||
$("#" + formId + " input").each(function () {
|
||
try {
|
||
//新增的时候,主键ID或者没有的字段会报错。
|
||
if ($(this).attr("type") == "text" || $(this).attr("type") == "tel" || $(this).attr("type") == "number" || $(this).attr("type") == "email" || $(this).attr("type") == "hidden") {
|
||
if ($(this).attr("data-type") == "date") {
|
||
var time = getTimeByStamp(data[$(this).attr("id")], 'ymd');
|
||
$(this).val(time);
|
||
}
|
||
else if ($(this).attr("dt-type")) {
|
||
var time = getTimeByStamp(data[$(this).attr("id")], $(this).attr("dt-type"));
|
||
$(this).val(time);
|
||
}
|
||
else {
|
||
$(this).val(data[$(this).attr("id")]);
|
||
}
|
||
}
|
||
//处理开关
|
||
if ($(this).attr("type") == "checkbox" && $(this).attr("class") == "swicth") {
|
||
if (data[$(this).attr("id")] == null || data[$(this).attr("id")] == "" || data[$(this).attr("id")] == 0) {
|
||
//无效
|
||
$(this).prop("checked", false);
|
||
}
|
||
else {
|
||
$(this).prop("checked", true);
|
||
}
|
||
renderSelect('checkbox');
|
||
}
|
||
if ($(this).attr("type") == "radio") {
|
||
if ($(this).val() == data[$(this).attr("name")]) {
|
||
$(this).attr("checked", "");
|
||
} else {
|
||
$(this).removeAttr("checked");
|
||
}
|
||
renderSelect('radio');
|
||
}
|
||
} catch (e) {
|
||
|
||
}
|
||
});
|
||
}
|
||
|
||
//给select下拉框赋值
|
||
if ($("#" + formId + " select").length > 0) {
|
||
$("#" + formId + " select").each(function () {
|
||
var id = $(this).attr("id");
|
||
$(this).find("option").each(function () {
|
||
try {
|
||
$(this).attr("selected", false);
|
||
if ($(this).val() == data[id]) {
|
||
$(this).attr("selected", true);
|
||
}
|
||
} catch (e) {
|
||
|
||
}
|
||
});
|
||
});
|
||
|
||
setTimeout(function () {
|
||
renderSelect();
|
||
}, 200);
|
||
}
|
||
|
||
//给textarea文本域赋值
|
||
if ($("#" + formId + " textarea").length > 0) {
|
||
$("#" + formId + " textarea").each(function () {
|
||
try {
|
||
$(this).val(data[$(this).attr("id")]);
|
||
} catch (e) {
|
||
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
function getFormatDate(str, format) {
|
||
|
||
if (!str || str.length == 0) {
|
||
str = new Date();
|
||
}
|
||
var year = str.getFullYear();
|
||
var month = str.getMonth() + 1 < 10 ? "0" + (str.getMonth() + 1) : str.getMonth() + 1;
|
||
var date = str.getDate() < 10 ? "0" + str.getDate() : str.getDate();
|
||
var hour = str.getHours() < 10 ? "0" + str.getHours() : str.getHours();
|
||
var minute = str.getMinutes() < 10 ? "0" + str.getMinutes() : str.getMinutes();
|
||
var second = str.getSeconds() < 10 ? "0" + str.getSeconds() : str.getSeconds();
|
||
|
||
if (format == "ymd") {
|
||
return year + "-" + month + "-" + date;
|
||
} else if (format == "y") {
|
||
return year;
|
||
} else if (format == "m") {
|
||
return month;
|
||
}
|
||
else if (format == "d") {
|
||
return date;
|
||
}
|
||
else if (format == "ymdhms") {
|
||
return year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second;
|
||
}
|
||
}
|
||
|
||
|
||
//将时间撮转成日期时间格式
|
||
//str 时间撮
|
||
//format 日期时间格式:如年月日用:ymd ; 年月日时分秒用:ymdhms;
|
||
function getTimeByStamp(str, format) {
|
||
if (str == null || str == "")
|
||
return "";
|
||
if (str.indexOf("Date(") >= 0) {
|
||
str = parseInt(str.substr(6, 13));
|
||
}
|
||
var date = new Date(str);
|
||
Y = date.getFullYear();
|
||
M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);
|
||
D = date.getDate().toString().length < 2 ? "0" + date.getDate() : date.getDate();
|
||
h = date.getHours().toString().length < 2 ? "0" + date.getHours() : date.getHours();
|
||
m = date.getMinutes().toString().length < 2 ? "0" + date.getMinutes() : date.getMinutes();
|
||
s = date.getSeconds().toString().length < 2 ? "0" + date.getSeconds() : date.getSeconds();
|
||
if (format == "ymd") {
|
||
return Y + '-' + M + '-' + D;
|
||
}
|
||
else if (format == "ym") {
|
||
return Y + '-' + M;
|
||
}
|
||
else if (format == "ymdhms") {
|
||
return Y + '-' + M + '-' + D + ' ' + h + ':' + m + ':' + s;
|
||
}
|
||
else if (format == "ymdhm") {
|
||
return Y + '-' + M + '-' + D + ' ' + h + ':' + m;
|
||
}
|
||
else {
|
||
return Y + '-' + M + '-' + D + ' ' + h + ':' + m + ':' + s;
|
||
}
|
||
}
|
||
|
||
//图片信息转换
|
||
function getPicture(value) {
|
||
if (value == null) {
|
||
return '';
|
||
}
|
||
var fileInfos = JSON.parse(value);
|
||
return '<img src="' + jypath + fileInfos[0].url
|
||
+ '" style="width:25px;height:25px;"/>';
|
||
}
|
||
|
||
//关闭当前弹出框
|
||
function closeThisPop() {
|
||
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
|
||
parent.layer.close(index); //再执行关闭
|
||
}
|
||
|
||
//list页面批量删除的时候,调用这个方法时传参数过来
|
||
function search(isList) {
|
||
if (typeof isList != 'undefined') {
|
||
isReload = false;
|
||
}
|
||
else {
|
||
isReload = true;
|
||
}
|
||
$("#search").trigger("click");
|
||
}
|
||
|
||
//控制控件显示或者隐藏
|
||
//e1 控件名
|
||
//display true或false
|
||
function ctrlDisOrHidd(el, display) {
|
||
if (display == true) {
|
||
$(el).show();
|
||
} else {
|
||
$(el).hide();
|
||
}
|
||
}
|
||
|
||
//控制只能输入整数
|
||
function allowNumber(el) {
|
||
$(el).keyup(function () {
|
||
var tmptxt = $(this).val();
|
||
$(this).val(tmptxt.replace(/\D|^0/g, ''));
|
||
}).bind("paste", function () {
|
||
var tmptxt = $(this).val();
|
||
$(this).val(tmptxt.replace(/\D|^0/g, ''));
|
||
}).css("ime-mode", "disabled");
|
||
}
|
||
//控制只能输入数字和小数点
|
||
function allowNumAndDec(el) {
|
||
$(el).keyup(function () {
|
||
num($(this)[0]);
|
||
}).bind("paste", function () {
|
||
num($(this)[0]);
|
||
}).css("ime-mode", "disabled"); //CSS设置输入法不可用
|
||
}
|
||
|
||
function num(obj) {
|
||
obj.value = obj.value.replace(/[^\d.]/g, ""); //清除"数字"和"."以外的字符
|
||
obj.value = obj.value.replace(/^\./g, ""); //验证第一个字符是数字
|
||
obj.value = obj.value.replace(/\.{2,}/g, "."); //只保留第一个, 清除多余的
|
||
obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
|
||
obj.value = obj.value.replace(/^(0)*([1-9]+\..*)$/, '$2'); //删除整数位的冗余0
|
||
obj.value = obj.value.replace(/^(0)*([0]{1}\..*)$/, '$2'); //删除整数位的冗余0
|
||
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); //只能输入两个小数
|
||
}
|
||
|
||
function allowNumAndDecMoney(el) {
|
||
$(el).keyup(function () {
|
||
num1($(this)[0]);
|
||
}).css("ime-mode", "disabled"); //CSS设置输入法不可用
|
||
}
|
||
|
||
function num1(obj) {
|
||
var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
|
||
setTimeout(function () {
|
||
if (!reg.test(obj.value)) {
|
||
console.log(obj.value)
|
||
obj.value = ''
|
||
} else {
|
||
console.log(obj.value)
|
||
}
|
||
}, 2000);
|
||
}
|
||
|
||
// 去除undefined 空值 空格等
|
||
function trimUndefined(str) {
|
||
if (str == undefined) {
|
||
return ""
|
||
} else if (str == "undefined") {
|
||
return ""
|
||
} else if (str == null) {
|
||
return ""
|
||
} else if (str == "null") {
|
||
return ""
|
||
} else {
|
||
return str
|
||
}
|
||
}
|
||
|
||
// 去除undefined 空值 空格等
|
||
function requiredCheck(str) {
|
||
if (trimUndefined(str).length > 0) {
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
|
||
//layui table表格的单元行点击事件
|
||
//子页面用的时候,只需要判断layTableLineData这个值是否有就行了
|
||
function layTableLineClick(e, jsonStr) {
|
||
jsonStr = unescape(jsonStr);
|
||
jsonStr = JSON.parse(jsonStr);
|
||
delete jsonStr.LAY_TABLE_INDEX;
|
||
layTableLineData = jsonStr;
|
||
$(e).parent().find("tr:not(.last)").removeAttr('style');
|
||
//备用颜色值:#FFE48D #EAF2FF
|
||
$(e).css("background-color", "#b2f0e8");
|
||
}
|
||
|
||
//判断是否是IE浏览器 返回的值为-1 说明不是ie浏览器
|
||
function IEVersion() {
|
||
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
|
||
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器
|
||
var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器
|
||
var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
|
||
if (isIE) {
|
||
var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
|
||
reIE.test(userAgent);
|
||
var fIEVersion = parseFloat(RegExp["$1"]);
|
||
if (fIEVersion == 7) {
|
||
return 7;
|
||
} else if (fIEVersion == 8) {
|
||
return 8;
|
||
} else if (fIEVersion == 9) {
|
||
return 9;
|
||
} else if (fIEVersion == 10) {
|
||
return 10;
|
||
} else {
|
||
return 6;//IE版本<=7
|
||
}
|
||
} else if (isEdge) {
|
||
return 'edge';//edge
|
||
} else if (isIE11) {
|
||
return 11; //IE11
|
||
} else {
|
||
return -1;//不是ie浏览器
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 将form表单中的字段组合成json串。
|
||
* @formId {string} 查询表单的ID
|
||
* @others {json} 其它的json值
|
||
*/
|
||
function fromStrToJson(formId, others) {
|
||
var array = $("#" + formId).serializeArray();
|
||
if (array.length > 0) {
|
||
var newJson = {};
|
||
array.forEach(function (value, key, map) {
|
||
newJson[value.name] = $.trim(value.value);
|
||
});
|
||
if (others != "") {
|
||
newJson = $.extend(others, newJson);
|
||
}
|
||
return newJson;
|
||
}
|
||
else {
|
||
return "";
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 单文件或单图片上传
|
||
* @param {bool} 类型,是否自动上传,false的场合需要填入"bindAction"参数
|
||
* @param {string} 页面上的选择文件或图片的元素ID
|
||
* @param {string} 后台接口地址
|
||
* @param {string} 类型,是图片还是文件,值为file/images
|
||
* @param {string} 页面上触发上传的元素ID(如保存)
|
||
* @param {function} 选择文件后触发的方法,会回传两个参数(file, result),file是文件流,result是base64的图片(如果是图片)
|
||
* @param {function} 上传成功后的回调方法,返回json参数。
|
||
* @param {function} 上传失败后的回调方法,无返回参数。
|
||
* @param {int} 限制上传的文件或者图片大小,只能输入数字,传1代表只能上传1M的文件。
|
||
* @param {string} 限制上传的文件或者图片的后缀名,不传就默认。
|
||
*/
|
||
function fileAndImgUpload(auto, elemId, url, type, bindAction, selectFun, doneSuccessFun, doneErrorFun, limitSize, extname) {
|
||
var accept = "images";
|
||
var exts = "jpg|png|gif|bmp|jpeg";
|
||
//默认图片
|
||
if (type == "file") {
|
||
accept = "file";
|
||
exts = "doc|docx|zip|rar|7z|xls|xlsx|txt|pdf";
|
||
}
|
||
//拓展名
|
||
if (extname) {
|
||
exts = extname;
|
||
}
|
||
|
||
layupload.render({
|
||
elem: '#' + elemId,
|
||
url: url,
|
||
accept: accept,
|
||
exts: exts,
|
||
multiple: false,
|
||
auto: auto,
|
||
size: limitSize * 1024,//单位kb
|
||
bindAction: '#' + bindAction,
|
||
choose: function (obj) {
|
||
//读取本地文件
|
||
obj.preview(function (index, file, result) {
|
||
selectFun(file, result);
|
||
});
|
||
},
|
||
done: function (res, index, upload) {
|
||
if (res.code == 1) {
|
||
//上传成功
|
||
doneSuccessFun(res);
|
||
return;
|
||
}
|
||
this.error();
|
||
},
|
||
error: function () {
|
||
doneErrorFun();
|
||
}
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 下拉框选择树形结构列表
|
||
* @param {id} ztree对象的id
|
||
* @param {url} ztree对象的取值Url
|
||
* @param {param} ztree对象的取值条件
|
||
* @param {callback} 返回的值(onclick)
|
||
* @param {checkenable} 是否有复选框
|
||
* @param {selectNodeID} 默认选中的节点ID
|
||
*/
|
||
function ZtreeList(id, url, param, callback, checkenable, selectNodeID) {
|
||
$.ajax({
|
||
url: url,
|
||
data: param,
|
||
type: "POST",
|
||
aysnc: false,
|
||
success: function (data) {
|
||
if (data.length > 0) {
|
||
var setting = {
|
||
check: {
|
||
enable: checkenable
|
||
},
|
||
data: {
|
||
simpleData: {
|
||
enable: true,
|
||
//主键ID
|
||
idKey: "id",
|
||
//parentId
|
||
pIdKey: "pId",
|
||
//跟节点的parentId值(可以是0,也可以是其它值,但是传出来的数据的根节点的值也一定要是跟设置的值相等。)
|
||
rootPId: 0
|
||
},
|
||
key: {
|
||
icon: "icon",
|
||
checked: "IsChecked"
|
||
}
|
||
},
|
||
callback: {
|
||
//每一项的点击事件
|
||
onClick: callback,
|
||
//默认选中
|
||
onNodeCreated: function (event, treeId, treeNode) {
|
||
if (selectNodeID != null && selectNodeID != '') {
|
||
if (treeNode.id.indexOf(selectNodeID) >= 0) {
|
||
$("#" + treeNode.tId + "").find(">a").addClass("curSelectedNode");
|
||
$("#treeName").val(treeNode.name); //保存选中节点名称的input
|
||
$("#treeId").val(id);//保存选中节点id的input
|
||
}
|
||
}
|
||
},
|
||
}
|
||
};
|
||
//拿到数据初始化树形控件
|
||
var treeObj = $.fn.zTree.init($("#" + id), setting, data);
|
||
//展开所有(参数false为不展开所有)
|
||
treeObj.expandAll(true);
|
||
setSize();
|
||
arrowClick();
|
||
}
|
||
},
|
||
error: function (e) {
|
||
console.log(e);
|
||
}
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 点击下拉框显示树形离开隐藏树形
|
||
* @param {id} id
|
||
* @param {zNodes} 要传的数据
|
||
* @param {callback} 返回的值
|
||
*/
|
||
function SelectZtree(eventId, showId, hideId) {
|
||
$(eventId).click(function () {
|
||
if (!$(this).parent().find(showId).is(":animated"))
|
||
$(this).parent().find(showId).animate({ "height": "toggle" }, 300);
|
||
});
|
||
$(hideId).hover(function () { }, function () {
|
||
$(this).find(showId).hide();
|
||
});
|
||
}
|
||
|
||
//遮罩层
|
||
function LoadingModelPage(bFlg, appendDiv) {
|
||
if (appendDiv == undefined) appendDiv = "body";
|
||
|
||
if (bFlg == false) {
|
||
$("#loadingModelPage").remove();
|
||
return;
|
||
}
|
||
var is = $("#loadingModelPage").length > 0;
|
||
if (is == false) {
|
||
var load = '<div id="loadingModelPage" style="position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; background: rgba(0,0,0,0.3); z-index: 9999; display: block;"><div style="position: relative; left: 0px; top: 0px; width: 100%; height: 100%; display: flex; justify-content: center; align-items: Center;"><i class ="fa-li fa fa-spinner fa-spin" style="font-size: 45px; position: absolute; left: 50%; top: 50%; width: 50px; height: 50px; color: #fff; margin-left: -25px; margin-top: -25px;"></i><p style="color: #fff; margin-top: 70px;">数据正在处理中,请稍等。</p></div></div>';
|
||
$(appendDiv).append(load);
|
||
} else {
|
||
$("#loadingModelPage").show();
|
||
}
|
||
}
|
||
|
||
/*********************** 输入检查***********************/
|
||
//检查电话号码
|
||
function TelRegCheck(obj) {
|
||
var str = obj;
|
||
var reg = /^0\d{2,3}-?\d{7,8}$/;;
|
||
var flag = reg.test(str);
|
||
if (flag == false) {
|
||
reg = /^1\d{10}$/;
|
||
flag = reg.test(str);
|
||
}
|
||
if (flag == false) {
|
||
return "电话号码格式不正确";
|
||
}
|
||
return "";
|
||
}
|
||
|
||
//检查身份证号
|
||
function IdCardRegCheck(card) {
|
||
var msg = "身份证格式不正确";
|
||
|
||
var
|
||
vcity = {
|
||
11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古",
|
||
21: "辽宁", 22: "吉林", 23: "黑龙江", 31: "上海", 32: "江苏",
|
||
33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东",
|
||
41: "河南", 42: "湖北", 43: "湖南", 44: "广东", 45: "广西",
|
||
46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南",
|
||
54: "西藏", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏",
|
||
65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外"
|
||
},
|
||
|
||
|
||
//检查号码是否符合规范,包括长度,类型
|
||
isCardNo = function (card) {
|
||
//身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
|
||
var reg = /(^\d{15}$)|(^\d{17}(\d|X|x)$)/;
|
||
if (reg.test(card) === false) {
|
||
return false;
|
||
}
|
||
return true;
|
||
},
|
||
|
||
//取身份证前两位,校验省份
|
||
checkProvince = function (card) {
|
||
var province = card.substr(0, 2);
|
||
if (vcity[province] == undefined) {
|
||
return false;
|
||
}
|
||
return true;
|
||
},
|
||
|
||
//检查生日是否正确
|
||
checkBirthday = function (card) {
|
||
var len = card.length;
|
||
//身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
|
||
if (len == '15') {
|
||
var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;
|
||
var arr_data = card.match(re_fifteen);
|
||
var year = arr_data[2];
|
||
var month = arr_data[3];
|
||
var day = arr_data[4];
|
||
var birthday = new Date('19' + year + '/' + month + '/' + day);
|
||
return verifyBirthday('19' + year, month, day, birthday);
|
||
}
|
||
//身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
|
||
if (len == '18') {
|
||
var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9Xx])$/;
|
||
var arr_data = card.match(re_eighteen);
|
||
var year = arr_data[2];
|
||
var month = arr_data[3];
|
||
var day = arr_data[4];
|
||
var birthday = new Date(year + '/' + month + '/' + day);
|
||
return verifyBirthday(year, month, day, birthday);
|
||
}
|
||
return false;
|
||
},
|
||
|
||
//校验日期
|
||
verifyBirthday = function (year, month, day, birthday) {
|
||
var now = new Date();
|
||
var now_year = now.getFullYear();
|
||
//年月日是否合理
|
||
if (birthday.getFullYear() == year && (birthday.getMonth() + 1) == parseInt(month) && ((birthday.getDate() + 1) == parseInt(day) || (birthday.getDate()) == parseInt(day))) {
|
||
//判断年份的范围(3岁到100岁之间)
|
||
var time = now_year - year;
|
||
if (time >= 3 && time <= 100) {
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
return false;
|
||
},
|
||
|
||
//15位转18位身份证号
|
||
changeFivteenToEighteen = function (card) {
|
||
if (card.length == '15') {
|
||
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
|
||
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
|
||
var cardTemp = 0, i;
|
||
card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6);
|
||
for (i = 0; i < 17; i++) {
|
||
cardTemp += card.substr(i, 1) * arrInt[i];
|
||
}
|
||
card += arrCh[cardTemp % 11];
|
||
return card;
|
||
}
|
||
return card;
|
||
},
|
||
|
||
//校验位的检测
|
||
checkParity = function (card) {
|
||
//15位转18位
|
||
card = changeFivteenToEighteen(card);
|
||
var len = card.length;
|
||
if (len == '18') {
|
||
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
|
||
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
|
||
var cardTemp = 0, i, valnum;
|
||
for (i = 0; i < 17; i++) {
|
||
cardTemp += card.substr(i, 1) * arrInt[i];
|
||
}
|
||
valnum = arrCh[cardTemp % 11];
|
||
if (valnum == card.substr(17, 1)) {
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
return false;
|
||
};
|
||
//是否为空
|
||
if (!card) {
|
||
return msg;
|
||
}
|
||
card = card.toUpperCase();
|
||
//校验长度,类型
|
||
if (!isCardNo(card)) {
|
||
return msg;
|
||
}
|
||
//检查省份
|
||
if (!checkProvince(card)) {
|
||
return msg;
|
||
}
|
||
//校验生日
|
||
if (!checkBirthday(card)) {
|
||
return msg;
|
||
}
|
||
//检验位的检测
|
||
if (!checkParity(card)) {
|
||
return msg;
|
||
}
|
||
return "";
|
||
}
|
||
|
||
//检查EMAIL
|
||
function EmailRegCheck(obj) {
|
||
var str = obj;
|
||
var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
|
||
var flag = reg.test(str);
|
||
if (flag == false) {
|
||
return "邮箱格式不正确";
|
||
}
|
||
return "";
|
||
}
|
||
|
||
//检查邮编
|
||
function ZipCodeCheck(value) {
|
||
var re = /^[1-9][0-9]{5}$/
|
||
if (re.test(value) == false) {
|
||
return "邮政编码格式不正确!";
|
||
}
|
||
return "";
|
||
}
|
||
|
||
//序号检查
|
||
function checkOrderID(value, max) {
|
||
var maxvalue = 2147483647;
|
||
if (max != null) {
|
||
maxvalue = parseInt(max);
|
||
}
|
||
var nubmer = parseInt(value);
|
||
if (isNaN(nubmer) || nubmer <= 0 || !(/^\d+$/.test(nubmer))) {
|
||
return "只允许输入不超过" + maxvalue + "的整数!";
|
||
}
|
||
if (nubmer > maxvalue) {
|
||
return "输入值不能超过" + maxvalue;
|
||
}
|
||
return "";
|
||
}
|
||
|
||
//特殊字符转义
|
||
function escapeJquery(srcString) {
|
||
// 转义之后的结果
|
||
var escapseResult = srcString;
|
||
// jquery中的特殊字符,不是正则表达式中的特殊字符
|
||
var jquerySpecialChars = ["<", ">"];
|
||
for (var i = 0; i < jquerySpecialChars.length; i++) {
|
||
escapseResult = escapseResult.replace(new RegExp(jquerySpecialChars[i],
|
||
"g"), "\\" + jquerySpecialChars[i]);
|
||
}
|
||
return escapseResult;
|
||
}
|
||
|
||
//特殊字符检查
|
||
function checkSpecialChar(value) {
|
||
var reg = /<[a-zA-Z]/g;
|
||
var result = reg.test(value);
|
||
if (result == true) {
|
||
return "输入内容包含特殊字符";
|
||
}
|
||
return "";
|
||
}
|
||
|
||
//字符串长度检测汉字算两个
|
||
function getByteLen(value) {
|
||
var len = 0;
|
||
for (var i = 0; i < value.length; i++) {
|
||
var a = value.charAt(i);
|
||
if (a.match(/[^\x00-\xff]/ig) != null) {
|
||
len += 2;
|
||
}
|
||
else {
|
||
len += 1;
|
||
}
|
||
}
|
||
return len;
|
||
}
|
||
|
||
//文字特殊字符及最大长度检测
|
||
function checkStr(value, maxlength) {
|
||
if (value.trim() == "") {
|
||
return "";
|
||
}
|
||
if (maxlength) {
|
||
var len = getByteLen(value);
|
||
if (len > maxlength) {
|
||
return "输入文字超过最大长度" + maxlength + "!";
|
||
}
|
||
}
|
||
return checkSpecialChar(value);
|
||
}
|
||
/*********************** 输入检查结束***********************/
|
||
|
||
//上传
|
||
//formName: 表单名称
|
||
//ctrId :文件路径显示框ID
|
||
//Resourcetype: 总分类 SystemResource/ProjectResource
|
||
//ChildDir: 子目录分类 系统管理资源: Menu Project User; 项目资源:图纸 模型 视频 文档
|
||
//data: 包括附件表 OwerID,MainCate,SubCate等,如果需要写入附件表三个必须
|
||
//fileID:文件控[input type='file']件的名称 (name)
|
||
function UploadFile(formName, ctrId, Resourcetype, ChildDir, data, fileID) {
|
||
var formData = new FormData(document.forms.namedItem(formName));
|
||
//向form添加总分类 系统管理资源或者项目资源
|
||
formData.append(ConstBase.RESOURCE_TYPE_PARAMNAME, Resourcetype)
|
||
//向form添加子分类 如 系统管理资源下的用户头像,菜单logon等
|
||
formData.append(ConstBase.RESOURCE_TYPE_CHILDDIR, ChildDir)
|
||
if (data != null) {
|
||
//附件表数据
|
||
formData.append("Attachment", JSON.stringify(data));
|
||
}
|
||
|
||
//获取文件名
|
||
var filename = document.forms.namedItem(formName)[fileID].value.toLowerCase();
|
||
//附件表数据
|
||
formData.append("FileID", fileID);
|
||
var filenamearray = filename.split('\\');
|
||
filename = filenamearray[filenamearray.length - 1];
|
||
if (Resourcetype == ConstBase.RESOURCE_TYPE_SYSTEMP) { //图片文件格式检查
|
||
if (!CheckImge(filename)) {
|
||
$('#' + fileID).val('');
|
||
return;
|
||
}
|
||
}
|
||
else if (Resourcetype == ConstBase.RESOURCE_TYPE_PROJECT && !CheckProjectFile(filename, ChildDir)) { //项目文件格式检查
|
||
$('#' + fileID).val('');
|
||
return;
|
||
}
|
||
|
||
LoadingModelPage(true);
|
||
$.ajax({
|
||
url: "/Base/Upload/UploadFile",
|
||
type: 'POST',
|
||
cache: false,
|
||
data: formData,
|
||
headers: {
|
||
Accept: "multipart/form-data"
|
||
},
|
||
processData: false,
|
||
contentType: false,
|
||
dataType: "json",
|
||
success: function (rtndata) {
|
||
if (rtndata.code = Const.SUCCESS) {
|
||
$("#" + ctrId).val(rtndata.Message);
|
||
$("#" + ctrId).siblings("[type='text']").val(filename);
|
||
if ($("#" + ctrId).siblings("img") != undefined) {
|
||
$("#" + ctrId).siblings("img").attr("src", rtndata.Message);
|
||
}
|
||
return;
|
||
}
|
||
layWin.showMsg(rtndata.Message, 5);
|
||
return;
|
||
},
|
||
error: function (msg) {
|
||
layWin.showMsg("文件上传失败", 5);
|
||
return;
|
||
}, complete: function (data) {
|
||
LoadingModelPage(false);
|
||
}
|
||
});
|
||
}
|
||
|
||
//检查图片格式
|
||
function CheckImge(fileName) {
|
||
//分割上传文件字符串 userfile的value为上传文件的名称 类型为字符串。
|
||
var fileNameArr = fileName.split('.');
|
||
//文件名后缀
|
||
var suffix = fileNameArr[fileNameArr.length - 1];
|
||
//如果后缀为空
|
||
if (suffix == "") {
|
||
layWin.showMsg("图片后缀不能为空!", 5);
|
||
return false;
|
||
}
|
||
if (!(suffix == 'gif' || suffix == 'jpg' || suffix == 'bmp' || suffix == 'png' || suffix == 'jpeg')) {
|
||
layWin.showMsg("请选择格式为*.jpg、*.gif、*.bmp、*.png、*.jpeg 的图片", 5);
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
|
||
//检查文件格式
|
||
function CheckProjectFile(fileName, fileType) {
|
||
//分割上传文件字符串 userfile的value为上传文件的名称 类型为字符串。
|
||
var fileNameArr = fileName.split('.');
|
||
//或者document.getElementById("userfile") 也可以获得该dom元素
|
||
//文件名后缀
|
||
var suffix = fileNameArr[fileNameArr.length - 1];
|
||
//如果后缀为空
|
||
if (suffix == "") {
|
||
layWin.showMsg("文件后缀不能为空!", 5);
|
||
return false;
|
||
}
|
||
var allowExtensionName = "";
|
||
if (fileType == ConstListCode.CODETYPE_RESOURCETYPE_DWG) {
|
||
allowExtensionName = ConstBase.RESOURCEFILE_DWG_SUFFIX;
|
||
}
|
||
else if (fileType == ConstListCode.CODETYPE_RESOURCETYPE_RVT) {
|
||
allowExtensionName = ConstBase.RESOURCEFILE_MODEL_SUFFIX;
|
||
}
|
||
else if (fileType == ConstListCode.CODETYPE_RESOURCETYPE_VIDEO) {
|
||
allowExtensionName = ConstBase.RESOURCEFILE_DWG_VIDEO;
|
||
}
|
||
|
||
if (allowExtensionName == "") {
|
||
return true;
|
||
}
|
||
if (allowExtensionName.indexOf(suffix) < 0) {
|
||
layWin.showMsg("请选择格式为" + allowExtensionName + "的文件", 5);
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
|
||
//格式化文件大小
|
||
function formatFileSize(FileSize) {
|
||
if (FileSize == '') {
|
||
return FileSize;
|
||
}
|
||
var size = FileSize / 1024 / 1024;
|
||
if ((parseFloat(size) * 100) < 100.0) {
|
||
size = FileSize / 1024;
|
||
return Math.round(size * 100) / 100 + "Kb";
|
||
}
|
||
else {
|
||
return Math.round(size * 100) / 100 + "Mb";
|
||
}
|
||
}
|
||
|
||
function SetAuthority(btnStyle, btnId) {
|
||
//是否已经加载了权限
|
||
if ($("#AuthorityCodes") == undefined || $("#AuthorityCodes") == null) {
|
||
GetAuthority();
|
||
}
|
||
var data = $("#AuthorityCodes").val();
|
||
if (btnStyle != null && btnStyle != "") {
|
||
var styles = btnStyle.split(",");
|
||
for (var i = 0; i < styles.length; i++) {
|
||
$("." + styles[i]).each(function () {
|
||
var authorityCode = $(this).attr("data-authority");
|
||
if (authorityCode != undefined && authorityCode != null && authorityCode != "") {
|
||
if (data.indexOf(authorityCode) >= 0) {
|
||
$(this).show();
|
||
}
|
||
}
|
||
});
|
||
}
|
||
}
|
||
if (btnId != null && btnId != "") {
|
||
var ids = btnId.split(",");
|
||
for (var i = 0; i < ids.length; i++) {
|
||
$("#" + ids[i]).each(function () {
|
||
var authorityCode = $(this).attr("data-authority");
|
||
if (authorityCode != undefined && authorityCode != null && authorityCode != "") {
|
||
if (data.indexOf(authorityCode) >= 0) {
|
||
$(this).show();
|
||
}
|
||
}
|
||
});
|
||
}
|
||
}
|
||
}
|
||
|
||
//权限查询
|
||
function GetAuthority() {
|
||
var url = '/Base/Authority/GetAuthorityByUserID?rdo=' + Math.random();
|
||
$.ajax({
|
||
type: "post",
|
||
url: url,
|
||
contentType: "application/json;charset=utf-8",
|
||
async: false,
|
||
success: function (data) {
|
||
var authorityCode = "<input type='hidden' id='AuthorityCodes' name='AuthorityCodes' value='" + data + "' />";
|
||
$("body").append(authorityCode);
|
||
},
|
||
error: function (msg) {
|
||
return;
|
||
}
|
||
});
|
||
}
|
||
|
||
/*
|
||
附件查看使用
|
||
*/
|
||
//检查文件格式[附件信息]
|
||
function GetFileSuffix(fileName) {
|
||
//分割上传文件字符串 userfile的value为上传文件的名称 类型为字符串。
|
||
var fileNameArr = fileName.split('.');
|
||
//文件名后缀
|
||
var suffix = fileNameArr[fileNameArr.length - 1];
|
||
var PDF = ".pdf";
|
||
if (PDF.indexOf(suffix.toLowerCase()) >= 0) {
|
||
return true;
|
||
}
|
||
else {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
//遮罩层
|
||
function LoadingModelPage(bFlg, appendDiv) {
|
||
if (appendDiv == undefined) appendDiv = "body";
|
||
|
||
if (bFlg == false) {
|
||
$("#loadingModelPage").remove();
|
||
return;
|
||
}
|
||
var is = $("#loadingModelPage").length > 0;
|
||
if (is == false) {
|
||
var load = '<div id="loadingModelPage" style="position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; background: rgba(0,0,0,0.3); z-index: 9999; display: block;"><div style="position: relative; left: 0px; top: 0px; width: 100%; height: 100%; display: flex; justify-content: center; align-items: Center;"><i class ="fa-li fa fa-spinner fa-spin" style="font-size: 45px; position: absolute; left: 50%; top: 50%; width: 50px; height: 50px; color: #fff; margin-left: -25px; margin-top: -25px;"></i><p style="color: #fff; margin-top: 70px;">数据正在处理中,请稍等。</p></div></div>';
|
||
$(appendDiv).append(load);
|
||
} else {
|
||
$("#loadingModelPage").show();
|
||
}
|
||
}
|
||
|
||
//生成主键
|
||
var Guid = {
|
||
NewGuid: function () {
|
||
var guid = (this._G() + this._G() + "-" + this._G() + "-" + this._G() + "-" + this._G() + "-" + this._G() + this._G() + this._G()).toLowerCase();
|
||
return guid;
|
||
},
|
||
_G: function () {
|
||
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
|
||
}
|
||
};
|
||
|
||
//数字类型的值添加千位分隔符保留2位小数位
|
||
//value 值
|
||
//isToFixed 是否需要格式化小数位
|
||
//decimalNumber 需要保留的小数位数
|
||
//isSplitChar 是否需要千分位分割符
|
||
function milliFormat(value, isToFixed, decimalNumber, isSplitChar) {
|
||
if (value == "" || value == undefined || !value) {
|
||
return value;
|
||
} else {
|
||
if (/[^0-9\.]/.test(value)) return "invalid value";
|
||
if (isToFixed) {//需要保留2位小数
|
||
value = value.toFixed(decimalNumber).toString();
|
||
} else {
|
||
value = value.toString();
|
||
}
|
||
if (isSplitChar) {
|
||
//正则表达式实现千分位分隔符
|
||
var res = value.replace(/\d+/, function (n) { // 先提取整数部分
|
||
return n.replace(/(\d)(?=(\d{3})+$)/g, function ($1) {
|
||
return $1 + ",";
|
||
});
|
||
})
|
||
return res;
|
||
//JS自带的函数 toLocaleString也可以实现千分位分隔符
|
||
//value.toLocaleString();
|
||
} else {
|
||
return value;
|
||
}
|
||
|
||
}
|
||
} |