From 5ffeab8999aacc3fb652e088499320ce41b669cd Mon Sep 17 00:00:00 2001
From: nanyangbreeze <1955231298@qq.com>
Date: Tue, 30 Dec 2025 09:56:39 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=BD=9C=E5=BA=9F?=
=?UTF-8?q?=E7=9A=84=E4=B8=AD=E5=8C=BB=E8=AF=8A=E6=96=AD=E4=B9=9F=E6=98=BE?=
=?UTF-8?q?=E7=A4=BA=E5=87=BA=E6=9D=A5=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../diagnosis/addDiagnosisDialog.vue | 63 +++++++++++++++++--
.../components/tcm/tcmAdvice.vue | 43 ++++++++-----
.../components/tcm/tcmdiagnosisDialog.vue | 39 ++++++------
3 files changed, 108 insertions(+), 37 deletions(-)
diff --git a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/addDiagnosisDialog.vue b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/addDiagnosisDialog.vue
index 5ce1e1b0..8eee4dc5 100644
--- a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/addDiagnosisDialog.vue
+++ b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/addDiagnosisDialog.vue
@@ -91,6 +91,8 @@ import {
getTcmCondition,
getTcmSyndrome,
saveTcmDiagnosis,
+ deleteTcmDiagnosis,
+ getTcmDiagnosis,
} from '@/views/doctorstation/components/api';
const props = defineProps({
@@ -115,9 +117,38 @@ const { proxy } = getCurrentInstance();
const emit = defineEmits(['close']);
function handleOpen() {
+ // 加载诊断和证候选项
getTcmCondition().then((res) => {
conditionList.value = res.data.records;
});
+
+ // 加载已保存的中医诊断
+ getTcmDiagnosis({ encounterId: props.patientInfo.encounterId }).then((res) => {
+ if (res.data && res.data.illness && res.data.illness.length > 0) {
+ tcmDiagonsisList.value = [];
+ tcmDiagonsisSaveList.value = [];
+
+ res.data.illness.forEach((illness, index) => {
+ const symptom = res.data.symptom[index];
+ const syndromeGroupNo = illness.syndromeGroupNo || symptom.syndromeGroupNo;
+
+ tcmDiagonsisList.value.push({
+ conditionName: illness.name,
+ syndromeName: symptom.name,
+ syndromeGroupNo: syndromeGroupNo,
+ isSaved: true, // 标记为已保存的诊断
+ });
+
+ tcmDiagonsisSaveList.value.push({
+ definitionId: illness.definitionId,
+ syndromeGroupNo: syndromeGroupNo,
+ isSaved: true,
+ });
+ });
+ }
+ }).catch((error) => {
+ console.error('加载中医诊断失败:', error);
+ });
}
// 点击诊断列表处理,点击以后才显示证候列表
@@ -155,10 +186,34 @@ function clickSyndromeRow(row) {
// 删除诊断
function removeDiagnosis(row, index) {
- tcmDiagonsisList.value.splice(index, 1);
- tcmDiagonsisSaveList.value = tcmDiagonsisSaveList.filter((item) => {
- return item.syndromeGroupNo !== row.syndromeGroupNo;
- });
+ // 如果是已保存的诊断,需要调用API从服务器删除
+ if (row.isSaved && row.syndromeGroupNo) {
+ proxy.$modal.confirm('确定要删除这个中医诊断吗?').then(() => {
+ deleteTcmDiagnosis(row.syndromeGroupNo).then((res) => {
+ if (res.code === 200) {
+ proxy.$modal.msgSuccess('删除成功');
+ // 从列表中移除
+ tcmDiagonsisList.value.splice(index, 1);
+ tcmDiagonsisSaveList.value = tcmDiagonsisSaveList.value.filter((item) => {
+ return item.syndromeGroupNo !== row.syndromeGroupNo;
+ });
+ } else {
+ proxy.$modal.msgError(res.msg || '删除失败');
+ }
+ }).catch((error) => {
+ console.error('删除中医诊断失败:', error);
+ proxy.$modal.msgError('删除失败,请重试');
+ });
+ }).catch(() => {
+ // 用户取消删除
+ });
+ } else {
+ // 未保存的诊断,直接从数组中删除
+ tcmDiagonsisList.value.splice(index, 1);
+ tcmDiagonsisSaveList.value = tcmDiagonsisSaveList.value.filter((item) => {
+ return item.syndromeGroupNo !== row.syndromeGroupNo;
+ });
+ }
}
function save() {
diff --git a/openhis-ui-vue3/src/views/doctorstation/components/tcm/tcmAdvice.vue b/openhis-ui-vue3/src/views/doctorstation/components/tcm/tcmAdvice.vue
index 48065339..633e19fa 100644
--- a/openhis-ui-vue3/src/views/doctorstation/components/tcm/tcmAdvice.vue
+++ b/openhis-ui-vue3/src/views/doctorstation/components/tcm/tcmAdvice.vue
@@ -401,7 +401,7 @@
-
+
@@ -414,6 +414,7 @@ import {
getOrgTree,
signTcmAdvice,
getTcmDiagnosis,
+ deleteTcmDiagnosis,
signOutTcmAdvice,
updateGroupId,
getContract,
@@ -645,17 +646,19 @@ function getListInfo(addNewRow) {
function getDiagnosisInfo() {
diagnosisList.value = [];
getTcmDiagnosis({ encounterId: props.patientInfo.encounterId }).then((res) => {
- if (res.data.illness.length > 0) {
+ if (res.data.illness && res.data.illness.length > 0) {
res.data.illness.forEach((item, index) => {
diagnosisList.value.push({
name: item.name + '-' + res.data.symptom[index].name,
definitionId: item.definitionId,
encounterDiagnosisId: item.encounterDiagnosisId,
conditionId: item.conditionId,
+ syndromeGroupNo: item.syndromeGroupNo || res.data.symptom[index].syndromeGroupNo, // 保存syndromeGroupNo用于删除
+ ...item, // 保存完整的item数据
});
});
}
- // 默认选择第一个诊断
+ // 默认选择第一个诊断
if (diagnosisList.value.length > 0) {
const firstDiagnosis = diagnosisList.value[0];
tcmPrescriptionList.value.forEach((prescription) => {
@@ -752,19 +755,31 @@ function openDialog() {
tcmDianosis.value.openDialog();
}
-function deleteDiagnosisBind(id) {
- const data = localStorage.getItem(`tcmDiagnosisList_${props.patientInfo.encounterId}`);
- let list = [];
- list = JSON.parse(data);
- // 添加到列表
- const index = list.findIndex((item) => item.id === id);
- if (index === -1) return;
+function deleteDiagnosisBind(syndromeGroupNo) {
+ if (!syndromeGroupNo) {
+ proxy.$modal.msgWarning('缺少诊断标识,无法删除');
+ return;
+ }
- list.splice(index, 1);
- localStorage.removeItem(`tcmDiagnosisList_${props.patientInfo.encounterId}`);
- // 保存到本地缓存
- localStorage.setItem(`tcmDiagnosisList_${props.patientInfo.encounterId}`, JSON.stringify(list));
+ // 调用API从服务器删除中医诊断
+ deleteTcmDiagnosis(syndromeGroupNo).then((res) => {
+ if (res.code === 200) {
+ proxy.$modal.msgSuccess('删除成功');
+ handleDiagnosisFlush();
+ } else {
+ proxy.$modal.msgError(res.msg || '删除失败');
+ }
+ }).catch((error) => {
+ console.error('删除中医诊断失败:', error);
+ proxy.$modal.msgError('删除失败,请重试');
+ });
+}
+
+// 诊断数据刷新处理函数
+function handleDiagnosisFlush() {
+ // 同时刷新医嘱列表和诊断列表,确保诊断数据同步
getListInfo();
+ getDiagnosisInfo();
}
function addNewPrescription(){
diff --git a/openhis-ui-vue3/src/views/doctorstation/components/tcm/tcmdiagnosisDialog.vue b/openhis-ui-vue3/src/views/doctorstation/components/tcm/tcmdiagnosisDialog.vue
index ec01dd0d..4d25733c 100644
--- a/openhis-ui-vue3/src/views/doctorstation/components/tcm/tcmdiagnosisDialog.vue
+++ b/openhis-ui-vue3/src/views/doctorstation/components/tcm/tcmdiagnosisDialog.vue
@@ -82,28 +82,29 @@ function submit() {
return; // 确保选择了诊断和证候
}
- // 构建诊断对象
- const diagnosis = {
- id: Date.now(), // 使用时间戳作为唯一ID
- condition: conditionOptions.value.find((item) => item.value === condition.value)?.label || '',
+ // 构建诊断数据,调用API保存到服务器
+ const diagnosisChildList = [{
conditionCode: condition.value,
- syndrome: syndromeOptions.value.find((item) => item.value === syndrome.value)?.label || '',
syndromeCode: syndrome.value,
- };
- const data = localStorage.getItem(`tcmDiagnosisList_${props.patientInfo.encounterId}`);
- diagnosisList.value = JSON.parse(data);
- // 添加到列表
- diagnosisList.value.push(diagnosis);
- localStorage.removeItem(`tcmDiagnosisList_${props.patientInfo.encounterId}`);
- // 保存到本地缓存
- localStorage.setItem(
- `tcmDiagnosisList_${props.patientInfo.encounterId}`,
- JSON.stringify(diagnosisList.value)
- );
+ }];
- console.log('当前诊断列表:', diagnosisList.value);
- emit('flush')
- close();
+ // 调用API保存到服务器
+ saveTcmDiagnosis({
+ patientId: props.patientInfo.patientId,
+ encounterId: props.patientInfo.encounterId,
+ diagnosisChildList: diagnosisChildList,
+ }).then((res) => {
+ if (res.code === 200) {
+ proxy.$modal.msgSuccess('保存成功');
+ emit('flush');
+ close();
+ } else {
+ proxy.$modal.msgError(res.msg || '保存失败');
+ }
+ }).catch((error) => {
+ console.error('保存中医诊断失败:', error);
+ proxy.$modal.msgError('保存失败,请重试');
+ });
}
function openDialog() {