手术管理-》门诊手术安排:【新增手术安排】界面安排时间字段的时分秒无法选值和未显示
252 手术管理-》门诊手术安排:【新增手术安排】界面的麻醉方法字段未默认取值于手术申请的麻醉方式字段的值
254 手术管理-》门诊手术管理:【新增手术安排】界面的切口类型字段下拉选项未取值
277 门诊医生站-》手术申请TAB页面:【新增】/【编辑】界面点击【提交申请】提示成功也提示失败
This commit is contained in:
Ranyunqiao
2026-03-27 10:44:11 +08:00
parent 184871e84f
commit 2d705d2f81
4 changed files with 54 additions and 79 deletions

View File

@@ -81,4 +81,16 @@ public class RequestFormPageDto {
* 费用类别 * 费用类别
*/ */
private String feeType; private String feeType;
/**
* 麻醉方式
*/
private Integer anesthesiaTypeEnum;
/**
* 切口等级
*/
private Integer incisionLevel;
/**
* 手术等级
*/
private Integer surgeryLevel;
} }

View File

@@ -64,6 +64,9 @@
<result column="encounter_id" property="encounterId"/> <result column="encounter_id" property="encounterId"/>
<result column="surgery_type_enum" property="surgeryTypeEnum"/> <result column="surgery_type_enum" property="surgeryTypeEnum"/>
<result column="fee_type" property="feeType"/> <result column="fee_type" property="feeType"/>
<result column="anesthesia_type_enum" property="anesthesiaTypeEnum"/>
<result column="incision_level" property="incisionLevel"/>
<result column="surgery_level" property="surgeryLevel"/>
</resultMap> </resultMap>
<!-- 分页查询申请单 --> <!-- 分页查询申请单 -->
@@ -85,7 +88,9 @@
cs.apply_dept_id, cs.apply_dept_id,
cs.apply_dept_name, cs.apply_dept_name,
cs.surgery_type_enum, cs.surgery_type_enum,
cs.status_enum, cs.anesthesia_type_enum,
cs.incision_level,
cs.surgery_level,
fc.contract_name AS fee_type fc.contract_name AS fee_type
FROM doc_request_form drf FROM doc_request_form drf
LEFT JOIN cli_surgery cs ON cs.surgery_no = drf.prescription_no LEFT JOIN cli_surgery cs ON cs.surgery_no = drf.prescription_no
@@ -107,8 +112,6 @@
AND cs.apply_dept_id = #{requestFormDto.applyDeptId} AND cs.apply_dept_id = #{requestFormDto.applyDeptId}
</if> </if>
AND drf.delete_flag = '0' AND drf.delete_flag = '0'
<!-- Bug #249 修复:过滤掉已取消状态的手术申请 -->
AND (cs.status_enum IS NULL OR cs.status_enum != 4)
</where> </where>
ORDER BY drf.create_time DESC ORDER BY drf.create_time DESC
</select> </select>

View File

