fix(consultation): 解决会诊流程中的多个功能问题

- 在 deptappthoursManage.js 中添加 status 参数以仅获取已启动的机构
- 为 consultationapplication 组件添加已确认和已签名状态选项
- 扩展操作列宽度并添加打印功能按钮
- 优化 handlePrint 方法以支持行参数和性别枚举转换
- 为 consultationconfirmation 组件添加必填验证和编辑权限控制
- 修复会诊确认医师信息回显逻辑
- 在 inspectionApplication 组件中修复表格行点击事件和检验项目加载
- 禁用非紧急标记的编辑权限以解决Bug #268
- 为 surgeryApplication 组件添加响应码验证和错误处理
- 在 consultation 组件中添加表单验证清除功能
- 为 PackageManagement 组件实现动态机构选项加载
- 重构 PackageSettings 组件的套餐金额显示和只读模式
- 为检查项目设置组件添加套餐筛选和下级类型选择功能
- 实现检验套餐的编辑和查看模式切换功能
This commit is contained in:
2026-03-26 18:22:21 +08:00
parent c509a804ec
commit 91a0b48662
20 changed files with 631 additions and 266 deletions

View File

@@ -257,8 +257,9 @@
v-model="form.scheduleDate"
type="datetime"
placeholder="选择安排时间"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
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%"
/>
</el-form-item>
@@ -751,6 +752,13 @@
</template>
</el-table-column>
<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>
<!-- 底部分页区 -->
@@ -1699,6 +1707,44 @@ 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 ''
@@ -1731,6 +1777,37 @@ function confirmApply() {
proxy.$modal.msgWarning('请先选择一条手术申请记录')
return
}
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.operCode = selectedRow.surgeryNo // 手术单号作为手术编码
form.operName = selectedRow.descJson.surgeryName//手术名称
form.preoperativeDiagnosis = selectedRow.descJson?.preoperativeDiagnosis || ''
form.patientName = selectedRow.name// 患者姓名对应填入患者姓名
form.gender = selectedRow.gender//患者性别
form.birthDay = selectedRow.birthDay//患者出生日期
form.age = calculateAge(selectedRow.birthDay)//计算患者年龄
form.applyDeptName = selectedRow.applyDeptName//申请部门名称
form.applyDoctorName = selectedRow.applyDoctorName//申请医生
form.applyTime = selectedRow.applyTime//申请时间
form.surgeryType = selectedRow.surgeryTypeEnum//手术类型
form.surgeryNature = selectedRow.surgeryTypeEnum//手术性质
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)
}
showApplyDialog.value = false
}
const selectedRow = selectedRows[0]
// 填充手术申请信息到表单
form.surgeryNo = selectedRow.surgeryNo // 手术单号对应填入手术单号