75修改还是提示“当前卫生机构下已存在该科室名称的诊室”。

This commit is contained in:
HuangXinQuan
2026-02-10 15:08:38 +08:00
parent b1c966f69f
commit f1bddf3fbe
4 changed files with 74 additions and 130 deletions

View File

@@ -276,104 +276,14 @@ const form = reactive({
const rules = {
roomName: [
{ required: true, message: '诊室名称不能为空', trigger: 'blur' },
{ max: 20, message: '诊室名称长度不能超过20个字符', trigger: 'blur' },
{
validator: (rule, value, callback) => {
// console.log('Validating roomName:', { value, formId: form.id });
if (!value) {
return callback()
}
// 检查诊室名称是否已存在(全局唯一性)
const isExist = clinicRoomList.value.some(item => {
const checkRoomName = String(item.roomName) === String(value); // Ensure type consistency
const checkId = item.id !== form.id;
// console.log('Comparing item for roomName:', {
// itemId: item.id,
// itemRoomName: item.roomName,
// checkRoomName,
// checkId,
// allConditions: checkRoomName && checkId
// });
return checkRoomName && checkId
})
if (isExist) {
callback(new Error('诊室名称已存在'))
} else {
callback()
}
},
trigger: 'blur'
} ], department: [
{ required: true, message: '', trigger: 'change' },
{
validator: (rule, value, callback) => {
// console.log('Validating department:', { value, formOrgName: form.orgName, formId: form.id });
if (!value) {
return callback()
}
if (!form.orgName) {
// console.log('Department validation: form.orgName is missing, skipping uniqueness check.');
return callback()
}
// 检查当前卫生机构下科室名称是否已存在
const isExist = clinicRoomList.value.some(item => {
const checkDepartment = String(item.department) === String(value);
const checkOrgName = String(item.orgName) === String(form.orgName); // Ensure type consistency
const checkId = item.id !== form.id; // Check against other items
// console.log('Comparing item:', {
// itemId: item.id,
// itemDepartment: item.department,
// itemOrgName: item.orgName,
// checkDepartment,
// checkOrgName,
// checkId,
// allConditions: checkDepartment && checkOrgName && checkId
// });
return checkDepartment && checkOrgName && checkId
})
if (isExist) {
// 不在此处直接报错而是依赖orgName的校验来显示错误
callback()
} else {
callback()
}
// 触发对orgName字段的重新验证以实现联动校验
proxy.formRef.validateField('orgName')
},
trigger: 'change'
}
],
orgName: [
{ required: true, message: '卫生机构不能为空', trigger: 'change' },
{
validator: (rule, value, callback) => {
// 如果卫生机构为空或科室名称为空,则不进行组合唯一性校验
if (!value || !form.department) {
return callback()
}
// 检查当前卫生机构下科室名称是否已存在
const isExist = clinicRoomList.value.some(item => {
const checkDepartment = String(item.department) === String(form.department);
const checkOrgName = String(item.orgName) === String(value); // 这里使用当前的value (orgName)
const checkId = item.id !== form.id;
return checkDepartment && checkOrgName && checkId
})
if (isExist) {
callback(new Error('当前卫生机构下已存在该科室名称的诊室'))
} else {
callback()
}
// 触发对department字段的重新验证以实现联动校验
proxy.formRef.validateField('department')
},
trigger: 'change'
}
]
{ max: 20, message: '诊室名称长度不能超过20个字符', trigger: 'blur' }
],
department: [
{ required: true, message: '科室名称不能为空', trigger: 'change' }
],
orgName: [
{ required: true, message: '卫生机构不能为空', trigger: 'change' }
]
}
// 获取诊室列表
@@ -530,32 +440,10 @@ function handleEdit(row) {
dialogTitle.value = '编辑诊室'
dialogVisible.value = true
// 为编辑模式修改诊室名称验证规则:检查同一租户下是否重复
// 为编辑模式设置基础验证规则
rules.roomName = [
{ required: true, message: '诊室名称不能为空', trigger: 'blur' },
{ max: 20, message: '诊室名称长度不能超过20个字符', trigger: 'blur' },
{
validator: (rule, value, callback) => {
if (!value) {
return callback()
}
if (!form.orgName) {
return callback()
}
// 编辑时检查当前租户下是否已存在相同的诊室名称(排除当前记录)
const isExist = clinicRoomList.value.some(item => {
return item.roomName === value &&
item.orgName === form.orgName &&
item.id !== form.id
})
if (isExist) {
callback(new Error('诊室名称已存在'))
} else {
callback()
}
},
trigger: 'blur'
}
{ max: 20, message: '诊室名称长度不能超过20个字符', trigger: 'blur' }
]
} else {
ElMessage.error(response.msg || '获取诊室详情失败')
@@ -633,7 +521,12 @@ function submitForm() {
dialogVisible.value = false
getList()
} else {
ElMessage.error(response.msg || '修改失败')
// 特别处理唯一性验证错误
if (response.msg && response.msg.includes('当前卫生机构下已存在该诊室名称')) {
ElMessage.error('当前卫生机构下已存在该诊室名称,请更换诊室名称')
} else {
ElMessage.error(response.msg || '修改失败')
}
}
})
.catch(error => {
@@ -648,7 +541,12 @@ function submitForm() {
dialogVisible.value = false
getList()
} else {
ElMessage.error(response.msg || '新增失败')
// 特别处理唯一性验证错误
if (response.msg && response.msg.includes('当前卫生机构下已存在该诊室名称')) {
ElMessage.error('当前卫生机构下已存在该诊室名称,请更换诊室名称')
} else {
ElMessage.error(response.msg || '新增失败')
}
}
})
.catch(error => {