fix(inpatient): 修复就诊位置更新逻辑

- 修改就诊位置表更新方式,直接更新指定ID的记录
- 添加位置ID设置功能
- 使用updateById方法替代saveOrUpdate方法提高准确性
This commit is contained in:
2026-01-18 19:44:32 +08:00
committed by huabuweixin
parent 5667e04d12
commit da17b2b89c
2 changed files with 49 additions and 3 deletions

View File

@@ -88,6 +88,7 @@
v-for="(item, index) in tableData"
:key="index"
:class="{ 'editing-row': item.editing, 'child-row': item.row.includes('.') }"
@click="handleRowClick(index)"
>
<td>{{ item.row }}</td>
<td>
@@ -967,6 +968,14 @@ async function loadMenuData(menu) {
}
}
// 处理行点击进入编辑状态
function handleRowClick(index) {
const item = tableData.value[index];
if (!item.editing) {
item.editing = true;
}
}
// 处理编辑按钮点击
function handleEdit(index) {
const item = tableData.value[index];
@@ -982,6 +991,25 @@ function handleCancelEdit(index) {
// 处理确认按钮点击
async function handleConfirm(index) {
const item = tableData.value[index];
// 必填字段验证
if (!item.code || item.code.trim() === '') {
ElMessage.error('编码不能为空');
return;
}
if (!item.name || item.name.trim() === '') {
ElMessage.error('名称不能为空');
return;
}
if (!item.type || item.type.trim() === '') {
ElMessage.error('检查类型不能为空');
return;
}
if (!item.department || item.department.trim() === '') {
ElMessage.error('执行科室不能为空');
return;
}
try {
// 根据当前激活的菜单调用不同的API
if (activeMenu.value === '检查方法') {
@@ -1212,9 +1240,24 @@ function handleAddNewRow() {
function handleAdd(index) {
const parentRow = tableData.value[index];
// 查找该父行的所有现有子行,确定下一个子行号
const parentRowPrefix = parentRow.row + '.';
let maxChildNum = 0;
tableData.value.forEach((item, idx) => {
if (item.row.startsWith(parentRowPrefix) && idx > index) {
const childNum = parseInt(item.row.split('.').pop());
if (childNum > maxChildNum) {
maxChildNum = childNum;
}
}
});
const nextChildNum = maxChildNum + 1;
// 创建子行数据,继承父行的编码
const childRow = {
row: parentRow.row + '.1', // 子行编号
row: parentRow.row + '.' + nextChildNum, // 子行编号
code: parentRow.code, // 继承父行编码
name: '',
type: '',