FFile_wev8.js 12.4 KB
Mobile_NS.FFile = {};

Mobile_NS.FFile.onload = function(p){
    var that = this;
    var mecid = p["id"];
    if(_top && typeof(_top.isRunInEmobile) == "function" && _top.isRunInEmobile() && typeof(_top.isRunInEmobile7) == 'function' && !_top.isRunInEmobile7()&&_top.isAndroidOS()){
        //安卓手机调用客户端接口解决文件限制问题
        _top._p_addFile_uploaded = _p_addFile_uploaded;
        _top._p_clearFile_uploaded = _p_clearFile_uploaded;

        $("#file"+mecid).remove();
        $("#entryBtn"+mecid).click(function(e,obj){
            var index = 1;
            Mobile_NS.FFile.uploadFileDom = this;
            location = "emobile:upload:_p_addFile_uploaded:" + index+":"+e.clientY +":_p_clearFile_uploaded";
        });
    }else{
        var file = document.getElementById("file"+mecid);
        if(file != null){
            file.onchange = function(){
                that.preview(p);
            };
        }
    }

};

Mobile_NS.FFile.setEmobileFileUploadField = function(mecid){
    var $uploadEmobileFiles = $("#FileEntryWrap" + mecid).find(".EMOBILE_UPLOAD");
    for(var i = 0;i < $uploadEmobileFiles.size();i++){
        var $uploadFile = $($uploadEmobileFiles[i]);
        var innerhtml = '<input name="file_'+i+'_name_'+mecid+'" type="hidden" class="fileField"  value="'+ $uploadFile.attr("fileName")+'" />';
        innerhtml += '<input name="file_'+i+'_data_'+mecid+'" type="hidden" class="fileField"  value="'+ $uploadFile.attr("fileVlaue")+'" />';
        if(i == 0){
            innerhtml +=  '<input type="hidden" value="'+$uploadEmobileFiles.size()+'" class="fileField" name="file_num_'+mecid+'"/>';
        }
        $('.fileField',$uploadFile).remove();
        $uploadFile.append(innerhtml);
    }
};

function _p_addFile_uploaded(filename,data,params){
    try{
        Mobile_NS.FFile.previewEmobileFile(filename,data);
    }catch(e){
        alert("file upload error: >> " + e.message);
    }
}


function _p_clearFile_uploaded(){
    var mecid = Mobile_NS.FFile.uploadFileDom['id'].replace('entryBtn','');
    $("#FileEntryWrap" + mecid+",#div" + mecid).find('.Design_FFile_DeleteBtn').click();
}


function delEmobileFFile(obj, mecid){
    $(obj).parent().remove();
    Mobile_NS.FFile.setEmobileFileUploadField(mecid);
}

