"use strict";!function(a){function d(d,e){this.element=d,this.settings=a.extend({},c,e),this._defaults=c,this._name=b,this.complete=!0,this.code=0,this.msg="",this.init()}var b="ajaxImageUpload",c={fileInput:"",postUrl:"",width:150,height:150,imageUrl:[],postData:{},allowZoom:!0,allowType:["gif","jpeg","jpg","bmp","png"],maxNum:5,maxSize:1,appendMethod:"before",before:a.noop,success:a.noop,error:a.noop,complete:a.noop,"delete":a.noop};d.prototype={init:function(){var e,b=this,c=a(this.element),d=b.settings.imageUrl;if(b.createSectionBox(),d.length>0)for(e=0;e<d.length;e++)b.createImageSection(d[e]);c.find("input[type=file]").on("change",function(){b.selectFile()})},selectFile:function(){var l,m,n,b=this,c=a(this.element),d=b.settings.maxNum,e=b.settings.maxSize,f=b.settings.postUrl,g=b.settings.fileInput,h=b.settings.before,i=b.settings.complete,j=c.find("input[type=file]"),k=c.find(".ggy-image-section");if(!f)return b.callError("300","没有配置postUrl"),b.resetFile(),!1;if(!g)return b.callError("301","没有配置fileInput"),b.resetFile(),!1;if(h&&h()===!1)return b.resetFile(),!1;if(l=j[0].files,l.length+k.length>d)return b.callError("302","上传图片数目不能超过"+d+"个"),b.resetFile(),!1;for(m=0;m<l.length;m++){if(n=l[m],!b.isAllowFile(n)){b.callError("303",n.name+" 图片类型不支持"),b.resetFile();break}if(b.getFileSize(n)>e){b.callError("304","上传图片不能超过"+e+"M,当前上传图片的大小为"+$fileSize.toFixed(2)+"M"),b.resetFile();break}b.createImageSection(),b.ajaxUpload(n)}1==b.complete&&i(),b.resetFile()},createSectionBox:function(){var b=this,c=a(this.element),d=b.settings.fileInput,e=a("<div class='ggy-section-box'></div>"),f=a("<section class='ggy-upload-section'></section>"),g=a("<section class='ggy-modal-section'></section>"),h=a("<i class='ggy-upload-icon'></i>"),i=a("<input type='file' name='"+d+"' class='ggy-upload-input' accept='image/*' multiple='multiple'>");e.appendTo(c),f.appendTo(e),h.appendTo(f),i.appendTo(f),g.appendTo(e),g.on("click",function(a){a.stopPropagation(),g.hide()})},createImageSection:function(b){var c=this,d=a(this.element),e=c.settings.width,f=c.settings.height,g=c.settings.fileInput,h=c.settings.allowZoom,i=c.settings.appendMethod,j=d.find(".ggy-section-box"),k=d.find(".ggy-upload-section"),l=a("<section class='ggy-image-section loading'></section>"),m=a("<div class='ggy-image-shade'></div>"),n=a("<input type='hidden' name='"+g+"[]' value='"+b+"'>"),o=a("<img class='ggy-image-show shade' src='"+b+"'/>");switch(b&&(o=a("<img class='ggy-image-show' src='"+b+"'/>")),l.css({width:e,height:f}),k.css({width:e,height:f}),i){case"before":j.prepend(l);break;case"after":k.before(l)}n.appendTo(l),o.appendTo(l),m.appendTo(l),c.createDeleteNode(l),b&&h===!0&&c.createZoomNode(l)},createDeleteNode:function(b){var c=this,d=a(this.element),e=d.find(".ggy-modal-section"),f=b.find(".ggy-image-show"),g=a("<i class='ggy-delete-icon'></i>"),h=a("<div class='ggy-modal-box ggy-delete-box'><p class='ggy-delete-tip'>您确定要删除吗?</p><p class='ggy-delete-btn'> <span class='ggy-confirm-btn'>确定</span><span class='ggy-cancel-btn'>取消</span></p></div>"),i=c.settings.delete;g.appendTo(b),b.find(".ggy-delete-icon").on("click",function(a){a.stopPropagation(),e.html(h),e.show()}),h.find(".ggy-confirm-btn").on("click",function(a){a.stopPropagation(),e.hide(),b.remove(),h.remove(),i(f.attr("src"))}),h.find(".ggy-cancel-btn").on("click",function(a){return a.stopPropagation(),e.hide(),!1})},createZoomNode:function(b){var c=a(this.element),d=b.find(".ggy-image-show"),e=c.find(".ggy-modal-section"),f=a("<i class='ggy-zoom-icon'></i>"),g=a("<div class='ggy-modal-box ggy-zoom-box'><img src=''/></div>");g.find("img").attr("src",d.attr("src")),f.appendTo(b),b.find(".ggy-zoom-icon").on("click",function(a){a.stopPropagation(),e.html(g),e.show()})},ajaxUpload:function(b){var k,l,m,n,c=this,d=a(this.element),e=c.settings.fileInput,f=c.settings.postData,g=c.settings.postUrl,h=c.settings.allowZoom,i=c.settings.success,j=c.settings.appendMethod;switch(j){case"before":k=d.find(".ggy-image-section:first"),l=d.find(".ggy-image-show:first");break;case"after":k=d.find(".ggy-image-section:last"),l=d.find(".ggy-image-show:last")}m=new FormData,m.append(e,b);for(n in f)m.append(n,f[n]);a.ajax({url:g,type:"post",async:!1,data:m,processData:!1,contentType:!1,dataType:"json",mimeType:"multipart/form-data",success:function(a){return 200!=a.code?(c.callError(a.code,a.msg),k.remove(),!1):(l.removeClass("shade").attr("src",a.src),k.find("input[type=hidden]").val(a.src),h===!0&&c.createZoomNode(k),c.complete*=!0,i(a),void 0)},error:function(a){c.callError(a.status,"AjaxUrl Service Error:"+a.statusText),k.remove()}})},isAllowFile:function(b){var c=this.settings.allowType,d=this.getFileExt(b);return-1!=a.inArray(d,c)?!0:!1},getFileExt:function(a){var b=a.name,c=b.lastIndexOf(".");return 1>c?"":b.substr(c+1).toLowerCase()},getFileSize:function(a){return a.size/1048576},resetFile:function(){a(this.element).find("input[type=file]").val(null)},callError:function(a,b){var c=this,d=c.settings.error;c.complete*=!1,c.code=a,c.msg=b,d(c)}},a.fn[b]=function(c){return this.each(function(){a.data(this,"plugin_"+b)||a.data(this,"plugin_"+b,new d(this,c))})}}(jQuery,window,document);
|