75修改还是提示“当前卫生机构下已存在该科室名称的诊室”。
This commit is contained in:
@@ -26,11 +26,11 @@ public class ClinicRoomAppServiceImpl implements IClinicRoomAppService {
|
|||||||
if (roomName != null && ObjectUtil.isNotEmpty(roomName)) {
|
if (roomName != null && ObjectUtil.isNotEmpty(roomName)) {
|
||||||
clinicRoom.setRoomName(roomName);
|
clinicRoom.setRoomName(roomName);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 分页查询
|
// 分页查询
|
||||||
Page<ClinicRoom> page = new Page<>(pageNum, pageSize);
|
Page<ClinicRoom> page = new Page<>(pageNum, pageSize);
|
||||||
Page<ClinicRoom> result = clinicRoomService.selectClinicRoomPage(page, clinicRoom);
|
Page<ClinicRoom> result = clinicRoomService.selectClinicRoomPage(page, clinicRoom);
|
||||||
|
|
||||||
return R.ok(result);
|
return R.ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,7 +58,12 @@ public class ClinicRoomAppServiceImpl implements IClinicRoomAppService {
|
|||||||
if (clinicRoom.getRemarks() != null && clinicRoom.getRemarks().length() > 500) {
|
if (clinicRoom.getRemarks() != null && clinicRoom.getRemarks().length() > 500) {
|
||||||
return R.fail(400, "备注长度不能超过500个字符");
|
return R.fail(400, "备注长度不能超过500个字符");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查诊室名称在同卫生机构下是否已存在
|
||||||
|
if (clinicRoomService.existsByOrgNameAndRoomName(clinicRoom.getOrgName(), clinicRoom.getRoomName())) {
|
||||||
|
return R.fail(400, "当前卫生机构下已存在该诊室名称");
|
||||||
|
}
|
||||||
|
|
||||||
// 新增诊室
|
// 新增诊室
|
||||||
int result = clinicRoomService.insertClinicRoom(clinicRoom);
|
int result = clinicRoomService.insertClinicRoom(clinicRoom);
|
||||||
if (result > 0) {
|
if (result > 0) {
|
||||||
@@ -86,13 +91,18 @@ public class ClinicRoomAppServiceImpl implements IClinicRoomAppService {
|
|||||||
if (clinicRoom.getRemarks() != null && clinicRoom.getRemarks().length() > 500) {
|
if (clinicRoom.getRemarks() != null && clinicRoom.getRemarks().length() > 500) {
|
||||||
return R.fail(400, "备注长度不能超过500个字符");
|
return R.fail(400, "备注长度不能超过500个字符");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查诊室是否存在
|
// 检查诊室是否存在
|
||||||
ClinicRoom existingClinicRoom = clinicRoomService.selectClinicRoomById(clinicRoom.getId());
|
ClinicRoom existingClinicRoom = clinicRoomService.selectClinicRoomById(clinicRoom.getId());
|
||||||
if (existingClinicRoom == null) {
|
if (existingClinicRoom == null) {
|
||||||
return R.fail(404, "诊室不存在");
|
return R.fail(404, "诊室不存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查诊室名称在同卫生机构下是否已存在(排除当前记录)
|
||||||
|
if (clinicRoomService.existsByOrgNameAndRoomNameExcludeId(clinicRoom.getOrgName(), clinicRoom.getRoomName(), clinicRoom.getId())) {
|
||||||
|
return R.fail(400, "当前卫生机构下已存在该诊室名称");
|
||||||
|
}
|
||||||
|
|
||||||
// 更新诊室
|
// 更新诊室
|
||||||
int result = clinicRoomService.updateClinicRoom(clinicRoom);
|
int result = clinicRoomService.updateClinicRoom(clinicRoom);
|
||||||
if (result > 0) {
|
if (result > 0) {
|
||||||
@@ -109,7 +119,7 @@ public class ClinicRoomAppServiceImpl implements IClinicRoomAppService {
|
|||||||
if (existingClinicRoom == null) {
|
if (existingClinicRoom == null) {
|
||||||
return R.fail(404, "诊室不存在");
|
return R.fail(404, "诊室不存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除诊室
|
// 删除诊室
|
||||||
int result = clinicRoomService.deleteClinicRoomById(id);
|
int result = clinicRoomService.deleteClinicRoomById(id);
|
||||||
if (result > 0) {
|
if (result > 0) {
|
||||||
|
|||||||
@@ -51,4 +51,23 @@ public interface IClinicRoomService extends IService<ClinicRoom> {
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
int deleteClinicRoomById(Long id);
|
int deleteClinicRoomById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查指定卫生机构下是否已存在相同诊室名称(新增时使用)
|
||||||
|
*
|
||||||
|
* @param orgName 卫生机构名称
|
||||||
|
* @param roomName 诊室名称
|
||||||
|
* @return 是否存在
|
||||||
|
*/
|
||||||
|
boolean existsByOrgNameAndRoomName(String orgName, String roomName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查指定卫生机构下是否已存在相同诊室名称(编辑时使用,排除当前记录)
|
||||||
|
*
|
||||||
|
* @param orgName 卫生机构名称
|
||||||
|
* @param roomName 诊室名称
|
||||||
|
* @param id 当前记录ID
|
||||||
|
* @return 是否存在
|
||||||
|
*/
|
||||||
|
boolean existsByOrgNameAndRoomNameExcludeId(String orgName, String roomName, Long id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,4 +44,21 @@ public class ClinicRoomServiceImpl extends ServiceImpl<ClinicRoomMapper, ClinicR
|
|||||||
public int deleteClinicRoomById(Long id) {
|
public int deleteClinicRoomById(Long id) {
|
||||||
return baseMapper.deleteById(id);
|
return baseMapper.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean existsByOrgNameAndRoomName(String orgName, String roomName) {
|
||||||
|
LambdaQueryWrapper<ClinicRoom> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(ClinicRoom::getOrgName, orgName)
|
||||||
|
.eq(ClinicRoom::getRoomName, roomName);
|
||||||
|
return count(queryWrapper) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean existsByOrgNameAndRoomNameExcludeId(String orgName, String roomName, Long id) {
|
||||||
|
LambdaQueryWrapper<ClinicRoom> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(ClinicRoom::getOrgName, orgName)
|
||||||
|
.eq(ClinicRoom::getRoomName, roomName)
|
||||||
|
.ne(ClinicRoom::getId, id);
|
||||||
|
return count(queryWrapper) > 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -276,104 +276,14 @@ const form = reactive({
|
|||||||
const rules = {
|
const rules = {
|
||||||
roomName: [
|
roomName: [
|
||||||
{ required: true, message: '诊室名称不能为空', trigger: 'blur' },
|
{ required: true, message: '诊室名称不能为空', trigger: 'blur' },
|
||||||
{ max: 20, message: '诊室名称长度不能超过20个字符', trigger: 'blur' },
|
{ max: 20, message: '诊室名称长度不能超过20个字符', trigger: 'blur' }
|
||||||
{
|
],
|
||||||
validator: (rule, value, callback) => {
|
department: [
|
||||||
// console.log('Validating roomName:', { value, formId: form.id });
|
{ required: true, message: '科室名称不能为空', trigger: 'change' }
|
||||||
if (!value) {
|
],
|
||||||
return callback()
|
orgName: [
|
||||||
}
|
{ required: true, message: '卫生机构不能为空', trigger: 'change' }
|
||||||
// 检查诊室名称是否已存在(全局唯一性)
|
]
|
||||||
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'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取诊室列表
|
// 获取诊室列表
|
||||||
@@ -530,32 +440,10 @@ function handleEdit(row) {
|
|||||||
dialogTitle.value = '编辑诊室'
|
dialogTitle.value = '编辑诊室'
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
|
|
||||||
// 为编辑模式修改诊室名称验证规则:检查同一租户下是否重复
|
// 为编辑模式设置基础验证规则
|
||||||
rules.roomName = [
|
rules.roomName = [
|
||||||
{ required: true, message: '诊室名称不能为空', trigger: 'blur' },
|
{ required: true, message: '诊室名称不能为空', trigger: 'blur' },
|
||||||
{ max: 20, message: '诊室名称长度不能超过20个字符', 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'
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
} else {
|
} else {
|
||||||
ElMessage.error(response.msg || '获取诊室详情失败')
|
ElMessage.error(response.msg || '获取诊室详情失败')
|
||||||
@@ -633,7 +521,12 @@ function submitForm() {
|
|||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
getList()
|
getList()
|
||||||
} else {
|
} else {
|
||||||
ElMessage.error(response.msg || '修改失败')
|
// 特别处理唯一性验证错误
|
||||||
|
if (response.msg && response.msg.includes('当前卫生机构下已存在该诊室名称')) {
|
||||||
|
ElMessage.error('当前卫生机构下已存在该诊室名称,请更换诊室名称')
|
||||||
|
} else {
|
||||||
|
ElMessage.error(response.msg || '修改失败')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
@@ -648,7 +541,12 @@ function submitForm() {
|
|||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
getList()
|
getList()
|
||||||
} else {
|
} else {
|
||||||
ElMessage.error(response.msg || '新增失败')
|
// 特别处理唯一性验证错误
|
||||||
|
if (response.msg && response.msg.includes('当前卫生机构下已存在该诊室名称')) {
|
||||||
|
ElMessage.error('当前卫生机构下已存在该诊室名称,请更换诊室名称')
|
||||||
|
} else {
|
||||||
|
ElMessage.error(response.msg || '新增失败')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
|
|||||||
Reference in New Issue
Block a user