diff --git a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/applicationShow/testApplication.vue b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/applicationShow/testApplication.vue
index 5ede68657..3881938f1 100755
--- a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/applicationShow/testApplication.vue
+++ b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/applicationShow/testApplication.vue
@@ -183,6 +183,26 @@
关闭
+
+
+
+
+
+ 取消
+ 确认
+
+
@@ -192,12 +212,17 @@ import {Refresh, Search} from '@element-plus/icons-vue';
import {patientInfo} from '../../store/patient.js';
import {getInspection, deleteRequestForm, withdrawRequestForm} from './api';
import {getDepartmentList} from '@/api/public.js';
+import LaboratoryTests from '../order/applicationForm/laboratoryTests.vue';
+import {saveInspection} from '../order/applicationForm/api.js';
const { proxy } = getCurrentInstance();
const tableData = ref([]);
const loading = ref(false);
const detailDialogVisible = ref(false);
+const editDialogVisible = ref(false);
+const editRowData = ref(null);
+const editFormRef = ref(null);
const currentDetail = ref(null);
const descJsonData = ref(null);
const orgOptions = ref([]);
@@ -433,10 +458,32 @@ const handleViewDetail = async (row) => {
/**
* 修改检验申请单(待签发状态)
*/
-const handleEdit = (row) => {
- // 复用详情查看逻辑,后续可扩展为打开编辑弹窗
- handleViewDetail(row);
- proxy.$modal?.msgInfo?.('修改功能待接入,请通过详情弹窗查看后重新开立');
+const handleEdit = async (row) => {
+ // 确保科室数据已加载
+ if (!orgOptions.value || orgOptions.value.length === 0) {
+ await getLocationInfo();
+ }
+ editRowData.value = row;
+ editDialogVisible.value = true;
+};
+
+/**
+ * 编辑弹窗提交成功回调
+ */
+const handleEditSubmitOk = async () => {
+ editDialogVisible.value = false;
+ editRowData.value = null;
+ proxy.$modal?.msgSuccess?.('修改成功');
+ await fetchData();
+};
+
+/**
+ * 编辑弹窗提交按钮
+ */
+const submitEditForm = () => {
+ if (editFormRef.value?.submit) {
+ editFormRef.value.submit();
+ }
};
/**
@@ -450,7 +497,7 @@ const handleDelete = async (row) => {
}
try {
- const res = await deleteRequestForm({ prescriptionNo: row.prescriptionNo });
+ const res = await deleteRequestForm({ requestFormId: row.requestFormId });
if (res?.code === 200) {
proxy.$modal?.msgSuccess?.('删除成功');
await fetchData();
@@ -473,7 +520,7 @@ const handleWithdraw = async (row) => {
}
try {
- const res = await withdrawRequestForm({ prescriptionNo: row.prescriptionNo });
+ const res = await withdrawRequestForm({ requestFormId: row.requestFormId });
if (res?.code === 200) {
proxy.$modal?.msgSuccess?.('撤回成功');
await fetchData();
diff --git a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/applicationForm/laboratoryTests.vue b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/applicationForm/laboratoryTests.vue
index 47e1b591e..617a0a905 100755
--- a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/applicationForm/laboratoryTests.vue
+++ b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/applicationForm/laboratoryTests.vue
@@ -155,7 +155,13 @@ const findTreeItem = (list, id) => {
return null;
};
const emits = defineEmits(['submitOk']);
-const props = defineProps({});
+const props = defineProps({
+ editData: {
+ type: Object,
+ default: null,
+ },
+});
+const isEditMode = computed(() => !!props.editData?.requestFormId);
const state = reactive({});
const applicationListAll = ref([]);
const loading = ref(false);
@@ -331,6 +337,44 @@ watch(
projectWithDepartment(newValue, 1);
}
);
+
+// 编辑模式下,回显已有数据
+watch(
+ () => props.editData,
+ (newData) => {
+ if (!newData || !newData.requestFormId) return;
+
+ // 解析 descJson 回填表单
+ if (newData.descJson) {
+ try {
+ const obj = JSON.parse(newData.descJson);
+ Object.keys(form).forEach((key) => {
+ if (obj[key] !== undefined) {
+ form[key] = obj[key];
+ }
+ });
+ } catch (e) {
+ console.error('解析 descJson 失败:', e);
+ }
+ }
+
+ // 回填已选项目
+ if (newData.requestFormDetailList && newData.requestFormDetailList.length > 0) {
+ // 从全部数据中匹配已选项目
+ const selectedIds = [];
+ newData.requestFormDetailList.forEach((detail) => {
+ const matched = applicationListAll.value.find(
+ (item) => item.adviceName === detail.adviceName
+ );
+ if (matched) {
+ selectedIds.push(matched.adviceDefinitionId);
+ }
+ });
+ transferValue.value = selectedIds;
+ }
+ },
+ { immediate: true }
+);
const submit = () => {
if (transferValue.value.length == 0) {
return proxy.$message.error('请选择申请单');
@@ -363,14 +407,14 @@ const submit = () => {
patientId: patientInfo.value.patientId, //患者ID
encounterId: patientInfo.value.encounterId, // 就诊ID
organizationId: patientInfo.value.inHospitalOrgId, // 医疗机构ID
- requestFormId: '', // 申请单ID
+ requestFormId: isEditMode.value ? props.editData.requestFormId : '', // 申请单ID(编辑模式传入,新增为空)
name: '检验申请单',
descJson: JSON.stringify(form),
categoryEnum: '21', // 21 检验 22 检查 23 输血 24 手术(避开 adviceType 1-6 碰撞)
};
saveInspection(params).then((res) => {
if (res.code === 200) {
- proxy.$message.success(res.msg);
+ proxy.$message.success(isEditMode.value ? '修改成功' : res.msg);
transferValue.value = [];
emits('submitOk');
} else {