5
5
<ContentWrap class =" h-1/1" >
6
6
<el-tree
7
7
ref =" treeRef"
8
- :data =" deptList "
8
+ :data =" deptTree "
9
9
:expand-on-click-node =" false"
10
10
:props =" defaultProps"
11
11
default-expand-all
39
39
</Dialog >
40
40
</template >
41
41
<script lang="ts" setup>
42
- import { defaultProps , handleTree } from ' @/utils/tree'
42
+ import { defaultProps , findTreeNode , handleTree } from ' @/utils/tree'
43
43
import * as DeptApi from ' @/api/system/dept'
44
44
import * as UserApi from ' @/api/system/user'
45
45
@@ -49,27 +49,27 @@ const emit = defineEmits<{
49
49
}>()
50
50
const { t } = useI18n () // 国际
51
51
const message = useMessage () // 消息弹窗
52
- const deptList = ref <Tree []>([]) // 部门树形结构化
53
- const allUserList = ref <UserApi .UserVO []>([]) // 所有用户列表
52
+ const deptTree = ref <Tree []>([]) // 部门树形结构化
53
+ const userList = ref <UserApi .UserVO []>([]) // 所有用户列表
54
54
const filteredUserList = ref <UserApi .UserVO []>([]) // 当前部门过滤后的用户列表
55
55
const selectedUserIdList: any = ref ([]) // 选中的用户列表
56
56
const dialogVisible = ref (false ) // 弹窗的是否展示
57
57
const formLoading = ref (false ) // 表单的加载中
58
58
const activityId = ref ()
59
59
60
- // 计算属性:合并已选择的用户和当前部门过滤后的用户
60
+ /** 计算属性:合并已选择的用户和当前部门过滤后的用户 */
61
61
const transferUserList = computed (() => {
62
- // 获取所有已选择的用户
63
- const selectedUsers = allUserList .value .filter ((user : any ) =>
62
+ // 1.1 获取所有已选择的用户
63
+ const selectedUsers = userList .value .filter ((user : any ) =>
64
64
selectedUserIdList .value .includes (user .id )
65
65
)
66
66
67
- // 获取当前部门过滤后的未选择用户
67
+ // 1.2 获取当前部门过滤后的未选择用户
68
68
const filteredUnselectedUsers = filteredUserList .value .filter (
69
69
(user : any ) => ! selectedUserIdList .value .includes (user .id )
70
70
)
71
71
72
- // 合并并去重
72
+ // 2. 合并并去重
73
73
return [... selectedUsers , ... filteredUnselectedUsers ]
74
74
})
75
75
@@ -78,30 +78,23 @@ const open = async (id: number, selectedList?: any[]) => {
78
78
activityId .value = id
79
79
resetForm ()
80
80
81
- deptList .value = handleTree (await DeptApi .getSimpleDeptList ())
82
- // 初始加载所有用户
83
- await getAllUserList ()
81
+ // 加载部门、用户列表
82
+ deptTree .value = handleTree (await DeptApi .getSimpleDeptList ())
83
+ userList .value = await UserApi .getSimpleUserList ()
84
+
84
85
// 初始状态下,过滤列表等于所有用户列表
85
- filteredUserList .value = [... allUserList .value ]
86
+ filteredUserList .value = [... userList .value ]
86
87
selectedUserIdList .value = selectedList ?.map ((item : any ) => item .id ) || []
87
88
dialogVisible .value = true
88
89
}
89
- /** 获取所有用户列表 */
90
- const getAllUserList = async () => {
91
- try {
92
- // @ts-ignore
93
- const data = await UserApi .getSimpleUserList ()
94
- allUserList .value = data
95
- } finally {
96
- }
97
- }
98
90
99
91
/** 获取部门过滤后的用户列表 */
100
92
const getUserList = async (deptId ? : number ) => {
101
93
formLoading .value = true
102
94
try {
103
95
// @ts-ignore
104
96
// TODO @芋艿:替换到 simple List 暂不支持 deptId 过滤
97
+ // TODO @Zqqq:这个,可以使用前端过滤么?通过 deptList 获取到 deptId 子节点,然后去 userList
105
98
const data = await UserApi .getUserPage ({ pageSize: 100 , pageNo: 1 , deptId })
106
99
// 更新过滤后的用户列表
107
100
filteredUserList .value = data .list
@@ -116,7 +109,7 @@ const submitForm = async () => {
116
109
message .success (t (' common.updateSuccess' ))
117
110
dialogVisible .value = false
118
111
// 从所有用户列表中筛选出已选择的用户
119
- const emitUserList = allUserList .value .filter ((user : any ) =>
112
+ const emitUserList = userList .value .filter ((user : any ) =>
120
113
selectedUserIdList .value .includes (user .id )
121
114
)
122
115
// 发送操作成功的事件
@@ -127,8 +120,8 @@ const submitForm = async () => {
127
120
128
121
/** 重置表单 */
129
122
const resetForm = () => {
130
- deptList .value = []
131
- allUserList .value = []
123
+ deptTree .value = []
124
+ userList .value = []
132
125
filteredUserList .value = []
133
126
selectedUserIdList .value = []
134
127
}
0 commit comments