Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
75c4319960 | ||
|
|
510d60bc95 | ||
|
|
42b7d06636 | ||
|
|
5c453a51bb | ||
|
|
d0dd9195ad | ||
|
|
764befbf28 | ||
|
|
e4315cc54a | ||
|
|
32580b1a34 | ||
| 07c92e63a2 |
@@ -83,14 +83,9 @@ public class AdviceUtils {
|
|||||||
* @return 提示信息
|
* @return 提示信息
|
||||||
*/
|
*/
|
||||||
public String checkInventory(List<AdviceSaveDto> adviceSaveList) {
|
public String checkInventory(List<AdviceSaveDto> adviceSaveList) {
|
||||||
// 医嘱定义ID集合(过滤null值,避免SQL查询异常)
|
// 医嘱定义ID集合
|
||||||
List<Long> adviceDefinitionIdList
|
List<Long> adviceDefinitionIdList
|
||||||
= adviceSaveList.stream().map(AdviceSaveDto::getAdviceDefinitionId)
|
= adviceSaveList.stream().map(AdviceSaveDto::getAdviceDefinitionId).collect(Collectors.toList());
|
||||||
.filter(id -> id != null).collect(Collectors.toList());
|
|
||||||
// 🔧 Bug #504 修复:如果所有adviceDefinitionId都为null,跳过库存校验
|
|
||||||
if (adviceDefinitionIdList.isEmpty()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
// 医嘱库存集合
|
// 医嘱库存集合
|
||||||
List<AdviceInventoryDto> adviceInventoryList
|
List<AdviceInventoryDto> adviceInventoryList
|
||||||
= doctorStationAdviceAppMapper.getAdviceInventory(null, adviceDefinitionIdList,
|
= doctorStationAdviceAppMapper.getAdviceInventory(null, adviceDefinitionIdList,
|
||||||
@@ -104,10 +99,6 @@ public class AdviceUtils {
|
|||||||
= this.subtractInventory(adviceInventoryList, adviceDraftInventoryList);
|
= this.subtractInventory(adviceInventoryList, adviceDraftInventoryList);
|
||||||
// 检查库存
|
// 检查库存
|
||||||
for (AdviceSaveDto saveDto : adviceSaveList) {
|
for (AdviceSaveDto saveDto : adviceSaveList) {
|
||||||
// 🔧 Bug #504 修复:退回医嘱可能adviceDefinitionId为空,跳过校验
|
|
||||||
if (saveDto.getAdviceDefinitionId() == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
boolean matched = false;
|
boolean matched = false;
|
||||||
for (AdviceInventoryDto inventoryDto : adviceInventory) {
|
for (AdviceInventoryDto inventoryDto : adviceInventory) {
|
||||||
// 匹配条件:adviceDefinitionId, adviceTableName, locationId, lotNumber 同时相等
|
// 匹配条件:adviceDefinitionId, adviceTableName, locationId, lotNumber 同时相等
|
||||||
@@ -117,12 +108,10 @@ public class AdviceUtils {
|
|||||||
|| saveDto.getLotNumber().equals(inventoryDto.getLotNumber());
|
|| saveDto.getLotNumber().equals(inventoryDto.getLotNumber());
|
||||||
boolean tableNameMatch = StringUtils.isEmpty(saveDto.getAdviceTableName())
|
boolean tableNameMatch = StringUtils.isEmpty(saveDto.getAdviceTableName())
|
||||||
|| inventoryDto.getItemTable().equals(saveDto.getAdviceTableName());
|
|| inventoryDto.getItemTable().equals(saveDto.getAdviceTableName());
|
||||||
// 🔧 Bug #504 修复:退回医嘱可能locationId为空,跳过location匹配
|
// if (saveDto.)
|
||||||
boolean locationMatch = saveDto.getLocationId() == null
|
|
||||||
|| inventoryDto.getLocationId().equals(saveDto.getLocationId());
|
|
||||||
if (inventoryDto.getItemId().equals(saveDto.getAdviceDefinitionId())
|
if (inventoryDto.getItemId().equals(saveDto.getAdviceDefinitionId())
|
||||||
&& tableNameMatch
|
&& tableNameMatch
|
||||||
&& locationMatch && lotNumberMatch) {
|
&& inventoryDto.getLocationId().equals(saveDto.getLocationId()) && lotNumberMatch) {
|
||||||
matched = true;
|
matched = true;
|
||||||
// 检查库存是否充足
|
// 检查库存是否充足
|
||||||
BigDecimal minUnitQuantity = saveDto.getMinUnitQuantity();
|
BigDecimal minUnitQuantity = saveDto.getMinUnitQuantity();
|
||||||
|
|||||||
@@ -216,8 +216,7 @@
|
|||||||
ccd.name AS condition_definition_name,
|
ccd.name AS condition_definition_name,
|
||||||
T1.therapy_enum AS therapyEnum,
|
T1.therapy_enum AS therapyEnum,
|
||||||
T1.sort_number AS sort_number,
|
T1.sort_number AS sort_number,
|
||||||
T1.based_on_id AS based_on_id,
|
T1.based_on_id AS based_on_id
|
||||||
T1.medication_id AS advice_definition_id
|
|
||||||
FROM med_medication_request AS T1
|
FROM med_medication_request AS T1
|
||||||
LEFT JOIN med_medication_definition AS T2 ON T2.ID = T1.medication_id
|
LEFT JOIN med_medication_definition AS T2 ON T2.ID = T1.medication_id
|
||||||
AND T2.delete_flag = '0'
|
AND T2.delete_flag = '0'
|
||||||
@@ -269,8 +268,7 @@
|
|||||||
'' AS condition_definition_name,
|
'' AS condition_definition_name,
|
||||||
2 AS therapyEnum,
|
2 AS therapyEnum,
|
||||||
99 AS sort_number,
|
99 AS sort_number,
|
||||||
T1.based_on_id AS based_on_id,
|
T1.based_on_id AS based_on_id
|
||||||
T1.device_def_id AS advice_definition_id
|
|
||||||
FROM wor_device_request AS T1
|
FROM wor_device_request AS T1
|
||||||
LEFT JOIN adm_device_definition AS T2 ON T2.ID = T1.device_def_id
|
LEFT JOIN adm_device_definition AS T2 ON T2.ID = T1.device_def_id
|
||||||
AND T2.delete_flag = '0'
|
AND T2.delete_flag = '0'
|
||||||
@@ -319,8 +317,7 @@
|
|||||||
'' AS condition_definition_name,
|
'' AS condition_definition_name,
|
||||||
COALESCE(T1.therapy_enum, 2) AS therapyEnum,
|
COALESCE(T1.therapy_enum, 2) AS therapyEnum,
|
||||||
99 AS sort_number,
|
99 AS sort_number,
|
||||||
T1.based_on_id AS based_on_id,
|
T1.based_on_id AS based_on_id
|
||||||
T1.activity_id AS advice_definition_id
|
|
||||||
FROM wor_service_request AS T1
|
FROM wor_service_request AS T1
|
||||||
LEFT JOIN wor_activity_definition AS T2
|
LEFT JOIN wor_activity_definition AS T2
|
||||||
ON T2.ID = T1.activity_id
|
ON T2.ID = T1.activity_id
|
||||||
|
|||||||
@@ -121,3 +121,25 @@ export function getTestResultPage(queryParams) {
|
|||||||
data: queryParams,
|
data: queryParams,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除申请单(仅待签发状态可删除)
|
||||||
|
*/
|
||||||
|
export function deleteRequestForm(data) {
|
||||||
|
return request({
|
||||||
|
url: '/reg-doctorstation/request-form/delete',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 撤回申请单(已签发状态撤回至待签发)
|
||||||
|
*/
|
||||||
|
export function withdrawRequestForm(data) {
|
||||||
|
return request({
|
||||||
|
url: '/reg-doctorstation/request-form/withdraw',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
@@ -95,9 +95,49 @@
|
|||||||
<span>{{ parseStatus(scope.row.status) }}</span>
|
<span>{{ parseStatus(scope.row.status) }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" fixed="right">
|
<el-table-column label="操作" align="center" fixed="right" width="240">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleViewDetail(scope.row)">详情</el-button>
|
<el-button link type="primary" @click="handleViewDetail(scope.row)">详情</el-button>
|
||||||
|
<!-- 待签发:修改、删除 -->
|
||||||
|
<template v-if="scope.row.status === '0' || scope.row.status === 0">
|
||||||
|
<el-button link type="primary" @click="handleEdit(scope.row)">修改</el-button>
|
||||||
|
<el-popconfirm
|
||||||
|
title="确认删除该申请单?"
|
||||||
|
@confirm="handleDelete(scope.row)"
|
||||||
|
width="200"
|
||||||
|
>
|
||||||
|
<template #reference>
|
||||||
|
<el-button link type="danger">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-popconfirm>
|
||||||
|
</template>
|
||||||
|
<!-- 已签发(护士未校对):撤回 -->
|
||||||
|
<template v-else-if="scope.row.status === '1' || scope.row.status === 1">
|
||||||
|
<el-popconfirm
|
||||||
|
title="确认撤回该申请单?撤回后将回滚至待签发状态"
|
||||||
|
@confirm="handleWithdraw(scope.row)"
|
||||||
|
width="260"
|
||||||
|
>
|
||||||
|
<template #reference>
|
||||||
|
<el-button link type="warning">撤回</el-button>
|
||||||
|
</template>
|
||||||
|
</el-popconfirm>
|
||||||
|
</template>
|
||||||
|
<!-- 已校对/待接收:打印 -->
|
||||||
|
<template v-else-if="scope.row.status === '2' || scope.row.status === 2 || scope.row.status === '3' || scope.row.status === 3">
|
||||||
|
<el-button link type="primary" @click="handlePrint(scope.row)">打印</el-button>
|
||||||
|
</template>
|
||||||
|
<!-- 已接收/已检查:打印、看报告 -->
|
||||||
|
<template v-else-if="scope.row.status === '4' || scope.row.status === 4 || scope.row.status === '5' || scope.row.status === 5">
|
||||||
|
<el-button link type="primary" @click="handlePrint(scope.row)">打印</el-button>
|
||||||
|
<el-button link type="primary" @click="handleViewReport(scope.row)">看报告</el-button>
|
||||||
|
</template>
|
||||||
|
<!-- 已出报告:打印、看报告 -->
|
||||||
|
<template v-else-if="scope.row.status === '6' || scope.row.status === 6">
|
||||||
|
<el-button link type="primary" @click="handlePrint(scope.row)">打印</el-button>
|
||||||
|
<el-button link type="success" @click="handleViewReport(scope.row)">看报告</el-button>
|
||||||
|
</template>
|
||||||
|
<!-- 已作废:仅详情 -->
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -169,6 +209,60 @@
|
|||||||
<el-button @click="detailDialogVisible = false">关闭</el-button>
|
<el-button @click="detailDialogVisible = false">关闭</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
<!-- 修改申请单弹窗 -->
|
||||||
|
<el-dialog
|
||||||
|
v-model="editDialogVisible"
|
||||||
|
title="修改检查申请"
|
||||||
|
width="800px"
|
||||||
|
destroy-on-close
|
||||||
|
top="5vh"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
>
|
||||||
|
<div v-if="editDetail" class="applicationShow-container">
|
||||||
|
<el-form :model="editForm" label-width="120px">
|
||||||
|
<el-form-item label="申请单名称">
|
||||||
|
<el-input v-model="editForm.name" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="临床诊断">
|
||||||
|
<el-input v-model="editForm.clinicalDiagnosis" type="textarea" :rows="2" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="注意事项">
|
||||||
|
<el-input v-model="editForm.attention" type="textarea" :rows="2" />
|
||||||
|
</el-form-item>
|
||||||
|
<div v-if="editDetail.requestFormDetailList && editDetail.requestFormDetailList.length">
|
||||||
|
<el-divider>申请项目</el-divider>
|
||||||
|
<el-table :data="editDetail.requestFormDetailList" border size="small">
|
||||||
|
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||||
|
<el-table-column prop="adviceName" label="医嘱名称" />
|
||||||
|
<el-table-column prop="quantity" label="数量" width="80" align="center" />
|
||||||
|
<el-table-column prop="unitCode_dictText" label="单位" width="100" />
|
||||||
|
<el-table-column prop="totalPrice" label="总价" width="100" align="right" />
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="editDialogVisible = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="handleSaveEdit" :loading="saveLoading">保存</el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
<!-- 报告查看弹窗 -->
|
||||||
|
<el-dialog
|
||||||
|
v-model="reportDialogVisible"
|
||||||
|
title="检查报告"
|
||||||
|
width="900px"
|
||||||
|
destroy-on-close
|
||||||
|
top="5vh"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
>
|
||||||
|
<div v-if="reportUrl" style="min-height: 500px;">
|
||||||
|
<iframe :src="reportUrl" style="width: 100%; height: 500px; border: none;" />
|
||||||
|
</div>
|
||||||
|
<el-empty v-else description="暂无报告数据" />
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="reportDialogVisible = false">关闭</el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -176,7 +270,7 @@
|
|||||||
import {computed, getCurrentInstance, ref, watch} from 'vue';
|
import {computed, getCurrentInstance, ref, watch} from 'vue';
|
||||||
import {Refresh, Search} from '@element-plus/icons-vue';
|
import {Refresh, Search} from '@element-plus/icons-vue';
|
||||||
import {patientInfo} from '../../store/patient.js';
|
import {patientInfo} from '../../store/patient.js';
|
||||||
import {getCheck} from './api';
|
import {getCheck, deleteRequestForm, withdrawRequestForm, getTestResult} from './api';
|
||||||
import {getOrgList} from '@/views/doctorstation/components/api.js';
|
import {getOrgList} from '@/views/doctorstation/components/api.js';
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
@@ -188,6 +282,16 @@ const currentDetail = ref(null);
|
|||||||
const descJsonData = ref(null);
|
const descJsonData = ref(null);
|
||||||
const orgOptions = ref([]);
|
const orgOptions = ref([]);
|
||||||
|
|
||||||
|
// 修改申请单相关
|
||||||
|
const editDialogVisible = ref(false);
|
||||||
|
const editDetail = ref(null);
|
||||||
|
const editForm = ref({});
|
||||||
|
const saveLoading = ref(false);
|
||||||
|
|
||||||
|
// 报告查看相关
|
||||||
|
const reportDialogVisible = ref(false);
|
||||||
|
const reportUrl = ref('');
|
||||||
|
|
||||||
// 筛选表单数据
|
// 筛选表单数据
|
||||||
const getDefaultDateRange = () => {
|
const getDefaultDateRange = () => {
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
@@ -364,6 +468,217 @@ const handleViewDetail = (row) => {
|
|||||||
detailDialogVisible.value = true;
|
detailDialogVisible.value = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改申请单
|
||||||
|
*/
|
||||||
|
const handleEdit = (row) => {
|
||||||
|
editDetail.value = row;
|
||||||
|
// 解析 descJson 为表单数据
|
||||||
|
const form = { name: row.name || '' };
|
||||||
|
if (row.descJson) {
|
||||||
|
try {
|
||||||
|
const desc = JSON.parse(row.descJson);
|
||||||
|
form.clinicalDiagnosis = desc.clinicalDiagnosis || '';
|
||||||
|
form.attention = desc.attention || '';
|
||||||
|
form.symptom = desc.symptom || '';
|
||||||
|
form.sign = desc.sign || '';
|
||||||
|
} catch (e) {
|
||||||
|
console.error('解析 descJson 失败:', e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
editForm.value = form;
|
||||||
|
editDialogVisible.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存修改
|
||||||
|
*/
|
||||||
|
const handleSaveEdit = async () => {
|
||||||
|
if (!editDetail.value?.requestFormId) {
|
||||||
|
proxy.$modal?.msgWarning?.('申请单ID不存在');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
saveLoading.value = true;
|
||||||
|
try {
|
||||||
|
// 复用 save-check 接口进行更新(传入 requestFormId 即为编辑场景)
|
||||||
|
const res = await proxy.$http?.post?.('/reg-doctorstation/request-form/save-check', {
|
||||||
|
requestFormId: editDetail.value.requestFormId,
|
||||||
|
encounterId: editDetail.value.encounterId,
|
||||||
|
patientId: editDetail.value.patientId,
|
||||||
|
name: editForm.value.name,
|
||||||
|
organizationId: editDetail.value.inHospitalOrgId || patientInfo.value?.inHospitalOrgId,
|
||||||
|
descJson: JSON.stringify({
|
||||||
|
clinicalDiagnosis: editForm.value.clinicalDiagnosis,
|
||||||
|
attention: editForm.value.attention,
|
||||||
|
symptom: editForm.value.symptom,
|
||||||
|
sign: editForm.value.sign,
|
||||||
|
}),
|
||||||
|
activityList: [], // 修改场景仅更新描述信息,不修改项目
|
||||||
|
});
|
||||||
|
if (res?.code === 200) {
|
||||||
|
proxy.$modal?.msgSuccess?.('修改成功');
|
||||||
|
editDialogVisible.value = false;
|
||||||
|
await fetchData();
|
||||||
|
} else {
|
||||||
|
proxy.$modal?.msgError?.(res?.msg || '修改失败');
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('修改申请单失败:', e.message);
|
||||||
|
proxy.$modal?.msgError?.('修改失败: ' + (e.message || '网络异常'));
|
||||||
|
} finally {
|
||||||
|
saveLoading.value = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除申请单(仅待签发状态可删除)
|
||||||
|
*/
|
||||||
|
const handleDelete = async (row) => {
|
||||||
|
if (!row.requestFormId) {
|
||||||
|
proxy.$modal?.msgWarning?.('申请单ID不存在');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const res = await deleteRequestForm({ requestFormId: row.requestFormId });
|
||||||
|
if (res?.code === 200) {
|
||||||
|
proxy.$modal?.msgSuccess?.('删除成功');
|
||||||
|
await fetchData();
|
||||||
|
} else {
|
||||||
|
proxy.$modal?.msgError?.(res?.msg || '删除失败');
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('删除申请单失败:', e.message);
|
||||||
|
proxy.$modal?.msgError?.('删除失败: ' + (e.message || '网络异常'));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 撤回申请单(已签发状态撤回至待签发)
|
||||||
|
*/
|
||||||
|
const handleWithdraw = async (row) => {
|
||||||
|
if (!row.requestFormId) {
|
||||||
|
proxy.$modal?.msgWarning?.('申请单ID不存在');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const res = await withdrawRequestForm({ requestFormId: row.requestFormId });
|
||||||
|
if (res?.code === 200) {
|
||||||
|
proxy.$modal?.msgSuccess?.('撤回成功');
|
||||||
|
await fetchData();
|
||||||
|
} else {
|
||||||
|
proxy.$modal?.msgError?.(res?.msg || '撤回失败');
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('撤回申请单失败:', e.message);
|
||||||
|
proxy.$modal?.msgError?.('撤回失败: ' + (e.message || '网络异常'));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打印申请单
|
||||||
|
*/
|
||||||
|
const handlePrint = (row) => {
|
||||||
|
// 打开新窗口进行打印
|
||||||
|
const printWindow = window.open('', '_blank');
|
||||||
|
if (!printWindow) {
|
||||||
|
proxy.$modal?.msgWarning?.('请允许浏览器弹出窗口以进行打印');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const content = buildPrintContent(row);
|
||||||
|
printWindow.document.write(`
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>检查申请单打印</title>
|
||||||
|
<style>
|
||||||
|
body { font-family: "Microsoft YaHei", sans-serif; padding: 20px; font-size: 14px; }
|
||||||
|
h2 { text-align: center; margin-bottom: 20px; }
|
||||||
|
table { width: 100%; border-collapse: collapse; margin-top: 10px; }
|
||||||
|
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
|
||||||
|
th { background: #f5f5f5; }
|
||||||
|
.info-row { margin: 8px 0; }
|
||||||
|
.label { font-weight: bold; display: inline-block; width: 100px; }
|
||||||
|
@media print { .no-print { display: none; } }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
${content}
|
||||||
|
<div class="no-print" style="text-align: center; margin-top: 20px;">
|
||||||
|
<button onclick="window.print()">打印</button>
|
||||||
|
<button onclick="window.close()">关闭</button>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`);
|
||||||
|
printWindow.document.close();
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建打印内容
|
||||||
|
*/
|
||||||
|
const buildPrintContent = (row) => {
|
||||||
|
let descHtml = '';
|
||||||
|
if (row.descJson) {
|
||||||
|
try {
|
||||||
|
const desc = JSON.parse(row.descJson);
|
||||||
|
descHtml = Object.entries(labelMap)
|
||||||
|
.filter(([key]) => desc[key])
|
||||||
|
.map(([key, label]) => `<div class="info-row"><span class="label">${label}:</span>${desc[key]}</div>`)
|
||||||
|
.join('');
|
||||||
|
} catch (e) {
|
||||||
|
console.error('解析 descJson 失败:', e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let itemsHtml = '';
|
||||||
|
if (row.requestFormDetailList && row.requestFormDetailList.length) {
|
||||||
|
itemsHtml = `
|
||||||
|
<h3>申请项目</h3>
|
||||||
|
<table>
|
||||||
|
<tr><th>序号</th><th>医嘱名称</th><th>数量</th><th>单位</th><th>总价</th></tr>
|
||||||
|
${row.requestFormDetailList.map((item, i) => `
|
||||||
|
<tr>
|
||||||
|
<td>${i + 1}</td>
|
||||||
|
<td>${item.adviceName || '-'}</td>
|
||||||
|
<td>${item.quantity || '-'}</td>
|
||||||
|
<td>${item.unitCode_dictText || '-'}</td>
|
||||||
|
<td>${item.totalPrice || '-'}</td>
|
||||||
|
</tr>
|
||||||
|
`).join('')}
|
||||||
|
</table>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
return `
|
||||||
|
<h2>检查申请单</h2>
|
||||||
|
<div class="info-row"><span class="label">患者姓名:</span>${row.patientName || '-'}</div>
|
||||||
|
<div class="info-row"><span class="label">申请单名称:</span>${row.name || '-'}</div>
|
||||||
|
<div class="info-row"><span class="label">创建时间:</span>${row.createTime || '-'}</div>
|
||||||
|
<div class="info-row"><span class="label">处方号:</span>${row.prescriptionNo || '-'}</div>
|
||||||
|
<div class="info-row"><span class="label">申请者:</span>${row.requesterId_dictText || '-'}</div>
|
||||||
|
<div class="info-row"><span class="label">申请单状态:</span>${parseStatus(row.status)}</div>
|
||||||
|
${descHtml ? `<h3>申请单描述</h3>${descHtml}` : ''}
|
||||||
|
${itemsHtml}
|
||||||
|
`;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查看报告
|
||||||
|
*/
|
||||||
|
const handleViewReport = async (row) => {
|
||||||
|
reportUrl.value = '';
|
||||||
|
reportDialogVisible.value = true;
|
||||||
|
try {
|
||||||
|
const res = await getTestResult({ encounterId: row.encounterId, requestFormId: row.requestFormId });
|
||||||
|
if (res?.code === 200 && res?.data) {
|
||||||
|
reportUrl.value = res.data;
|
||||||
|
} else {
|
||||||
|
console.warn('获取检查报告失败:', res?.msg || '无数据');
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('获取检查报告异常:', e.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => patientInfo.value?.encounterId,
|
() => patientInfo.value?.encounterId,
|
||||||
(val) => {
|
(val) => {
|
||||||
|
|||||||
@@ -195,8 +195,9 @@ const recursionFun = (targetDepartment) => {
|
|||||||
name = obj.name;
|
name = obj.name;
|
||||||
}
|
}
|
||||||
const subObjArray = obj['children'];
|
const subObjArray = obj['children'];
|
||||||
for (let index = 0; index < subObjArray.length; index++) {
|
if (!subObjArray) continue;
|
||||||
const item = subObjArray[index];
|
for (let i = 0; i < subObjArray.length; i++) {
|
||||||
|
const item = subObjArray[i];
|
||||||
if (item.id == targetDepartment) {
|
if (item.id == targetDepartment) {
|
||||||
name = item.name;
|
name = item.name;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user