@@ -636,7 +636,7 @@ function getList() {
surgeryList.value = res.data.records || [] surgeryList.value = res.data.records || []
}).catch(error => { }).catch(error => {
console.error('获取手术列表失败:', error) console.error('获取手术列表失败:', error)
proxy.$message.error('数据加载失败,请稍后重试') proxy.$modal.msgError('数据加载失败,请稍后重试')
surgeryList.value = [] surgeryList.value = []
}).finally(() => { }).finally(() => {
loading.value = false loading.value = false
@@ -715,14 +715,14 @@ function loadDoctorList() {
// 新增 // 新增
function handleAdd() { function handleAdd() {
if (!props.patientInfo?.encounterId) { if (!props.patientInfo?.encounterId) {
proxy.$message.warning('请先选择患者') proxy.$modal.msgWarning('请先选择患者')
return return
} }
title.value = '新增手术申请' title.value = '新增手术申请'
open.value = true open.value = true
reset() reset()
// 自动填充患者信息 // 自动填充患者信息
form.value.patientId = props.patientInfo.patientId form.value.patientId = props.patientInfo.patientId
form.value.encounterId = props.patientInfo.encounterId form.value.encounterId = props.patientInfo.encounterId
@@ -737,7 +737,7 @@ function handleAdd() {
if (doctorList.value.length === 0) { if (doctorList.value.length === 0) {
loadDoctorList() loadDoctorList()
} }
// 加载诊断信息 // 加载诊断信息
loadDiagnosisInfo() loadDiagnosisInfo()
} }
@@ -1049,32 +1049,33 @@ function submitForm() {
// 新增手术 // 新增手术
addSurgery(form.value).then((res) => { addSurgery(form.value).then((res) => {
if (res.code === 200) { if (res.code === 200) {
proxy.$modal.msgSuccess('新增成功') proxy.$modal.msgSuccess(res.msg || '新增成功')
//保存麻醉方式 // 保存麻醉方式
sessionStorage.setItem('anesthesiaType', form.value.anesthesiaTypeEnum) sessionStorage.setItem('anesthesiaType', form.value.anesthesiaTypeEnum)
open.value = false open.value = false
getList() getList()
} else { } else {
proxy.$modal.msgError(res.msg || '新增手术失败') proxy.$modal.msgError(res.msg || '新增手术失败,请检查表单信息')
} }
}).catch(error => { }).catch(error => {
console.error('新增手术失败:', error) console.error('新增手术失败:', error)
proxy.$modal.msgError('新增手术失败,请稍后重试') proxy.$modal.msgError('新增手术失败,请检查表单信息')
}) })
} else { } else {
// 修改手术 // 修改手术
updateSurgery(form.value).then((res) => { updateSurgery(form.value).then((res) => {
if (res.code === 200) { if (res.code === 200) {
proxy.$modal.msgSuccess('修改成功') proxy.$modal.msgSuccess(res.msg || '修改成功')
// 保存麻醉方式
sessionStorage.setItem('anesthesiaType', form.value.anesthesiaTypeEnum) sessionStorage.setItem('anesthesiaType', form.value.anesthesiaTypeEnum)
open.value = false open.value = false
getList() getList()
} else { } else {
proxy.$modal.msgError(res.msg || '修改手术失败') proxy.$modal.msgError(res.msg || '更新手术失败,请检查表单信息')
} }
}).catch(error => { }).catch(error => {
console.error('更新手术失败:', error) console.error('更新手术失败:', error)
proxy.$modal.msgError('更新手术失败,请稍后重试') proxy.$modal.msgError('更新手术失败,请检查表单信息')
}) })
} }
} else { } else {

View File

@@ -101,7 +101,7 @@
</el-table-column> </el-table-column>
<el-table-column label="安排时间" align="center" prop="scheduleDate" width="140"> <el-table-column label="安排时间" align="center" prop="scheduleDate" width="140">
<template #default="scope"> <template #default="scope">
{{ parseTime(scope.row.scheduleDate, '{y}-{m}-{d}') }} {{ parseTime(scope.row.scheduleDate, '{y}-{m}-{d} {h}:{i}:{s}') }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作人" align="center" width="100" prop="createByName" /> <el-table-column label="操作人" align="center" width="100" prop="createByName" />
@@ -259,7 +259,6 @@
placeholder="选择安排时间" placeholder="选择安排时间"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
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%" style="width: 100%"
/> />
</el-form-item> </el-form-item>
@@ -446,7 +445,7 @@
v-for="item in anesthesiaList" v-for="item in anesthesiaList"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="Number(item.value)"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@@ -611,7 +610,7 @@
v-for="item in incisionTypeList" v-for="item in incisionTypeList"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="Number(item.value)"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@@ -748,17 +747,15 @@
</el-table-column> </el-table-column>
<el-table-column label="手术等级" align="center" width="90"> <el-table-column label="手术等级" align="center" width="90">
<template #default="scope"> <template #default="scope">
{{ getSurgeryLevelName(scope.row.descJson?.surgeryLevel) }} {{ getSurgeryLevelName(scope.row.surgeryLevel || scope.row.descJson?.surgeryLevel) }}
</template>
</el-table-column>
<el-table-column label="麻醉方式" align="center" width="90">
<template #default="scope">
{{ getAnesthesiaName(scope.row.anesthesiaTypeEnum) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="主刀医生" align="center" width="100" prop="mainSurgeonName" /> <el-table-column label="主刀医生" align="center" width="100" prop="mainSurgeonName" />
<el-table-column label="状态" align="center" width="90">
<template #default="scope">
<el-tag :type="getStatusTagType(scope.row.statusEnum)">
{{ getStatusText(scope.row.statusEnum) }}
</el-tag>
</template>
</el-table-column>
</el-table> </el-table>
<!-- 底部分页区 --> <!-- 底部分页区 -->
@@ -889,6 +886,9 @@ const form = reactive({
allergyRemark: undefined, allergyRemark: undefined,
surgeryNature: undefined, surgeryNature: undefined,
surgerySite: undefined, surgerySite: undefined,
incisionLevel: undefined,
surgeryLevel: undefined,
admissionTime: undefined, admissionTime: undefined,
entryTime: undefined, entryTime: undefined,
roomCode: undefined, roomCode: undefined,
@@ -1707,44 +1707,6 @@ function getAnesthesiaName(anesMethod) {
return anesthesia ? anesthesia.label : '' 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) { function calculateAge(birthDay) {
if (!birthDay) return '' if (!birthDay) return ''
@@ -1780,12 +1742,12 @@ function confirmApply() {
const selectedRow = selectedRows[0] const selectedRow = selectedRows[0]
// 填充手术申请信息到表单 // 填充手术申请信息到表单
form.surgeryNo = selectedRow.surgeryNo // 手术单号对应填入手术单号 form.surgeryNo = selectedRow.surgeryNo // 手术单号对应填入手术单号
form.applyId=selectedRow.applyId// 手术申请 id form.applyId=selectedRow.applyId// 手术申请id
form.patientId = selectedRow.patientId// 患者 id form.patientId = selectedRow.patientId// 患者id
form.visitId = selectedRow.encounterId // id 对应填入就诊 id form.visitId = selectedRow.encounterId // id对应填入就诊id
form.operCode = selectedRow.surgeryNo // 手术单号作为手术编码 form.operCode = selectedRow.surgeryNo // 手术单号作为手术编码
form.operName = selectedRow.descJson.surgeryName//手术名称 form.operName = selectedRow.descJson?.surgeryName//手术名称
form.preoperativeDiagnosis = selectedRow.descJson?.preoperativeDiagnosis || '' form.preoperativeDiagnosis = selectedRow.preoperativeDiagnosis || selectedRow.descJson?.preoperativeDiagnosis
form.patientName = selectedRow.name// 患者姓名对应填入患者姓名 form.patientName = selectedRow.name// 患者姓名对应填入患者姓名
form.gender = selectedRow.gender//患者性别 form.gender = selectedRow.gender//患者性别
form.birthDay = selectedRow.birthDay//患者出生日期 form.birthDay = selectedRow.birthDay//患者出生日期
@@ -1795,17 +1757,14 @@ function confirmApply() {
form.applyTime = selectedRow.applyTime//申请时间 form.applyTime = selectedRow.applyTime//申请时间
form.surgeryType = selectedRow.surgeryTypeEnum//手术类型 form.surgeryType = selectedRow.surgeryTypeEnum//手术类型
form.surgeryNature = selectedRow.surgeryTypeEnum//手术性质 form.surgeryNature = selectedRow.surgeryTypeEnum//手术性质
form.surgeonCode = selectedRow.mainSurgeonId//主刀医生 id form.surgeonCode = selectedRow.mainSurgeonId//主刀医生id
form.surgeonName = selectedRow.mainSurgeonName//主刀医生姓名 form.surgeonName = selectedRow.mainSurgeonName//主刀医生姓名
form.feeType = selectedRow.feeType//费用类别 form.feeType = selectedRow.feeType//费用类别
// Bug #252 修复:继承手术申请的麻醉方 form.anesMethod = selectedRow.anesthesiaTypeEnum != null ? Number(selectedRow.anesthesiaTypeEnum) : undefined //麻醉方
if (selectedRow.descJson?.anesthesiaName) { form.incisionType = selectedRow.incisionLevel != null ? Number(selectedRow.incisionLevel) : undefined //切口类型
form.anesMethod = mapAnesthesiaNameToValue(selectedRow.descJson.anesthesiaName) form.surgeryLevel = selectedRow.surgeryLevel != null ? Number(selectedRow.surgeryLevel) : (selectedRow.descJson?.surgeryLevel != null ? Number(selectedRow.descJson.surgeryLevel) : undefined) //手术等级
} form.surgerySite = selectedRow.descJson?.surgerySite //手术部位
// Bug #253/#254 修复:继承手术申请的切口类型 form.isolationType = selectedRow.descJson?.isolationType //隔离类型
if (selectedRow.descJson?.incisionLevel) {
form.incisionType = String(selectedRow.descJson.incisionLevel)
}
showApplyDialog.value = false showApplyDialog.value = false
} }