Compare commits

...

3 Commits

4 changed files with 175 additions and 66 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

@ -67,13 +67,13 @@
</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-col :span="7">
<el-row class="doctor-info-row" style="text-align: center;">
<el-col :span="6">报告医师{{ infoParams.diagDoctor }}</el-col>
<el-col :span="6">
报告日期{{ formatDate(infoParams.diagDate as unknown as Date, 'YYYY-MM-DD') }}
</el-col>
<el-col :span="5">审核医师{{ infoParams.reviewDoctor }}</el-col>
<el-col :span="7">
<el-col :span="6">审核医师{{ infoParams.reviewDoctor }}</el-col>
<el-col :span="6">
审核日期{{ formatDate(infoParams.reviewDate as unknown as Date, 'YYYY-MM-DD') }}
</el-col>
</el-row>

View File

@ -31,52 +31,62 @@
/>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="检查日期" prop="examDate_ge" class="item-style date-picker">
<el-col :span="8">
<el-form-item label="检查日期" prop="examDate" class="item-style date-picker">
<el-date-picker
v-model="queryParams.examDate_ge"
type="date"
ref="examDate_picker"
v-model="queryParams.examDate"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="开始日期"
class="item-width"
/>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item
label=""
label-width="0px"
prop="examDate_le"
class="item-style date-picker"
>
<el-date-picker
v-model="queryParams.examDate_le"
type="date"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="结束日期"
class="item-width"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
<!-- <el-date-picker-->
<!-- v-model="queryParams.examDate_ge"-->
<!-- type="date"-->
<!-- value-format="YYYY-MM-DD HH:mm:ss"-->
<!-- placeholder="开始日期"-->
<!-- class="item-width"-->
<!-- />-->
</el-form-item>
</el-col>
<!-- <el-col :span="3">-->
<!-- <el-form-item-->
<!-- label=""-->
<!-- label-width="0px"-->
<!-- prop="examDate_le"-->
<!-- class="item-style date-picker"-->
<!-- >-->
<!-- <el-date-picker-->
<!-- v-model="queryParams.examDate_le"-->
<!-- type="date"-->
<!-- value-format="YYYY-MM-DD HH:mm:ss"-->
<!-- placeholder="结束日期"-->
<!-- class="item-width"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- </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 +98,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 +164,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 +244,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
@ -403,7 +423,7 @@
<div v-if="reportInfoType">
<div>
<div style="text-align: right">
<el-button type="primary" style="width: 90px" v-print="{ id: 'printMe' }">
<el-button type="primary" style="width: 90px" v-print="{ id: 'printMe' }" @click="recordPrintFlag">
<span>打印</span>
</el-button>
<el-divider style="margin-top: 8px; margin-bottom: 10px" />
@ -517,11 +537,13 @@ const queryParams = ref({
pageSize: 10,
regId: '',
examId: '',
examDate: [],
examDate_ge: '',
examDate_le: '',
deviceName: '',
deviceType: '',
pname: ''
pname: '',
printStatus:undefined
})
const infoParams = ref({
id: '',
@ -608,8 +630,49 @@ 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 recordPrintFlag = () =>{
ReportPrintStatisticsApi.updatePrintStatus({ id: infoParams.value.id })
}
/****** 可参考内容 ******/
/** 组件事件 **/
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') {
@ -654,6 +717,11 @@ const getList = async () => {
resetDiagnosisInfo()
loading.value = true
try {
if(queryParams.value.examDate.length>0){
queryParams.value.examDate_ge = queryParams.value.examDate[0]
queryParams.value.examDate_le = queryParams.value.examDate[1]
}
const data = await ReportPrintStatisticsApi.getPage(queryParams.value)
list_infos.value = data.list
total.value = data.total
@ -674,11 +742,13 @@ const resetQuery = async () => {
pageSize: 10,
regId: '',
examId: '',
examDate: [],
examDate_ge: '',
examDate_le: '',
deviceName: '',
deviceType: '',
pname: ''
pname: '',
printStatus: undefined
}
queryFormRef.value?.clearValidate()
handleQuery()
@ -701,6 +771,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 +790,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 +801,27 @@ 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'
queryParams.value.examDate = [queryParams.value.examDate_ge,queryParams.value.examDate_le]
}
/** 钩子方法 **/
onMounted(async () => {
deviceList.value = await ReportPrintStatisticsApi.getDeviceList()
//
getCurrentDate()
getList()
await showQRcodeSet()
})
@ -777,5 +870,18 @@ console.log(download)
height: 260mm;
page-break-after: always;
}
:deep(.image-gallery) {
//width: 300px !important;
height: 250px !important;
}
//:deep(.ultrasound-report) {
// width: 96%;
//}
:deep(.doctor-info-row) {
font-size: 17px !important;
}
}
</style>