Mobile_NS.FFile.previewEmobileFile = function(filefullname,data){
    var mecid = Mobile_NS.FFile.uploadFileDom['id'].replace('entryBtn','');
    var splitpoint = filefullname.lastIndexOf(".");
    var filetype = "";
    if(splitpoint != -1){
        filetype = filefullname.substring(splitpoint + 1);
    }
    var imagesrc = "";
    if(filetype.toLowerCase() == "jpg" || filetype.toLowerCase() == "jpeg" || filetype.toLowerCase() == "png" || filetype.toLowerCase() == "gif" || filetype.toLowerCase() == "bmp") {
        imagesrc = "/mobilemode/images/icon/jpg_wev8.png";
    }else if(filetype.toLowerCase() == "doc" || filetype.toLowerCase() == "docx") {
        imagesrc = "/mobilemode/images/icon/doc_wev8.png";
    }else if(filetype.toLowerCase() == "xls" || filetype.toLowerCase() == "xlsx") {
        imagesrc = "/mobilemode/images/icon/xls_wev8.png";
    }else if(filetype.toLowerCase() == "pdf") {
        imagesrc = "/mobilemode/images/icon/pdf_wev8.png";
    }else if(filetype.toLowerCase() == "htm" || filetype.toLowerCase() == "html") {
        imagesrc = "/mobilemode/images/icon/html_wev8.png";
    }else if(filetype.toLowerCase() == "ppt") {
        imagesrc = "/mobilemode/images/icon/ppt_wev8.png";
    }else {
        imagesrc = "/mobilemode/images/icon/txt_wev8.png";
    }

    var $entryFile =
        $("<div class=\"Design_FFile_Entry EMOBILE_UPLOAD\" fileName=\""+filefullname+"\" fileVlaue=\""+ data +"\" >" +
            "<table style=\"width: 100%; table-layout: fixed;\">" +
            "<tr>" +
            "<td class=\"icon\"><img width=\"20\" height=\"20\" src=\"" + imagesrc + "\"></td>" +
            "<td class=\"name\">" + filefullname + "</td>" +
            "<td class=\"flag\"><img width=\"20\" height=\"20\" src=\"/mobilemode/images/mec/arrow_right_wev8.png\"></td>" +
            "</tr>" +
            "</table>" +
            "</div>");
    var $entryDelete = $("<div class=\"Design_FFile_DeleteBtn\" onclick=\"delEmobileFFile(this,'"+mecid+"')\"></div>");
    var $entryborder = $("<div class=\"Design_FFile_EntryBorder\" style=\"padding-right: 30px;\"></div>");
    $entryborder.append($entryFile).append($entryDelete);
    $("#fileBorder"+mecid).before($entryborder);
    Mobile_NS.FFile.setEmobileFileUploadField(mecid);
};

function delFFile(obj, mecid, docid){
	var $this = $(obj);
	
	var $field = $("#fileField"+mecid);
	var fieldValue = $field.val();
	var len = 0;
	$("input[type='file']", "#FileEntryWrap"+mecid).each(function(){
		if(Number($(this).attr("fileNum")) > 0){
			++len;
		}
	});
	if(fieldValue.indexOf("#") != -1){
		if(--len <= 0){
			$field.val("");
		}else{
			$field.val("#" + len);
		}
	}else{
		var newValue = "";
		var tmpArr = fieldValue.split(",");
		for(var i = 0; i< tmpArr.length; i++){
			if(tmpArr[i] == docid){
				tmpArr.splice(i, 1);
				break;
			}
		}
		
		for(var i = 0; i < tmpArr.length; i++){
			var oneValue = tmpArr[i];
			if(i == 0){
				newValue = oneValue;
			}else{
				newValue = newValue + "," + oneValue;
			}
		}
		if(newValue == "" && len > 0){
			newValue = "#"+len;
		}
		$field[0].value = newValue;
	}
	$this.parent().remove();
}

function downloadFile(fileid){
	location.href="/weaver/weaver.file.FileDownload?fileid="+fileid;
}

