完善部门管理

This commit is contained in:
Lxq
2025-12-19 14:59:24 +08:00
parent b60a50dca5
commit 2e9ec4b50f
3 changed files with 42 additions and 15 deletions

View File

@@ -31,6 +31,14 @@ export function userlist(data: any) {
})
}
export function userselect(data: any) {
return request({
url: '/user/list',
method: 'get',
params: data,
})
}
export function userbyid(id: string | number) {
return request({
url: `/user/getById/${id}`,

View File

@@ -88,10 +88,10 @@
:formatter="formatCell"
/>
<el-table-column
prop="leaderName"
prop="leaderId"
label="部门领导"
min-width="150"
:formatter="formatCell"
:formatter="formatLeaderCell"
/>
<el-table-column
prop="remark"
@@ -150,7 +150,7 @@
:data="treeOptions"
:props="{ value: 'id', label: 'deptName', children: 'children' }"
check-strictly
placeholder="请选择上级部门(可选)"
placeholder="请选择上级部门"
clearable
style="width: 100%"
/>
@@ -160,13 +160,13 @@
v-model="form.leaderId"
filterable
clearable
placeholder="请选择部门领导(可选)"
placeholder="请选择部门领导"
style="width: 100%"
>
<el-option
v-for="item in userOptions"
:key="item.id"
:label="item.realName || item.nickName || item.username || item.name"
:label="item.nicke || item.realName || item.nickName || item.username || item.name || ''"
:value="item.id"
/>
</el-select>
@@ -206,6 +206,7 @@ import {
departmentdel,
departtree,
} from '@/api/department'
import { userselect } from '@/api/user'
interface DeptItem {
id?: number | string
@@ -227,6 +228,7 @@ interface UserItem {
username?: string
realName?: string
nickName?: string
nicke?: string
name?: string
}
@@ -285,6 +287,18 @@ const formatCell = (_row: any, _column: any, value: any) => {
return value === undefined || value === null || value === '' ? '暂无' : value
}
// 根据leaderId获取用户的nicke字段
const getLeaderNicke = (leaderId: number | string | null | undefined): string => {
if (!leaderId) return '暂无'
const user = userOptions.value.find(u => u.id == leaderId)
return user?.nicke || user?.realName || user?.nickName || user?.username || user?.name || '暂无'
}
// 部门领导列的formatter
const formatLeaderCell = (_row: any, _column: any, _value: any) => {
return getLeaderNicke(_row.leaderId)
}
// 构建树形选择器的选项
const treeOptions = computed(() => {
const buildOptions = (nodes: DeptItem[], excludeId?: number | string): any[] => {
@@ -347,15 +361,14 @@ const handleTreeReset = () => {
// 加载用户列表(用于选择部门领导)
const loadUsers = async () => {
try {
// 这里需要根据实际API调整暂时使用空数组
// 如果有用户列表API可以在这里调用
// const res: any = await userlist({ pageNum: 1, pageSize: 9999 })
// const data = res?.data ?? res ?? {}
// const records = data.records || data.list || data.rows || data.items || []
// userOptions.value = Array.isArray(records) ? records : []
userOptions.value = []
const res: any = await userselect({})
// 兼容多种返回格式res.data 或 res 本身
const data = Array.isArray(res?.data) ? res.data : Array.isArray(res) ? res : []
userOptions.value = data
} catch (error) {
console.error('load user list error', error)
ElMessage.error('加载用户列表失败')
userOptions.value = []
}
}
@@ -363,6 +376,11 @@ const loadUsers = async () => {
const loadList = async () => {
loading.value = true
try {
// 确保用户列表已加载(用于显示部门领导名称)
if (userOptions.value.length === 0) {
await loadUsers()
}
// 构建查询参数,过滤空字符串
const params: any = {
pageNum: pagination.pageNum,
@@ -652,3 +670,4 @@ onMounted(() => {
}
</style>

View File

@@ -6,7 +6,7 @@
<el-form-item label="用户名">
<el-input
v-model="queryForm.userName"
placeholder="输入用户名(模糊查询)"
placeholder="输入用户名"
clearable
style="width: 200px"
/>
@@ -172,7 +172,7 @@
:data="deptTreeOptions"
:props="{ value: 'id', label: 'deptName', children: 'children' }"
check-strictly
placeholder="请选择部门(可选)"
placeholder="请选择部门"
clearable
style="width: 100%"
/>
@@ -182,7 +182,7 @@
v-model="form.posId"
filterable
clearable
placeholder="请选择职位(可选)"
placeholder="请选择职位"
style="width: 100%"
>
<el-option