Browse Source

增加对预览数据获取失败之后各种操作的容错处理

sunyj 9 years ago
parent
commit
cbf86a4cdb

+ 4 - 7
src/main/java/com/uas/report/controller/PrintController.java

@@ -77,13 +77,10 @@ public class PrintController {
 			}
 		}
 		// 下载pdf、纯数据excel
-		else if (printType.equals(ReportConstants.PDF_PRINT_TYPE)
-				|| printType.equals(ReportConstants.EXCEL_PRINT_TYPE)) {
-			String exportFileType = "pdf";
-			if (printType.equals(ReportConstants.EXCEL_PRINT_TYPE)) {
-				exportFileType = "xls_with_only_data";
-			}
-			export(userName, reportName, whereCondition, otherParameters, exportFileType, response);
+		else if (printType.equals(ReportConstants.PDF_PRINT_TYPE)) {
+			export(userName, reportName, whereCondition, otherParameters, "pdf", response);
+		} else if (printType.equals(ReportConstants.EXCEL_PRINT_TYPE)) {
+			export(userName, reportName, whereCondition, otherParameters, "xls_with_only_data", response);
 		} else {
 			throw new SystemError("printType不合法");
 		}

+ 25 - 10
src/main/webapp/resources/js/preview2/app.js

@@ -1,16 +1,17 @@
 //IE下找不到pdf.worker.js,需要手动赋值
 PDFJS.workerSrc = 'static/lib/pdf.js/build/pdf.worker.js';
 
-// pdf文件的路径
-var url;
-var pdfDoc = null;
-var pageIndex = 1;
-var pageSize = 1;
-var scale;
 var canvas = document.getElementById('theCanvas');
 var ctx = canvas.getContext('2d');
 // 隐藏的iframe,用于加载pdf,以便打印(pdf.js自带的打印有问题)
 var hiddenframe = document.getElementById("hiddenFrame");
+
+// pdf文件的路径
+var url;
+var pdfDoc;
+var pageIndex;
+var pageSize;
+var scale;
 var winHeight;
 var winWidth;
 
@@ -33,6 +34,9 @@ $("#next").click(nextPage);
 
 // 手动输入页码
 $("#pageIndex").keypress(function(event) {
+	if (!pdfDoc) {
+		return;
+	}
 	// 按Enter键
 	if (event.keyCode == 13) {
 		var value = document.getElementById("pageIndex").value;
@@ -75,22 +79,31 @@ $("#scaleSelect").change(function() {
 
 // 打印
 $("#print").click(function() {
+	if (!pdfDoc) {
+		return;
+	}
 	hiddenframe.contentWindow.print();
 });
 
 // 下载pdf
 $("#downloadPdf").click(function() {
+	if (!pdfDoc) {
+		return;
+	}
 	window.location = downloadUrl("pdf");
 });
 
 // 下载纯数据excel
 $("#downloadExcelWithOnlyData").click(function() {
+	if (!pdfDoc) {
+		return;
+	}
 	window.location = downloadUrl("xls_with_only_data");
 });
 
 // 键盘左右键进行翻页
 $("body").keydown(function(event) {
-	// 如果在input输入框内按左右键,不进行翻页
+	// 如果在选中input输入框或select下拉列表时按左右键,不进行翻页
 	var activeElementNodeName = document.activeElement.nodeName.toLowerCase();
 	if (activeElementNodeName == "input" || activeElementNodeName == "select") {
 		return;
@@ -124,7 +137,6 @@ function getWindowWidth() {
 // 发送请求,服务器端进行填充报表、生成pdf文件等操作
 function loadPdfData() {
 	var loadPdfDataUrl = "print/loadPdfData" + window.location.search;
-	pageIndex = getParameter("pageIndex");
 	if (!pageIndex) {
 		pageIndex = 1;
 		loadPdfDataUrl = loadPdfDataUrl + "&pageIndex=" + pageIndex;
@@ -171,6 +183,9 @@ function getDocument() {
 
 // Get page info from document, resize canvas accordingly, and render page.
 function renderPage() {
+	if (!pdfDoc) {
+		return;
+	}
 	// 每个pdf只有一页
 	pdfDoc.getPage(1).then(function(page) {
 		if (!scale || scale == "auto") {
@@ -209,7 +224,7 @@ function getScale(page, multipleOfWindowWidth) {
 
 // 预览前一页
 function prevPage() {
-	if (pageIndex <= 1) {
+	if (!pdfDoc || pageIndex <= 1) {
 		return;
 	}
 	// 获取前一页的pdf
@@ -219,7 +234,7 @@ function prevPage() {
 
 // 预览后一页
 function nextPage() {
-	if (pageIndex >= pageSize) {
+	if (!pdfDoc || pageIndex >= pageSize) {
 		return;
 	}
 	url = url.replace(pageIndex + ".pdf", (++pageIndex) + ".pdf");