parent
f3d9e2e1ca
commit
d50ba717ae
2 changed files with 327 additions and 1 deletions
@ -0,0 +1,311 @@ |
||||
<template> |
||||
<el-dialog |
||||
title="超声检查报告单打印预览" |
||||
:visible.sync="visible" |
||||
width="80%" |
||||
append-to-body |
||||
@open="handleOpen" |
||||
@close="handleClose" |
||||
> |
||||
<!-- 打印区域容器 --> |
||||
<div ref="printContent" class="print-container"> |
||||
<div align="left"> |
||||
{{ logo }} |
||||
<h1 align="center">青岛海信医疗设备股份有限公司</h1> |
||||
<h2 align="center">彩色多普勒超声检查报告单</h2> |
||||
</div> |
||||
<div style="margin-top: 15px"> |
||||
<table width="98%" align="left" style="border-color: red"> |
||||
<tbody> |
||||
<tr> |
||||
<td style="font-size: 12pt"><b>超声部位:</b> {{ form.part }}</td> |
||||
<td align="right" style="font-size: 12pt"> |
||||
<b>检查号:</b> {{ form.outNo || form.medicalNo }} |
||||
</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
<hr style="width: 100%" /> |
||||
</div> |
||||
<div style="margin-top: 10px"> |
||||
<table |
||||
width="100%" |
||||
align="left" |
||||
style="margin-bottom: 10px; padding-bottom: 20px; border-color: red" |
||||
> |
||||
<tbody> |
||||
<tr> |
||||
<td style="font-size: 12pt"> |
||||
<b>姓名:</b> {{ form.patientName }} |
||||
</td> |
||||
<td style="font-size: 12pt"> |
||||
<b>性别:</b> {{ getGenderLabel(form.gender) }} <b>年龄:</b> |
||||
{{ form.age }}{{ getAgeUnitLabel(form.ageUnit) }} |
||||
</td> |
||||
<td style="font-size: 12pt"><b>科别:</b> -</td> |
||||
<td style="font-size: 12pt"> |
||||
<b>申请医师:</b> {{ form.doctor }} |
||||
</td> |
||||
</tr> |
||||
<tr> |
||||
<td></td> |
||||
</tr> |
||||
<tr> |
||||
<td style="font-size: 12pt"> |
||||
<b>病历号:</b> {{ form.medicalNo }} |
||||
</td> |
||||
<td style="font-size: 12pt"><b>住院号:</b> {{ form.inNo }}</td> |
||||
<td style="font-size: 12pt"><b>病区号:</b> {{ form.wardNo }}</td> |
||||
<td style="font-size: 12pt"><b>床位号:</b> {{ form.bedNo }}</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
<hr style="margin-bottom: 15px; width: 100%" /> |
||||
</div> |
||||
<div style="margin-bottom: 25px" align="center" width="100%"> |
||||
<!-- 影像图片区域 --> |
||||
<div v-if="imgList.length"> |
||||
<img |
||||
v-for="(img, idx) in imgList" |
||||
:key="idx" |
||||
:src="img.url" |
||||
style="max-width: 80%; margin: 10px" |
||||
/> |
||||
</div> |
||||
<hr style="margin-top: 15px; width: 100%" /> |
||||
</div> |
||||
<div style="margin-top: 25px; width: 100%" align="center"> |
||||
<table width="100%" align="center"> |
||||
<tbody> |
||||
<tr> |
||||
<td style="font-size: 12pt"><b>超声所见</b></td> |
||||
</tr> |
||||
<tr> |
||||
<td |
||||
style="padding-top: 16px; padding-left: 36px; font-size: 12pt" |
||||
> |
||||
{{ form.findings || "无" }} |
||||
</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
<div style="margin-top: 50px; width: 100%" align="center"> |
||||
<table width="100%" align="center"> |
||||
<tbody> |
||||
<tr> |
||||
<td style="font-size: 12pt"><b>超声提示</b></td> |
||||
</tr> |
||||
<tr> |
||||
<td |
||||
style="padding-top: 16px; padding-left: 36px; font-size: 12pt" |
||||
> |
||||
{{ form.conclusion || "无" }} |
||||
</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
<div class="footer"> |
||||
<hr style="width: 100%" /> |
||||
<table width="100%" align="center"> |
||||
<tbody> |
||||
<tr> |
||||
<td valign="bottom" style="font-size: 12pt"> |
||||
<b>青岛海信医疗设备股份有限公司</b> |
||||
</td> |
||||
<td valign="bottom" style="font-size: 12pt"> |
||||
<b>诊断医师:</b> {{ $store.state.user.nickName || "未知" }} |
||||
</td> |
||||
<td valign="bottom" style="font-size: 12pt"> |
||||
<b>检查日期:</b> {{ formatDate(new Date()) }} |
||||
</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
<table width="100%" align="left"> |
||||
<tbody> |
||||
<tr> |
||||
<td style="font-size: 12pt">仅供临床参考,不作证明材料!</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
</div> |
||||
|
||||
<!-- 弹窗底部操作按钮 --> |
||||
<div slot="footer" class="dialog-footer"> |
||||
<el-button @click="visible = false">取消</el-button> |
||||
<el-button type="primary" @click="handlePrint">打印</el-button> |
||||
</div> |
||||
</el-dialog> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
name: "UltrasoundReportPrint", |
||||
props: { |
||||
// 控制弹窗显隐 |
||||
visible: { |
||||
type: Boolean, |
||||
default: false, |
||||
}, |
||||
// 报告表单数据 |
||||
form: { |
||||
type: Object, |
||||
required: true, |
||||
}, |
||||
// 影像列表 |
||||
imgList: { |
||||
type: Array, |
||||
default: () => [], |
||||
}, |
||||
// 性别字典 |
||||
genderList: { |
||||
type: Array, |
||||
default: () => [ |
||||
{ label: "未知", value: "0" }, |
||||
{ label: "男", value: "1" }, |
||||
{ label: "女", value: "2" }, |
||||
], |
||||
}, |
||||
// 年龄单位字典 |
||||
ageUnitList: { |
||||
type: Array, |
||||
default: () => [ |
||||
{ label: "岁", value: "1" }, |
||||
{ label: "月", value: "2" }, |
||||
{ label: "天", value: "3" }, |
||||
], |
||||
}, |
||||
// 医院logo(可选) |
||||
logo: { |
||||
type: String, |
||||
default: "", |
||||
}, |
||||
}, |
||||
methods: { |
||||
// 格式化日期 |
||||
formatDate(date) { |
||||
const year = date.getFullYear(); |
||||
const month = String(date.getMonth() + 1).padStart(2, "0"); |
||||
const day = String(date.getDate()).padStart(2, "0"); |
||||
const hour = String(date.getHours()).padStart(2, "0"); |
||||
const minute = String(date.getMinutes()).padStart(2, "0"); |
||||
return `${year}-${month}-${day} ${hour}:${minute}`; |
||||
}, |
||||
// 获取性别标签 |
||||
getGenderLabel(value) { |
||||
const item = this.genderList.find((item) => item.value === value); |
||||
return item ? item.label : "未知"; |
||||
}, |
||||
// 获取年龄单位标签 |
||||
getAgeUnitLabel(value) { |
||||
const item = this.ageUnitList.find((item) => item.value === value); |
||||
return item ? item.label : "岁"; |
||||
}, |
||||
// 打印处理 |
||||
handlePrint() { |
||||
// 创建隐藏的打印窗口 |
||||
const printWindow = window.open('', '_blank', 'width=800,height=600'); |
||||
|
||||
if (!printWindow) { |
||||
this.$message.error('请允许弹出窗口以进行打印'); |
||||
return; |
||||
} |
||||
|
||||
// 获取打印区域内容 |
||||
const printContent = this.$refs.printContent.innerHTML; |
||||
|
||||
// 构建完整的HTML文档 |
||||
const printDoc = ` |
||||
<!DOCTYPE html> |
||||
<html> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
<title>超声检查报告单</title> |
||||
<style> |
||||
@media print { |
||||
body { margin: 0; padding: 20px; font-family: "SimSun", serif; } |
||||
.print-container { width: 100%; } |
||||
img { max-width: 100%; height: auto; } |
||||
table { border-collapse: collapse; } |
||||
td { padding: 4px; } |
||||
hr { border: none; border-top: 1px solid #000; } |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
${printContent} |
||||
</body> |
||||
</html> |
||||
`; |
||||
|
||||
// 写入打印窗口 |
||||
printWindow.document.write(printDoc); |
||||
printWindow.document.close(); |
||||
|
||||
// 等待页面加载完成后打印 |
||||
printWindow.onload = function() { |
||||
printWindow.focus(); |
||||
setTimeout(() => { |
||||
printWindow.print(); |
||||
printWindow.close(); |
||||
}, 500); |
||||
}; |
||||
}, |
||||
// 弹窗打开时的处理 |
||||
handleOpen() { |
||||
// 可添加打印前的样式适配 |
||||
}, |
||||
// 弹窗关闭时的处理 |
||||
handleClose() { |
||||
this.$emit("update:visible", false); |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style scoped> |
||||
/* 打印区域样式隔离 */ |
||||
.print-container { |
||||
padding: 20px; |
||||
background: #fff; |
||||
font-size: 12pt; |
||||
height: 80vh; |
||||
overflow-y: auto; |
||||
} |
||||
|
||||
/* 打印样式适配 */ |
||||
@media print { |
||||
.el-dialog, |
||||
.el-dialog__footer { |
||||
display: none !important; |
||||
} |
||||
.print-container { |
||||
padding: 0; |
||||
height: auto; |
||||
overflow: visible; |
||||
} |
||||
/* .footer { |
||||
position: fixed !important; |
||||
bottom: 20px; |
||||
} */ |
||||
} |
||||
/* .footer { |
||||
position: absolute; |
||||
bottom: 20px; |
||||
width: 98%; |
||||
} */ |
||||
body { |
||||
font-family: "SimSun", "宋体", sans-serif; |
||||
} |
||||
table { |
||||
border-collapse: collapse; |
||||
} |
||||
hr { |
||||
height: 2px; |
||||
border: none; |
||||
border-top: 2px solid #000000; |
||||
} |
||||
</style> |
||||
Loading…
Reference in new issue