Mobile_NS.FFile.preview = function(p){
	var that = this;
	var mecid = p["id"];
	var file = document.getElementById("file"+mecid);
	if(file.files && file.files[0]){
		var filefullname = file.files[0].name;
		var splitpoint = filefullname.lastIndexOf(".");
		var filename = filefullname.substring(0, splitpoint);
		var filetype = "";
		if(splitpoint != -1){
			filetype = filefullname.substring(splitpoint + 1);
		}
		
		var imagesrc = "";
		if(filetype.toLowerCase() == "jpg" || filetype.toLowerCase() == "jpeg" || filetype.toLowerCase() == "png" || filetype.toLowerCase() == "gif" || filetype.toLowerCase() == "bmp") {
			imagesrc = "/mobilemode/images/icon/jpg_wev8.png";
		}else if(filetype.toLowerCase() == "doc" || filetype.toLowerCase() == "docx") {
			imagesrc = "/mobilemode/images/icon/doc_wev8.png";
		}else if(filetype.toLowerCase() == "xls" || filetype.toLowerCase() == "xlsx") {
			imagesrc = "/mobilemode/images/icon/xls_wev8.png";
		}else if(filetype.toLowerCase() == "pdf") {
			imagesrc = "/mobilemode/images/icon/pdf_wev8.png";
		}else if(filetype.toLowerCase() == "htm" || filetype.toLowerCase() == "html") {
			imagesrc = "/mobilemode/images/icon/html_wev8.png";
		}else if(filetype.toLowerCase() == "ppt") {
			imagesrc = "/mobilemode/images/icon/ppt_wev8.png";
		}else {
			imagesrc = "/mobilemode/images/icon/txt_wev8.png";
		}
		
		var filesize = file.files[0].size;
    	var showfilesize = "";
    	if(filesize>=(1024 * 1024)){
    		showfilesize = (filesize / 1024 / 1024).toFixed(2) + "M";
    	} else if(filesize>=1024){
    		showfilesize = Math.floor(filesize / 1024) + "K";
    	} else{
    		showfilesize = filesize+ "B";
    	}
		
		var reader = new FileReader();
	   	reader.onload = function(evt){
	   		var $field = $("#fileField"+mecid);
	   		
			var temp = 0;
			$("input[type='file']", "#FileEntryWrap"+mecid).each(function(){
                //$(this).attr("fileNum")  - temp > 0  来做判断。避免了字符串相减的时候,会自动转换成数字类型比较
                if($(this).attr("fileNum") - temp > 0){
					temp = $(this).attr("fileNum");
				}
			});
			
			++temp;
			var $file = $("#file"+mecid);
			$file.attr("name","file"+mecid+(temp));
			$file.attr("id","file"+mecid+(temp));
			$file.attr("fileNum",(temp));
			$file.css("display","none");
			if($field.val() == ""){
				$field.val("#" + temp);
			}
			var $entryFile = 
				$("<div class=\"Design_FFile_Entry\">" +
						"<table style=\"width: 100%; table-layout: fixed;\">" +
							"<tr>" +
								"<td class=\"icon\"><img src=\"" + imagesrc + "\"></td>" +
								"<td class=\"name\">" + filefullname + "</td>" +
								"<td class=\"size\">" + showfilesize + "</td>" +
								"<td class=\"flag\"><span></span></td>" +
							"</tr>" +
						"</table>" +
					"</div>");
			var $entryDelete = $("<div class=\"Design_FFile_DeleteBtn\" onclick=\"delFFile(this, '"+mecid+"')\"></div>");
			var $entryborder = $("<div class=\"Design_FFile_EntryBorder\"></div>");
			$entryborder.append($entryFile).append($entryDelete).append($file);
			
			$("#fileBorder"+mecid).before($entryborder);
			
			var $originalFile = $("<input id=\"file"+mecid+"\" type=\"file\" name=\"file\" fileNum=\"0\" class=\"upLoadFile\" single=\"single\" data-role=\"none\"/>");
			$originalFile[0].onchange = function(){
				that.preview(p);
			};
			$("#entryBtn"+mecid).append($originalFile);
			$originalFile.focus();
	   	}
	   	reader.readAsDataURL(file.files[0]);
	}
};

