修改 报告打印统计页面以及打印报告单的样式

This commit is contained in:
weapon 2025-07-04 09:57:13 +08:00
parent a9db77d1f4
commit afc390244e
4 changed files with 121 additions and 47 deletions

View File

@ -16,5 +16,8 @@ export const ReportPrintStatisticsApi = {
},
updateExamItemName: async (params: any) => {
return await request.put({ url: `/tblist/patientexamlist/updateExamItemName`, params })
},
updatePrintStatus: async(data: any) => {
return await request.put({ url: `/tblist/patientexamlist/updatePrintStatus`, data })
}
}

View File

@ -159,4 +159,4 @@ const resetForm = () => {
}
</style>
</style>

View File

@ -49,13 +49,13 @@
</div>
<div class="ultrasound-findings">
<h3>超声所见</h3>
<p style="font-size: 22px">{{ infoParams.examDescription }}</p>
<p style="font-size: 17px">{{ infoParams.examDescription }}</p>
</div>
<div class="ultrasound-recommendation">
<h3>超声提示</h3>
<p style="font-size: 22px">{{ infoParams.diagResults }}</p>
<p style="font-size: 17px">{{ infoParams.diagResults }}</p>
</div>
<div style="width: 94%; position: absolute; bottom: 20px; right: 20px">
<div style="width: 94%; position: absolute; bottom: 0px; ">
<div style="text-align: center" v-if="infoParams.showQRcode">
<Qrcode
:text="
@ -67,8 +67,8 @@
</div>
<p v-if="false" style="text-align: right">医生签名{{ infoParams.reviewDoctor }}</p>
<hr />
<el-row class="doctor-info-row">
<el-col :span="5" class="pl-6px">报告医师{{ infoParams.diagDoctor }}</el-col>
<el-row class="doctor-info-row" style="text-align: center;">
<el-col :span="5">报告医师{{ infoParams.diagDoctor }}</el-col>
<el-col :span="7">
报告日期{{ formatDate(infoParams.diagDate as unknown as Date, 'YYYY-MM-DD') }}
</el-col>
@ -77,7 +77,7 @@
审核日期{{ formatDate(infoParams.reviewDate as unknown as Date, 'YYYY-MM-DD') }}
</el-col>
</el-row>
<div style="font-size: 17px; text-align: center; margin-top: 16px; margin-bottom: -14px">
<div style="font-size: 16px; text-align: center;margin-top: 16px;">
本报告只作临床参考不作证明材料
</div>
</div>
@ -172,13 +172,15 @@ onMounted(async () => {
/*** 报告单 ***/
.ultrasound-report {
font-family: Arial, sans-serif;
width: 94%;
width: 95%;
margin: 3px auto;
padding: 20px;
border: 1px solid #ccc;
border-radius: 8px;
position: relative;
min-height: 750px;
min-height: 1050px;
/* 为底部签名区域预留空间 */
//padding: 20px 20px 40px;
}
.ultrasound-report h1,
@ -219,7 +221,7 @@ onMounted(async () => {
}
/* 使用更具体的选择器并添加 !important 来确保样式优先级 */
.doctor-info-row {
font-size: 19px !important;
font-size: 18px !important;
}
.doctor-info {

View File

@ -60,23 +60,23 @@
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="影像设备" prop="deviceName" class="item-style">
<el-select
v-model="queryParams.deviceName"
placeholder="请选择设备"
clearable
class="item-width"
>
<el-option
v-for="item in deviceList"
:key="item.deviceId"
:label="item.deviceName"
:value="item.deviceName"
/>
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :span="8">-->
<!-- <el-form-item label="影像设备" prop="deviceName" class="item-style">-->
<!-- <el-select-->
<!-- v-model="queryParams.deviceName"-->
<!-- placeholder="请选择设备"-->
<!-- clearable-->
<!-- class="item-width"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in deviceList"-->
<!-- :key="item.deviceId"-->
<!-- :label="item.deviceName"-->
<!-- :value="item.deviceName"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="8">
<el-form-item label="患者姓名" prop="pname" class="item-style">
<el-input
@ -88,17 +88,30 @@
</el-form-item>
</el-col>
<el-col :span="8" style="text-align: right">
<el-button
@click="handleQuery"
style="background-color: rgba(56, 119, 246, 1); color: rgba(255, 255, 255, 1)"
>
<Icon icon="ep:search" class="mr-5px" /> 搜索
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> 重置
</el-button>
<el-form-item label="打印状态" prop="examDate">
<el-radio-group
v-model="queryParams.printStatus"
@change="radioChange"
>
<el-radio style="margin-right: 15px" :value="1">已打印</el-radio>
<el-radio style="margin-right: 15px" :value="0">未打印</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-form-item>
<el-button
@click="handleQuery"
style="
margin-right: 0px;
margin-left: auto;
background-color: rgba(56, 119, 246, 1);
font-size: 14px;
color: rgba(255, 255, 255, 1);
"
><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
</el-form-item>
</el-form>
</ContentWrap>
@ -141,6 +154,11 @@
:formatter="dateFormatter2"
width="110px"
/>
<el-table-column label="打印状态" align="center" prop="printFlag" width="100px" >
<template #default="scope">
{{ scope.row.printStatus == 1 ? "已打印" : "未打印" }}
</template>
</el-table-column>
<el-table-column label="患者姓名" align="center" prop="pname" width="130px" />
<el-table-column label="性别" align="center" prop="gender" width="54px" />
<el-table-column
@ -216,15 +234,7 @@
:modal="activeDrawerModal"
:size="activeDrawerSize"
@opened="drawerOpened"
@closed="
() => {
reportsList = []
reportInfoType = ''
activeTabName = ''
activeDrawerModal = true
activeDrawerSize = '74%'
}
"
@closed="drawerClosed"
>
<div style="position: relative; z-index: 100">
<el-button
@ -521,7 +531,8 @@ const queryParams = ref({
examDate_le: '',
deviceName: '',
deviceType: '',
pname: ''
pname: '',
printStatus:undefined
})
const infoParams = ref({
id: '',
@ -608,8 +619,43 @@ const showQRcodeSet = async () => {
}
}
/** 打印状态 单选钮 */
const radioChange = () => {
handleQuery()
}
/** 打印事件 */
const printContent = ref({
id: 'printMe',
beforeOpenCallback(vue){
vue.printLoading = true
console.log('打开之前')
},
async openCallback (){
// vue.printLoading = false
console.log('执行了打印')
await ReportPrintStatisticsApi.updatePrintStatus({ id: infoParams.value.id })
},
closeCallback(){
console.log('关闭了打印工具')
}
})
/****** 可参考内容 ******/
/** 组件事件 **/
const drawerClosed = async () => {
reportsList.value = []
reportInfoType.value = ''
activeTabName.value = ''
activeDrawerModal.value = true
activeDrawerSize.value = '74%'
const data = await ReportPrintStatisticsApi.getPage(queryParams.value)
list_infos.value = data.list
total.value = data.total
}
const drawerOpened = async () => {
try {
if (true && activeTabName && activeTabName.value == 'reportInfoBatch') {
@ -678,7 +724,8 @@ const resetQuery = async () => {
examDate_le: '',
deviceName: '',
deviceType: '',
pname: ''
pname: '',
printStatus: undefined
}
queryFormRef.value?.clearValidate()
handleQuery()
@ -701,6 +748,9 @@ const handleRowClick = async (row) => {
activeDrawer.value = true
}
/**
* 批量打印
*/
const handlePrint = async () => {
const infoList = infoTableRef.value?.getSelectionRows()
if (!(infoList && Array.isArray(infoList) && infoList.length > 0)) {
@ -717,6 +767,9 @@ const handlePrint = async () => {
compare = examDateB.localeCompare(examDateA)
return compare
})
let idList = infoList.map(item => item.id)
await ReportPrintStatisticsApi.updatePrintStatus({ idList: idList})
reportsList.value = infoList
await showQRcodeSet()
activeTabName.value = 'reportInfoBatch'
@ -725,10 +778,26 @@ const handlePrint = async () => {
activeDrawer.value = true
}
}
//
const getCurrentDate = () => {
const date = new Date();
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, '0');
const day = date.getDate().toString().padStart(2, '0');
// yyyy-MM-dd
const formattedDate = `${year}-${month}-${day}`;
queryParams.value.examDate_ge = formattedDate + ' 00:00:00'
queryParams.value.examDate_le = formattedDate + ' 23:59:59'
}
/** 钩子方法 **/
onMounted(async () => {
deviceList.value = await ReportPrintStatisticsApi.getDeviceList()
//
getCurrentDate()
getList()
await showQRcodeSet()
})