住院护士站-》医嘱执行页面:勾选医嘱后点击“执行选中”按钮无反应,无法完成执行操作.

疾病报告管理-》报告卡管理:审核报卡界面内容与门诊医生站登记界面不一致
This commit is contained in:
2026-04-30 13:33:03 +08:00
parent b536eadd92
commit 82ef66794b
5 changed files with 328 additions and 83 deletions

View File

@@ -511,6 +511,86 @@
</template>
</el-drawer>
<InfectiousDiseaseReportDialog
ref="reportDialogRef"
:title="drawerMode === 'audit' ? '审核报卡' : '查看报卡'"
read-only
@close="handleDrawerClose"
>
<template #append>
<!-- 审核记录 -->
<div class="audit-records-section" v-if="auditRecords.length > 0">
<h3 class="section-title">审核记录</h3>
<el-timeline>
<el-timeline-item
v-for="record in auditRecords"
:key="record.auditId"
:timestamp="record.auditTime"
placement="top"
:type="getAuditType(record.auditStatusTo)"
>
<el-card>
<div class="record-content">
<div class="record-header">
<span class="auditor">{{ record.auditorName }}</span>
<el-tag size="small" :type="getAuditType(record.auditStatusTo)">
{{ getAuditTypeName(record.auditType) }}
</el-tag>
</div>
<div class="record-detail">
<span v-if="record.auditOpinion">审核意见{{ record.auditOpinion }}</span>
<span v-if="record.reasonForReturn">退回原因{{ record.reasonForReturn }}</span>
</div>
<div class="record-status">
{{ getStatusName(record.auditStatusFrom) }} {{ getStatusName(record.auditStatusTo) }}
</div>
</div>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
<!-- 审核操作区域 -->
<div class="audit-action-section" v-if="drawerMode === 'audit'">
<h3 class="section-title">审核操作</h3>
<el-form :model="auditForm" label-width="100px">
<el-form-item label="审核意见" required>
<el-input
v-model="auditForm.auditOpinion"
type="textarea"
:rows="3"
placeholder="请填写审核意见"
/>
</el-form-item>
<el-form-item label="退回原因">
<el-input
v-model="auditForm.returnReason"
type="textarea"
:rows="3"
placeholder="如需退回,请填写退回原因"
maxlength="50"
show-word-limit
/>
</el-form-item>
</el-form>
</div>
</template>
<template #footer="{ close }">
<div class="drawer-footer">
<el-button @click="close">关闭</el-button>
<template v-if="drawerMode === 'audit'">
<el-button type="warning" @click="handleReturnCard" :disabled="!auditForm.returnReason">
退回修改
</el-button>
<el-button type="success" @click="handlePassCard" :disabled="!auditForm.auditOpinion">
审核通过
</el-button>
</template>
</div>
</template>
</InfectiousDiseaseReportDialog>
<!-- 批量审核弹窗 -->
<el-dialog
v-model="batchAuditDialogVisible"
@@ -568,6 +648,7 @@ import { ElMessage, ElMessageBox } from 'element-plus';
import { Clock, CircleClose, CircleCheck, Document, Search, Refresh, DocumentChecked, RefreshLeft, Download } from '@element-plus/icons-vue';
import { useDict } from '@/utils/dict';
import useUserStore from '@/store/modules/user';
import InfectiousDiseaseReportDialog from '@/views/doctorstation/components/diagnosis/infectiousDiseaseReportDialog.vue';
import {
listInfectiousCards,
getInfectiousCard,
@@ -623,6 +704,7 @@ const selectedRows = ref([]);
const drawerVisible = ref(false);
const drawerMode = ref('view'); // view | audit
const drawerLoading = ref(false);
const reportDialogRef = ref(null);
const currentCard = ref({});
const auditRecords = ref([]);
const auditForm = ref({
@@ -823,14 +905,12 @@ function handleSelectionChange(rows) {
// 审核
function handleAudit(row) {
drawerMode.value = 'audit';
drawerVisible.value = true;
loadCardDetail(row.cardNo);
}
// 查看
function handleView(row) {
drawerMode.value = 'view';
drawerVisible.value = true;
loadCardDetail(row.cardNo);
}
@@ -884,6 +964,7 @@ async function loadCardDetail(cardNo) {
};
// 如果没有单独的审核记录 API尝试从详情数据中获取
auditRecords.value = res.data.auditRecords || res.auditRecords || [];
reportDialogRef.value?.showReport(currentCard.value);
} else {
ElMessage.error('获取卡片详情失败');
}
@@ -920,7 +1001,7 @@ async function handlePassCard() {
if (res.code === 200) {
ElMessage.success('审核通过');
handleDrawerClose();
reportDialogRef.value?.close?.();
loadTableData();
loadStats();
} else {
@@ -954,7 +1035,7 @@ async function handleReturnCard() {
if (res.code === 200) {
ElMessage.success('已退回修改');
handleDrawerClose();
reportDialogRef.value?.close?.();
loadTableData();
loadStats();
} else {