Merge branch 'develop' of https://gitea.gentronhealth.com/Yajentine/his into develop
This commit is contained in:
@@ -285,7 +285,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
|
|||||||
public int updateMenu(SysMenu menu) {
|
public int updateMenu(SysMenu menu) {
|
||||||
//路径Path唯一性判断
|
//路径Path唯一性判断
|
||||||
SysMenu sysMenu = menuMapper.selectMenuByPath(menu.getPath());
|
SysMenu sysMenu = menuMapper.selectMenuByPath(menu.getPath());
|
||||||
if (sysMenu != null){
|
if (sysMenu != null && !menu.getMenuId().equals(sysMenu.getMenuId())) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return menuMapper.updateMenu(menu);
|
return menuMapper.updateMenu(menu);
|
||||||
|
|||||||
@@ -2,6 +2,22 @@
|
|||||||
<div class="app-container" v-loading="loading">
|
<div class="app-container" v-loading="loading">
|
||||||
<!-- 筛选区 -->
|
<!-- 筛选区 -->
|
||||||
<el-form :model="queryParams" ref="queryRef" :inline="true" class="filter-form">
|
<el-form :model="queryParams" ref="queryRef" :inline="true" class="filter-form">
|
||||||
|
<el-form-item label="卫生机构" prop="orgName">
|
||||||
|
<el-select
|
||||||
|
v-model="queryParams.orgName"
|
||||||
|
placeholder="请选择"
|
||||||
|
clearable
|
||||||
|
style="width: 200px"
|
||||||
|
:popper-append-to-body="false"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in tenantOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.tenantName"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="诊室名称" prop="roomName">
|
<el-form-item label="诊室名称" prop="roomName">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.roomName"
|
v-model="queryParams.roomName"
|
||||||
@@ -115,11 +131,26 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="卫生机构" prop="orgName">
|
||||||
|
<el-select
|
||||||
|
v-model="form.orgName"
|
||||||
|
placeholder="请选择"
|
||||||
|
style="width: 100%"
|
||||||
|
:disabled="dialogType === 'view'"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in tenantOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.tenantName"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="诊室名称" prop="roomName">
|
<el-form-item label="诊室名称" prop="roomName">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.roomName"
|
v-model="form.roomName"
|
||||||
placeholder="请输入诊室名称"
|
placeholder="请输入诊室名称"
|
||||||
maxlength="50"
|
maxlength="20"
|
||||||
show-word-limit
|
show-word-limit
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -186,7 +217,8 @@ import {
|
|||||||
addClinicRoom,
|
addClinicRoom,
|
||||||
updateClinicRoom,
|
updateClinicRoom,
|
||||||
deleteClinicRoom,
|
deleteClinicRoom,
|
||||||
getDepartmentList
|
getDepartmentList,
|
||||||
|
getTenantList
|
||||||
} from '@/api/appoinmentmanage/clinicRoom'
|
} from '@/api/appoinmentmanage/clinicRoom'
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
@@ -201,10 +233,13 @@ const total = ref(0)
|
|||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
roomName: null
|
roomName: null,
|
||||||
|
orgName: null
|
||||||
})
|
})
|
||||||
// 科室选项
|
// 科室选项
|
||||||
const departmentOptions = ref([])
|
const departmentOptions = ref([])
|
||||||
|
// 租户选项
|
||||||
|
const tenantOptions = ref([])
|
||||||
// 弹窗相关
|
// 弹窗相关
|
||||||
const dialogVisible = ref(false)
|
const dialogVisible = ref(false)
|
||||||
const dialogType = ref('') // add/edit/view
|
const dialogType = ref('') // add/edit/view
|
||||||
@@ -220,16 +255,42 @@ const form = reactive({
|
|||||||
roomNo: '',
|
roomNo: '',
|
||||||
isDisabled: false,
|
isDisabled: false,
|
||||||
remarks: '',
|
remarks: '',
|
||||||
void: false
|
void: false,
|
||||||
|
orgName: null
|
||||||
})
|
})
|
||||||
// 表单验证规则
|
// 表单验证规则
|
||||||
const rules = {
|
const rules = {
|
||||||
roomName: [
|
roomName: [
|
||||||
{ required: true, message: '诊室名称不能为空', trigger: 'blur' },
|
{ required: true, message: '诊室名称不能为空', trigger: 'blur' },
|
||||||
{ max: 50, message: '诊室名称长度不能超过50个字符', 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'
|
||||||
|
}
|
||||||
],
|
],
|
||||||
department: [
|
department: [
|
||||||
{ required: true, message: '科室名称不能为空', trigger: 'change' }
|
{ required: true, message: '科室名称不能为空', trigger: 'change' }
|
||||||
|
],
|
||||||
|
orgName: [
|
||||||
|
{ required: true, message: '卫生机构不能为空', trigger: 'change' }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,6 +325,7 @@ function handleQuery() {
|
|||||||
function resetQuery() {
|
function resetQuery() {
|
||||||
proxy.resetForm('queryRef')
|
proxy.resetForm('queryRef')
|
||||||
queryParams.roomName = null
|
queryParams.roomName = null
|
||||||
|
queryParams.orgName = null
|
||||||
handleQuery()
|
handleQuery()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -273,6 +335,29 @@ function handleAdd() {
|
|||||||
dialogType.value = 'add'
|
dialogType.value = 'add'
|
||||||
dialogTitle.value = '新增诊室'
|
dialogTitle.value = '新增诊室'
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
|
|
||||||
|
// 为新增模式修改诊室名称验证规则:检查全局唯一性
|
||||||
|
rules.roomName = [
|
||||||
|
{ required: true, message: '诊室名称不能为空', trigger: 'blur' },
|
||||||
|
{ max: 20, message: '诊室名称长度不能超过20个字符', trigger: 'blur' },
|
||||||
|
{
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
if (!value) {
|
||||||
|
return callback()
|
||||||
|
}
|
||||||
|
// 新增时检查所有诊室名称是否已存在
|
||||||
|
const isExist = clinicRoomList.value.some(item => {
|
||||||
|
return item.roomName === value
|
||||||
|
})
|
||||||
|
if (isExist) {
|
||||||
|
callback(new Error('诊室名称已存在'))
|
||||||
|
} else {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
// 编辑按钮操作
|
// 编辑按钮操作
|
||||||
@@ -286,6 +371,34 @@ function handleEdit(row) {
|
|||||||
dialogType.value = 'edit'
|
dialogType.value = 'edit'
|
||||||
dialogTitle.value = '编辑诊室'
|
dialogTitle.value = '编辑诊室'
|
||||||
dialogVisible.value = true
|
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'
|
||||||
|
}
|
||||||
|
]
|
||||||
} else {
|
} else {
|
||||||
ElMessage.error(response.msg || '获取诊室详情失败')
|
ElMessage.error(response.msg || '获取诊室详情失败')
|
||||||
}
|
}
|
||||||
@@ -307,6 +420,8 @@ function handleView(row) {
|
|||||||
dialogType.value = 'view'
|
dialogType.value = 'view'
|
||||||
dialogTitle.value = '查看诊室详情'
|
dialogTitle.value = '查看诊室详情'
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
|
|
||||||
|
// 查看模式不需要验证规则,因为表单是禁用的
|
||||||
} else {
|
} else {
|
||||||
ElMessage.error(response.msg || '获取诊室详情失败')
|
ElMessage.error(response.msg || '获取诊室详情失败')
|
||||||
}
|
}
|
||||||
@@ -391,6 +506,7 @@ function resetForm() {
|
|||||||
form.isDisabled = false
|
form.isDisabled = false
|
||||||
form.remarks = ''
|
form.remarks = ''
|
||||||
form.void = false
|
form.void = false
|
||||||
|
form.orgName = null
|
||||||
proxy.resetForm('formRef')
|
proxy.resetForm('formRef')
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -418,9 +534,32 @@ function getDepartmentOptions() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取租户列表
|
||||||
|
function getTenantOptions() {
|
||||||
|
getTenantList()
|
||||||
|
.then(response => {
|
||||||
|
if (response.code === 200) {
|
||||||
|
// 处理不同的响应格式
|
||||||
|
if (response.data?.records && Array.isArray(response.data.records)) {
|
||||||
|
tenantOptions.value = response.data.records
|
||||||
|
} else if (Array.isArray(response.data)) {
|
||||||
|
tenantOptions.value = response.data
|
||||||
|
} else {
|
||||||
|
tenantOptions.value = []
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.warn('获取租户列表失败:', response.msg)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error('获取租户列表失败:', error)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 页面加载时初始化
|
// 页面加载时初始化
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getDepartmentOptions()
|
getDepartmentOptions()
|
||||||
|
getTenantOptions()
|
||||||
getList()
|
getList()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -47,7 +47,6 @@
|
|||||||
@change="handleLvChange"
|
@change="handleLvChange"
|
||||||
style="width: 240px"
|
style="width: 240px"
|
||||||
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
||||||
>
|
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in chrgitm_lv"
|
v-for="dict in chrgitm_lv"
|
||||||
@@ -999,7 +998,7 @@ function reset() {
|
|||||||
thoPartAttributeEnum: undefined,
|
thoPartAttributeEnum: undefined,
|
||||||
usageLimit: undefined,
|
usageLimit: undefined,
|
||||||
basicFlag: undefined,
|
basicFlag: undefined,
|
||||||
chrgitmLv: undefined,
|
chrgitmLv: '3',
|
||||||
};
|
};
|
||||||
antibioticForm.value = {
|
antibioticForm.value = {
|
||||||
antibioticCode: undefined,
|
antibioticCode: undefined,
|
||||||
|
|||||||
Reference in New Issue
Block a user