Mobile_NS.FFile.preview2 = function(p){
	var that = this;
	var mecid = p["id"];
	var file = document.getElementById("file"+mecid);
	if(file.files && file.files[0]){
		var filefullname = file.files[0].name;
		var splitpoint = filefullname.lastIndexOf(".");
		var filename = filefullname.substring(0, splitpoint);
		var filetype = "";
		if(splitpoint != -1){
			filetype = filefullname.substring(splitpoint + 1);
		}
		
		var imagesrc = "";
		if(filetype.toLowerCase() == "jpg" || filetype.toLowerCase() == "jpeg" || filetype.toLowerCase() == "png" || filetype.toLowerCase() == "gif" || filetype.toLowerCase() == "bmp") {
			imagesrc = "/mobilemode/images/icon/jpg_wev8.png";
		}else if(filetype.toLowerCase() == "doc" || filetype.toLowerCase() == "docx") {
			imagesrc = "/mobilemode/images/icon/doc_wev8.png";
		}else if(filetype.toLowerCase() == "xls" || filetype.toLowerCase() == "xlsx") {
			imagesrc = "/mobilemode/images/icon/xls_wev8.png";
		}else if(filetype.toLowerCase() == "pdf") {
			imagesrc = "/mobilemode/images/icon/pdf_wev8.png";
		}else if(filetype.toLowerCase() == "htm" || filetype.toLowerCase() == "html") {
			imagesrc = "/mobilemode/images/icon/html_wev8.png";
		}else if(filetype.toLowerCase() == "ppt") {
			imagesrc = "/mobilemode/images/icon/ppt_wev8.png";
		}else {
			imagesrc = "/mobilemode/images/icon/txt_wev8.png";
		}
		
		var filesize = file.files[0].size;
    	var showfilesize = "";
    	if(filesize>=(1024 * 1024)){
    		showfilesize = (filesize / 1024 / 1024).toFixed(2) + "M";
    	} else if(filesize>=1024){
    		showfilesize = Math.floor(filesize / 1024) + "K";
    	} else{
    		showfilesize = filesize+ "B";
    	}
		
		var reader = new FileReader();
	   	reader.onload = function(evt){
	   		var file64 = filetype + "-" + evt.target.result;
			var $field = $("#fileField"+mecid);
			var fieldValue = $field.val();
			if(fieldValue == ""){
				fieldValue = file64;
			}else{
				fieldValue = fieldValue + ";;" + file64;
			}
			$field[0].value = fieldValue;
			
			var $file = $("#file"+mecid);
			$file.remove();
			var $entryFile = 
				$("<div class=\"Design_FFile_Entry\">" +
						"<table style=\"width: 100%; table-layout: fixed;\">" +
							"<tr>" +
								"<td class=\"icon\"><img width=\"20\" height=\"20\" src=\"" + imagesrc + "\"></td>" +
								"<td class=\"name\">" + filefullname + "</td>" +
								"<td class=\"size\">" + showfilesize + "</td>" +
								"<td class=\"flag\"><img width=\"20\" height=\"20\" src=\"/mobilemode/images/mec/arrow_right_wev8.png\"></td>" +
							"</tr>" +
						"</table>" +
					"</div>");
			var $entryDelete = $("<div class=\"Design_FFile_DeleteBtn\"></div>");
			var $entryborder = $("<div class=\"Design_FFile_EntryBorder\" style=\"padding-right: 30px;\"></div>");
			$entryborder.append($entryFile).append($entryDelete);
			
			$("#fileBorder"+mecid).before($entryborder);
			
			$entryDelete.click(function(){
				var $parent = $(this).parent();
				var index = $parent.index();
				var $field = $("#fileField"+mecid);
				var fieldValue = $field.val();
				var tmpArr = fieldValue.split(";;");
				tmpArr.splice(index, 1);
				var newValue = "";
				for(var i = 0; i < tmpArr.length; i++){
					if(i == 0){
						newValue = tmpArr[i];
					}else{
						newValue = newValue + ";;" + tmpArr[i];
					}
				}
				$field[0].value = newValue;
				$(this).parent().remove();
			});
			
			var $originalFile = $("<input id=\"file"+mecid+"\" type=\"file\" name=\"file\" fileNum=\"0\" class=\"upLoadFile\" single=\"single\" data-role=\"none\"/>");
			$originalFile[0].onchange = function(){
				that.preview(p);
			};
			$("#entryBtn"+mecid).append($originalFile);
			$originalFile.focus();
	   	}
	   	reader.readAsDataURL(file.files[0]);
	}
};