fix(consultation): 解决会诊流程中的多个功能问题
- 在 deptappthoursManage.js 中添加 status 参数以仅获取已启动的机构 - 为 consultationapplication 组件添加已确认和已签名状态选项 - 扩展操作列宽度并添加打印功能按钮 - 优化 handlePrint 方法以支持行参数和性别枚举转换 - 为 consultationconfirmation 组件添加必填验证和编辑权限控制 - 修复会诊确认医师信息回显逻辑 - 在 inspectionApplication 组件中修复表格行点击事件和检验项目加载 - 禁用非紧急标记的编辑权限以解决Bug #268 - 为 surgeryApplication 组件添加响应码验证和错误处理 - 在 consultation 组件中添加表单验证清除功能 - 为 PackageManagement 组件实现动态机构选项加载 - 重构 PackageSettings 组件的套餐金额显示和只读模式 - 为检查项目设置组件添加套餐筛选和下级类型选择功能 - 实现检验套餐的编辑和查看模式切换功能
This commit is contained in:
@@ -702,6 +702,13 @@ const loadMainDiagnosis = async () => {
|
||||
|
||||
// 点击表格行
|
||||
const handleRowClick = async (row) => {
|
||||
console.log('点击行,当前 selectedRow:', selectedRow.value, '新 row:', row);
|
||||
|
||||
// 先清空表单验证状态
|
||||
if (formRef.value) {
|
||||
formRef.value.clearValidate();
|
||||
}
|
||||
|
||||
selectedRow.value = row;
|
||||
if (row) {
|
||||
console.log('点击的行数据:', row);
|
||||
@@ -760,10 +767,19 @@ const handleRowClick = async (row) => {
|
||||
participatingPhysicians.value = [];
|
||||
}
|
||||
}
|
||||
|
||||
console.log('行点击处理完成,selectedRow:', selectedRow.value);
|
||||
};
|
||||
|
||||
// 新增
|
||||
const handleNew = () => {
|
||||
console.log('点击新增按钮');
|
||||
|
||||
// 先清空表单验证状态
|
||||
if (formRef.value) {
|
||||
formRef.value.clearValidate();
|
||||
}
|
||||
|
||||
selectedRow.value = null;
|
||||
|
||||
// 获取当前登录用户信息
|
||||
@@ -809,6 +825,8 @@ const handleNew = () => {
|
||||
selectedPhysiciansList.value = [];
|
||||
participatingPhysicians.value = [];
|
||||
|
||||
console.log('新增模式初始化完成,selectedRow:', selectedRow.value);
|
||||
|
||||
// 加载主诊断
|
||||
loadMainDiagnosis();
|
||||
};
|
||||
|
||||
@@ -33,7 +33,9 @@
|
||||
max-height="300px"
|
||||
style="width: 100%; min-width: 100%"
|
||||
class="inspection-table"
|
||||
highlight-current-row
|
||||
@selection-change="handleSelectionChange"
|
||||
@current-change="handleRowClick"
|
||||
@cell-click="handleCellClick"
|
||||
>
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
@@ -292,16 +294,20 @@
|
||||
</template>
|
||||
<el-row type="flex" :gutter="16" wrap>
|
||||
<el-col :xs="12" :sm="6" :md="6" :lg="6">
|
||||
<!-- 🔧 Bug #268 修复:只有急标记能编辑 -->
|
||||
<el-checkbox v-model="formData.priorityCode" :true-value="1" :false-value="0">急</el-checkbox>
|
||||
</el-col>
|
||||
<el-col :xs="12" :sm="6" :md="6" :lg="6">
|
||||
<el-checkbox v-model="formData.applyStatus" :true-value="1" :false-value="0">收费</el-checkbox>
|
||||
<!-- 🔧 Bug #268 修复:收费标记默认不勾选并不可编辑 -->
|
||||
<el-checkbox v-model="formData.applyStatus" :true-value="1" :false-value="0" disabled>收费</el-checkbox>
|
||||
</el-col>
|
||||
<el-col :xs="12" :sm="6" :md="6" :lg="6">
|
||||
<el-checkbox v-model="formData.needRefund" :true-value="true" :false-value="false">退费</el-checkbox>
|
||||
<!-- 🔧 Bug #268 修复:退费标记默认不勾选并不可编辑 -->
|
||||
<el-checkbox v-model="formData.needRefund" :true-value="true" :false-value="false" disabled>退费</el-checkbox>
|
||||
</el-col>
|
||||
<el-col :xs="12" :sm="6" :md="6" :lg="6">
|
||||
<el-checkbox v-model="formData.needExecute" :true-value="true" :false-value="false">执行</el-checkbox>
|
||||
<!-- 🔧 Bug #268 修复:执行标记默认不勾选并不可编辑 -->
|
||||
<el-checkbox v-model="formData.needExecute" :true-value="true" :false-value="false" disabled>执行</el-checkbox>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
@@ -1521,62 +1527,87 @@ function handleDelete(row) {
|
||||
function handleCellClick(row, column) {
|
||||
// 点击表格行时,将该申请单的数据加载到表单中
|
||||
if (row && row.applicationId) {
|
||||
// 切换到申请单 TAB
|
||||
leftActiveTab.value = 'application'
|
||||
|
||||
// 加载表单数据
|
||||
Object.assign(formData, {
|
||||
applicationId: row.applicationId,
|
||||
applyNo: row.applyNo,
|
||||
patientName: row.patientName,
|
||||
medicalrecordNumber: row.medicalrecordNumber,
|
||||
natureofCost: row.natureofCost || 'self',
|
||||
applyTime: row.applyTime,
|
||||
applyDepartment: row.applyDepartment,
|
||||
applyDocName: row.applyDocName,
|
||||
executeDepartment: row.executeDepartment || 'medical_lab',
|
||||
clinicDesc: row.clinicDesc,
|
||||
contraindication: row.contraindication,
|
||||
clinicDiag: row.clinicDiag,
|
||||
medicalHistorySummary: row.medicalHistorySummary,
|
||||
purposeofInspection: row.purposeofInspection,
|
||||
physicalExam: row.physicalExam,
|
||||
applyRemark: row.applyRemark,
|
||||
priorityCode: row.priorityCode || 0,
|
||||
applyStatus: row.applyStatus || 1,
|
||||
needRefund: row.needRefund || false,
|
||||
needExecute: row.needExecute || false,
|
||||
inspectionDoctor: row.inspectionDoctor,
|
||||
inspectionTime: row.inspectionTime,
|
||||
auditDoctor: row.auditDoctor,
|
||||
auditTime: row.auditTime,
|
||||
visitNo: row.visitNo,
|
||||
applyDocCode: row.applyDocCode,
|
||||
applyDeptCode: row.applyDeptCode,
|
||||
specimenName: row.specimenName,
|
||||
encounterId: row.encounterId,
|
||||
patientId: row.patientId,
|
||||
applyOrganizationId: row.applyOrganizationId
|
||||
})
|
||||
|
||||
// 根据检验项目名称解析已选项目
|
||||
selectedInspectionItems.value = []
|
||||
if (row.itemName || row.inspectionItem) {
|
||||
const itemNames = (row.itemName || row.inspectionItem).split('、')
|
||||
inspectionCategories.value.forEach(category => {
|
||||
category.items.forEach(item => {
|
||||
if (itemNames.includes(item.itemName)) {
|
||||
selectedInspectionItems.value.push({ ...item })
|
||||
}
|
||||
})
|
||||
loadApplicationToForm(row);
|
||||
}
|
||||
}
|
||||
|
||||
// 🔧 Bug #269 修复:行点击事件处理
|
||||
function handleRowClick(currentRow, oldRow) {
|
||||
// 点击表格行时,将该申请单的数据加载到表单中
|
||||
if (currentRow && currentRow.applicationId) {
|
||||
loadApplicationToForm(currentRow);
|
||||
}
|
||||
}
|
||||
|
||||
// 🔧 Bug #269 修复:提取公共方法加载申请单到表单
|
||||
function loadApplicationToForm(row) {
|
||||
// 切换到申请单 TAB
|
||||
leftActiveTab.value = 'application'
|
||||
|
||||
// 加载表单数据
|
||||
Object.assign(formData, {
|
||||
applicationId: row.applicationId,
|
||||
applyNo: row.applyNo,
|
||||
patientName: row.patientName,
|
||||
medicalrecordNumber: row.medicalrecordNumber,
|
||||
natureofCost: row.natureofCost || 'self',
|
||||
applyTime: row.applyTime,
|
||||
applyDepartment: row.applyDepartment,
|
||||
applyDocName: row.applyDocName,
|
||||
executeDepartment: row.executeDepartment || 'medical_lab',
|
||||
clinicDesc: row.clinicDesc,
|
||||
contraindication: row.contraindication,
|
||||
clinicDiag: row.clinicDiag,
|
||||
medicalHistorySummary: row.medicalHistorySummary,
|
||||
purposeofInspection: row.purposeofInspection,
|
||||
physicalExam: row.physicalExam,
|
||||
applyRemark: row.applyRemark,
|
||||
priorityCode: row.priorityCode || 0,
|
||||
applyStatus: row.applyStatus || 0, // 🔧 Bug #268: 默认为 0
|
||||
needRefund: row.needRefund || false,
|
||||
needExecute: row.needExecute || false,
|
||||
inspectionDoctor: row.inspectionDoctor,
|
||||
inspectionTime: row.inspectionTime,
|
||||
auditDoctor: row.auditDoctor,
|
||||
auditTime: row.auditTime,
|
||||
visitNo: row.visitNo,
|
||||
applyDocCode: row.applyDocCode,
|
||||
applyDeptCode: row.applyDeptCode,
|
||||
specimenName: row.specimenName,
|
||||
encounterId: row.encounterId,
|
||||
patientId: row.patientId,
|
||||
applyOrganizationId: row.applyOrganizationId
|
||||
})
|
||||
|
||||
// 🔧 Bug #269 修复:根据检验项目 ID 加载详细的检验项目数据
|
||||
selectedInspectionItems.value = []
|
||||
if (row.labApplyItemList && row.labApplyItemList.length > 0) {
|
||||
// 如果后端返回了检验项目列表,直接使用
|
||||
selectedInspectionItems.value = row.labApplyItemList.map(item => ({
|
||||
...item,
|
||||
itemId: item.itemId || item.id || Math.random().toString(36).substring(2, 11),
|
||||
itemName: item.itemName || item.name || '',
|
||||
itemPrice: item.itemPrice || item.price || 0,
|
||||
itemAmount: item.itemAmount || item.price || 0,
|
||||
}))
|
||||
} else if (row.itemName || row.inspectionItem) {
|
||||
// 如果只有项目名称,尝试从本地分类中查找匹配项
|
||||
const itemNames = (row.itemName || row.inspectionItem).split(/[+,]/) // 支持多种分隔符
|
||||
inspectionCategories.value.forEach(category => {
|
||||
category.items.forEach(item => {
|
||||
if (itemNames.includes(item.itemName)) {
|
||||
selectedInspectionItems.value.push({ ...item })
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 重置验证错误状态
|
||||
Object.keys(validationErrors).forEach(key => {
|
||||
validationErrors[key] = false
|
||||
})
|
||||
}
|
||||
|
||||
// 重置验证错误状态
|
||||
Object.keys(validationErrors).forEach(key => {
|
||||
validationErrors[key] = false
|
||||
})
|
||||
|
||||
console.log('已加载申请单到表单:', row.applyNo);
|
||||
}
|
||||
|
||||
// 监听activeTab变化
|
||||
|
||||
@@ -1048,29 +1048,37 @@ function submitForm() {
|
||||
if (form.value.id == undefined) {
|
||||
// 新增手术
|
||||
addSurgery(form.value).then((res) => {
|
||||
proxy.$modal.msgSuccess('新增成功')
|
||||
//保存麻醉方式
|
||||
seesionStorage.setItem('anesthesiaType', form.value.anesthesiaTypeEnum)
|
||||
open.value = false
|
||||
getList()
|
||||
if (res.code === 200) {
|
||||
proxy.$modal.msgSuccess('新增成功')
|
||||
//保存麻醉方式
|
||||
sessionStorage.setItem('anesthesiaType', form.value.anesthesiaTypeEnum)
|
||||
open.value = false
|
||||
getList()
|
||||
} else {
|
||||
proxy.$modal.msgError(res.msg || '新增手术失败')
|
||||
}
|
||||
}).catch(error => {
|
||||
console.error('新增手术失败:', error)
|
||||
proxy.$message.error('新增手术失败,请检查表单信息')
|
||||
proxy.$modal.msgError('新增手术失败,请稍后重试')
|
||||
})
|
||||
} else {
|
||||
// 修改手术
|
||||
updateSurgery(form.value).then((res) => {
|
||||
proxy.$modal.msgSuccess('修改成功')
|
||||
seesionStorage.setItem('anesthesiaType', form.value.anesthesiaTypeEnum)
|
||||
open.value = false
|
||||
getList()
|
||||
if (res.code === 200) {
|
||||
proxy.$modal.msgSuccess('修改成功')
|
||||
sessionStorage.setItem('anesthesiaType', form.value.anesthesiaTypeEnum)
|
||||
open.value = false
|
||||
getList()
|
||||
} else {
|
||||
proxy.$modal.msgError(res.msg || '修改手术失败')
|
||||
}
|
||||
}).catch(error => {
|
||||
console.error('更新手术失败:', error)
|
||||
proxy.$message.error('更新手术失败,请检查表单信息')
|
||||
proxy.$modal.msgError('更新手术失败,请稍后重试')
|
||||
})
|
||||
}
|
||||
} else {
|
||||
proxy.$message.error('请检查表单信息,标红字段为必填项')
|
||||
proxy.$modal.msgError('请检查表单信息,标红字段为必填项')
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user