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

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

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

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

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

@ -54,6 +54,8 @@ import java.util.*;
*/ */
@Component @Component
public class CommomService { public class CommomService {
//定义打印预览加载进度map
private static Map<String,Integer> printLoadingMap = new HashMap<>();
@Value("${POWER_URLHEAD}") @Value("${POWER_URLHEAD}")
private String POWER_URLHEAD; private String POWER_URLHEAD;
@Value("${waterPicPath}") @Value("${waterPicPath}")
@ -377,7 +379,7 @@ public class CommomService {
* @param sources * @param sources
* @return * @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<>(); List<String> outs = new LinkedList<>();
if(StringUtils.isNotBlank(names)){ if(StringUtils.isNotBlank(names)){
String[] rootPathList = rootPaths.split(","); String[] rootPathList = rootPaths.split(",");
@ -431,6 +433,8 @@ public class CommomService {
outSrc = EMRRECORDJSP + "\\" + root + picPath; outSrc = EMRRECORDJSP + "\\" + root + picPath;
} }
outs.add(outSrc); outs.add(outSrc);
Integer value = Math.round((i+1)*100/nameList.length);
printLoadingMap.put(mapKey,value);
} }
} }
return outs; return outs;
@ -466,4 +470,16 @@ public class CommomService {
} }
return null; 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){ public List<EmrPrintOrDownLoadInfoVo> selectAll(EmrPrintOrDownLoadInfoVo emrPrintOrDownLoadInfoVo,String flag){
long start = System.currentTimeMillis();
List<EmrPrintOrDownLoadInfoVo> list = printDownloadInfoMapper.selectAll(emrPrintOrDownLoadInfoVo,flag); List<EmrPrintOrDownLoadInfoVo> list = printDownloadInfoMapper.selectAll(emrPrintOrDownLoadInfoVo,flag);
long end = System.currentTimeMillis();
System.out.println("查询用时:"+(end-start)/1000.0+"s");
return getReturnList(list); return getReturnList(list);
} }
//组织数据 //组织数据
private List<EmrPrintOrDownLoadInfoVo> getReturnList(List<EmrPrintOrDownLoadInfoVo> list){ private List<EmrPrintOrDownLoadInfoVo> getReturnList(List<EmrPrintOrDownLoadInfoVo> list){
long start = System.currentTimeMillis();
List<EmrPrintOrDownLoadInfoVo> returnList = new ArrayList<>(); List<EmrPrintOrDownLoadInfoVo> returnList = new ArrayList<>();
if(null != list && !list.isEmpty()){ if(null != list && !list.isEmpty()){
Map<String,EmrPrintOrDownLoadInfoVo> map = new LinkedHashMap<>(); Map<String,EmrPrintOrDownLoadInfoVo> map = new LinkedHashMap<>();
@ -138,6 +142,8 @@ public class PrintOrDownLoadInfoService {
returnList.add(emrPrintOrDownLoadInfoVo); returnList.add(emrPrintOrDownLoadInfoVo);
} }
} }
long end = System.currentTimeMillis();
System.out.println("组织用时:"+(end-start)/1000.0+"s");
return returnList; return returnList;
} }
/** /**

@ -9,7 +9,7 @@
<result column="dis_date" property="disDate" jdbcType="TIMESTAMP" /> <result column="dis_date" property="disDate" jdbcType="TIMESTAMP" />
<result column="fileRealPath" property="fileRealPath" jdbcType="VARCHAR" /> <result column="fileRealPath" property="fileRealPath" jdbcType="VARCHAR" />
</resultMap> </resultMap>
<!--根据patientId集合查询图片路径--> <!--湛江、英德根据patientId集合查询图片路径-->
<select id="selectScanFileByPatientIds" resultMap="BaseResultMap" parameterType="java.lang.String"> <select id="selectScanFileByPatientIds" resultMap="BaseResultMap" parameterType="java.lang.String">
SELECT SELECT
dbo.t_scan_assort.assort_id, dbo.t_scan_assort.assort_id,
@ -32,7 +32,7 @@
</select> </select>
<!--脐血库根据patientId集合查询图片路径--> <!--脐血库、祈福根据patientId集合查询图片路径-->
<select id="selectScanFileByBloodPatientIds" resultMap="BaseResultMap" parameterType="java.lang.String"> <select id="selectScanFileByBloodPatientIds" resultMap="BaseResultMap" parameterType="java.lang.String">
SELECT SELECT
commomtable.patient_id, commomtable.patient_id,
@ -43,9 +43,9 @@
dbo.t_scan_assort.scan_page, dbo.t_scan_assort.scan_page,
case case
when t_scan_assort.source = 1 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 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 end fileRealPath
FROM FROM
dbo.commomtable dbo.commomtable
@ -66,20 +66,4 @@
ORDER BY ORDER BY
dbo.zd_assort.assort_sort dbo.zd_assort.assort_sort
</select> </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> </mapper>

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

@ -44,18 +44,26 @@
</style> </style>
</head> </head>
<body style="scroll:auto" onkeydown="disabledPrint()"> <body style="scroll:auto" onkeydown="disabledPrint()">
<input type="hidden" id="patientId" value="${patientId}"> <input hidden id="patientId" value="${patientId}">
<input type="hidden" id="assortIds"> <!--初始化及树复选框勾选的文件名称集合-->
<input type="hidden" id="sources"> <input hidden id="assortIds">
<input type="hidden" id="flag" value="home_addr"> <!--初始化及树复选框勾选的文件来源集合-->
<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加载完成标识--> <!--定义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="content-left">
<div class="form-group"> <div class="form-group">
<div class="col-sm-5" style="padding-right: 0"> <div class="col-sm-5" style="padding-right: 0">
@ -68,7 +76,7 @@
</c:if> </c:if>
</div> </div>
<div class="col-sm-3"> <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> </div>
<c:if test="${CURRENT_USER.userEmail == '1' || isDownload == '1'}"> <c:if test="${CURRENT_USER.userEmail == '1' || isDownload == '1'}">
<div class="col-sm-3"> <div class="col-sm-3">

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

@ -119,13 +119,6 @@ function onCheck(e, treeId, treeNode) {
$("#typeId").change(function(){ $("#typeId").change(function(){
menu.loadMenuTree(); 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(){ function sure(){
Common.confirm({ Common.confirm({

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

@ -3,122 +3,125 @@
* 2017-7-14 * 2017-7-14
*/ */
(function (window, document) { (function (window, document) {
var Print = function (dom, options) { var Print = function (dom, options) {
if (!(this instanceof Print)) return new Print(dom, options); if (!(this instanceof Print)) return new Print(dom, options);
this.options = this.extend({ this.options = this.extend({
noPrint: '.no-print', noPrint: '.no-print',
onStart: function () { }, onStart: function () {
onEnd: function () { } },
}, options); onEnd: function () {
}
}, options);
if ((typeof dom) === "string") { if ((typeof dom) === "string") {
this.dom = document.querySelector(dom); this.dom = document.querySelector(dom);
} else { } else {
this.dom = dom; this.dom = dom;
} }
this.init(); this.init();
}; };
Print.prototype = { Print.prototype = {
init: function () { init: function () {
var content = this.getStyle() + this.getHtml(); var content = this.getStyle() + this.getHtml();
this.writeIframe(content); this.writeIframe(content);
}, },
extend: function (obj, obj2) { extend: function (obj, obj2) {
for (var k in obj2) { for (var k in obj2) {
obj[k] = obj2[k]; obj[k] = obj2[k];
} }
return obj; return obj;
}, },
getStyle: function () { getStyle: function () {
var str = "", var str = "",
styles = document.querySelectorAll('style,link'); styles = document.querySelectorAll('style,link');
for (var i = 0; i < styles.length; i++) { for (var i = 0; i < styles.length; i++) {
str += styles[i].outerHTML; str += styles[i].outerHTML;
} }
str += "<style>" + (this.options.noPrint ? this.options.noPrint : '.no-print') + "{display:none;}</style>"; str += "<style>" + (this.options.noPrint ? this.options.noPrint : '.no-print') + "{display:none;}</style>";
return str; return str;
}, },
getHtml: function () { getHtml: function () {
var inputs = document.querySelectorAll('input'); var inputs = document.querySelectorAll('input');
var textareas = document.querySelectorAll('textarea'); var textareas = document.querySelectorAll('textarea');
var selects = document.querySelectorAll('select'); var selects = document.querySelectorAll('select');
for (var k in inputs) { for (var k in inputs) {
if (inputs[k].type == "checkbox" || inputs[k].type == "radio") { if (inputs[k].type == "checkbox" || inputs[k].type == "radio") {
if (inputs[k].checked == true) { if (inputs[k].checked == true) {
inputs[k].setAttribute('checked', "checked") inputs[k].setAttribute('checked', "checked")
} else { } else {
inputs[k].removeAttribute('checked') inputs[k].removeAttribute('checked')
} }
} else if (inputs[k].type == "text") { } else if (inputs[k].type == "text") {
inputs[k].setAttribute('value', inputs[k].value) inputs[k].setAttribute('value', inputs[k].value)
} }
} }
for (var k2 in textareas) { for (var k2 in textareas) {
if (textareas[k2].type == 'textarea') { if (textareas[k2].type == 'textarea') {
textareas[k2].innerHTML = textareas[k2].value textareas[k2].innerHTML = textareas[k2].value
} }
} }
for (var k3 in selects) { for (var k3 in selects) {
if (selects[k3].type == 'select-one') { if (selects[k3].type == 'select-one') {
var child = selects[k3].children; var child = selects[k3].children;
for (var i in child) { for (var i in child) {
if (child[i].tagName == 'OPTION') { if (child[i].tagName == 'OPTION') {
if (child[i].selected == true) { if (child[i].selected == true) {
child[i].setAttribute('selected', "selected") child[i].setAttribute('selected', "selected")
} else { } else {
child[i].removeAttribute('selected') child[i].removeAttribute('selected')
} }
}
}
}
} }
}
}
}
return this.dom.outerHTML; return this.dom.outerHTML;
}, },
writeIframe: function (content) { writeIframe: function (content) {
var w, doc, iframe = document.createElement('iframe'), var w, doc, iframe = document.createElement('iframe'),
f = document.body.appendChild(iframe); f = document.body.appendChild(iframe);
iframe.id = "myIframe"; iframe.id = "myIframe";
iframe.style = "position:absolute;width:0;height:0;top:-10px;left:-10px;"; iframe.style = "position:absolute;width:0;height:0;top:-10px;left:-10px;";
w = f.contentWindow || f.contentDocument; w = f.contentWindow || f.contentDocument;
doc = f.contentDocument || f.contentWindow.document; doc = f.contentDocument || f.contentWindow.document;
doc.open(); doc.open();
doc.write(content); doc.write(content);
doc.close(); doc.close();
this.toPrint(w, function () { this.toPrint(w, function () {
document.body.removeChild(iframe) document.body.removeChild(iframe);
}); });
}, },
toPrint: function (w, cb) { toPrint: function (w, cb) {
var _this = this; var _this = this;
w.onload = function () { w.onload = function () {
try { try {
setTimeout(function () { setTimeout(function () {
w.focus(); w.focus();
typeof _this.options.onStart === 'function' && _this.options.onStart(); typeof _this.options.onStart === 'function' && _this.options.onStart();
if (!w.document.execCommand('print', false, null)) { if (!w.document.execCommand('print', false, null)) {
w.print(); 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)); }(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> <html dir="ltr" mozdisallowselectionprint moznomarginboxes>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="google" content="notranslate"> <meta name="google" content="notranslate">
<title>PDF.js viewer</title> <title>PDF.js viewer</title>
<link rel="stylesheet" href="viewer.css"/> <link rel="stylesheet" href="viewer.css"/>
<link rel="stylesheet" href="../../../static/bootstrap-3.3.7/bower_components/font-awesome/css/font-awesome.min.css"/> <link rel="stylesheet"
href="printLoading.css"/>
<script src="compatibility.js"></script> <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"> <!-- This snippet is used in production (included from viewer.html) -->
<script type="text/javascript" src="../../js/jquery-3.3.1.js"></script> <link rel="resource" type="application/l10n" href="locale/locale.properties"/>
<script type="text/javascript" src="../../bootstrap-3.3.7/bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../js/jquery-3.3.1.js"></script>
<script src="l10n.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="debugger.js"></script>
<script src="viewer1.js"></script> <script src="viewer1.js"></script>
<script src="../build/pdf.js"></script> <script src="../build/pdf.js"></script>
<script src="../Print.js"></script> <script src="../Print.js"></script>
<style> <style>
.loading { .loading {
width: 160px; width: 160px;
height: 56px; height: 56px;
position: absolute; position: absolute;
top: 50%; top: 50%;
left: 50%; left: 50%;
line-height: 56px; line-height: 56px;
color: #fff; color: #fff;
padding-left: 60px; padding-left: 60px;
font-size: 15px; font-size: 15px;
background: #000; background: #000;
opacity: 0.7; opacity: 0.7;
z-index: 9999; z-index: 9999;
-moz-border-radius: 20px; -moz-border-radius: 20px;
-webkit-border-radius: 20px; -webkit-border-radius: 20px;
border-radius: 20px; border-radius: 20px;
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=70); filter: progid:DXImageTransform.Microsoft.Alpha(opacity=70);
} }
.fullScreamBtn{
visibility: hidden; .fullScreamBtn {
opacity: 0; visibility: hidden;
width: 150px; opacity: 0;
height: 30px; width: 150px;
border-radius: 5px; height: 30px;
background: #898989; border-radius: 5px;
position: fixed; background: #898989;
bottom: 2px; position: fixed;
left: calc(100vw / 2 - 75px); bottom: 2px;
z-index: 999; left: calc(100vw / 2 - 75px);
transition: all 0.5s; z-index: 999;
} transition: all 0.5s;
.fullScreamBtn i{ }
line-height: 30px;
color: white; .fullScreamBtn i {
margin-right: 8px; line-height: 30px;
cursor: pointer; color: white;
} margin-right: 8px;
.fullScreamBtn i:first-child{ cursor: pointer;
margin-left: 11px; }
}
.page:hover~.fullScreamBtn,.fullScreamBtn:hover{ .fullScreamBtn i:first-child {
visibility: visible; margin-left: 11px;
opacity: 1; }
}
</style> .page:hover ~ .fullScreamBtn, .fullScreamBtn:hover {
visibility: visible;
opacity: 1;
}
</style>
</head> </head>
<body tabindex="1" class="loadingInProgress" onkeydown="disabledPrint()"> <body tabindex="1" class="loadingInProgress" onkeydown="disabledPrint()">
<div id="myModal" class="modal fade" data-keyboard="false" <div id="myModal" class="modal fade" data-keyboard="false"
data-backdrop="static" data-role="dialog" data-backdrop="static" data-role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true"> aria-labelledby="myModalLabel" aria-hidden="true">
<div id="loading" class="loading">加载中。。。</div> <div id="loading" class="loading">加载中。。。</div>
</div> </div>
<div id="outerContainer"> <div id="outerContainer">
<div id="sidebarContainer"> <div id="sidebarContainer">
<div id="toolbarSidebar"> <div id="toolbarSidebar">
<div class="splitToolbarButton toggled"> <div class="splitToolbarButton toggled">
<button id="viewThumbnail" class="toolbarButton group toggled" title="Show Thumbnails" tabindex="2" data-l10n-id="thumbs"> <button id="viewThumbnail" class="toolbarButton group toggled" title="Show Thumbnails" tabindex="2"
<span data-l10n-id="thumbs_label">Thumbnails</span> data-l10n-id="thumbs">
</button> <span data-l10n-id="thumbs_label">Thumbnails</span>
<button id="viewOutline" class="toolbarButton group" title="Show Document Outline" tabindex="3" data-l10n-id="outline"> </button>
<span data-l10n-id="outline_label">Document Outline</span> <button id="viewOutline" class="toolbarButton group" title="Show Document Outline" tabindex="3"
</button> data-l10n-id="outline">
<button id="viewAttachments" class="toolbarButton group" title="Show Attachments" tabindex="4" data-l10n-id="attachments"> <span data-l10n-id="outline_label">Document Outline</span>
<span data-l10n-id="attachments_label">Attachments</span> </button>
</button> <button id="viewAttachments" class="toolbarButton group" title="Show Attachments" tabindex="4"
</div> data-l10n-id="attachments">
</div> <span data-l10n-id="attachments_label">Attachments</span>
<div id="sidebarContent"> </button>
<div id="thumbnailView"> </div>
</div> </div>
<div id="outlineView" class="hidden"> <div id="sidebarContent">
</div> <div id="thumbnailView">
<div id="attachmentsView" class="hidden"> </div>
</div> <div id="outlineView" class="hidden">
</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> </div>
<label id="pageNumberLabel" class="toolbarLabel" for="pageNumber" data-l10n-id="page_label">Page: </label> <div id="attachmentsView" class="hidden">
<input type="number" id="pageNumber" class="toolbarField pageNumber" value="1" size="4" min="1" tabindex="15"> </div>
<span id="numPages" class="toolbarLabel"></span> </div>
</div> </div> <!-- sidebarContainer -->
<div id="toolbarViewerRight">
<button id="presentationMode" class="toolbarButton presentationMode hiddenLargeView" title="Switch to Presentation Mode" tabindex="31" data-l10n-id="presentation_mode"> <div id="mainContainer">
<span data-l10n-id="presentation_mode_label">Presentation Mode</span> <div class="findbar hidden doorHanger hiddenSmallView" id="findbar">
</button> <label for="findInput" class="toolbarLabel" data-l10n-id="find_label">Find:</label>
<input id="findInput" class="toolbarField" tabindex="91">
<!--<button id="openFile" class="toolbarButton openFile hiddenLargeView" title="Open File" tabindex="32" data-l10n-id="open_file"> <div class="splitToolbarButton">
<span data-l10n-id="open_file_label">Open</span> <button class="toolbarButton findPrevious" title="" id="findPrevious" tabindex="92"
</button>--> data-l10n-id="find_previous">
<span data-l10n-id="find_previous_label">Previous</span>
<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> </button>
<div class="splitToolbarButtonSeparator"></div> <div class="splitToolbarButtonSeparator"></div>
<button id="zoomIn" class="toolbarButton zoomIn" title="Zoom In" tabindex="22" data-l10n-id="zoom_in"> <button class="toolbarButton findNext" title="" id="findNext" tabindex="93" data-l10n-id="find_next">
<span data-l10n-id="zoom_in_label">Zoom In</span> <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>
</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"> <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="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="pageWidthOption" title="" value="page-width" data-l10n-id="page_scale_width">Full Width</option>
<option id="customScaleOption" title="" value="custom"></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> <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> <option title="" value="4" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 400 }'>400%</option>
</select> </select>
</span> </span>
</div>
</div>
</div>
<div id="loadingBar">
<div class="progress">
<div class="glimmer">
</div>
</div>
</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'> <menu type="context" id="viewerContextMenu">
<div id="errorMessageLeft"> <menuitem id="contextFirstPage" label="First Page"
<span id="errorMessage"></span> data-l10n-id="first_page"></menuitem>
<button id="errorShowMore" data-l10n-id="error_more_info"> <menuitem id="contextLastPage" label="Last Page"
More Information data-l10n-id="last_page"></menuitem>
</button> <menuitem id="contextPageRotateCw" label="Rotate Clockwise"
<button id="errorShowLess" data-l10n-id="error_less_info" hidden='true'> data-l10n-id="page_rotate_cw"></menuitem>
Less Information <menuitem id="contextPageRotateCcw" label="Rotate Counter-Clockwise"
</button> data-l10n-id="page_rotate_ccw"></menuitem>
</div> </menu>
<div id="errorMessageRight">
<button id="errorClose" data-l10n-id="error_close"> <div id="viewerContainer" tabindex="0">
Close <div id="viewer" class="pdfViewer"></div>
</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>
</div> </div>
<div class="row">
<span data-l10n-id="document_properties_modification_date">Modification Date:</span> <p id="modificationDateField">-</p> <div id="errorWrapper" hidden='true'>
</div> <div id="errorMessageLeft">
<div class="row"> <span id="errorMessage"></span>
<span data-l10n-id="document_properties_creator">Creator:</span> <p id="creatorField">-</p> <button id="errorShowMore" data-l10n-id="error_more_info">
</div> More Information
<div class="separator"></div> </button>
<div class="row"> <button id="errorShowLess" data-l10n-id="error_less_info" hidden='true'>
<span data-l10n-id="document_properties_producer">PDF Producer:</span> <p id="producerField">-</p> Less Information
</div> </button>
<div class="row"> </div>
<span data-l10n-id="document_properties_version">PDF Version:</span> <p id="versionField">-</p> <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>
<div class="row"> </div> <!-- mainContainer -->
<span data-l10n-id="document_properties_page_count">Page Count:</span> <p id="pageCountField">-</p>
<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>
<div class="buttonRow"> <div id="documentPropertiesOverlay" class="container hidden">
<button id="documentPropertiesClose" class="overlayButton"><span data-l10n-id="document_properties_close">Close</span></button> <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>
</div> <!-- overlayContainer -->
</div> <!-- outerContainer --> </div> <!-- outerContainer -->
<div id="printContainer"></div> <div id="printContainer"></div>
<div style="display: none">
<div id="printContainer1"> <div id="printContainer1">
</div>
</div> </div>
<div id="mozPrintCallback-shim" hidden> <div id="mozPrintCallback-shim" hidden>
<style> <style>
@media print { @media print {
#printContainer div { #printContainer div {
page-break-after: always; page-break-after: always;
page-break-inside: avoid; page-break-inside: avoid;
} }
} }
</style> </style>
<style scoped> <style scoped>
#mozPrintCallback-shim { #mozPrintCallback-shim {
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
height: 100%; height: 100%;
width: 100%; width: 100%;
z-index: 9999999; z-index: 9999999;
display: block; display: block;
text-align: center; text-align: center;
background-color: rgba(0, 0, 0, 0.5); background-color: rgba(0, 0, 0, 0.5);
} }
#mozPrintCallback-shim[hidden] {
display: none; #mozPrintCallback-shim[hidden] {
} display: none;
@media print { }
#mozPrintCallback-shim {
display: none; @media print {
} #mozPrintCallback-shim {
} display: none;
}
#mozPrintCallback-shim .mozPrintCallback-dialog-box { }
display: inline-block;
margin: -50px auto 0; #mozPrintCallback-shim .mozPrintCallback-dialog-box {
position: relative; display: inline-block;
top: 45%; margin: -50px auto 0;
left: 0; position: relative;
min-width: 220px; top: 45%;
max-width: 400px; left: 0;
min-width: 220px;
padding: 9px; max-width: 400px;
border: 1px solid hsla(0, 0%, 0%, .5); padding: 9px;
border-radius: 2px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); border: 1px solid hsla(0, 0%, 0%, .5);
border-radius: 2px;
background-color: #474747; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
color: hsl(0, 0%, 85%); background-color: #474747;
font-size: 16px;
line-height: 20px; color: hsl(0, 0%, 85%);
} font-size: 16px;
#mozPrintCallback-shim .progress-row { line-height: 20px;
clear: both; }
padding: 1em 0;
} #mozPrintCallback-shim .progress-row {
#mozPrintCallback-shim progress { clear: both;
width: 100%; padding: 1em 0;
} }
#mozPrintCallback-shim .relative-progress {
clear: both; #mozPrintCallback-shim progress {
float: right; width: 100%;
} }
#mozPrintCallback-shim .progress-actions {
clear: both; #mozPrintCallback-shim .relative-progress {
} clear: both;
</style> float: right;
<div class="mozPrintCallback-dialog-box"> }
打印加载中...
<div class="progress-row"> #mozPrintCallback-shim .progress-actions {
<progress value="0" max="100"></progress> clear: both;
<span class="relative-progress">0%</span> }
</div> </style>
<div class="progress-actions"> <div class="mozPrintCallback-dialog-box">
<input type="button" value="Cancel" class="mozPrintCallback-cancel"> 打印加载中...
<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>
</div> </div>
</body> </body>
<script> <script>
function getContextPath() { $(function () {
var pathName = document.location.pathname; //获取父页面打印权限显示打印按钮
var index = pathName.substr(1).indexOf("/"); var print = parent.$("#print").val();
var result = pathName.substr(0, index + 1); if (print == 1) {
return result; $("#printLoading").show();
} }
var path; })
$(function(){ var getLoadingInterval = setInterval(function () {
//获取父页面打印权限显示打印按钮 //获取打印预览图片加载进度
var print = parent.$("#print").val(); var loading = parent.$("#loading").val();
if(print == 1){ $(".progress-bar").css("width",loading);
$("#print").show(); $("#printLoading p").text(loading);
} //加载完退出定时
/*for (var i = 0; i < 147; i++) { if(loading == '100%'){
var html = "<img src=\"http://localhost:8083/emr_record/reload/000239.jpg\" width=\"890\" height=\"1180\">"; clearInterval(getLoadingInterval);
$("#printContainer1").append(html); }
}*/ },100);
})
</script> </script>
</html> </html>

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

Loading…
Cancel
Save