⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reportprinter.js

📁 报表打印例子报表打印例子报表打印例子报表打印例子报表打印例子
💻 JS
📖 第 1 页 / 共 2 页
字号:
					w = w+ oThis.getColumnWidth(c);
				}
				return w;
			}else{
				return 100;
			}
		}else{
			return parseInt(column.width);
		}
	}

	
	this.paintRow = function(rowData){
		if(_list_rowStr[rowData.l_r_id]!=null)
			return _list_rowStr[rowData.l_r_id];
		var sb = [];
		sb[sb.length] = "<tr>";
		
		if(oThis.context.sequence==true){
			sb[sb.length] = '<td align="center" style="width:40;">';
			sb[sb.length] = (rowData._index+1) + '</td>';
		}

		var columns =oThis.getLeafColumns();
		
		for(var i=0;i<columns.length;i++){
			sb[sb.length] = oThis.paintCell(rowData,columns[i]);
		}
		sb[sb.length] = "</tr>";
		var r =  sb.join("");
		_list_rowStr[rowData.l_r_id] = r;
		return r ;
	}
	
	var _list_leafColumns = null;
	this.getLeafColumns = function(column){
		if(column==null){
			if(_list_leafColumns==null){
				_list_leafColumns = new Array();
				for(var i=0;i<oThis.columns.length;i++){
					column = oThis.columns[i];
					if(false == column._printAble){
						continue;
					}
					if(column.children==null || column.children.length==0){
						_list_leafColumns[_list_leafColumns.length] = column;
					}else{
						oThis.getLeafColumns(column);
					}
				}
			}
			return _list_leafColumns;
		}else{
			for(var i=0;i<column.children.length;i++){
				var child = column.children[i];
				if(child.children==null|| children.children.length==0){
					_list_leafColumns[_list_leafColumns.length] = child;
				}else{
					oThis.getLeafColumns(child);
				}
			}
		}
	}

	this.formatNumber = function(value,column){
		var f = null;
		if(column.format!=null){
			f = column.format;
		}else{
			f = "#.00";
		}
		return formatToMoney(value,f);
	}



	this.paintCell = function(rowData,column){
		var data = null;
		var align = "";
		var mode = column.mode;
		if(mode==null || mode ==""){
			mode = "string";
			column.mode = mode;
		}
		data = oThis.getValueOfCell(rowData,column);		
		var sb = new Array();		
		var isListening = false;
		if(mode=="string"){
			align = "left";
		}else if(mode=="number"){
			align = "right";
			data = oThis.formatNumber(data,column);
		}else if(mode=="money"){
			align = "right";
			data = oThis.formatNumber(data,column);
		}else if(mode=="check"){
			align = "center";
			if(data==true){
				data = '√';
			}else{
				data = '&nbsp;';
			}
		}else if(mode=="select"){
			align = "center";
			var op = oThis.getColumnOption(column,data);
			if(op!=null){
				data = op.name;
			}else{
				data = " ";
			}
		}else if(mode=="function"){
			align = "left";
		}else if(mode=="date"){
			align = "center";
			data = data.substring(0,10);
		}else if(mode=="link"){
			align = "center";
		}else if(mode=="exp"){
			align="right";
			data = oThis.formatNumber(data,column);
		}
		if(column.align!=null){
			align = column.align;
		}
		if(data== " "){
			data = "&nbsp;";
		}
		var width = oThis.getColumnWidth(column);

		var sb = new Array();
		
		sb[sb.length] = '<td align='+align;
		sb[sb.length] = '>' + data;
		sb[sb.length] = '</td>';
		
		return sb.join("");
	}

	this.getColumnOption = function(column,id){
		var options = column.options;
		for(var i=0;i<options.length;i++){
			var op = options[i];
			if(op.id == id){
				return op;
			}
		}
		return null;
	}

	this.getPropertyOfObj = function(obj,pName){
		if(obj==null){
			return null;
		}
		var name = pName;
		var ns = name.split(".");
		if(ns[1]=="")
			ns.removeAt(1);

		if(ns.length>1){
			for(var i=0;i<ns.length-1;i++){
				var parent = obj;
				obj = parent[ns[i]];
				if(obj==null){
					return null;
				}
			}
			obj = obj[ns[ns.length-1]];
		}else{
			obj = obj[pName];
		}
		return obj;
	}

	this.getValueOfCell = function(rowData,column){
		if(column.mode=="exp"){
			return eval(column.expStr);
		}else{
			var v = oThis.getPropertyOfObj(rowData,column.name);
			if(v==null || v==""){
				if(column.mode=="number"){
					v = 0;
				}else if(column.mode=="money"){
					v = 0.00;
				}else 
					v = " ";
			}
			
			return v;
		}
	}
	this.getMoneyFormat = function(column){
		return column.format;
	}

	this.getSumMoneyFormat = function(colName){
		
		var sumColumns = oThis.context.sum;
		var sumCol = null;
		for(var i=0;i<sumColumns.length;i++){
			var col = sumColumns[i];
			if(col.name = colName){
				sumCol = col;
				break;
			}
		}
		if(sumCol.format==null){
			return oThis.getMoneyFormat(oThis.getColumnByName(colName));
		}else{
			return sumCol.format;
		}
	}

	this.getColumnByName = function(colName,columns){
		if(columns==null)
			columns = oThis.columns;
		for(var i=0;i<columns.length;i++){
			var c = columns[i];
			if(c.name==colName){
				return c;
			}else if(c.children!=null){
				return oThis.getColumnByName(c.children,colName);
			}
		}
		return null;
	}
	
	this.paintSumRow = function(){
		if(_list_sumrow_str!=null)
			return _list_sumrow_str;
		var sumRowData = oThis.getSumData();
		var sb = [];
		sb[sb.length] = '<tr>';
		var colNum = 0;
		
		if(oThis.context.sequence){
			colNum++;
		}
		if(colNum>1){
			sb[sb.length] = '<td colspan='+colNum;
			sb[sb.length] = ' class="lastRow"';
			sb[sb.length] = ' align="center">';
			sb[sb.length] = '合计';
			sb[sb.length] = '</td>';
		}else{
			sb[sb.length] = '<td';
			sb[sb.length] = ' class="lastRow"';
			sb[sb.length] = ' align="center">';
			sb[sb.length] = '合计';
			sb[sb.length] = '</td>';
		}

		var columns = oThis.getLeafColumns();
		for(var i=0;i<columns.length;i++){
			var column = columns[i];
			sb[sb.length] = '<td class="lastRow" align="right">';
			var sumValue = oThis.getColSum(sumRowData,column.name);
			if(sumValue==null){
				sb[sb.length] = '&nbsp';
			}else
				sb[sb.length] = formatToMoney(""+sumValue,oThis.getSumMoneyFormat(column.name));
			sb[sb.length] = '</td>';
		}
		sb[sb.length] = '</tr>';
		_list_sumrow_str = sb.join("");
		return _list_sumrow_str;
	}
	var sumData = null;
	this.getSumData = function(){
		if(sumData==null){
			var data = oThis.data;
			var sumColumns = oThis.context.sum;
			for(var i=0;i<data.length;i++){
				var rowData = data[i];
				for(var j=0;j<sumColumns.length;j++){
					var sumCol = sumColumns[j];
					if(sumCol.sumValue==null||i==0)
						sumCol.sumValue = 0;	
					if(sumCol.exp==null)		
						sumCol.sumValue = sumCol.sumValue + parseFloat(oThis.getPropertyOfObj(rowData,sumCol.colName));
				}
			}
			
			for(var j=0;j<sumColumns.length;j++){
				var sumCol = sumColumns[j];
				if(sumCol.sumValue==null||i==0)
					sumCol.sumValue = 0;	
				
				if(sumCol.exp!=null){
					sumCol.sumValue = eval(sumCol.exp);
				}
			}
			sumData = sumColumns;
		}
		return sumData;
	}

	
	this.getColSum = function(sumRowData,colName){
		var sumValue = 0;
		for(var j=0;j<sumRowData.length;j++){
			var sumCol = sumRowData[j];
			if(sumCol.colName == colName){
				sumValue = sumCol.sumValue;
				return sumValue;
			}
		}
		return null;
	}

	var _list_colsStr = null;
	this.clearColsStr = function(){
		_list_colsStr = null;
	}
	this.getColsStr = function(){
		if(_list_colsStr==null){
			var sb = [];
			sb[sb.length] = '<colgroup >';
			
			if(oThis.context.sequence==true){
				sb[sb.length] = '<col width="40"/>';
			}
			var cols = oThis.getLeafColumns();
			for(var i=0;i<cols.length;i++){
				sb[sb.length] = '<col width="' + oThis.getColumnWidth(cols[i]) + '"/>';
			}
			sb[sb.length] = '</colgroup>';
			_list_colsStr = sb.join("");
		}
		return _list_colsStr;
	}

}

function ReportPrinter(){
	this.rHeader = null;
	this.pHeader = null;
	this.pFoot = null;
	this.rFoot = null;
	this.test = "teststeswtsta";
	this.params = new Object();
	this.win = null;
	this.columns = null;
	this.data = null;
	this.context = null;
	this.resetColumns = false;
	oThis = this;
	
	this.view = function(){
		var sFeatures = "";
		sFeatures = "width=" + 800 +"px,"
			+"height=" + 600 + "px,"
			+"status=1,resizable=1,scrollbars ";
		window.printer = oThis;
		oThis.win = window.open(report_template_url,"_blank",sFeatures);
	}
	
	
	this.setGrid = function(_grid){
		oThis.columns = _grid.getOrderedColumns();
		oThis.data = _grid.getValue();
		oThis.context = _grid.getContext();
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -