/**
|
* ajax请求的代理类 1、系统在一般情况都使用本类进行ajax请求不在使用原生的或者jQuery的ajax 原因:
|
* 1、本类对异常信息,错误信息进行了信息提示处理 2、本类与服务器端的AjaxResult.java 对应,接收的数据格式是AjaxResult.java
|
* 的json格式数据
|
*
|
* author :姜友瑶; 2016-06-02
|
*/
|
var AjaxProxy = {
|
|
requst: function (option) {
|
// 是否开启遮罩
|
var params = {
|
url: '',
|
type: 'post',
|
dataType: 'json',
|
data: {},
|
cache: false,
|
async: true,
|
callback: null,
|
contentType: 'application/json;charset=utf-8',
|
processData: true,
|
showLoad: true,
|
showLoadTip: '提交中',
|
};
|
|
params = $.extend(params, option);
|
if (params.contentType && params.contentType.indexOf('application/json') > -1 && params.type == 'post') {
|
params.data = JSON.stringify(params.data)
|
}
|
let loading = {};
|
if (params.showLoad) {
|
layer.open({type: 2});
|
}
|
|
return xhr = $.ajax({
|
url: params.url,
|
type: params.type,
|
data: params.data,
|
dataType: params.dataType,
|
contentType: params.contentType,
|
processData: params.processData,
|
async: params.async,
|
success: function (data) {
|
if (params.showLoad) {
|
layer.closeAll();
|
}
|
if (data.status && data.status != '200') {
|
if (data.info) {
|
layer.open({
|
content: data.info
|
,skin: 'msg'
|
,time: 2 //2秒后自动关闭
|
});
|
}
|
} else {
|
params.callback && params.callback(data);
|
}
|
},
|
error: function (XMLHttpRequest, textStatus, errorThrown) {
|
layer.open({
|
content: '网络连接失败,请稍后重试!'
|
,skin: 'msg'
|
,time: 2 //2秒后自动关闭
|
});
|
if (params.showLoad) {
|
layer.closeAll();
|
}
|
},
|
});
|
}
|
|
}
|
|
|
var MTools = {
|
|
|
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
|
},
|
|
|
|
/** 图片在上传的时候,需要在页面嵌套一个jspifram页面 页面处理完图片后服务器返回脚本代码控制父窗口显示图片。 */
|
upolad : function(img_id, file_id) {
|
if ($("#" + file_id).val() == '') {
|
layer.open({
|
content: '请先选择要上传的文件!'
|
,skin: 'msg'
|
,time: 2 //2秒后自动关闭
|
});
|
return;
|
}
|
$("#" + img_id).attr("src", basePath + "/plat/images/loading.gif");
|
$("#" + img_id).show();
|
},
|
|
|
|
|
/**
|
* 初始化文件上传
|
* 需要传一个input框的选择器,支持多个文件同时初始化
|
* 编辑时input框value值应该是图片是src路径,这样控件会自动创建图片回显
|
* 实现原理:在页面创建一个ifram用于提交文件,每个input框会对应的创建一个隐藏input,把原始
|
* input的值复制给隐藏input这个input会用于最后的提交。
|
* 还会创建一个form表单,表单中有一个文件选择框。
|
* 点击原始input会触发文件选择器的点击事件弹出文件选择框。
|
* 文件上传后会改变隐藏input框架的value值。
|
* by jyy
|
*/
|
initImgUpload:function(selected){
|
|
//文件类型
|
var fileTypes="gif,jpg,jpeg,png,bmp";
|
//最大5M
|
var maxSize=5*1024*1024;
|
|
//在界面创建一个iframe
|
var iframe = $('<iframe name="blankFrame" ></iframe>');
|
iframe.css("display", "none");
|
$("body").append(iframe);
|
$(selected).each(function(i){
|
//文件类型
|
var fileTypes="gif,jpg,jpeg,png,bmp";
|
var $input=$(this);
|
var id=$input.attr("id");
|
var hideInputId=id+"_hide";
|
if($input.data("filetypes")){
|
fileTypes=$input.data("filetypes");
|
}
|
//创建一个隐藏控件,如果input有值创建一个img
|
if($input.val()!=null &&$input.val().length>0 ){
|
$input.next("a").after("<img onclick='MTools.removeUpload(this,\""+hideInputId+"\")' id='"+$input.attr("id")+"_img' class='loadingbig' src='"+$input.val()+"' />")
|
$input.before("<input name='"+$input.attr("name")+"' value='"+$input.val()+"' id='"+$input.attr("id")+"_hide' style='display:none;' /> ")
|
}else{
|
$input.before("<input name='"+$input.attr("name")+"' id='"+hideInputId+"' style='display:none;' /> ")
|
}
|
//删除控件本身的name属性
|
$input.removeAttr("name");
|
//添加点form表单
|
var form = $('<form method="post" enctype="multipart/form-data" target="blankFrame" style="display:none;" ></form>')
|
form.attr("action",basePath+"/admin/uploadFile/doUpload?callBack=MTools.uploadCallBack&inputId="+id);
|
//创建一个file文件
|
var file=$('<input type="file" multiple name="file-1" />');
|
form.append(file);
|
//文件改变就提交
|
file.change(function(){
|
var filePath = file.val();
|
var fileName = filePath.substring(filePath.lastIndexOf("\\") + 1,
|
filePath.length);
|
//文件类型判断
|
var photoExt=fileName.substr(fileName.lastIndexOf(".")+1).toLowerCase();//获得文件后缀名
|
if(fileTypes.indexOf(photoExt)<0){
|
|
layer.open({
|
content: "允许的文件类型是:"+fileTypes
|
,skin: 'msg'
|
,time: 2 //2秒后自动关闭
|
});
|
|
return false;
|
}
|
|
var obj=file.get(0);
|
var fileSize = 0;
|
fileSize = obj.files[0].size;
|
if(fileSize>=maxSize){
|
layer.open({
|
content: "照片最大尺寸为"+maxSize/1024+"KB,请重新选择文件!"
|
,skin: 'msg'
|
,time: 2 //2秒后自动关闭
|
});
|
|
return false;
|
}
|
//校验通过开始上传
|
|
//改变输入框字符
|
$input.val(fileName);
|
//创建加载图
|
if($input.next().next().is("img")){
|
$input.next().next().attr("src" ,basePath+"/images/loadingbig.gif");
|
}else{
|
$input.next("a").after("<img onclick='MTools.removeUpload(this,\""+hideInputId+"\")' class='loadingbig' src='"+basePath+"/images/loadingbig.gif' />")
|
}
|
//提交表单
|
form.submit();
|
});
|
// 绑定事件
|
$input.click(function(){
|
file.trigger("click");
|
});
|
$input.next("a").click(function(){
|
file.trigger("click");
|
});
|
//把组件添加到文档中
|
$("body").append(form);
|
});
|
|
|
},
|
|
/**
|
* 删除上传图片
|
*/
|
removeUpload:function(node,inputId){
|
$(node).remove();
|
var textId=inputId.substring(0,inputId.indexOf("_"));
|
$("#"+textId).val("");
|
$("#"+inputId).val("");
|
|
},
|
/**
|
* 上传服务器回调函数
|
*/
|
uploadCallBack:function(id,path){
|
console.log(path);
|
$("#"+id+"_hide").val(path);
|
$("#"+id).next().next().attr("src" ,path);
|
$("#showImgUrl").hide();
|
},
|
|
|
|
/** 页面定向 */
|
redirect : function(url) {
|
window.location.href = url;
|
},
|
|
|
|
|
}
|