diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/dto/RequestFormPageDto.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/dto/RequestFormPageDto.java index 60f10663..d4ee012e 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/dto/RequestFormPageDto.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/dto/RequestFormPageDto.java @@ -81,4 +81,16 @@ public class RequestFormPageDto { * 费用类别 */ private String feeType; + /** + * 麻醉方式 + */ + private Integer anesthesiaTypeEnum; + /** + * 切口等级 + */ + private Integer incisionLevel; + /** + * 手术等级 + */ + private Integer surgeryLevel; } diff --git a/openhis-server-new/openhis-application/src/main/resources/mapper/regdoctorstation/RequestFormManageAppMapper.xml b/openhis-server-new/openhis-application/src/main/resources/mapper/regdoctorstation/RequestFormManageAppMapper.xml index d9c80ca5..64725f1a 100644 --- a/openhis-server-new/openhis-application/src/main/resources/mapper/regdoctorstation/RequestFormManageAppMapper.xml +++ b/openhis-server-new/openhis-application/src/main/resources/mapper/regdoctorstation/RequestFormManageAppMapper.xml @@ -64,6 +64,9 @@ + + + @@ -85,7 +88,9 @@ cs.apply_dept_id, cs.apply_dept_name, cs.surgery_type_enum, - cs.status_enum, + cs.anesthesia_type_enum, + cs.incision_level, + cs.surgery_level, fc.contract_name AS fee_type FROM doc_request_form drf LEFT JOIN cli_surgery cs ON cs.surgery_no = drf.prescription_no @@ -107,8 +112,6 @@ AND cs.apply_dept_id = #{requestFormDto.applyDeptId} AND drf.delete_flag = '0' - - AND (cs.status_enum IS NULL OR cs.status_enum != 4) ORDER BY drf.create_time DESC diff --git a/openhis-ui-vue3/src/views/doctorstation/components/surgery/surgeryApplication.vue b/openhis-ui-vue3/src/views/doctorstation/components/surgery/surgeryApplication.vue index 43471171..5d5287f8 100644 --- a/openhis-ui-vue3/src/views/doctorstation/components/surgery/surgeryApplication.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/surgery/surgeryApplication.vue @@ -636,7 +636,7 @@ function getList() { surgeryList.value = res.data.records || [] }).catch(error => { console.error('获取手术列表失败:', error) - proxy.$message.error('数据加载失败,请稍后重试') + proxy.$modal.msgError('数据加载失败,请稍后重试') surgeryList.value = [] }).finally(() => { loading.value = false @@ -715,14 +715,14 @@ function loadDoctorList() { // 新增 function handleAdd() { if (!props.patientInfo?.encounterId) { - proxy.$message.warning('请先选择患者') + proxy.$modal.msgWarning('请先选择患者') return } - + title.value = '新增手术申请' open.value = true reset() - + // 自动填充患者信息 form.value.patientId = props.patientInfo.patientId form.value.encounterId = props.patientInfo.encounterId @@ -737,7 +737,7 @@ function handleAdd() { if (doctorList.value.length === 0) { loadDoctorList() } - + // 加载诊断信息 loadDiagnosisInfo() } @@ -1049,32 +1049,33 @@ function submitForm() { // 新增手术 addSurgery(form.value).then((res) => { if (res.code === 200) { - proxy.$modal.msgSuccess('新增成功') - //保存麻醉方式 + proxy.$modal.msgSuccess(res.msg || '新增成功') + // 保存麻醉方式 sessionStorage.setItem('anesthesiaType', form.value.anesthesiaTypeEnum) open.value = false getList() } else { - proxy.$modal.msgError(res.msg || '新增手术失败') + proxy.$modal.msgError(res.msg || '新增手术失败,请检查表单信息') } }).catch(error => { console.error('新增手术失败:', error) - proxy.$modal.msgError('新增手术失败,请稍后重试') + proxy.$modal.msgError('新增手术失败,请检查表单信息') }) } else { // 修改手术 updateSurgery(form.value).then((res) => { if (res.code === 200) { - proxy.$modal.msgSuccess('修改成功') + proxy.$modal.msgSuccess(res.msg || '修改成功') + // 保存麻醉方式 sessionStorage.setItem('anesthesiaType', form.value.anesthesiaTypeEnum) open.value = false getList() } else { - proxy.$modal.msgError(res.msg || '修改手术失败') + proxy.$modal.msgError(res.msg || '更新手术失败,请检查表单信息') } }).catch(error => { console.error('更新手术失败:', error) - proxy.$modal.msgError('更新手术失败,请稍后重试') + proxy.$modal.msgError('更新手术失败,请检查表单信息') }) } } else { diff --git a/openhis-ui-vue3/src/views/surgicalschedule/index.vue b/openhis-ui-vue3/src/views/surgicalschedule/index.vue index 77423c3d..cba48347 100644 --- a/openhis-ui-vue3/src/views/surgicalschedule/index.vue +++ b/openhis-ui-vue3/src/views/surgicalschedule/index.vue @@ -101,7 +101,7 @@ @@ -259,7 +259,6 @@ placeholder="选择安排时间" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" - :default-time="new Date(2026, 0, 1, 8, 0, 0)" style="width: 100%" /> @@ -446,7 +445,7 @@ v-for="item in anesthesiaList" :key="item.value" :label="item.label" - :value="item.value" + :value="Number(item.value)" /> @@ -611,7 +610,7 @@ v-for="item in incisionTypeList" :key="item.value" :label="item.label" - :value="item.value" + :value="Number(item.value)" /> @@ -748,17 +747,15 @@ + + + - - - @@ -889,6 +886,9 @@ const form = reactive({ allergyRemark: undefined, surgeryNature: undefined, surgerySite: undefined, + incisionLevel: undefined, + surgeryLevel: undefined, + admissionTime: undefined, entryTime: undefined, roomCode: undefined, @@ -1707,44 +1707,6 @@ function getAnesthesiaName(anesMethod) { return anesthesia ? anesthesia.label : '' } -// 获取状态标签类型 -function getStatusTagType(statusEnum) { - const typeMap = { - 0: 'info', // 新开/待排期 - 1: 'warning', // 已排期 - 2: 'primary', // 手术中 - 3: 'success', // 已完成 - 4: 'danger', // 已取消 - 5: 'info' // 暂停 - } - return typeMap[statusEnum] || 'info' -} - -// 获取状态文本 -function getStatusText(statusEnum) { - const textMap = { - 0: '待排期', - 1: '已排期', - 2: '手术中', - 3: '已完成', - 4: '已取消', - 5: '暂停' - } - return textMap[statusEnum] || '未知' -} - -// 将麻醉名称映射为枚举值 -function mapAnesthesiaNameToValue(name) { - if (!name) return undefined - if (name.includes('局部')) return '1' - if (name.includes('区域')) return '2' - if (name.includes('全身') || name.includes('全麻')) return '3' - if (name.includes('脊椎')) return '4' - if (name.includes('硬膜外')) return '5' - if (name.includes('表面')) return '6' - return undefined -} - // 根据出生日期计算年龄 function calculateAge(birthDay) { if (!birthDay) return '' @@ -1780,12 +1742,12 @@ function confirmApply() { const selectedRow = selectedRows[0] // 填充手术申请信息到表单 form.surgeryNo = selectedRow.surgeryNo // 手术单号对应填入手术单号 - form.applyId=selectedRow.applyId// 手术申请 id - form.patientId = selectedRow.patientId// 患者 id - form.visitId = selectedRow.encounterId // id 对应填入就诊 id + form.applyId=selectedRow.applyId// 手术申请id + form.patientId = selectedRow.patientId// 患者id + form.visitId = selectedRow.encounterId // id对应填入就诊id form.operCode = selectedRow.surgeryNo // 手术单号作为手术编码 - form.operName = selectedRow.descJson.surgeryName//手术名称 - form.preoperativeDiagnosis = selectedRow.descJson?.preoperativeDiagnosis || '' + form.operName = selectedRow.descJson?.surgeryName//手术名称 + form.preoperativeDiagnosis = selectedRow.preoperativeDiagnosis || selectedRow.descJson?.preoperativeDiagnosis form.patientName = selectedRow.name// 患者姓名对应填入患者姓名 form.gender = selectedRow.gender//患者性别 form.birthDay = selectedRow.birthDay//患者出生日期 @@ -1795,17 +1757,14 @@ function confirmApply() { form.applyTime = selectedRow.applyTime//申请时间 form.surgeryType = selectedRow.surgeryTypeEnum//手术类型 form.surgeryNature = selectedRow.surgeryTypeEnum//手术性质 - form.surgeonCode = selectedRow.mainSurgeonId//主刀医生 id + form.surgeonCode = selectedRow.mainSurgeonId//主刀医生id form.surgeonName = selectedRow.mainSurgeonName//主刀医生姓名 form.feeType = selectedRow.feeType//费用类别 - // Bug #252 修复:继承手术申请的麻醉方式 - if (selectedRow.descJson?.anesthesiaName) { - form.anesMethod = mapAnesthesiaNameToValue(selectedRow.descJson.anesthesiaName) - } - // Bug #253/#254 修复:继承手术申请的切口类型 - if (selectedRow.descJson?.incisionLevel) { - form.incisionType = String(selectedRow.descJson.incisionLevel) - } + form.anesMethod = selectedRow.anesthesiaTypeEnum != null ? Number(selectedRow.anesthesiaTypeEnum) : undefined //麻醉方法 + form.incisionType = selectedRow.incisionLevel != null ? Number(selectedRow.incisionLevel) : undefined //切口类型 + form.surgeryLevel = selectedRow.surgeryLevel != null ? Number(selectedRow.surgeryLevel) : (selectedRow.descJson?.surgeryLevel != null ? Number(selectedRow.descJson.surgeryLevel) : undefined) //手术等级 + form.surgerySite = selectedRow.descJson?.surgerySite //手术部位 + form.isolationType = selectedRow.descJson?.isolationType //隔离类型 showApplyDialog.value = false }