upload.js 9.5 KB
var uploadList = [];
var totalFileLength=0;
var afterMethod;
var uploadOptionList = [];
var uploadvm;

$(document).ready(function() {
  if(uploadvm){
	uploadvm.$watch('onReady', function(){
		var uploadFiles = $('.uploadFile');
		var key;
		for(var i=0;i<uploadFiles.length;i++){
			key=$(uploadFiles[i]).attr('key');
			initUpload($(uploadFiles[i]).attr('fileId'),key);
		}
		var uploadImage = $('.uploadImage');
		for(var i=0;i<uploadImage.length;i++){
			$(uploadImage[i]).attr("src",$(uploadImage[i]).attr("src2"));
		}
		
//		//代表图片勾选初始化
//		var imgDefaultRadio = $('.imgDefaultRadio');
//		for(var i=0;i<imgDefaultRadio.length;i++){
//			if($(imgDefaultRadio[i]).attr("imgSrc")==0){
////				$(imgDefaultRadio[i]).attr('checked','checked');
//				$(imgDefaultRadio[i]).click();
//				break;
//			}
//		}
		
		var defaultValueInit =  $('.defaultValueInit');
		for(var i=0;i<defaultValueInit.length;i++){
			if($(defaultValueInit[i]).val()==''||$(defaultValueInit[i]).val()=='null'){
				$('.imgDefaultRadio_'+$(defaultValueInit[i]).attr('key')+'_0').click();
			}else{
				$('.imgDefaultRadio_'+$(defaultValueInit[i]).attr('key')+'_'+$(defaultValueInit[i]).val()).click();
			}
		}
		
		//初始化单档下载
		var singleFileDownload = $('.singleFileDownload');
		for(var i=0;i<singleFileDownload.length;i++){
			if($(singleFileDownload[i]).attr("fileurl")!=undefined&&$(singleFileDownload[i]).attr("fileurl")!=''){
				$(singleFileDownload[i]).css('display','');
			}
		}
	})
  }
});

function addUploadFile(uploadKey){
	if(uploadvm[uploadKey].length>=uploadOptionList[uploadKey].fileCountLimit){
		alert('最多上传'+uploadOptionList[uploadKey].fileCountLimit+'个文件');
		return;
	}
	uploadvm[uploadKey].push({attachPath:'',attachName:''});
	var uploadFiles = $('.'+uploadKey+'_uploadFile');
	initUpload($(uploadFiles[uploadFiles.length-1]).attr('fileId'),uploadKey);
}

function removeUploadFile(obj,uploadKey){
	var box = bootbox.confirm({
		size: "small",
	    message: "确定要删除?",
	    callback: function (result) {
	      if(result){
	    	  var index = $(obj).attr('index');
	  		uploadvm[uploadKey].splice(index,1);		
	      }
	    }
	});
	box.css({
	  'top': '55%',
	  'margin-top': function () {
	    return -(box.height() / 2);
	  }
	});	
	
	
}
		
