优化打印预览并修正监控中心下载量数量改次数

master
zengwh 6 years ago
parent 398ac2fda2
commit 7b2da02c80

@ -0,0 +1,29 @@
package com.emr.controller;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.File;
/**
*
* @author Mr Du
*
*/
@Component
public class DelPrintPicQuartz {
@Value("${waterPicPath}")
private String WATERPICPATH;
/**
* cron* * * * * *6使
* cron*(0-59) *( 0-59) *(0-23) *(1-31) *(1-12JAN-DEC) *(1-7SUN-SAT)
*/
@Scheduled(cron="0 0 0 * * ?")
public void clearPrintPic() throws Exception{
FileUtils.deleteDirectory(new File(WATERPICPATH));
}
}

@ -463,7 +463,7 @@ public class CommomSearchController {
* @return
*/
@RequestMapping("showRecordIframeBlood")
public String showRecordIframeBlood(String patientId,Model model, HttpServletRequest request) {
public String showRecordIframeBlood(String patientId,String flag,Model model, HttpServletRequest request) {
model.addAttribute("patientId", patientId);
Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER");
//打印分类集合
@ -487,6 +487,7 @@ public class CommomSearchController {
}
}
model.addAttribute("printFlag", printFlag);
model.addAttribute("flag", flag);
return "recordManage/commomSearch/showRecordIframeBlood";
}
@ -765,11 +766,23 @@ public class CommomSearchController {
*/
@RequestMapping(value="selectPrintPic",method = RequestMethod.POST)
@ResponseBody
public ResultUtil selectPrintPic(String patientId,String rootPaths,String names,String sources) throws Exception{
List<String> outs = commomService.selectPrintPic(patientId,rootPaths,names,sources);
public ResultUtil selectPrintPic(String patientId,String rootPaths,String names,String sources,HttpServletRequest request) throws Exception{
//生成加载进度mapKey
Power_User user = (Power_User)request.getSession().getAttribute("CURRENT_USER");
String mapKey = user.getUserName() + "_" + patientId;
List<String> outs = commomService.selectPrintPic(patientId,rootPaths,names,sources,mapKey);
return ResultUtil.ok(outs);
}
@RequestMapping("getPrintPicLoading")
@ResponseBody
public ResultUtil getPrintPicLoading(String patientId,HttpServletRequest request) throws Exception{
Power_User user = (Power_User)request.getSession().getAttribute("CURRENT_USER");
String mapKey = user.getUserName() + "_" + patientId;
Integer loadingInteger = commomService.getPrintPicLoading(mapKey);
return ResultUtil.ok(loadingInteger);
}
/**
*
* @param patientId

@ -6,6 +6,7 @@ import com.emr.dao.approve.Emr_Apply_ApproveMapper;
import com.emr.dao.emrPrintAndDownLoad.EmrPrintDownloadInfoMapper;
import com.emr.dao.recordLock.Emr_LockMapper;
import com.emr.entity.approve.Emr_Apply_Approve;
import com.emr.vo.EmrPrintOrDownLoadInfo.EmrPrintOrDownLoadInfoVo;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@ -44,7 +45,7 @@ public class monitoringCenterController {
public String monitoringCenter(Model model){
int applyApproveNum = 0;
int applyApproveNullNum = 0;
int emrDownloadInfoNum = emrPrintDownloadInfoMapper.selectAllCount();
List<EmrPrintOrDownLoadInfoVo> emrPrintOrDownLoadInfoVos = emrPrintDownloadInfoMapper.selectAllCount();
int commomNum = commomMapper.selectCommomCount();
int lockNum = emrLockMapper.selectCountLocking();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@ -70,7 +71,7 @@ public class monitoringCenterController {
}
model.addAttribute("applyApproveNum", applyApproveNum);
model.addAttribute("applyApproveNullNum", applyApproveNullNum);
model.addAttribute("emrDownloadInfoNum", emrDownloadInfoNum);
model.addAttribute("emrDownloadInfoNum", emrPrintOrDownLoadInfoVos.size());
model.addAttribute("commomNum", commomNum);
model.addAttribute("lockNum", lockNum);
return "otherManage/monitoringCenter";

@ -1368,7 +1368,7 @@ public class TemplateSearchController {
}
}
List<ScanPathVo> scanPathVos = scanPathMapper.selectScanFileByBloodPatientIds(patientIds,assortIds,flag);
//批量添加下载记录
//批量添加打印记录
printOrDownLoadInfoService.SimpleInsert(scanPathVos,typeId,Short.valueOf("1"));
}catch (Exception e){
e.printStackTrace();

@ -24,6 +24,6 @@ public interface EmrPrintDownloadInfoMapper {
*
* @return
*/
int selectAllCount();
List<EmrPrintOrDownLoadInfoVo> selectAllCount();
}

@ -54,6 +54,8 @@ import java.util.*;
*/
@Component
public class CommomService {
//定义打印预览加载进度map
private static Map<String,Integer> printLoadingMap = new HashMap<>();
@Value("${POWER_URLHEAD}")
private String POWER_URLHEAD;
@Value("${waterPicPath}")
@ -377,7 +379,7 @@ public class CommomService {
* @param sources
* @return
*/
public List<String> selectPrintPic(String patientId, String rootPaths, String names, String sources) {
public List<String> selectPrintPic(String patientId, String rootPaths, String names, String sources,String mapKey) {
List<String> outs = new LinkedList<>();
if(StringUtils.isNotBlank(names)){
String[] rootPathList = rootPaths.split(",");
@ -431,6 +433,8 @@ public class CommomService {
outSrc = EMRRECORDJSP + "\\" + root + picPath;
}
outs.add(outSrc);
Integer value = Math.round((i+1)*100/nameList.length);
printLoadingMap.put(mapKey,value);
}
}
return outs;
@ -466,4 +470,16 @@ public class CommomService {
}
return null;
}
public Integer getPrintPicLoading(String mapKey) {
Integer loadingPerson = printLoadingMap.get(mapKey);
if(loadingPerson == null){
//为空返回0
return 0;
}else if(loadingPerson == 100){
//完成后移除内存
printLoadingMap.remove(mapKey);
}
return loadingPerson;
}
}

@ -97,11 +97,15 @@ public class PrintOrDownLoadInfoService {
*
* */
public List<EmrPrintOrDownLoadInfoVo> selectAll(EmrPrintOrDownLoadInfoVo emrPrintOrDownLoadInfoVo,String flag){
long start = System.currentTimeMillis();
List<EmrPrintOrDownLoadInfoVo> list = printDownloadInfoMapper.selectAll(emrPrintOrDownLoadInfoVo,flag);
long end = System.currentTimeMillis();
System.out.println("查询用时:"+(end-start)/1000.0+"s");
return getReturnList(list);
}
//组织数据
private List<EmrPrintOrDownLoadInfoVo> getReturnList(List<EmrPrintOrDownLoadInfoVo> list){
long start = System.currentTimeMillis();
List<EmrPrintOrDownLoadInfoVo> returnList = new ArrayList<>();
if(null != list && !list.isEmpty()){
Map<String,EmrPrintOrDownLoadInfoVo> map = new LinkedHashMap<>();
@ -138,6 +142,8 @@ public class PrintOrDownLoadInfoService {
returnList.add(emrPrintOrDownLoadInfoVo);
}
}
long end = System.currentTimeMillis();
System.out.println("组织用时:"+(end-start)/1000.0+"s");
return returnList;
}
/**

@ -9,7 +9,7 @@
<result column="dis_date" property="disDate" jdbcType="TIMESTAMP" />
<result column="fileRealPath" property="fileRealPath" jdbcType="VARCHAR" />
</resultMap>
<!--根据patientId集合查询图片路径-->
<!--湛江、英德根据patientId集合查询图片路径-->
<select id="selectScanFileByPatientIds" resultMap="BaseResultMap" parameterType="java.lang.String">
SELECT
dbo.t_scan_assort.assort_id,
@ -32,7 +32,7 @@
</select>
<!--脐血库根据patientId集合查询图片路径-->
<!--脐血库、祈福根据patientId集合查询图片路径-->
<select id="selectScanFileByBloodPatientIds" resultMap="BaseResultMap" parameterType="java.lang.String">
SELECT
commomtable.patient_id,
@ -43,9 +43,9 @@
dbo.t_scan_assort.scan_page,
case
when t_scan_assort.source = 1
then dbo.commomtable.${flag}+'\'+dbo.t_scan_assort.scan_page
then convert(nvarchar(255),dbo.commomtable.${flag})+'\'+dbo.t_scan_assort.scan_page
when t_scan_assort.source = 2
then dbo.commomtable.new_path+'\'+dbo.t_scan_assort.scan_page
then convert(nvarchar(255),dbo.commomtable.new_path)+'\'+dbo.t_scan_assort.scan_page
end fileRealPath
FROM
dbo.commomtable
@ -66,20 +66,4 @@
ORDER BY
dbo.zd_assort.assort_sort
</select>
<!--根据patientId和分段Id查询图片路径-->
<select id="selectScanFileByPatientIdAndAssortIds" resultMap="BaseResultMap" parameterType="java.lang.String">
SELECT
dbo.t_scan_assort.scan_page,
(dbo.t_gdh_index.file_path+'\'+dbo.t_scan_assort.scan_page) fileRealPath
FROM
dbo.t_gdh_index
LEFT OUTER JOIN
dbo.t_scan_assort
ON
dbo.t_gdh_index.patient_id = dbo.t_scan_assort.patient_id
WHERE
dbo.t_scan_assort.patient_id = #{patientId}
AND
assort_id IN (#{assortIds})
</select>
</mapper>

@ -199,9 +199,9 @@
emr_print_download_info.create_time DESC
</select>
<select id="selectAllCount" resultType="java.lang.Integer">
<select id="selectAllCount" resultMap="BaseResultMapVo">
SELECT
COUNT(*)
COUNT(emr_print_download_info.patient_id) printCount
FROM
emr_print_download_info
INNER JOIN commomtable ON emr_print_download_info.patient_id = commomtable.patient_id
@ -209,5 +209,6 @@
INNER JOIN zd_assort ON emr_print_download_info.assort_id = zd_assort.assort_id
WHERE
emr_print_download_info.oper_type = 2
GROUP BY emr_print_download_info.create_time,emr_print_download_info.creater
</select>
</mapper>

@ -44,18 +44,26 @@
</style>
</head>
<body style="scroll:auto" onkeydown="disabledPrint()">
<input type="hidden" id="patientId" value="${patientId}">
<input type="hidden" id="assortIds">
<input type="hidden" id="sources">
<input type="hidden" id="flag" value="home_addr">
<input hidden id="patientId" value="${patientId}">
<!--初始化及树复选框勾选的文件名称集合-->
<input hidden id="assortIds">
<!--初始化及树复选框勾选的文件来源集合-->
<input hidden id="sources">
<!--树节点点击选中的文件名称-->
<input type="hidden" id="assortIdByClick">
<!--树节点点击选中的文件来源-->
<input hidden id="sourceByClick">
<input hidden id="flag" value="${flag}">
<!--是否有打印权限-->
<input type="hidden" id="print" value="${printFlag}">
<input hidden id="print" value="${printFlag}">
<!--文件路径-->
<input type="hidden" id="filePath">
<input hidden id="filePath">
<!--定义iframe1加载完成标识-->
<input type="hidden" id="iframeLoad">
<input hidden id="iframeLoad">
<!--定义打印预览的图片加载完成标识-->
<input type="hidden" id="printPicLoaded">
<input hidden id="printPicLoaded">
<!--定义打印预览的图片加载进度-->
<input type="hidden" id="loading">
<div class="content-left">
<div class="form-group">
<div class="col-sm-5" style="padding-right: 0">
@ -68,7 +76,7 @@
</c:if>
</div>
<div class="col-sm-3">
<button type="button" class="btn btn-sm btn-primary" onclick="onloadPdf()">加载PDF</button>
<button type="button" class="btn btn-sm btn-primary" onclick="onloadPdfMethod()">加载PDF</button>
</div>
<c:if test="${CURRENT_USER.userEmail == '1' || isDownload == '1'}">
<div class="col-sm-3">

@ -132,7 +132,6 @@ function onloadJpgForPdf(){
}
//记录打印记录
function printInfoBlood(){
alert(2)
var patientId = "'"+$("#patientId").val()+"'";
var assortIds = $("#assortIds").val();
var typeId = $("#typeId").val();

@ -119,13 +119,6 @@ function onCheck(e, treeId, treeNode) {
$("#typeId").change(function(){
menu.loadMenuTree();
})
//记录打印记录
function printInfoBlood(){
var patientId = "'"+$("#patientId").val()+"'";
var assortIds = $("#assortIds").val();
var typeId = $("#typeId").val();
post(path+'/template/printInfoBlood',{"patientIds":patientId,"assortIds":assortIds,"typeId":typeId});
}
//确定按钮功能
function sure(){
Common.confirm({

@ -32,19 +32,19 @@ var menu = {
$("#assortIds").val("");
if(data != null){
//图片相对路径集合
var assortIds = '';
var scanPages = '';
//图片来源集合
var sources = '';
for (var i = 0; i < data.length; i++) {
if(data[i].parentId != null && data[i].parentId != 1 && data[i].checked == 'true'){
assortIds += data[i].assortName+",";
scanPages += data[i].assortName+",";
sources += data[i].source + ",";
}
}
//去掉后面逗号
if(assortIds != ''){
assortIds = assortIds.substring(0,assortIds.length-1);
$("#assortIds").val(assortIds);
if(scanPages != ''){
scanPages = scanPages.substring(0,scanPages.length-1);
$("#assortIds").val(scanPages);
sources = sources.substring(0,sources.length-1);
$("#sources").val(sources);
}
@ -55,7 +55,7 @@ var menu = {
zTree.expandNode(nodes[i], true, false, true);
}
//加载pdf
onloadPdf();
onloadPdf(scanPages,sources);
}
}
})
@ -92,41 +92,42 @@ function onClick(e, treeId, treeNode) {
var treeLevel = treeNode.level;
//选中图片节点时
if(treeLevel == 2){
//加载pdf
var patientId = $("#patientId").val();
//图片集合
var scanPages = treeNode.assortName;
//来源集合
var sources = treeNode.source;
//根目录字段识别名称
var flag = parent.$("#flag").val();
var str= path+"/commom/showRecordContentBlood?patientId="+patientId+"&scanPages="+scanPages+"&sources="+sources+"&flag="+flag;
$("#iframe1").attr("src",path+"/static/pdfjs/web/viewer1.html?file="+encodeURIComponent(str));
$("#assortIdByClick").val(scanPages);
$("#sourceByClick").val(sources);
onloadPdf(scanPages,sources);
}
};
//打印分类变更事件
$("#typeId").change(function(){
menu.loadMenuTree();
})
//树复选框选中后加载pdf按钮
function onloadPdfMethod(){
var scanPages = $("#assortIds").val();
//来源集合
var sources = $("#sources").val();
$("#assortIdByClick").val("");
$("#sourceByClick").val("");
onloadPdf(scanPages,sources);
}
//加载pdf按钮功能
function onloadPdf(){
function onloadPdf(scanPages,sources){
$("#iframeLoad").val("");
$("#printPicLoaded").val("");
if($("#iframeLoad").val() == 1) {
window.frames['iframe1'].contentDocument.getElementById("printContainer1").innerHTML = '';
}
var patientId = $("#patientId").val();
//图片集合
var scanPages = $("#assortIds").val();
//来源集合
var sources = $("#sources").val();
//根目录字段识别名称
var flag = parent.$("#flag").val();
var str= path+"/commom/showRecordContentBlood?patientId="+patientId+"&scanPages="+scanPages+"&sources="+sources+"&flag="+flag;
$("#iframe1").attr("src",path+"/static/pdfjs/web/viewer1.html?file="+encodeURIComponent(str));
var rootPaths = parent.$("#rootPaths").val();
//获取加水印后的图片
if(scanPages != ''){
//加载的图片
var print = $("#print").val();
if(scanPages != '' && print == 1){
selectPrintPic(patientId,rootPaths,scanPages,sources);
}
}
@ -134,6 +135,7 @@ function onloadPdf(){
/**
* 加载打印预览所需图片
*/
//定义打印预览加载图片进度
function selectPrintPic(patientId,rootPaths,scanPages,sources){
$.ajax({
type:'post',
@ -153,17 +155,42 @@ function selectPrintPic(patientId,rootPaths,scanPages,sources){
for (var i = 0; i < resultList.length; i++) {
img += "<img src='"+resultList[i]+"' width='850' height='1190'>";
}
setInterval(function () {
if($("#iframeLoad").val() == 1 && $("#printPicLoaded").val() != 1) {
var interval = setInterval(function () {
if($("#iframeLoad").val() == 1) {
window.frames['iframe1'].contentDocument.getElementById("printContainer1").innerHTML = img;
$("#printPicLoaded").val(1);
window.frames['iframe1'].contentDocument.getElementById("printLoading").style.display = 'none';
window.frames['iframe1'].contentDocument.getElementById("print").style.display = 'block';
clearInterval(interval);
}
},1*1000);
},200);
}
}else{
toastr.error(data.msg);
}
}
})
//查询进度定时器
var interval1 = setInterval(function () {
$.ajax({
type:'get',
url:path+"/commom/getPrintPicLoading",
data:{patientId:$("#patientId").val()},
dataType:'json',
success:function(data){
if(data.code == 0){
var value = data.data;
$("#loading").val(value+"%");
if(value == 100){
//杀死进度定时器
clearInterval(interval1);
}
}else{
toastr.error(data.msg);
}
}
})
},100);
}
var iframe = window.frames['iframe1'];
if(iframe.attachEvent){
@ -190,23 +217,23 @@ function onloadJpgForPdf(){
if(typeId == undefined){
typeId = '';
}
Common.confirm({
title: "提示",
message: "确认将左侧树选中的图片下载pdf?",
operate: function (reselt) {
if (reselt) {
var patientId = "'" + $("#patientId").val() + "'";
var assortIds = $("#assortIds").val();
var flag = parent.$("#flag").val();
post(path + '/template/downloadPdfBlood', {
"patientIds": patientId,
"assortIds": assortIds,
"typeId": typeId,
"flag": flag
});
}
}
})
Common.confirm({
title: "提示",
message: "确认将左侧树选中的图片下载pdf?",
operate: function (reselt) {
if (reselt) {
var patientId = "'" + $("#patientId").val() + "'";
var assortIds = $("#assortIds").val();
var flag = parent.$("#flag").val();
post(path + '/template/downloadPdfBlood', {
"patientIds": patientId,
"assortIds": assortIds,
"typeId": typeId,
"flag": flag
});
}
}
})
}
//重新归页确定按钮功能
function sure(){
@ -276,11 +303,18 @@ function delPic(){
//记录打印记录
function printInfoBlood(){
var patientId = "'"+$("#patientId").val()+"'";
var assortIds = $("#assortIds").val();
var typeId = $("#typeId").val();
if(typeId == undefined){
typeId = '';
}
var assortIds = '';
//判断树点击选中赋值的框是否有值有则属于取点击选中的值否则去加载pdf的值
var assortIdByClick = $("#assortIdByClick").val();
if(assortIdByClick != ''){
assortIds = $("#assortIdByClick").val();
}else{
assortIds = $("#assortIds").val();
}
var flag = $("#flag").val();
$.ajax({
type:'post',

@ -3,122 +3,125 @@
* 2017-7-14
*/
(function (window, document) {
var Print = function (dom, options) {
if (!(this instanceof Print)) return new Print(dom, options);
var Print = function (dom, options) {
if (!(this instanceof Print)) return new Print(dom, options);
this.options = this.extend({
noPrint: '.no-print',
onStart: function () { },
onEnd: function () { }
}, options);
this.options = this.extend({
noPrint: '.no-print',
onStart: function () {
},
onEnd: function () {
}
}, options);
if ((typeof dom) === "string") {
this.dom = document.querySelector(dom);
} else {
this.dom = dom;
}
if ((typeof dom) === "string") {
this.dom = document.querySelector(dom);
} else {
this.dom = dom;
}
this.init();
};
Print.prototype = {
init: function () {
var content = this.getStyle() + this.getHtml();
this.writeIframe(content);
},
extend: function (obj, obj2) {
for (var k in obj2) {
obj[k] = obj2[k];
}
return obj;
},
this.init();
};
Print.prototype = {
init: function () {
var content = this.getStyle() + this.getHtml();
this.writeIframe(content);
},
extend: function (obj, obj2) {
for (var k in obj2) {
obj[k] = obj2[k];
}
return obj;
},
getStyle: function () {
var str = "",
styles = document.querySelectorAll('style,link');
for (var i = 0; i < styles.length; i++) {
str += styles[i].outerHTML;
}
str += "<style>" + (this.options.noPrint ? this.options.noPrint : '.no-print') + "{display:none;}</style>";
getStyle: function () {
var str = "",
styles = document.querySelectorAll('style,link');
for (var i = 0; i < styles.length; i++) {
str += styles[i].outerHTML;
}
str += "<style>" + (this.options.noPrint ? this.options.noPrint : '.no-print') + "{display:none;}</style>";
return str;
},
return str;
},
getHtml: function () {
var inputs = document.querySelectorAll('input');
var textareas = document.querySelectorAll('textarea');
var selects = document.querySelectorAll('select');
getHtml: function () {
var inputs = document.querySelectorAll('input');
var textareas = document.querySelectorAll('textarea');
var selects = document.querySelectorAll('select');
for (var k in inputs) {
if (inputs[k].type == "checkbox" || inputs[k].type == "radio") {
if (inputs[k].checked == true) {
inputs[k].setAttribute('checked', "checked")
} else {
inputs[k].removeAttribute('checked')
}
} else if (inputs[k].type == "text") {
inputs[k].setAttribute('value', inputs[k].value)
}
}
for (var k in inputs) {
if (inputs[k].type == "checkbox" || inputs[k].type == "radio") {
if (inputs[k].checked == true) {
inputs[k].setAttribute('checked', "checked")
} else {
inputs[k].removeAttribute('checked')
}
} else if (inputs[k].type == "text") {
inputs[k].setAttribute('value', inputs[k].value)
}
}
for (var k2 in textareas) {
if (textareas[k2].type == 'textarea') {
textareas[k2].innerHTML = textareas[k2].value
}
}
for (var k2 in textareas) {
if (textareas[k2].type == 'textarea') {
textareas[k2].innerHTML = textareas[k2].value
}
}
for (var k3 in selects) {
if (selects[k3].type == 'select-one') {
var child = selects[k3].children;
for (var i in child) {
if (child[i].tagName == 'OPTION') {
if (child[i].selected == true) {
child[i].setAttribute('selected', "selected")
} else {
child[i].removeAttribute('selected')
}
for (var k3 in selects) {
if (selects[k3].type == 'select-one') {
var child = selects[k3].children;
for (var i in child) {
if (child[i].tagName == 'OPTION') {
if (child[i].selected == true) {
child[i].setAttribute('selected', "selected")
} else {
child[i].removeAttribute('selected')
}
}
}
}
}
}
}
}
return this.dom.outerHTML;
},
return this.dom.outerHTML;
},
writeIframe: function (content) {
var w, doc, iframe = document.createElement('iframe'),
f = document.body.appendChild(iframe);
iframe.id = "myIframe";
iframe.style = "position:absolute;width:0;height:0;top:-10px;left:-10px;";
writeIframe: function (content) {
var w, doc, iframe = document.createElement('iframe'),
f = document.body.appendChild(iframe);
iframe.id = "myIframe";
iframe.style = "position:absolute;width:0;height:0;top:-10px;left:-10px;";
w = f.contentWindow || f.contentDocument;
doc = f.contentDocument || f.contentWindow.document;
doc.open();
doc.write(content);
doc.close();
this.toPrint(w, function () {
document.body.removeChild(iframe)
});
},
w = f.contentWindow || f.contentDocument;
doc = f.contentDocument || f.contentWindow.document;
doc.open();
doc.write(content);
doc.close();
this.toPrint(w, function () {
document.body.removeChild(iframe);
});
},
toPrint: function (w, cb) {
var _this = this;
w.onload = function () {
try {
setTimeout(function () {
w.focus();
typeof _this.options.onStart === 'function' && _this.options.onStart();
if (!w.document.execCommand('print', false, null)) {
w.print();
toPrint: function (w, cb) {
var _this = this;
w.onload = function () {
try {
setTimeout(function () {
w.focus();
typeof _this.options.onStart === 'function' && _this.options.onStart();
if (!w.document.execCommand('print', false, null)) {
w.print();
}
typeof _this.options.onEnd === 'function' && _this.options.onEnd();
w.close();
parent.printInfoBlood();
cb && cb()
});
} catch (err) {
console.log('err', err);
}
}
typeof _this.options.onEnd === 'function' && _this.options.onEnd();
w.close();
cb && cb()
});
} catch (err) {
console.log('err', err);
}
}
}
};
window.Print = Print;
};
window.Print = Print;
}(window, document));

@ -0,0 +1,80 @@
/**进度条*/
.progress {
width: 30px;
height: 5px;
margin-top: 13px;
_overflow: hidden;
background-color: #f5f5f5;
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
font-size: 12px;
color: white;
text-align: center;
transform: scale(0.8);
}
.progress-bar {
float: left;
height: 100%;
font-size: 12px;
line-height: 20px;
color: #fff;
text-align: center;
background-color: grey;
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-webkit-transition: width 0.6s ease;
-o-transition: width 0.6s ease;
transition: width 0.6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.55) 50%, rgba(255, 255, 255, 0.55) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.55) 50%, rgba(255, 255, 255, 0.55) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.55) 50%, rgba(255, 255, 255, 0.55) 75%, transparent 75%, transparent);
-webkit-background-size: 40px 40px;
background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
-webkit-animation: progress-bar-stripes 2s linear infinite;
-o-animation: progress-bar-stripes 2s linear infinite;
animation: progress-bar-stripes 2s linear infinite;
}
@-webkit-keyframes progress-bar-stripes {
from {
background-position: 40px 0;
}
to {
background-position: 0 0;
}
}
@-o-keyframes progress-bar-stripes {
from {
background-position: 40px 0;
}
to {
background-position: 0 0;
}
}
@keyframes progress-bar-stripes {
from {
background-position: 40px 0;
}
to {
background-position: 0 0;
}
}
.sr-only{
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
border: 0
}

@ -19,254 +19,288 @@ http://sourceforge.net/adobe/cmap/wiki/License/
-->
<html dir="ltr" mozdisallowselectionprint moznomarginboxes>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="google" content="notranslate">
<title>PDF.js viewer</title>
<link rel="stylesheet" href="viewer.css"/>
<link rel="stylesheet" href="../../../static/bootstrap-3.3.7/bower_components/font-awesome/css/font-awesome.min.css"/>
<script src="compatibility.js"></script>
<!-- This snippet is used in production (included from viewer.html) -->
<link rel="resource" type="application/l10n" href="locale/locale.properties"/>
<link rel="shortcut icon" href="/emr_medical_record/favicon.ico">
<script type="text/javascript" src="../../js/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../bootstrap-3.3.7/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="l10n.js"></script>
<script src="debugger.js"></script>
<script src="viewer1.js"></script>
<script src="../build/pdf.js"></script>
<script src="../Print.js"></script>
<style>
.loading {
width: 160px;
height: 56px;
position: absolute;
top: 50%;
left: 50%;
line-height: 56px;
color: #fff;
padding-left: 60px;
font-size: 15px;
background: #000;
opacity: 0.7;
z-index: 9999;
-moz-border-radius: 20px;
-webkit-border-radius: 20px;
border-radius: 20px;
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=70);
}
.fullScreamBtn{
visibility: hidden;
opacity: 0;
width: 150px;
height: 30px;
border-radius: 5px;
background: #898989;
position: fixed;
bottom: 2px;
left: calc(100vw / 2 - 75px);
z-index: 999;
transition: all 0.5s;
}
.fullScreamBtn i{
line-height: 30px;
color: white;
margin-right: 8px;
cursor: pointer;
}
.fullScreamBtn i:first-child{
margin-left: 11px;
}
.page:hover~.fullScreamBtn,.fullScreamBtn:hover{
visibility: visible;
opacity: 1;
}
</style>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="google" content="notranslate">
<title>PDF.js viewer</title>
<link rel="stylesheet" href="viewer.css"/>
<link rel="stylesheet"
href="printLoading.css"/>
<link rel="stylesheet"
href="../../../static/bootstrap-3.3.7/bower_components/font-awesome/css/font-awesome.min.css"/>
<script src="compatibility.js"></script>
<!-- This snippet is used in production (included from viewer.html) -->
<link rel="resource" type="application/l10n" href="locale/locale.properties"/>
<script type="text/javascript" src="../../js/jquery-3.3.1.js"></script>
<script type="text/javascript"
src="../../bootstrap-3.3.7/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="l10n.js"></script>
<script src="debugger.js"></script>
<script src="viewer1.js"></script>
<script src="../build/pdf.js"></script>
<script src="../Print.js"></script>
<style>
.loading {
width: 160px;
height: 56px;
position: absolute;
top: 50%;
left: 50%;
line-height: 56px;
color: #fff;
padding-left: 60px;
font-size: 15px;
background: #000;
opacity: 0.7;
z-index: 9999;
-moz-border-radius: 20px;
-webkit-border-radius: 20px;
border-radius: 20px;
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=70);
}
.fullScreamBtn {
visibility: hidden;
opacity: 0;
width: 150px;
height: 30px;
border-radius: 5px;
background: #898989;
position: fixed;
bottom: 2px;
left: calc(100vw / 2 - 75px);
z-index: 999;
transition: all 0.5s;
}
.fullScreamBtn i {
line-height: 30px;
color: white;
margin-right: 8px;
cursor: pointer;
}
.fullScreamBtn i:first-child {
margin-left: 11px;
}
.page:hover ~ .fullScreamBtn, .fullScreamBtn:hover {
visibility: visible;
opacity: 1;
}
</style>
</head>
<body tabindex="1" class="loadingInProgress" onkeydown="disabledPrint()">
<div id="myModal" class="modal fade" data-keyboard="false"
data-backdrop="static" data-role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true">
<div id="loading" class="loading">加载中。。。</div>
<div id="loading" class="loading">加载中。。。</div>
</div>
<div id="outerContainer">
<div id="sidebarContainer">
<div id="toolbarSidebar">
<div class="splitToolbarButton toggled">
<button id="viewThumbnail" class="toolbarButton group toggled" title="Show Thumbnails" tabindex="2" data-l10n-id="thumbs">
<span data-l10n-id="thumbs_label">Thumbnails</span>
</button>
<button id="viewOutline" class="toolbarButton group" title="Show Document Outline" tabindex="3" data-l10n-id="outline">
<span data-l10n-id="outline_label">Document Outline</span>
</button>
<button id="viewAttachments" class="toolbarButton group" title="Show Attachments" tabindex="4" data-l10n-id="attachments">
<span data-l10n-id="attachments_label">Attachments</span>
</button>
</div>
</div>
<div id="sidebarContent">
<div id="thumbnailView">
</div>
<div id="outlineView" class="hidden">
</div>
<div id="attachmentsView" class="hidden">
</div>
</div>
</div> <!-- sidebarContainer -->
<div id="mainContainer">
<div class="findbar hidden doorHanger hiddenSmallView" id="findbar">
<label for="findInput" class="toolbarLabel" data-l10n-id="find_label">Find:</label>
<input id="findInput" class="toolbarField" tabindex="91">
<div class="splitToolbarButton">
<button class="toolbarButton findPrevious" title="" id="findPrevious" tabindex="92" data-l10n-id="find_previous">
<span data-l10n-id="find_previous_label">Previous</span>
</button>
<div class="splitToolbarButtonSeparator"></div>
<button class="toolbarButton findNext" title="" id="findNext" tabindex="93" data-l10n-id="find_next">
<span data-l10n-id="find_next_label">Next</span>
</button>
</div>
<input type="checkbox" id="findHighlightAll" class="toolbarField">
<label for="findHighlightAll" class="toolbarLabel" tabindex="94" data-l10n-id="find_highlight">Highlight all</label>
<input type="checkbox" id="findMatchCase" class="toolbarField">
<label for="findMatchCase" class="toolbarLabel" tabindex="95" data-l10n-id="find_match_case_label">Match case</label>
<span id="findMsg" class="toolbarLabel"></span>
</div> <!-- findbar -->
<div id="secondaryToolbar" class="secondaryToolbar hidden doorHangerRight">
<div id="secondaryToolbarButtonContainer">
<button id="secondaryPresentationMode" class="secondaryToolbarButton presentationMode visibleLargeView" title="Switch to Presentation Mode" tabindex="51" data-l10n-id="presentation_mode">
<span data-l10n-id="presentation_mode_label">Presentation Mode</span>
</button>
<!--<button id="secondaryOpenFile" class="secondaryToolbarButton openFile visibleLargeView" title="Open File" tabindex="52" data-l10n-id="open_file">
<span data-l10n-id="open_file_label">Open</span>
</button>-->
<button id="secondaryPrint" class="secondaryToolbarButton print visibleMediumView" title="Print" tabindex="53" data-l10n-id="print">
<span data-l10n-id="print_label">Print</span>
</button>
<button id="secondaryDownload" class="secondaryToolbarButton download visibleMediumView" title="Download" tabindex="54" data-l10n-id="download">
<span data-l10n-id="download_label">Download</span>
</button>
<a href="#" id="secondaryViewBookmark" class="secondaryToolbarButton bookmark visibleSmallView" title="Current view (copy or open in new window)" tabindex="55" data-l10n-id="bookmark">
<span data-l10n-id="bookmark_label">Current View</span>
</a>
<div class="horizontalToolbarSeparator visibleLargeView"></div>
<button id="firstPage" class="secondaryToolbarButton firstPage" title="Go to First Page" tabindex="56" data-l10n-id="first_page">
<span data-l10n-id="first_page_label">Go to First Page</span>
</button>
<button id="lastPage" class="secondaryToolbarButton lastPage" title="Go to Last Page" tabindex="57" data-l10n-id="last_page">
<span data-l10n-id="last_page_label">Go to Last Page</span>
</button>
<div class="horizontalToolbarSeparator"></div>
<button id="pageRotateCw" class="secondaryToolbarButton rotateCw" title="Rotate Clockwise" tabindex="58" data-l10n-id="page_rotate_cw">
<span data-l10n-id="page_rotate_cw_label">Rotate Clockwise</span>
</button>
<button id="pageRotateCcw" class="secondaryToolbarButton rotateCcw" title="Rotate Counterclockwise" tabindex="59" data-l10n-id="page_rotate_ccw">
<span data-l10n-id="page_rotate_ccw_label">Rotate Counterclockwise</span>
</button>
<div class="horizontalToolbarSeparator"></div>
<button id="toggleHandTool" class="secondaryToolbarButton handTool" title="Enable hand tool" tabindex="60" data-l10n-id="hand_tool_enable">
<span data-l10n-id="hand_tool_enable_label">Enable hand tool</span>
</button>
<div class="horizontalToolbarSeparator"></div>
<!--<button id="documentProperties" class="secondaryToolbarButton documentProperties" title="Document Properties…" tabindex="61" data-l10n-id="document_properties">
<span data-l10n-id="document_properties_label">Document Properties…</span>
</button>-->
</div>
</div> <!-- secondaryToolbar -->
<div class="toolbar">
<div id="toolbarContainer">
<div id="toolbarViewer">
<div id="toolbarViewerLeft">
<button id="sidebarToggle" class="toolbarButton" title="Toggle Sidebar" tabindex="11" data-l10n-id="toggle_sidebar">
<span data-l10n-id="toggle_sidebar_label">Toggle Sidebar</span>
</button>
<div class="toolbarButtonSpacer"></div>
<!--<button id="viewFind" class="toolbarButton group hiddenSmallView" title="Find in Document" tabindex="12" data-l10n-id="findbar">
<span data-l10n-id="findbar_label">Find</span>
</button>-->
<div class="splitToolbarButton">
<button class="toolbarButton pageUp" title="Previous Page" id="previous" tabindex="13" data-l10n-id="previous">
<span data-l10n-id="previous_label">Previous</span>
</button>
<div class="splitToolbarButtonSeparator"></div>
<button class="toolbarButton pageDown" title="Next Page" id="next" tabindex="14" data-l10n-id="next">
<span data-l10n-id="next_label">Next</span>
</button>
<div id="sidebarContainer">
<div id="toolbarSidebar">
<div class="splitToolbarButton toggled">
<button id="viewThumbnail" class="toolbarButton group toggled" title="Show Thumbnails" tabindex="2"
data-l10n-id="thumbs">
<span data-l10n-id="thumbs_label">Thumbnails</span>
</button>
<button id="viewOutline" class="toolbarButton group" title="Show Document Outline" tabindex="3"
data-l10n-id="outline">
<span data-l10n-id="outline_label">Document Outline</span>
</button>
<button id="viewAttachments" class="toolbarButton group" title="Show Attachments" tabindex="4"
data-l10n-id="attachments">
<span data-l10n-id="attachments_label">Attachments</span>
</button>
</div>
</div>
<div id="sidebarContent">
<div id="thumbnailView">
</div>
<div id="outlineView" class="hidden">
</div>
<label id="pageNumberLabel" class="toolbarLabel" for="pageNumber" data-l10n-id="page_label">Page: </label>
<input type="number" id="pageNumber" class="toolbarField pageNumber" value="1" size="4" min="1" tabindex="15">
<span id="numPages" class="toolbarLabel"></span>
</div>
<div id="toolbarViewerRight">
<button id="presentationMode" class="toolbarButton presentationMode hiddenLargeView" title="Switch to Presentation Mode" tabindex="31" data-l10n-id="presentation_mode">
<span data-l10n-id="presentation_mode_label">Presentation Mode</span>
</button>
<!--<button id="openFile" class="toolbarButton openFile hiddenLargeView" title="Open File" tabindex="32" data-l10n-id="open_file">
<span data-l10n-id="open_file_label">Open</span>
</button>-->
<button id="print" class="toolbarButton print hiddenMediumView" title="Print" tabindex="33" data-l10n-id="print" style="display: none">
<span data-l10n-id="print_label">Print</span>
</button>
<!--<button id="download" class="toolbarButton download hiddenMediumView" title="Download" tabindex="34" data-l10n-id="download">
<span data-l10n-id="download_label">Download</span>
</button>-->
<a href="#" id="viewBookmark" class="toolbarButton bookmark hiddenSmallView" title="Current view (copy or open in new window)" tabindex="35" data-l10n-id="bookmark">
<span data-l10n-id="bookmark_label">Current View</span>
</a>
<div class="verticalToolbarSeparator hiddenSmallView"></div>
<button id="secondaryToolbarToggle" class="toolbarButton" title="Tools" tabindex="36" data-l10n-id="tools">
<span data-l10n-id="tools_label">Tools</span>
</button>
</div>
<div class="outerCenter">
<div class="innerCenter" id="toolbarViewerMiddle">
<div class="splitToolbarButton">
<button id="zoomOut" class="toolbarButton zoomOut" title="Zoom Out" tabindex="21" data-l10n-id="zoom_out">
<span data-l10n-id="zoom_out_label">Zoom Out</span>
<div id="attachmentsView" class="hidden">
</div>
</div>
</div> <!-- sidebarContainer -->
<div id="mainContainer">
<div class="findbar hidden doorHanger hiddenSmallView" id="findbar">
<label for="findInput" class="toolbarLabel" data-l10n-id="find_label">Find:</label>
<input id="findInput" class="toolbarField" tabindex="91">
<div class="splitToolbarButton">
<button class="toolbarButton findPrevious" title="" id="findPrevious" tabindex="92"
data-l10n-id="find_previous">
<span data-l10n-id="find_previous_label">Previous</span>
</button>
<div class="splitToolbarButtonSeparator"></div>
<button id="zoomIn" class="toolbarButton zoomIn" title="Zoom In" tabindex="22" data-l10n-id="zoom_in">
<span data-l10n-id="zoom_in_label">Zoom In</span>
<button class="toolbarButton findNext" title="" id="findNext" tabindex="93" data-l10n-id="find_next">
<span data-l10n-id="find_next_label">Next</span>
</button>
</div>
<input type="checkbox" id="findHighlightAll" class="toolbarField">
<label for="findHighlightAll" class="toolbarLabel" tabindex="94" data-l10n-id="find_highlight">Highlight
all</label>
<input type="checkbox" id="findMatchCase" class="toolbarField">
<label for="findMatchCase" class="toolbarLabel" tabindex="95" data-l10n-id="find_match_case_label">Match
case</label>
<span id="findMsg" class="toolbarLabel"></span>
</div> <!-- findbar -->
<div id="secondaryToolbar" class="secondaryToolbar hidden doorHangerRight">
<div id="secondaryToolbarButtonContainer">
<button id="secondaryPresentationMode" class="secondaryToolbarButton presentationMode visibleLargeView"
title="Switch to Presentation Mode" tabindex="51" data-l10n-id="presentation_mode">
<span data-l10n-id="presentation_mode_label">Presentation Mode</span>
</button>
<!--<button id="secondaryOpenFile" class="secondaryToolbarButton openFile visibleLargeView" title="Open File" tabindex="52" data-l10n-id="open_file">
<span data-l10n-id="open_file_label">Open</span>
</button>-->
<button id="secondaryPrint" class="secondaryToolbarButton print visibleMediumView" title="Print"
tabindex="53" data-l10n-id="print">
<span data-l10n-id="print_label">Print</span>
</button>
</div>
<span id="scaleSelectContainer" class="dropdownToolbarButton">
<button id="secondaryDownload" class="secondaryToolbarButton download visibleMediumView"
title="Download" tabindex="54" data-l10n-id="download">
<span data-l10n-id="download_label">Download</span>
</button>
<a href="#" id="secondaryViewBookmark" class="secondaryToolbarButton bookmark visibleSmallView"
title="Current view (copy or open in new window)" tabindex="55" data-l10n-id="bookmark">
<span data-l10n-id="bookmark_label">Current View</span>
</a>
<div class="horizontalToolbarSeparator visibleLargeView"></div>
<button id="firstPage" class="secondaryToolbarButton firstPage" title="Go to First Page" tabindex="56"
data-l10n-id="first_page">
<span data-l10n-id="first_page_label">Go to First Page</span>
</button>
<button id="lastPage" class="secondaryToolbarButton lastPage" title="Go to Last Page" tabindex="57"
data-l10n-id="last_page">
<span data-l10n-id="last_page_label">Go to Last Page</span>
</button>
<div class="horizontalToolbarSeparator"></div>
<button id="pageRotateCw" class="secondaryToolbarButton rotateCw" title="Rotate Clockwise" tabindex="58"
data-l10n-id="page_rotate_cw">
<span data-l10n-id="page_rotate_cw_label">Rotate Clockwise</span>
</button>
<button id="pageRotateCcw" class="secondaryToolbarButton rotateCcw" title="Rotate Counterclockwise"
tabindex="59" data-l10n-id="page_rotate_ccw">
<span data-l10n-id="page_rotate_ccw_label">Rotate Counterclockwise</span>
</button>
<div class="horizontalToolbarSeparator"></div>
<button id="toggleHandTool" class="secondaryToolbarButton handTool" title="Enable hand tool"
tabindex="60" data-l10n-id="hand_tool_enable">
<span data-l10n-id="hand_tool_enable_label">Enable hand tool</span>
</button>
<div class="horizontalToolbarSeparator"></div>
<!--<button id="documentProperties" class="secondaryToolbarButton documentProperties" title="Document Properties…" tabindex="61" data-l10n-id="document_properties">
<span data-l10n-id="document_properties_label">Document Properties…</span>
</button>-->
</div>
</div> <!-- secondaryToolbar -->
<div class="toolbar">
<div id="toolbarContainer">
<div id="toolbarViewer">
<div id="toolbarViewerLeft">
<button id="sidebarToggle" class="toolbarButton" title="Toggle Sidebar" tabindex="11"
data-l10n-id="toggle_sidebar">
<span data-l10n-id="toggle_sidebar_label">Toggle Sidebar</span>
</button>
<div class="toolbarButtonSpacer"></div>
<!--<button id="viewFind" class="toolbarButton group hiddenSmallView" title="Find in Document" tabindex="12" data-l10n-id="findbar">
<span data-l10n-id="findbar_label">Find</span>
</button>-->
<div class="splitToolbarButton">
<button class="toolbarButton pageUp" title="Previous Page" id="previous" tabindex="13"
data-l10n-id="previous">
<span data-l10n-id="previous_label">Previous</span>
</button>
<div class="splitToolbarButtonSeparator"></div>
<button class="toolbarButton pageDown" title="Next Page" id="next" tabindex="14"
data-l10n-id="next">
<span data-l10n-id="next_label">Next</span>
</button>
</div>
<label id="pageNumberLabel" class="toolbarLabel" for="pageNumber" data-l10n-id="page_label">Page: </label>
<input type="number" id="pageNumber" class="toolbarField pageNumber" value="1" size="4" min="1"
tabindex="15">
<span id="numPages" class="toolbarLabel"></span>
</div>
<div id="toolbarViewerRight">
<button id="presentationMode" class="toolbarButton presentationMode hiddenLargeView"
title="Switch to Presentation Mode" tabindex="31" data-l10n-id="presentation_mode">
<span data-l10n-id="presentation_mode_label">Presentation Mode</span>
</button>
<!--<button id="openFile" class="toolbarButton openFile hiddenLargeView" title="Open File" tabindex="32" data-l10n-id="open_file">
<span data-l10n-id="open_file_label">Open</span>
</button>-->
<div id="printLoading" class="progress" title="打印预览加载中...">
<div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100"></div>
<p style="margin-top: 6px;">0%</p>
</div>
<button id="print" class="toolbarButton print hiddenMediumView" title="Print" tabindex="33"
data-l10n-id="print" style="display: none">
<span data-l10n-id="print_label">Print</span>
</button>
<!--<button id="download" class="toolbarButton download hiddenMediumView" title="Download" tabindex="34" data-l10n-id="download">
<span data-l10n-id="download_label">Download</span>
</button>-->
<a href="#" id="viewBookmark" class="toolbarButton bookmark hiddenSmallView"
title="Current view (copy or open in new window)" tabindex="35" data-l10n-id="bookmark">
<span data-l10n-id="bookmark_label">Current View</span>
</a>
<div class="verticalToolbarSeparator hiddenSmallView"></div>
<button id="secondaryToolbarToggle" class="toolbarButton" title="Tools" tabindex="36"
data-l10n-id="tools">
<span data-l10n-id="tools_label">Tools</span>
</button>
</div>
<div class="outerCenter">
<div class="innerCenter" id="toolbarViewerMiddle">
<div class="splitToolbarButton">
<button id="zoomOut" class="toolbarButton zoomOut" title="Zoom Out" tabindex="21"
data-l10n-id="zoom_out">
<span data-l10n-id="zoom_out_label">Zoom Out</span>
</button>
<div class="splitToolbarButtonSeparator"></div>
<button id="zoomIn" class="toolbarButton zoomIn" title="Zoom In" tabindex="22"
data-l10n-id="zoom_in">
<span data-l10n-id="zoom_in_label">Zoom In</span>
</button>
</div>
<span id="scaleSelectContainer" class="dropdownToolbarButton">
<select id="scaleSelect" title="Zoom" tabindex="23" data-l10n-id="zoom">
<option id="pageAutoOption" title="" value="auto" selected="selected" data-l10n-id="page_scale_auto">Automatic Zoom</option>
<option id="pageAutoOption" title="" value="auto" selected="selected"
data-l10n-id="page_scale_auto">Automatic Zoom</option>
<option id="pageActualOption" title="" value="page-actual" data-l10n-id="page_scale_actual">Actual Size</option>
<option id="pageFitOption" title="" value="page-fit" data-l10n-id="page_scale_fit">Fit Page</option>
<option id="pageFitOption" title="" value="page-fit"
data-l10n-id="page_scale_fit">Fit Page</option>
<option id="pageWidthOption" title="" value="page-width" data-l10n-id="page_scale_width">Full Width</option>
<option id="customScaleOption" title="" value="custom"></option>
<option title="" value="0.5" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 50 }'>50%</option>
@ -279,217 +313,240 @@ http://sourceforge.net/adobe/cmap/wiki/License/
<option title="" value="4" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 400 }'>400%</option>
</select>
</span>
</div>
</div>
</div>
<div id="loadingBar">
<div class="progress">
<div class="glimmer">
</div>
</div>
</div>
</div>
</div>
</div>
<div id="loadingBar">
<div class="progress">
<div class="glimmer">
</div>
</div>
</div>
</div>
</div>
<menu type="context" id="viewerContextMenu">
<menuitem id="contextFirstPage" label="First Page"
data-l10n-id="first_page"></menuitem>
<menuitem id="contextLastPage" label="Last Page"
data-l10n-id="last_page"></menuitem>
<menuitem id="contextPageRotateCw" label="Rotate Clockwise"
data-l10n-id="page_rotate_cw"></menuitem>
<menuitem id="contextPageRotateCcw" label="Rotate Counter-Clockwise"
data-l10n-id="page_rotate_ccw"></menuitem>
</menu>
<div id="viewerContainer" tabindex="0">
<div id="viewer" class="pdfViewer"></div>
</div>
<div id="errorWrapper" hidden='true'>
<div id="errorMessageLeft">
<span id="errorMessage"></span>
<button id="errorShowMore" data-l10n-id="error_more_info">
More Information
</button>
<button id="errorShowLess" data-l10n-id="error_less_info" hidden='true'>
Less Information
</button>
</div>
<div id="errorMessageRight">
<button id="errorClose" data-l10n-id="error_close">
Close
</button>
</div>
<div class="clearBoth"></div>
<textarea id="errorMoreInfo" hidden='true' readonly="readonly"></textarea>
</div>
</div> <!-- mainContainer -->
<div id="overlayContainer" class="hidden">
<div id="passwordOverlay" class="container hidden">
<div class="dialog">
<div class="row">
<p id="passwordText" data-l10n-id="password_label">Enter the password to open this PDF file:</p>
</div>
<div class="row">
<input type="password" id="password" class="toolbarField" />
</div>
<div class="buttonRow">
<button id="passwordCancel" class="overlayButton"><span data-l10n-id="password_cancel">Cancel</span></button>
<button id="passwordSubmit" class="overlayButton"><span data-l10n-id="password_ok">OK</span></button>
</div>
</div>
</div>
<div id="documentPropertiesOverlay" class="container hidden">
<div class="dialog">
<div class="row">
<span data-l10n-id="document_properties_file_name">File name:</span> <p id="fileNameField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_file_size">File size:</span> <p id="fileSizeField">-</p>
</div>
<div class="separator"></div>
<div class="row">
<span data-l10n-id="document_properties_title">Title:</span> <p id="titleField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_author">Author:</span> <p id="authorField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_subject">Subject:</span> <p id="subjectField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_keywords">Keywords:</span> <p id="keywordsField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_creation_date">Creation Date:</span> <p id="creationDateField">-</p>
<menu type="context" id="viewerContextMenu">
<menuitem id="contextFirstPage" label="First Page"
data-l10n-id="first_page"></menuitem>
<menuitem id="contextLastPage" label="Last Page"
data-l10n-id="last_page"></menuitem>
<menuitem id="contextPageRotateCw" label="Rotate Clockwise"
data-l10n-id="page_rotate_cw"></menuitem>
<menuitem id="contextPageRotateCcw" label="Rotate Counter-Clockwise"
data-l10n-id="page_rotate_ccw"></menuitem>
</menu>
<div id="viewerContainer" tabindex="0">
<div id="viewer" class="pdfViewer"></div>
</div>
<div class="row">
<span data-l10n-id="document_properties_modification_date">Modification Date:</span> <p id="modificationDateField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_creator">Creator:</span> <p id="creatorField">-</p>
</div>
<div class="separator"></div>
<div class="row">
<span data-l10n-id="document_properties_producer">PDF Producer:</span> <p id="producerField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_version">PDF Version:</span> <p id="versionField">-</p>
<div id="errorWrapper" hidden='true'>
<div id="errorMessageLeft">
<span id="errorMessage"></span>
<button id="errorShowMore" data-l10n-id="error_more_info">
More Information
</button>
<button id="errorShowLess" data-l10n-id="error_less_info" hidden='true'>
Less Information
</button>
</div>
<div id="errorMessageRight">
<button id="errorClose" data-l10n-id="error_close">
Close
</button>
</div>
<div class="clearBoth"></div>
<textarea id="errorMoreInfo" hidden='true' readonly="readonly"></textarea>
</div>
<div class="row">
<span data-l10n-id="document_properties_page_count">Page Count:</span> <p id="pageCountField">-</p>
</div> <!-- mainContainer -->
<div id="overlayContainer" class="hidden">
<div id="passwordOverlay" class="container hidden">
<div class="dialog">
<div class="row">
<p id="passwordText" data-l10n-id="password_label">Enter the password to open this PDF file:</p>
</div>
<div class="row">
<input type="password" id="password" class="toolbarField"/>
</div>
<div class="buttonRow">
<button id="passwordCancel" class="overlayButton"><span data-l10n-id="password_cancel">Cancel</span>
</button>
<button id="passwordSubmit" class="overlayButton"><span data-l10n-id="password_ok">OK</span>
</button>
</div>
</div>
</div>
<div class="buttonRow">
<button id="documentPropertiesClose" class="overlayButton"><span data-l10n-id="document_properties_close">Close</span></button>
<div id="documentPropertiesOverlay" class="container hidden">
<div class="dialog">
<div class="row">
<span data-l10n-id="document_properties_file_name">File name:</span>
<p id="fileNameField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_file_size">File size:</span>
<p id="fileSizeField">-</p>
</div>
<div class="separator"></div>
<div class="row">
<span data-l10n-id="document_properties_title">Title:</span>
<p id="titleField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_author">Author:</span>
<p id="authorField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_subject">Subject:</span>
<p id="subjectField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_keywords">Keywords:</span>
<p id="keywordsField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_creation_date">Creation Date:</span>
<p id="creationDateField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_modification_date">Modification Date:</span>
<p id="modificationDateField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_creator">Creator:</span>
<p id="creatorField">-</p>
</div>
<div class="separator"></div>
<div class="row">
<span data-l10n-id="document_properties_producer">PDF Producer:</span>
<p id="producerField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_version">PDF Version:</span>
<p id="versionField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_page_count">Page Count:</span>
<p id="pageCountField">-</p>
</div>
<div class="buttonRow">
<button id="documentPropertiesClose" class="overlayButton"><span
data-l10n-id="document_properties_close">Close</span></button>
</div>
</div>
</div>
</div>
</div>
</div> <!-- overlayContainer -->
</div> <!-- overlayContainer -->
</div> <!-- outerContainer -->
<div id="printContainer"></div>
<div style="display: none">
<div id="printContainer1">
</div>
</div>
<div id="mozPrintCallback-shim" hidden>
<style>
@media print {
#printContainer div {
page-break-after: always;
page-break-inside: avoid;
}
}
</style>
<style scoped>
#mozPrintCallback-shim {
position: fixed;
top: 0;
left: 0;
height: 100%;
width: 100%;
z-index: 9999999;
display: block;
text-align: center;
background-color: rgba(0, 0, 0, 0.5);
}
#mozPrintCallback-shim[hidden] {
display: none;
}
@media print {
#mozPrintCallback-shim {
display: none;
}
}
#mozPrintCallback-shim .mozPrintCallback-dialog-box {
display: inline-block;
margin: -50px auto 0;
position: relative;
top: 45%;
left: 0;
min-width: 220px;
max-width: 400px;
padding: 9px;
border: 1px solid hsla(0, 0%, 0%, .5);
border-radius: 2px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
background-color: #474747;
color: hsl(0, 0%, 85%);
font-size: 16px;
line-height: 20px;
}
#mozPrintCallback-shim .progress-row {
clear: both;
padding: 1em 0;
}
#mozPrintCallback-shim progress {
width: 100%;
}
#mozPrintCallback-shim .relative-progress {
clear: both;
float: right;
}
#mozPrintCallback-shim .progress-actions {
clear: both;
}
</style>
<div class="mozPrintCallback-dialog-box">
打印加载中...
<div class="progress-row">
<progress value="0" max="100"></progress>
<span class="relative-progress">0%</span>
</div>
<div class="progress-actions">
<input type="button" value="Cancel" class="mozPrintCallback-cancel">
<style>
@media print {
#printContainer div {
page-break-after: always;
page-break-inside: avoid;
}
}
</style>
<style scoped>
#mozPrintCallback-shim {
position: fixed;
top: 0;
left: 0;
height: 100%;
width: 100%;
z-index: 9999999;
display: block;
text-align: center;
background-color: rgba(0, 0, 0, 0.5);
}
#mozPrintCallback-shim[hidden] {
display: none;
}
@media print {
#mozPrintCallback-shim {
display: none;
}
}
#mozPrintCallback-shim .mozPrintCallback-dialog-box {
display: inline-block;
margin: -50px auto 0;
position: relative;
top: 45%;
left: 0;
min-width: 220px;
max-width: 400px;
padding: 9px;
border: 1px solid hsla(0, 0%, 0%, .5);
border-radius: 2px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
background-color: #474747;
color: hsl(0, 0%, 85%);
font-size: 16px;
line-height: 20px;
}
#mozPrintCallback-shim .progress-row {
clear: both;
padding: 1em 0;
}
#mozPrintCallback-shim progress {
width: 100%;
}
#mozPrintCallback-shim .relative-progress {
clear: both;
float: right;
}
#mozPrintCallback-shim .progress-actions {
clear: both;
}
</style>
<div class="mozPrintCallback-dialog-box">
打印加载中...
<div class="progress-row">
<progress value="0" max="100"></progress>
<span class="relative-progress">0%</span>
</div>
<div class="progress-actions">
<input type="button" value="Cancel" class="mozPrintCallback-cancel">
</div>
</div>
</div>
</div>
</body>
<script>
function getContextPath() {
var pathName = document.location.pathname;
var index = pathName.substr(1).indexOf("/");
var result = pathName.substr(0, index + 1);
return result;
}
var path;
$(function(){
//获取父页面打印权限显示打印按钮
var print = parent.$("#print").val();
if(print == 1){
$("#print").show();
}
/*for (var i = 0; i < 147; i++) {
var html = "<img src=\"http://localhost:8083/emr_record/reload/000239.jpg\" width=\"890\" height=\"1180\">";
$("#printContainer1").append(html);
}*/
})
$(function () {
//获取父页面打印权限显示打印按钮
var print = parent.$("#print").val();
if (print == 1) {
$("#printLoading").show();
}
})
var getLoadingInterval = setInterval(function () {
//获取打印预览图片加载进度
var loading = parent.$("#loading").val();
$(".progress-bar").css("width",loading);
$("#printLoading p").text(loading);
//加载完退出定时
if(loading == '100%'){
clearInterval(getLoadingInterval);
}
},100);
</script>
</html>

@ -1885,20 +1885,12 @@ var SecondaryToolbar = {
printClick: function secondaryToolbarPrintClick(evt) {
//window.print();
//是否打印预览图片加载完成标识
var printPicLoaded = parent.$("#printPicLoaded").val();
if(printPicLoaded == 1){
Print('#printContainer1', {
onStart: function () {
console.log('onStart', new Date())
},
onEnd: function () {
console.log('onEnd', new Date())
$("#printContainer1").hide();
}
})
}else{
alert("预览图片未加载完,请稍后再试");
}
Print('#printContainer1', {
onStart: function () {
},
onEnd: function () {
}
})
this.close();
},
@ -6869,9 +6861,7 @@ var PDFViewerApplication = {
},
afterPrint: function pdfViewSetupAfterPrint() {
console.log("打印")
parent.printInfoBlood();
console.log(2)
var div = document.getElementById('printContainer');
while (div.hasChildNodes()) {
div.removeChild(div.lastChild);

Loading…
Cancel
Save