Compare commits
11 Commits
bugfix/518
...
556cef430e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
556cef430e | ||
|
|
4e3281bb8b | ||
|
|
942bc24170 | ||
|
|
4e51bdbd03 | ||
|
|
f4225db731 | ||
|
|
da57354324 | ||
|
|
d646afa0c0 | ||
|
|
d31b7ff549 | ||
|
|
5b6f33912d | ||
|
|
c7f87a9c95 | ||
|
|
2823f8eb05 |
@@ -178,15 +178,26 @@ public class AdviceUtils {
|
|||||||
// 生命提示信息集合
|
// 生命提示信息集合
|
||||||
List<String> tipsList = new ArrayList<>();
|
List<String> tipsList = new ArrayList<>();
|
||||||
for (MedicationRequestUseExe medicationRequestUseExe : medUseExeList) {
|
for (MedicationRequestUseExe medicationRequestUseExe : medUseExeList) {
|
||||||
// 聚合同一位置所有批次的库存总量
|
// 第一步:按 performLocation 匹配指定药房的库存
|
||||||
List<AdviceInventoryDto> matchedInventories = adviceInventory.stream()
|
List<AdviceInventoryDto> matchedInventories = adviceInventory.stream()
|
||||||
.filter(inventoryDto -> medicationRequestUseExe.getMedicationId().equals(inventoryDto.getItemId())
|
.filter(inventoryDto -> medicationRequestUseExe.getMedicationId().equals(inventoryDto.getItemId())
|
||||||
&& CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(inventoryDto.getItemTable())
|
&& CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(inventoryDto.getItemTable())
|
||||||
&& medicationRequestUseExe.getPerformLocation().equals(inventoryDto.getLocationId())
|
&& (medicationRequestUseExe.getPerformLocation() == null
|
||||||
|
|| medicationRequestUseExe.getPerformLocation().equals(inventoryDto.getLocationId()))
|
||||||
// 如果选择了具体的批次号,校验库存时需要加上批次号的匹配条件
|
// 如果选择了具体的批次号,校验库存时需要加上批次号的匹配条件
|
||||||
&& (StringUtils.isEmpty(medicationRequestUseExe.getLotNumber())
|
&& (StringUtils.isEmpty(medicationRequestUseExe.getLotNumber())
|
||||||
|| medicationRequestUseExe.getLotNumber().equals(inventoryDto.getLotNumber())))
|
|| medicationRequestUseExe.getLotNumber().equals(inventoryDto.getLotNumber())))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
// 第二步:如果指定药房没有匹配到库存,则放宽条件查询所有药房的库存
|
||||||
|
if (matchedInventories.isEmpty()) {
|
||||||
|
matchedInventories = adviceInventory.stream()
|
||||||
|
.filter(inventoryDto -> medicationRequestUseExe.getMedicationId().equals(inventoryDto.getItemId())
|
||||||
|
&& CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(inventoryDto.getItemTable())
|
||||||
|
// 如果选择了具体的批次号,校验库存时需要加上批次号的匹配条件
|
||||||
|
&& (StringUtils.isEmpty(medicationRequestUseExe.getLotNumber())
|
||||||
|
|| medicationRequestUseExe.getLotNumber().equals(inventoryDto.getLotNumber())))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
// 匹配到库存信息
|
// 匹配到库存信息
|
||||||
if (!matchedInventories.isEmpty()) {
|
if (!matchedInventories.isEmpty()) {
|
||||||
// 聚合所有批次的可用库存
|
// 聚合所有批次的可用库存
|
||||||
|
|||||||
@@ -710,11 +710,21 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
|
|||||||
|
|
||||||
// 批量更新诊疗医嘱状态(使用 update 确保状态字段必定更新)
|
// 批量更新诊疗医嘱状态(使用 update 确保状态字段必定更新)
|
||||||
if (!processedRequestIds.isEmpty()) {
|
if (!processedRequestIds.isEmpty()) {
|
||||||
iServiceRequestService.update(null,
|
// 🔧 Bug #487 修复:签发时额外设置 authoredTime,确保签发时间被记录
|
||||||
new LambdaUpdateWrapper<ServiceRequest>()
|
if (is_sign) {
|
||||||
.set(ServiceRequest::getStatusEnum,
|
iServiceRequestService.update(null,
|
||||||
is_save ? RequestStatus.DRAFT.getValue() : RequestStatus.ACTIVE.getValue())
|
new LambdaUpdateWrapper<ServiceRequest>()
|
||||||
.in(ServiceRequest::getId, processedRequestIds));
|
.set(ServiceRequest::getStatusEnum, RequestStatus.ACTIVE.getValue())
|
||||||
|
.set(ServiceRequest::getAuthoredTime, authoredTime)
|
||||||
|
.set(ServiceRequest::getSignCode, signCode)
|
||||||
|
.in(ServiceRequest::getId, processedRequestIds));
|
||||||
|
log.info("签发诊疗医嘱成功,requestIds: {}, signCode: {}", processedRequestIds, signCode);
|
||||||
|
} else {
|
||||||
|
iServiceRequestService.update(null,
|
||||||
|
new LambdaUpdateWrapper<ServiceRequest>()
|
||||||
|
.set(ServiceRequest::getStatusEnum, RequestStatus.DRAFT.getValue())
|
||||||
|
.in(ServiceRequest::getId, processedRequestIds));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,16 +13,7 @@
|
|||||||
drf.requester_id,
|
drf.requester_id,
|
||||||
drf.create_time,
|
drf.create_time,
|
||||||
ap.NAME AS patient_name,
|
ap.NAME AS patient_name,
|
||||||
CASE MIN(wsr.status_enum)
|
drf.status
|
||||||
WHEN 1 THEN 0
|
|
||||||
WHEN 2 THEN 1
|
|
||||||
WHEN 3 THEN 4
|
|
||||||
WHEN 4 THEN 4
|
|
||||||
WHEN 5 THEN 5
|
|
||||||
WHEN 6 THEN 5
|
|
||||||
WHEN 7 THEN 5
|
|
||||||
ELSE NULL
|
|
||||||
END AS status
|
|
||||||
FROM doc_request_form AS drf
|
FROM doc_request_form AS drf
|
||||||
LEFT JOIN adm_encounter AS ae ON ae.ID = drf.encounter_id
|
LEFT JOIN adm_encounter AS ae ON ae.ID = drf.encounter_id
|
||||||
AND ae.delete_flag = '0'
|
AND ae.delete_flag = '0'
|
||||||
@@ -40,16 +31,7 @@
|
|||||||
AND drf.create_time <= (#{endDate}::date + INTERVAL '1 day' - INTERVAL '1 second')
|
AND drf.create_time <= (#{endDate}::date + INTERVAL '1 day' - INTERVAL '1 second')
|
||||||
</if>
|
</if>
|
||||||
<if test="status != null and status != ''">
|
<if test="status != null and status != ''">
|
||||||
AND CASE MIN(wsr.status_enum)
|
AND drf.status = #{status}::integer
|
||||||
WHEN 1 THEN 0
|
|
||||||
WHEN 2 THEN 1
|
|
||||||
WHEN 3 THEN 4
|
|
||||||
WHEN 4 THEN 4
|
|
||||||
WHEN 5 THEN 5
|
|
||||||
WHEN 6 THEN 5
|
|
||||||
WHEN 7 THEN 5
|
|
||||||
ELSE NULL
|
|
||||||
END = #{status}::integer
|
|
||||||
</if>
|
</if>
|
||||||
<if test="keyword != null and keyword != ''">
|
<if test="keyword != null and keyword != ''">
|
||||||
AND (drf.prescription_no ILIKE '%' || #{keyword} || '%'
|
AND (drf.prescription_no ILIKE '%' || #{keyword} || '%'
|
||||||
|
|||||||
@@ -684,7 +684,6 @@ const dictSearchKey = ref('');
|
|||||||
const activeNames = ref(''); // 当前展开的折叠项
|
const activeNames = ref(''); // 当前展开的折叠项
|
||||||
const categoryLoadingSet = ref(new Set()); // Bug #500: 正在加载方法的分类集合
|
const categoryLoadingSet = ref(new Set()); // Bug #500: 正在加载方法的分类集合
|
||||||
const currentActiveCategory = ref(null); // Bug #500: 记录当前激活的分类,忽略过期请求响应
|
const currentActiveCategory = ref(null); // Bug #500: 记录当前激活的分类,忽略过期请求响应
|
||||||
const isAnimating = ref(false); // Bug #500: 防止快速切换时折叠动画重叠导致抖动
|
|
||||||
|
|
||||||
const allMethods = ref([]);
|
const allMethods = ref([]);
|
||||||
|
|
||||||
@@ -837,14 +836,9 @@ async function handleCategoryExpand(cat) {
|
|||||||
categoryLoadingSet.value.delete(cat.typeId);
|
categoryLoadingSet.value.delete(cat.typeId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Bug #500修复: 添加防抖逻辑,快速切换时跳过中间状态的动画,避免高度跳变和白屏闪烁
|
// Bug #500修复: 不阻塞 accordion 状态更新,仅防止重复加载同一分类的方法
|
||||||
function handleCollapseChange(activeName) {
|
function handleCollapseChange(activeName) {
|
||||||
if (isAnimating.value) return; // 动画进行中,忽略后续点击
|
// 始终记录当前激活的分类,确保 handleCategoryExpand 能正确忽略过期请求
|
||||||
|
|
||||||
isAnimating.value = true;
|
|
||||||
setTimeout(() => { isAnimating.value = false; }, 300); // 与 CSS 过渡时长一致
|
|
||||||
|
|
||||||
// Bug #500修复: 记录当前激活的分类,用于 handleCategoryExpand 中忽略过期请求
|
|
||||||
currentActiveCategory.value = activeName || null;
|
currentActiveCategory.value = activeName || null;
|
||||||
|
|
||||||
if (activeName) {
|
if (activeName) {
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ const currentSelectRow = ref<any>({});
|
|||||||
const queryParams = ref({
|
const queryParams = ref({
|
||||||
pageSize: 100,
|
pageSize: 100,
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
adviceTypes: '1,2,3,6',
|
adviceTypes: [1, 2, 3, 6],
|
||||||
searchKey: '',
|
searchKey: '',
|
||||||
organizationId: '',
|
organizationId: '',
|
||||||
categoryCode: '',
|
categoryCode: '',
|
||||||
@@ -88,10 +88,10 @@ const tableColumns = computed<TableColumn[]>(() => [
|
|||||||
function refresh(adviceType: any, categoryCode: string, searchKey: string) {
|
function refresh(adviceType: any, categoryCode: string, searchKey: string) {
|
||||||
// 有搜索词时跨类型搜索,避免用户输入"级护理"但因当前adviceType为药品而搜不到诊疗类护理项目
|
// 有搜索词时跨类型搜索,避免用户输入"级护理"但因当前adviceType为药品而搜不到诊疗类护理项目
|
||||||
if (searchKey) {
|
if (searchKey) {
|
||||||
queryParams.value.adviceTypes = '1,2,3,6';
|
queryParams.value.adviceTypes = [1, 2, 3, 6];
|
||||||
} else {
|
} else {
|
||||||
queryParams.value.adviceTypes =
|
queryParams.value.adviceTypes =
|
||||||
adviceType !== undefined && adviceType !== '' ? String(adviceType) : '1,2,3,6';
|
adviceType !== undefined && adviceType !== '' ? [parseInt(adviceType)] : [1, 2, 3, 6];
|
||||||
}
|
}
|
||||||
queryParams.value.categoryCode = categoryCode || '';
|
queryParams.value.categoryCode = categoryCode || '';
|
||||||
queryParams.value.searchKey = searchKey || '';
|
queryParams.value.searchKey = searchKey || '';
|
||||||
|
|||||||
@@ -310,32 +310,26 @@ const hasMatchedFields = computed(() => {
|
|||||||
|
|
||||||
/** 查询科室 */
|
/** 查询科室 */
|
||||||
const getLocationInfo = async () => {
|
const getLocationInfo = async () => {
|
||||||
const res = await getDepartmentList();
|
try {
|
||||||
orgOptions.value = res.data || [];
|
const res = await getDepartmentList();
|
||||||
|
orgOptions.value = Array.isArray(res.data) ? res.data : [];
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('科室列表加载失败:', e.message);
|
||||||
|
orgOptions.value = [];
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const recursionFun = (targetDepartment) => {
|
// 递归查找树形科室节点
|
||||||
if (!targetDepartment) return '';
|
const findTreeItem = (list, id) => {
|
||||||
let name = '';
|
if (!list || list.length === 0) return null;
|
||||||
for (let index = 0; index < orgOptions.value.length; index++) {
|
for (const item of list) {
|
||||||
const obj = orgOptions.value[index];
|
if (item.id == id) return item;
|
||||||
if (obj.id == targetDepartment) {
|
if (item.children && item.children.length > 0) {
|
||||||
name = obj.name;
|
const found = findTreeItem(item.children, id);
|
||||||
break;
|
if (found) return found;
|
||||||
}
|
}
|
||||||
const subObjArray = obj['children'];
|
|
||||||
if (subObjArray && subObjArray.length > 0) {
|
|
||||||
for (let i = 0; i < subObjArray.length; i++) {
|
|
||||||
const item = subObjArray[i];
|
|
||||||
if (item.id == targetDepartment) {
|
|
||||||
name = item.name;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (name) break;
|
|
||||||
}
|
}
|
||||||
return name;
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleViewDetail = async (row) => {
|
const handleViewDetail = async (row) => {
|
||||||
@@ -349,7 +343,11 @@ const handleViewDetail = async (row) => {
|
|||||||
if (row.descJson) {
|
if (row.descJson) {
|
||||||
try {
|
try {
|
||||||
const obj = JSON.parse(row.descJson);
|
const obj = JSON.parse(row.descJson);
|
||||||
obj.targetDepartment = recursionFun(obj.targetDepartment);
|
// 将发往科室 ID 转换为名称
|
||||||
|
if (obj.targetDepartment) {
|
||||||
|
const deptItem = findTreeItem(orgOptions.value, obj.targetDepartment);
|
||||||
|
obj.targetDepartment = deptItem ? deptItem.name : obj.targetDepartment;
|
||||||
|
}
|
||||||
descJsonData.value = obj;
|
descJsonData.value = obj;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('解析 descJson 失败:', e);
|
console.error('解析 descJson 失败:', e);
|
||||||
|
|||||||
@@ -82,7 +82,11 @@
|
|||||||
</template>
|
</template>
|
||||||
<el-table-column type="index" label="序号" width="60" align="center" />
|
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||||
<el-table-column prop="patientName" label="患者姓名" width="120" />
|
<el-table-column prop="patientName" label="患者姓名" width="120" />
|
||||||
<el-table-column prop="name" label="申请单名称" width="140" />
|
<el-table-column label="申请单名称" width="140">
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ buildApplicationName(scope.row) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="createTime" label="创建时间" width="160" />
|
<el-table-column prop="createTime" label="创建时间" width="160" />
|
||||||
<el-table-column prop="prescriptionNo" label="申请单号" width="140" />
|
<el-table-column prop="prescriptionNo" label="申请单号" width="140" />
|
||||||
<el-table-column label="单据状态" width="100" align="center">
|
<el-table-column label="单据状态" width="100" align="center">
|
||||||
@@ -137,7 +141,7 @@
|
|||||||
<el-descriptions-item label="创建时间">{{
|
<el-descriptions-item label="创建时间">{{
|
||||||
currentDetail.createTime || '-'
|
currentDetail.createTime || '-'
|
||||||
}}</el-descriptions-item>
|
}}</el-descriptions-item>
|
||||||
<el-descriptions-item label="处方号">{{
|
<el-descriptions-item label="申请单号">{{
|
||||||
currentDetail.prescriptionNo || '-'
|
currentDetail.prescriptionNo || '-'
|
||||||
}}</el-descriptions-item>
|
}}</el-descriptions-item>
|
||||||
<el-descriptions-item label="申请者">{{
|
<el-descriptions-item label="申请者">{{
|
||||||
@@ -339,6 +343,24 @@ const parseSpecimenType = (descJson) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据申请单详情构建申请单名称
|
||||||
|
* 单一项目:显示项目名称+数量
|
||||||
|
* 多个项目:显示首个项目名称+数量+"等X项"
|
||||||
|
*/
|
||||||
|
const buildApplicationName = (row) => {
|
||||||
|
const details = row.requestFormDetailList;
|
||||||
|
if (!details || details.length === 0) {
|
||||||
|
return row.name || '-';
|
||||||
|
}
|
||||||
|
if (details.length === 1) {
|
||||||
|
const item = details[0];
|
||||||
|
return `${item.adviceName}${item.quantity || ''}`;
|
||||||
|
}
|
||||||
|
const first = details[0];
|
||||||
|
return `${first.adviceName}${first.quantity || ''}等${details.length}项`;
|
||||||
|
};
|
||||||
|
|
||||||
const isFieldMatched = (key) => {
|
const isFieldMatched = (key) => {
|
||||||
return key in labelMap;
|
return key in labelMap;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -256,12 +256,16 @@ const projectWithDepartment = (selectProjectIds, type) => {
|
|||||||
if (type === 2 && manualDept) {
|
if (type === 2 && manualDept) {
|
||||||
form.targetDepartment = manualDept;
|
form.targetDepartment = manualDept;
|
||||||
isRelease = true;
|
isRelease = true;
|
||||||
} else {
|
} else if (type === 2 && !manualDept) {
|
||||||
|
// 提交时用户未手动选择科室,才提示错误
|
||||||
isRelease = false;
|
isRelease = false;
|
||||||
ElMessage({
|
ElMessage({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: '未找到项目执行的科室',
|
message: '未找到项目执行的科室',
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
// type=1(选择项目变化)时,不弹窗,仅清空科室让用户自行选择
|
||||||
|
isRelease = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (findItem && isRelease) {
|
if (findItem && isRelease) {
|
||||||
|
|||||||
@@ -1241,6 +1241,13 @@ function handleSave() {
|
|||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
proxy.$modal.msgSuccess('签发成功');
|
proxy.$modal.msgSuccess('签发成功');
|
||||||
isSaving.value = false;
|
isSaving.value = false;
|
||||||
|
// 乐观更新:立即将已签发医嘱的状态设为"已签发",确保列表实时刷新
|
||||||
|
saveList.forEach((item) => {
|
||||||
|
const row = prescriptionList.value.find((r) => r.requestId && r.requestId === item.requestId);
|
||||||
|
if (row) {
|
||||||
|
row.statusEnum = 2;
|
||||||
|
}
|
||||||
|
});
|
||||||
getListInfo(false);
|
getListInfo(false);
|
||||||
bindMethod.value = {};
|
bindMethod.value = {};
|
||||||
nextId.value = 1;
|
nextId.value = 1;
|
||||||
|
|||||||
@@ -296,6 +296,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
<el-empty v-if="!groupSetLoading && groupSetList.length === 0" description="暂无划价组套数据" :image-size="80" />
|
||||||
<div style="margin-top: 15px; text-align: right">
|
<div style="margin-top: 15px; text-align: right">
|
||||||
<el-button @click="groupSetDialogVisible = false">取消</el-button>
|
<el-button @click="groupSetDialogVisible = false">取消</el-button>
|
||||||
<el-button type="primary" @click="applyGroupSet" :disabled="!selectedGroupSet">应用</el-button>
|
<el-button type="primary" @click="applyGroupSet" :disabled="!selectedGroupSet">应用</el-button>
|
||||||
@@ -798,6 +799,7 @@ function resetData() {
|
|||||||
|
|
||||||
// 划价组套相关功能
|
// 划价组套相关功能
|
||||||
function openGroupSetDialog() {
|
function openGroupSetDialog() {
|
||||||
|
console.log('openGroupSetDialog called');
|
||||||
groupSetDialogVisible.value = true;
|
groupSetDialogVisible.value = true;
|
||||||
groupSetSearchText.value = '';
|
groupSetSearchText.value = '';
|
||||||
selectedGroupSet.value = null;
|
selectedGroupSet.value = null;
|
||||||
@@ -834,8 +836,9 @@ function loadGroupSets() {
|
|||||||
groupSetList.value = rawList;
|
groupSetList.value = rawList;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch((err) => {
|
||||||
console.warn('组套列表加载失败(可能无权限)');
|
console.warn('组套列表加载失败(可能无权限):', err);
|
||||||
|
ElMessage.warning('组套列表加载失败,当前暂无可用组套');
|
||||||
groupSetList.value = [];
|
groupSetList.value = [];
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
|
|||||||
@@ -85,7 +85,7 @@
|
|||||||
:deadline="deadline"
|
:deadline="deadline"
|
||||||
:therapyEnum="therapyEnum"
|
:therapyEnum="therapyEnum"
|
||||||
/>
|
/>
|
||||||
<SummaryMedicineList v-else :therapyEnum="therapyEnum" />
|
<SummaryMedicineList v-else ref="summaryMedicineRefs" :therapyEnum="therapyEnum" />
|
||||||
<!-- <el-tabs v-model="activeName" class="demo-tabs centered-tabs" @tab-change="handleClick">
|
<!-- <el-tabs v-model="activeName" class="demo-tabs centered-tabs" @tab-change="handleClick">
|
||||||
<el-tab-pane
|
<el-tab-pane
|
||||||
v-for="tab in prescriptionTabs"
|
v-for="tab in prescriptionTabs"
|
||||||
@@ -129,6 +129,7 @@ const therapyEnum = ref(undefined);
|
|||||||
|
|
||||||
// 存储子组件引用的对象
|
// 存储子组件引用的对象
|
||||||
const prescriptionRefs = ref();
|
const prescriptionRefs = ref();
|
||||||
|
const summaryMedicineRefs = ref();
|
||||||
|
|
||||||
const navigationButtons = inpatientNurseNavs;
|
const navigationButtons = inpatientNurseNavs;
|
||||||
|
|
||||||
@@ -165,7 +166,11 @@ function handleClick(tabName) {
|
|||||||
|
|
||||||
function handleGetPrescription() {
|
function handleGetPrescription() {
|
||||||
chooseAll.value = false;
|
chooseAll.value = false;
|
||||||
prescriptionRefs.value?.handleGetPrescription();
|
if (isDetails.value == '1') {
|
||||||
|
prescriptionRefs.value?.handleGetPrescription();
|
||||||
|
} else {
|
||||||
|
summaryMedicineRefs.value?.handleGetPrescription();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function handelSwicthChange(value) {
|
function handelSwicthChange(value) {
|
||||||
|
|||||||
@@ -803,7 +803,7 @@
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 手术计费弹窗 -->
|
<!-- 手术计费弹窗 -->
|
||||||
<el-dialog :title="chargeDialogTitle" v-model="showChargeDialog" width="1400px" @close="closeChargeDialog" append-to-body>
|
<el-dialog :title="chargeDialogTitle" v-model="showChargeDialog" width="1400px" @close="closeChargeDialog" append-to-body destroy-on-close>
|
||||||
<div style="display: flex; justify-content: space-between; height: 80vh">
|
<div style="display: flex; justify-content: space-between; height: 80vh">
|
||||||
<div style="width: 100%; border: 1px solid #eee; position: relative">
|
<div style="width: 100%; border: 1px solid #eee; position: relative">
|
||||||
<div style="padding: 10px; border: 1px solid #eee; height: 50px; border-left: 0">
|
<div style="padding: 10px; border: 1px solid #eee; height: 50px; border-left: 0">
|
||||||
@@ -1456,11 +1456,14 @@ async function handleChargeCharge(row) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 关闭计费弹窗
|
// 关闭计费弹窗
|
||||||
function closeChargeDialog() {
|
async function closeChargeDialog() {
|
||||||
// 先关闭 prescriptionlist 内所有已打开的项目字典 popover
|
// 先关闭 prescriptionlist 内所有已打开的项目字典 popover
|
||||||
if (prescriptionRef.value && prescriptionRef.value.closeAllPopovers) {
|
if (prescriptionRef.value && prescriptionRef.value.closeAllPopovers) {
|
||||||
prescriptionRef.value.closeAllPopovers()
|
prescriptionRef.value.closeAllPopovers()
|
||||||
}
|
}
|
||||||
|
// 等待 Vue 完成 popover 可见性更新的 DOM 操作,
|
||||||
|
// 因为 el-popover 通过 teleport 渲染在 body 上,需要在 dialog 卸载前完成清理
|
||||||
|
await nextTick()
|
||||||
// 清空数据,避免下次打开时使用缓存
|
// 清空数据,避免下次打开时使用缓存
|
||||||
showChargeDialog.value = false
|
showChargeDialog.value = false
|
||||||
chargePatientInfo.value = {}
|
chargePatientInfo.value = {}
|
||||||
|
|||||||
Reference in New Issue
Block a user