320 lines
8.2 KiB
JavaScript
320 lines
8.2 KiB
JavaScript
define(['jquery', 'layer', 'message'], function ($, layer) {
|
|
var sent = {
|
|
config: {
|
|
keyName: 'sent_'
|
|
},
|
|
init: function () {
|
|
if ($("form[role=form]").length > 0) {
|
|
require(['form'], function (form) {
|
|
form.api.bindevent($("form[role=form]"));
|
|
})
|
|
}
|
|
sent.api.bindButtonAction(); //绑定元素get/post请求操作
|
|
|
|
//全选的实现
|
|
$(".check-all").click(function() {
|
|
$(this).parents('table').find('tbody td input[type=checkbox]').prop("checked", this.checked);
|
|
});
|
|
$("table tbody td input[type=checkbox]").click(function() {
|
|
var checked = true;
|
|
$("table tbody td input[type=checkbox]").each(function(i) {
|
|
if (!this.checked) {
|
|
checked = false;
|
|
}
|
|
});
|
|
$(".check-all").prop("checked", checked);
|
|
});
|
|
},
|
|
msg: function (text, type) {
|
|
text = (type == 'success') ? text + ' 页面即将自动跳转~' : text;
|
|
if (typeof type != 'undefined') {
|
|
var message = $.messager.show(text, {
|
|
placement: 'bottom',
|
|
type: type
|
|
});
|
|
} else {
|
|
var message = $.messager.show(text, {
|
|
placement: 'bottom'
|
|
})
|
|
}
|
|
message.show();
|
|
},
|
|
parseUrl: function (url) {
|
|
if (url.indexOf("?") === -1) {
|
|
return {};
|
|
}
|
|
url = decodeURIComponent(url);
|
|
var query = url.split("?")[1];
|
|
var queryArr = query.split("&");
|
|
var obj = {};
|
|
queryArr.forEach(function (item) {
|
|
var key = item.split("=")[0];
|
|
var value = item.split("=")[1];
|
|
obj[key] = decodeURIComponent(value);
|
|
});
|
|
return obj;
|
|
},
|
|
store: {
|
|
set: function (params = {}) {
|
|
var {
|
|
name,
|
|
content,
|
|
type
|
|
} = params;
|
|
name = sent.config.keyName + name
|
|
var obj = {
|
|
dataType: typeof (content),
|
|
content: content,
|
|
type: type,
|
|
datetime: new Date().getTime()
|
|
}
|
|
if (type) window.sessionStorage.setItem(name, JSON.stringify(obj));
|
|
else window.localStorage.setItem(name, JSON.stringify(obj));
|
|
},
|
|
get: function (params = {}) {
|
|
var {
|
|
name,
|
|
debug
|
|
} = params;
|
|
name = sent.config.keyName + name
|
|
var obj = {},
|
|
content;
|
|
obj = window.sessionStorage.getItem(name);
|
|
if (sent.utils.validatenull(obj)) obj = window.localStorage.getItem(name);
|
|
if (sent.utils.validatenull(obj)) return;
|
|
try {
|
|
obj = JSON.parse(obj);
|
|
} catch (error) {
|
|
return obj;
|
|
}
|
|
if (debug) {
|
|
return obj;
|
|
}
|
|
if (obj.dataType == 'string') {
|
|
content = obj.content;
|
|
} else if (obj.dataType == 'number') {
|
|
content = Number(obj.content);
|
|
} else if (obj.dataType == 'boolean') {
|
|
content = eval(obj.content);
|
|
} else if (obj.dataType == 'object') {
|
|
content = obj.content;
|
|
}
|
|
return content;
|
|
},
|
|
remove: function (params = {}) {
|
|
let {
|
|
name,
|
|
type
|
|
} = params;
|
|
name = sent.config.keyName + name
|
|
if (type) {
|
|
window.sessionStorage.removeItem(name);
|
|
} else {
|
|
window.localStorage.removeItem(name);
|
|
}
|
|
},
|
|
all: function (params = {}) {
|
|
let list = [];
|
|
let {
|
|
type
|
|
} = params;
|
|
if (type) {
|
|
for (let i = 0; i <= window.sessionStorage.length; i++) {
|
|
list.push({
|
|
name: window.sessionStorage.key(i),
|
|
content: getStore({
|
|
name: window.sessionStorage.key(i),
|
|
type: 'session'
|
|
})
|
|
})
|
|
}
|
|
} else {
|
|
for (let i = 0; i <= window.localStorage.length; i++) {
|
|
list.push({
|
|
name: window.localStorage.key(i),
|
|
content: getStore({
|
|
name: window.localStorage.key(i),
|
|
})
|
|
})
|
|
|
|
}
|
|
}
|
|
return list;
|
|
},
|
|
clear: function (params = {}) {
|
|
let {
|
|
type
|
|
} = params;
|
|
if (type) {
|
|
window.sessionStorage.clear();
|
|
} else {
|
|
window.localStorage.clear()
|
|
}
|
|
}
|
|
},
|
|
events: {
|
|
//请求成功的回调
|
|
onAjaxSuccess: function (ret, onAjaxSuccess) {
|
|
var data = typeof ret.data !== 'undefined' ? ret.data : null;
|
|
var msg = typeof ret.msg !== 'undefined' && ret.msg ? ret.msg : __('Operation completed');
|
|
|
|
if (typeof onAjaxSuccess === 'function') {
|
|
var result = onAjaxSuccess.call(this, data, ret);
|
|
if (result === false)
|
|
return;
|
|
}
|
|
sent.msg(msg, 'success');
|
|
},
|
|
//请求错误的回调
|
|
onAjaxError: function (ret, onAjaxError) {
|
|
var data = typeof ret.data !== 'undefined' ? ret.data : null;
|
|
if (typeof onAjaxError === 'function') {
|
|
var result = onAjaxError.call(this, data, ret);
|
|
if (result === false) {
|
|
return;
|
|
}
|
|
}
|
|
sent.msg(ret.msg, 'error');
|
|
},
|
|
//服务器响应数据后
|
|
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: {
|
|
//发送Ajax请求
|
|
ajax: function (options, success, error) {
|
|
options = typeof options === 'string' ? {
|
|
url: options
|
|
} : options;
|
|
var index;
|
|
if (typeof options.loading === 'undefined' || options.loading) {
|
|
index = layer.load(options.loading || 0);
|
|
}
|
|
options = $.extend({
|
|
type: "POST",
|
|
dataType: "json",
|
|
success: function (ret) {
|
|
index && layer.close(index);
|
|
ret = sent.events.onAjaxResponse(ret);
|
|
if (ret.code === 1) {
|
|
sent.events.onAjaxSuccess(ret, success);
|
|
if (ret.url) {
|
|
setTimeout(function() {
|
|
location.href = ret.url;
|
|
}, 1500);
|
|
}
|
|
} else {
|
|
sent.events.onAjaxError(ret, error);
|
|
}
|
|
},
|
|
error: function (xhr) {
|
|
index && layer.close(index);
|
|
var ret = {
|
|
code: xhr.status,
|
|
msg: xhr.statusText,
|
|
data: null
|
|
};
|
|
sent.events.onAjaxError(ret, error);
|
|
}
|
|
}, options);
|
|
return $.ajax(options);
|
|
},
|
|
bindButtonAction: function(){
|
|
if($('a.ajax-get, button.ajax-get, a.ajax-post, button.ajax-post').length > 0){
|
|
$('a.ajax-get, button.ajax-get, a.ajax-post, button.ajax-post').click(function(e){
|
|
e.preventDefault();
|
|
var target, type, form, query;
|
|
var nead_confirm = false;
|
|
if ($(this).hasClass('confirm')) {
|
|
if (!confirm('确认要执行该操作吗?')) {
|
|
return false;
|
|
}
|
|
}
|
|
if ($(this).hasClass('ajax-post')) {
|
|
type = "post";
|
|
form = $('.' + $(this).data('form'));
|
|
if ($(this).attr('hide-data') === 'true') { //无数据时也可以使用的功能
|
|
form = $('.hide-data');
|
|
query = form.serialize();
|
|
} else if (form.get(0) == undefined) {
|
|
return false;
|
|
} else if (form.get(0).nodeName == 'FORM') {
|
|
if ($(this).attr('url') !== undefined) {
|
|
target = $(this).attr('url');
|
|
} else {
|
|
target = form.get(0).action;
|
|
}
|
|
query = form.serialize();
|
|
} else if (form.get(0).nodeName == 'INPUT' || form.get(0).nodeName == 'SELECT' || form.get(0).nodeName == 'TEXTAREA') {
|
|
query = form.serialize();
|
|
} else {
|
|
query = form.find('input,select,textarea').serialize();
|
|
}
|
|
}else{
|
|
type = "get";
|
|
}
|
|
if ((target = $(this).attr('href')) || (target = $(this).attr('url'))) {
|
|
sent.api.ajax({url: target, type: type, data: query})
|
|
}
|
|
})
|
|
}
|
|
}
|
|
},
|
|
utils: {
|
|
//比较2个对象是否相同
|
|
isObjEqual:function(o1,o2){
|
|
var props1 = Object.getOwnPropertyNames(o1);
|
|
var props2 = Object.getOwnPropertyNames(o2);
|
|
if (props1.length != props2.length) {
|
|
return false;
|
|
}
|
|
for (var i = 0,max = props1.length; i < max; i++) {
|
|
var propName = props1[i];
|
|
if (o1[propName] !== o2[propName]) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
},
|
|
validatenull: function (val) {
|
|
if (typeof val == 'boolean') {
|
|
return false;
|
|
}
|
|
if (typeof val == 'number') {
|
|
return false;
|
|
}
|
|
if (val instanceof Array) {
|
|
if (val.length == 0) return true;
|
|
} else if (val instanceof Object) {
|
|
if (JSON.stringify(val) === '{}') return true;
|
|
} else {
|
|
if (val == 'null' || val == null || val == 'undefined' || val == undefined || val == '') return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
};
|
|
window.sent = sent;
|
|
window.layer = layer;
|
|
|
|
sent.init();
|
|
return sent;
|
|
}); |