171 lines
6.6 KiB
JavaScript
171 lines
6.6 KiB
JavaScript
var CMS = {
|
|
|
|
events: {
|
|
//请求成功的回调
|
|
onAjaxSuccess: function (ret, onAjaxSuccess) {
|
|
var data = typeof ret.data !== 'undefined' ? ret.data : null;
|
|
var msg = typeof ret.msg !== 'undefined' && ret.msg ? ret.msg : '操作成功';
|
|
|
|
if (typeof onAjaxSuccess === 'function') {
|
|
var result = onAjaxSuccess.call(this, data, ret);
|
|
if (result === false)
|
|
return;
|
|
}
|
|
layer.msg(msg, {icon: 1});
|
|
},
|
|
//请求错误的回调
|
|
onAjaxError: function (ret, onAjaxError) {
|
|
var data = typeof ret.data !== 'undefined' ? ret.data : null;
|
|
var msg = typeof ret.msg !== 'undefined' && ret.msg ? ret.msg : '操作失败';
|
|
if (typeof onAjaxError === 'function') {
|
|
var result = onAjaxError.call(this, data, ret);
|
|
if (result === false) {
|
|
return;
|
|
}
|
|
}
|
|
layer.msg(msg, {icon: 2});
|
|
},
|
|
//服务器响应数据后
|
|
onAjaxResponse: function (response) {
|
|
try {
|
|
var ret = typeof response === 'object' ? response : JSON.parse(response);
|
|
if (!ret.hasOwnProperty('code')) {
|
|
$.extend(ret, {code: -2, msg: response, data: null});
|
|
}
|
|
} catch (e) {
|
|
var ret = {code: -1, msg: e.message, data: null};
|
|
}
|
|
return ret;
|
|
}
|
|
},
|
|
api: {
|
|
//获取修复后可访问的cdn链接
|
|
cdnurl: function (url) {
|
|
return /^(?:[a-z]+:)?\/\//i.test(url) ? url : Config.upload.cdnurl + url;
|
|
},
|
|
//发送Ajax请求
|
|
ajax: function (options, success, error) {
|
|
options = typeof options === 'string' ? {url: options} : options;
|
|
var st, index = 0;
|
|
st = setTimeout(function () {
|
|
index = layer.load();
|
|
}, 150);
|
|
options = $.extend({
|
|
type: "POST",
|
|
dataType: "json",
|
|
xhrFields: {
|
|
withCredentials: true
|
|
},
|
|
success: function (ret) {
|
|
clearTimeout(st);
|
|
index && layer.close(index);
|
|
ret = CMS.events.onAjaxResponse(ret);
|
|
if (ret.code === 1) {
|
|
CMS.events.onAjaxSuccess(ret, success);
|
|
} else {
|
|
CMS.events.onAjaxError(ret, error);
|
|
}
|
|
},
|
|
error: function (xhr) {
|
|
clearTimeout(st);
|
|
index && layer.close(index);
|
|
var ret = {code: xhr.status, msg: xhr.statusText, data: null};
|
|
CMS.events.onAjaxError(ret, error);
|
|
}
|
|
}, options);
|
|
return $.ajax(options);
|
|
},
|
|
//提示并跳转
|
|
msg: function (message, url) {
|
|
var callback = typeof url === 'function' ? url : function () {
|
|
if (typeof url !== 'undefined' && url) {
|
|
location.href = url;
|
|
}
|
|
};
|
|
layer.msg(message, {
|
|
icon: 1,
|
|
time: 2000
|
|
}, callback);
|
|
},
|
|
//表单提交事件
|
|
form: function (elem, success, error, submit) {
|
|
var delegation = typeof elem === 'object' && typeof elem.prevObject !== 'undefined' ? elem.prevObject : document;
|
|
$(delegation).on("submit", elem, function (e) {
|
|
var form = $(e.target);
|
|
if (typeof submit === 'function') {
|
|
if (false === submit.call(form, success, error)) {
|
|
return false;
|
|
}
|
|
}
|
|
$("[type=submit]", form).prop("disabled", true);
|
|
CMS.api.ajax({
|
|
url: form.attr("action"),
|
|
data: form.serialize(),
|
|
complete: function (xhr) {
|
|
var token = xhr.getResponseHeader('__token__');
|
|
if (token) {
|
|
$("input[name='__token__']").val(token);
|
|
}
|
|
$("[type=submit]", form).prop("disabled", false);
|
|
}
|
|
}, function (data, ret) {
|
|
//刷新客户端token
|
|
if (data && typeof data.token !== 'undefined') {
|
|
$("input[name='__token__']").val(data.token);
|
|
}
|
|
//自动保存草稿设置
|
|
var autosaveKey = $("textarea[data-autosave-key]", form).data("autosave-key");
|
|
if (autosaveKey && localStorage) {
|
|
localStorage.removeItem("autosave-" + autosaveKey);
|
|
$(".md-autosave", form).addClass("hidden");
|
|
}
|
|
if (typeof success === 'function') {
|
|
if (false === success.call(form, data, ret)) {
|
|
return false;
|
|
}
|
|
}
|
|
}, function (data, ret) {
|
|
//刷新客户端token
|
|
if (data && typeof data.token !== 'undefined') {
|
|
$("input[name='__token__']").val(data.token);
|
|
}
|
|
if (typeof error === 'function') {
|
|
if (false === error.call(form, data, ret)) {
|
|
return false;
|
|
}
|
|
}
|
|
});
|
|
return false;
|
|
});
|
|
},
|
|
//localStorage存储
|
|
storage: function (key, value) {
|
|
key = key.split('.');
|
|
|
|
var _key = key[0];
|
|
var o = JSON.parse(localStorage.getItem(_key));
|
|
|
|
if (typeof value === 'undefined') {
|
|
if (o == null)
|
|
return null;
|
|
if (key.length === 1) {
|
|
return o;
|
|
}
|
|
_key = key[1];
|
|
return typeof o[_key] !== 'undefined' ? o[_key] : null;
|
|
} else {
|
|
if (key.length === 1) {
|
|
o = value;
|
|
} else {
|
|
if (o && typeof o === 'object') {
|
|
o[key[1]] = value;
|
|
} else {
|
|
o = {};
|
|
o[key[1]] = value;
|
|
}
|
|
}
|
|
localStorage.setItem(_key, JSON.stringify(o));
|
|
}
|
|
}
|
|
}
|
|
} |