/**
* jquery全局函数封装
*/
(function ($) {
/**
* Jquery类方法
*/
$.fn.extend({
formPost: function (option) {
// 默认选项
var options = $.extend(true, {}, {
buildData: $.noop,
validation: $.noop,
success: $.noop,
url: ""
}, option);
// 表单元素
var $form = $(this), $btnSubmit = $('.j-submit');
$form.validator({
onValid: function (validity) {
$(validity.field).next('.am-alert').hide();
},
/**
* 显示错误信息
*/
onInValid: function (validity) {
var $field = $(validity.field)
, $group = $field.parent()
, $alert = $group.find('.am-alert');
if ($field.data('validationMessage') !== undefined) {
// 使用自定义的提示信息 或 插件内置的提示信息
var msg = $field.data('validationMessage') || this.getValidationMessage(validity);
if (!$alert.length) {
$alert = $('
').hide().appendTo($group);
}
$alert.html(msg).show();
}
},
submit: function () {
if (this.isFormValid() === true) {
// 自定义验证
if (options.validation.call(true) === false) {
return false;
}
$("#my-modal-loading").html('');
$("#my-modal-loading").modal('open');
// 禁用按钮, 防止二次提交
$btnSubmit.attr('disabled', true);
// 表单提交
$form.ajaxSubmit({
type: 'post',
dataType: 'json',
url: options.url,
data: options.buildData.call(true),
success: function (result) {
if (options.success === $.noop) {
result.code == 0 ? $.show_error(result.msg)
: $.show_success(result.msg, result.url);
} else {
options.success.call(true, result);
}
$("#my-modal-loading").modal('close');
$btnSubmit.attr('disabled', false);
}
});
}
return false;
}
});
},
/**
* 删除元素
*/
del: function (index, url, msg) {
$(this).click(function () {
var param = {};
param[index] = $(this).attr('data-id');
layer.confirm(msg ? msg : '你确定要删除吗?',{
icon: 0,
btn:['取消','确定'],
title: '友情提示',
skin: 'layui-layer-hema',
cancel : function(){
// 你点击右上角 X 回调
},
btn1:function(index,layero){
layer.close(index);
},
btn2:function(index){
$.post(url, param, function (result) {
if(typeof(result) == 'string'){
result = JSON.parse(result);
}
result.code === 1 ? $.show_success(result.msg, result.url) : $.show_error(result.msg);
});
layer.close(index);
},
end:function() {
//所有操作都会执行
}
})
});
},
/**
* 选择图片文件
*/
selectImages: function (option) {
var $this = this
// 配置项
, defaults = {
name: 'iFile' // input name
, imagesList: '.uploader-list' // 图片列表容器
, imagesItem: '.file-item' // 图片元素容器
, imageDelete: '.file-item-delete' // 删除按钮元素
, multiple: false // 是否多选
, limit: null // 图片数量 (如果存在done回调函数则无效)
, done: null // 选择完成后的回调函数
}
, options = $.extend({}, defaults, option);
// 显示文件库 选择文件
$this.fileLibrary({
type: 'image'
, done: function (data, $touch) {
// 判断回调参数是否存在, 否则执行默认
if (typeof options.done === 'function') {
return options.done(data, $touch);
}
// 新增图片列表
var list = options.multiple ? data : [data[0]];
var $html = $(template('tpl-file-item', {list: list, name: options.name}))
, $imagesList = $this.next(options.imagesList);
if (
options.limit > 0
&& $imagesList.find(options.imagesItem).length + list.length > options.limit
) {
layer.msg('图片数量不能大于' + options.limit + '张', {anim: 6});
return false;
}
// 注册删除事件
$html.find(options.imageDelete).click(function () {
$(this).parent().remove();
});
// 渲染html
options.multiple ? $imagesList.append($html) : $imagesList.html($html);
}
});
},
/**
* 封装:ajaxSubmit
*/
myAjaxSubmit: function (option) {
var $this = this;
var options = $.extend({}, {
type: 'post'
, dataType: 'json'
, url: ''
, data: {}
, success: $.noop
}, option);
$this.ajaxSubmit({
type: options.type,
dataType: options.dataType,
url: options.url,
data: options.data,
success: function (result) {
result.code === 1 ? $.show_success(result.msg, result.url)
: $.show_error(result.msg);
}
});
}
});
/**
* Jquery全局函数
*/
$.extend({
/**
* 对象转URL
*/
urlEncode: function (data) {
var _result = [];
for (var key in data) {
var value = null;
if (data.hasOwnProperty(key)) value = data[key];
if (value.constructor === Array) {
value.forEach(function (_value) {
_result.push(key + "=" + _value);
});
} else {
_result.push(key + '=' + value);
}
}
return _result.join('&');
},
/**
* 操作成功弹框提示
*/
show_success: function (msg, url) {
layer.msg(msg, {
icon: 1
, time: 1200
// , anim: 1
, shade: 0.5
, end: function () {
(url !== undefined && url.length > 0) ? window.location = url : window.location.reload();
}
});
},
/**
* 操作失败弹框提示
*/
show_error: function (msg,reload) {
var time = reload ? 1200 : 0;
layer.alert(msg, {
title: '友情提示'
, icon: 2
, time: time
, anim: 6
, end: function () {
reload && window.location.reload();
}
});
},
/**
* 文件上传 (单文件)
* 支持同一页面多个上传元素
* $.uploadImage({
* pick: '.upload-file', // 上传按钮
* list: '.uploader-list' // 缩略图容器
* });
*/
uploadImage: function (option) {
// 文件大小
var maxSize = option.maxSize !== undefined ? option.maxSize : 2
// 初始化Web Uploader
, uploader = WebUploader.create({
// 选完文件后,是否自动上传。
auto: true,
// 允许重复上传
duplicate: true,
// 文件接收服务端。
server: STORE_URL + 'upload/image',
// 选择文件的按钮。可选。
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
pick: {
id: option.pick,
multiple: false
},
// 文件上传域的name
fileVal: 'iFile',
// 图片上传前不进行压缩
compress: false,
// 文件总数量
// fileNumLimit: 1,
// 文件大小2m => 2097152
fileSingleSizeLimit: maxSize * 1024 * 1024,
// 只允许选择图片文件。
accept: {
title: 'Images',
extensions: 'gif,jpg,jpeg,bmp,png',
mimeTypes: 'image/*'
},
// 缩略图配置
thumb: {
quality: 100,
crop: false,
allowMagnify: false
},
// 文件上传header扩展
headers: {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest'
}
});
// 验证大小
uploader.on('error', function (type) {
// console.log(type);
if (type === "F_DUPLICATE") {
// console.log("请不要重复选择文件!");
} else if (type === "F_EXCEED_SIZE") {
alert('文件大小不可超过' + maxSize + "M " + '换个小点的文件吧!');
}
});
// 当有文件添加进来的时候
uploader.on('fileQueued', function (file) {
var $uploadFile = $('#rt_' + file.source.ruid).parent()
, $list = $uploadFile.next(option.list)
, $li = $(
'' +
'
![]()
' +
'
' +
'
' +
'
'
),
$img = $li.find('img'),
$delete = $li.find('.file-item-delete');
// 删除文件
$delete.on('click', function () {
uploader.removeFile(file);
$delete.parent().remove();
});
// $list为容器jQuery实例
$list.empty().append($li);
// 创建缩略图
// 如果为非图片文件,可以不用调用此方法。
// thumbnailWidth x thumbnailHeight 为 100 x 100
uploader.makeThumb(file, function (error, src) {
if (error) {
$img.replaceWith('不能预览');
return;
}
$img.attr('src', src);
}, 1, 1);
});
// 文件上传成功,给item添加成功class, 用样式标记上传成功。
uploader.on('uploadSuccess', function (file, response) {
if (response.code === 1) {
var $item = $('#' + file.id);
$item.addClass('upload-state-done')
.children('input[type=hidden]').val(response.data.path);
} else
uploader.uploadError(file);
});
// 文件上传失败
uploader.on('uploadError', function (file) {
uploader.uploadError(file);
});
// 显示上传出错信息
uploader.uploadError = function (file) {
var $li = $('#' + file.id),
$error = $li.find('div.error');
// 避免重复创建
if (!$error.length) {
$error = $('').appendTo($li);
}
$error.text('上传失败');
};
},
/**
* 显示模态对话框
* @param option
*/
showAction: function (option) {
var options = $.extend({}, {
title: ''
,type: 1
, area: '340px'
, closeBtn: 1
, content: ''
, btn: ['取消', '确定']
, btnAlign: 'c'
, success: $.noop
, btn2: $.noop
, uCheck: false
}, option); //合并数组对象
var $content;
layer.open({
type: options.type, //0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
title: options.title, //标题
skin: 'layui-layer-hema',//皮肤
closeBtn: options.closeBtn, //右上角关闭按钮是否显示 1显示0不显示
area: options.area, //宽高
offset: 'auto', //垂直水平居中
anim: 1, //设置动画
shade: 0.3, //遮罩透明度
btn: options.btn,
btnAlign: options.btnAlign,
content: options.content,
uCheck: options.uCheck,
success: function (layero) {
$content = layero.find('.layui-layer-content');
if (options.uCheck) {
$content.find("input[type='checkbox'],input[type='radio']").uCheck();
}
options.success.call(true, $content);
},
yes: function (index) {
layer.close(index);
},
btn2: function (index) {
if (options.btn2.call(true, $content)) {
layer.close(index);
}
}
});
},
/**
* 获取指定天数的日期
* @param day
* @returns {string}
*/
getDay: function (day) {
var today = new Date();
var targetdaySeconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
today.setTime(targetdaySeconds); //注意,这行是关键代码
return today.getFullYear() + "-" + $.doHandleMonth(today.getMonth() + 1) + "-" + $.doHandleMonth(today.getDate());
},
/**
* 月份补0
* @param month
* @returns {*}
*/
doHandleMonth: function (month) {
return (month.toString().length === 1) ? ("0" + month) : month;
}
});
})(jQuery);
/**
* app.js
*/
$(function () {
/**
* 点击侧边开关 (一级)
*/
$('.switch-button').on('click', function () {
var header = $('.tpl-header'), wrapper = $('.tpl-content-wrapper'), leftSidebar = $('.left-sidebar');
if (leftSidebar.css('left') !== "0px") {
header.removeClass('active') && wrapper.removeClass('active') && leftSidebar.css('left', 0);
} else {
header.addClass('active') && wrapper.addClass('active') && leftSidebar.css('left', -280);
}
});
/**
* 侧边栏开关 (二级)
*/
$('.sidebar-nav-sub-title').click(function () {
$(this).toggleClass('active');
});
// 刷新按钮
$('.refresh-button').click(function () {
window.location.reload();
});
// 删除图片 (数据库已有的)
$('.file-item-delete').click(function () {
var $this = $(this)
, noClick = $this.data('noClick')
, name = $this.data('name');
if (noClick) {
return false;
}
layer.confirm('您确定要删除该' + (name ? name : '图片') + '吗?',{
icon: 0,
btn:['取消','确定'],
title: '友情提示',
skin: 'layui-layer-hema',
cancel : function(){
// 你点击右上角 X 回调
},
btn1:function(index,layero){
layer.close(index);
},
btn2:function(index){
$this.parent().remove();
layer.close(index);
},
end:function() {
//所有操作都会执行
}
})
});
});