function initUpload(typeId,uploadKey){
  var uploadOption={
    // swf文件路径
    swf:  basePath+'/resource/webuploader/dist/Uploader.swf',
    // 文件接收服务端。
    server: basePath+"/fileUpload",
    // 选择文件的按钮。可选。
    // 内部根据当前运行是创建,可能是input元素,也可能是flash.
    pick: {
    	id:'#selFile_'+uploadKey+"_"+typeId,
    	multiple:true//uploadOptionList[uploadKey].isMulti
    },
    // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
    resize: false,
    isupload:false,
    isuploadFinish:false,
    auto:true,
    thumb:{
    	width: 150,
        height: 150,
        quality: 100,
        allowMagnify: false,
        crop: false,
        type: ''
    },
    accept:{
        title: 'Images',
        extensions: uploadOptionList[uploadKey].accept,
        mimeTypes: uploadOptionList[uploadKey].mimeTypes
    },
    fileSingleSizeLimit:eval(uploadOptionList[uploadKey].fileSizeLimit),
    formData:{
    	fileType:'',
    	dir:uploadOptionList[uploadKey].savaDir
    },
    onFileQueued:function( file ) {
    	if(uploadOptionList[uploadKey].isMulti){//多档
    		if(uploadvm[uploadKey].length>=uploadOptionList[uploadKey].fileCountLimit){
    			this.removeFile( file );
    			return;
    		}
    		if(uploadOptionList[uploadKey].mimeTypes.indexOf('image')>-1){//图片
    			this.makeThumb( file, function( error, ret ) {
    		        if ( error ) {
    		            $li.text('预览错误');
    		        } else {
    		        	$('#upload_single_img_'+uploadKey+"_"+file.id).attr('src',ret);
    		        }
    		    });
    		}else{
    			if(uploadvm[uploadKey].length>=uploadOptionList[uploadKey].fileCountLimit){
        			this.removeFile( file );
        			return;
        		}
    		}
    		uploadvm[uploadKey].push({attachPath:'',attachName:file.name,fileId:file.id});
    		$('#attachName_'+uploadKey+'_'+file.id).val(file.name);
    	}else{//单档
    		if(uploadOptionList[uploadKey].mimeTypes.indexOf('image')>-1){//图片
    			this.makeThumb( file, function( error, ret ) {
    		        if ( error ) {
    		            $li.text('预览错误');
    		        } else {
    		        	$('#upload_single_img_'+uploadKey).css("display","");
    		        	$('#upload_single_img_'+uploadKey).attr('src',ret);
    		        	$('#upload_single_img_'+uploadKey).attr('onerror','this.src="'+ret+'"');
    		        }
    		    });
    		}else{
    			$('#file_caption_name_'+uploadKey+"_"+typeId).html(file.name);
    			
    		}
    		$('#attachName_'+uploadKey+'_'+typeId).val(file.name);
    	}
    	$('#attachNameDiv_'+uploadKey+'_'+typeId).html("<x title='"+file.name+"'>"+file.name+"</x>");
    	this.options.isupload=true;
    	this.options.isuploadFinish=false;
        },
    onUploadProgress:function( file, percentage){
    	if(uploadOptionList[uploadKey].isMulti){//多档
    		$('#upload_img_single_progress_main_'+uploadKey+'_'+file.id).css('display','');
        	$('#upload_img_single_progress_'+uploadKey+'_'+file.id).css('width',floatFormat(''+(percentage*100))+"%");
        	$('#upload_img_single_progress_'+uploadKey+'_'+file.id).html(floatFormat(''+(percentage*100))+"%");
    	}else{
    		$('#upload_img_single_progress_main_'+uploadKey+'_'+typeId).css('display','');
        	$('#upload_img_single_progress_'+uploadKey+'_'+typeId).css('width',floatFormat(''+(percentage*100))+"%");
        	$('#upload_img_single_progress_'+uploadKey+'_'+typeId).html(floatFormat(''+(percentage*100))+"%");
    	}
    	$('.saveBtn').css('display','none');
    	$('#mulFileUploadDel_'+uploadKey+'_'+file.id).css('display','none');
    	
    },
    onUploadSuccess:function( file,response ) {
        for(i in response){
        	if(response[i].indexOf("{")!=0){
        		if(uploadOptionList[uploadKey].isMulti){//多档
        			$('#attachPath_'+uploadKey+"_"+file.id).val(response[i]);
        			if(uploadOptionList[uploadKey].mimeTypes.indexOf('image')>-1){//图片
        				if($('#defaultField_'+uploadKey).val()==''){
        					$('#defaultField_'+uploadKey).val("0");
        					//代表图片勾选初始化
        					var imgDefaultRadio = $('.imgDefaultRadio');
        					for(var i=0;i<imgDefaultRadio.length;i++){
        						if($(imgDefaultRadio[i]).attr("name").indexOf('rad_'+uploadKey+'_')==0){
        							if($(imgDefaultRadio[i]).attr("imgSrc")==0){
            							$(imgDefaultRadio[i]).attr('checked','checked');
            							break;
            						}
        						}
        					}
        				}
        			}
        		}else{
        			$('#attachPath_'+uploadKey+"_"+typeId).val(response[i]);
        		}
        	}
        }
        $('.saveBtn').css('display','');
    	$('#mulFileUploadDel_'+uploadKey+'_'+file.id).css('display','');
//    	this.options.isuploadFinish=true;
//        totalFileLength--;
//        if(totalFileLength==0){
//        	if(afterMethod){
//        		afterMethod();
//        	}
//        }
       // submitForm();
    },
    onError:function(type){
    	if(type=='F_EXCEED_SIZE'){
    		alert('文件大小超过限制!')
    		return;
    	}
    	if(type=='Q_TYPE_DENIED'){
    		alert('文件格式不正确!')
    		return;
    	}
    	if(type=='F_DUPLICATE'){
    		alert('上传文件已存在,请重新选择!')
    		return;
    	}
    	alert(type)
    },
    onUploadError:function(file,reason){
    	alert("文件格式错误");
	}
  };
   
  var uploader = WebUploader.create(uploadOption);
//    uploadvm[uploadKey][typeId]['uploader']=uploader;
}

function doFilesUpload(method){
    if(method){
	   afterMethod=method;
    }else{
	   afterMethod=null;
    }
    totalFileLength=0
    var isAllUploaded=true;
//    for(var i=0;i<uploadList.length;i++){
//	   if(!isAllFileUploaded(uploadList[i])){
//		   isAllUploaded=false;
//	   }
//	   for(var j=0;j<uploadvm[uploadList[i]].length;j++){
//		   if(uploadvm[uploadList[i]][j].uploader.options.isupload){
//			   uploadvm[uploadList[i]][j].uploader.upload();
//			   totalFileLength++;
//		   }
//	   }
//    }
    if((totalFileLength==0||isAllUploaded)&&method){
    	method();
    }
}

function isNeedUpload(){
//	for(var i=0;i<uploadList.length;i++){
//		   for(var j=0;j<uploadvm[uploadList[i]].length;j++){
//			   if(uploadvm[uploadList[i]][j].uploader.options.isupload){
//				  return true;
//			   }
//		   }
//	    }
	return false;
}
   
function isAllFileChoose(uploadKey){
    for(var j=0;j<uploadvm[uploadKey].length;j++){
	   if(!uploadvm[uploadKey][j].uploader.options.isupload){
		   return false;
	   }
    }
    return true;
}

function isAllFileUploaded(uploadKey){
//    for(var j=0;j<uploadvm[uploadKey].length;j++){
//	   if(uploadvm[uploadKey][j].uploader.options.isupload&&!uploadvm[uploadKey][j].uploader.options.isuploadFinish){
//		   return false;
//	   }
//    }
    return true;
}
   
function floatFormat(amt) {
   if(isNaN(amt))
     return 0.0; //如果不是数字,返回0.00
   amt = Math.abs(amt); //取绝对值
   return(amt.toFixed(1)); //保留两位小数
}