123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467 |
- /**
- * jquery全局函数封装
- */
- (function ($) {
- /**
- * Jquery类方法
- */
- $.fn.extend({
- superForm: function (option) {
- // 默认选项
- var options = $.extend(true, {}, {
- buildData: $.noop,
- validation: $.noop,
- success: $.noop
- }, option);
- // 表单元素
- var $form = $(this), $btnSubmit = $('.j-submit');
- $form.validator({
- onValid: function (validity) {
- $(validity.field).next('.am-alert').hide();
- },
- /**
- * 显示错误信息
- * @param validity
- */
- 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 = $('<div class="am-alert am-alert-danger"></div>').hide().appendTo($group);
- }
- $alert.html(msg).show();
- }
- },
- submit: function () {
- if (this.isFormValid() === true) {
- // 自定义验证
- if (options.validation.call(true) === false) {
- return false;
- }
- // 禁用按钮, 防止二次提交
- $btnSubmit.attr('disabled', true);
- // 表单提交
- $form.ajaxSubmit({
- type: 'post',
- dataType: 'json',
- data: options.buildData.call(true),
- success: function (result) {
- if (options.success === $.noop) {
- result.code === 1 ? $.show_success(result.msg, result.url)
- : $.show_error(result.msg);
- } else {
- options.success.call(true, result);
- }
- $btnSubmit.attr('disabled', false);
- }
- });
- }
- return false;
- }
- });
- },
- /**
- * 删除元素
- */
- delete: function (index, url, msg) {
- $(this).click(function () {
- var param = {};
- param[index] = $(this).attr('data-id');
- layer.confirm(msg ? msg : '确定要删除吗?', {title: '友情提示'}
- , function (index) {
- $.post(url, param, function (result) {
- result.code === 1 ? $.show_success(result.msg, result.url)
- : $.show_error(result.msg);
- });
- layer.close(index);
- }
- );
- });
- },
- /**
- * 选择图片文件
- * @param option
- */
- 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
- * @param option
- */
- 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('&');
- },
- /**
- * 操作成功弹框提示
- * @param msg
- * @param url
- */
- 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();
- }
- });
- },
- /**
- * 操作失败弹框提示
- * @param msg
- * @param 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 = $(
- '<div id="' + file.id + '" class="file-item thumbnail">' +
- '<img>' +
- '<input type="hidden" name="' + $uploadFile.data('name') + '" value="">' +
- '<i class="iconfont icon-shanchu file-item-delete"></i>' +
- '</div>'
- ),
- $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('<span>不能预览</span>');
- 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 = $('<div class="error"></div>').appendTo($li);
- }
- $error.text('上传失败');
- };
- },
- /**
- * 显示模态对话框
- * @param option
- */
- showModal: function (option) {
- var options = $.extend({}, {
- title: ''
- , area: '340px'
- , closeBtn: 1
- , content: ''
- , btn: ['确定', '取消']
- , btnAlign: 'r'
- , success: $.noop
- , yes: $.noop
- , uCheck: false
- }, option);
- var $content;
- layer.open({
- type: 1
- , title: options.title
- , closeBtn: options.closeBtn
- , area: options.area
- , offset: 'auto'
- , anim: 1
- , shade: 0.3
- , btn: options.btn
- , btnAlign: options.btnAlign
- , content: options.content
- , 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) {
- if (options.yes.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;
- },
- /**
- * 二维数据查找
- * @param array
- * @param key
- * @param value
- * @returns {*}
- */
- arrayFilterMultiple: function (array, key, value) {
- for (var index in array) {
- if (array[index][key] == value) return index;
- }
- return false;
- }
- });
- })(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 : '图片') + '吗?', {
- title: '友情提示'
- }, function (index) {
- $this.parent().remove();
- layer.close(index);
- });
- });
- });
|