修复计划任务绑定人员。视图权限

This commit is contained in:
2025-11-28 18:43:27 +08:00
parent ba0aabdac3
commit fc960265f4
6 changed files with 100 additions and 54 deletions

View File

@@ -110,6 +110,17 @@ export const learningTaskApi = {
return response.data;
},
/**
* 更新任务用户(统一的添加/删除人员接口)
* @param taskID 任务ID
* @param userIDs 用户ID列表
* @returns Promise<ResultDomain<TaskUser>>
*/
async updateTaskUser(taskID: string, userIDs: string[]): Promise<ResultDomain<TaskUser>> {
const response = await api.put<TaskUser>(`${this.learningTaskPrefix}/${taskID}/users`, { userIDs });
return response.data;
},
/**
* 获取用户任务进度
* @param userID 用户ID
@@ -123,29 +134,7 @@ export const learningTaskApi = {
return response.data;
},
/**
* 分配任务给用户
* @param taskID 任务ID
* @param userID 用户ID
* @returns Promise<ResultDomain<TaskUser>>
*/
async assignTaskToUser(taskID: string, userID: string): Promise<ResultDomain<TaskUser>> {
const response = await api.post<TaskUser>(`${this.learningTaskPrefix}/${taskID}/assign`, null, {
params: { userID }
});
return response.data;
},
/**
* 从用户移除任务
* @param taskID 任务ID
* @param userID 用户ID
* @returns Promise<ResultDomain<boolean>>
*/
async removeTaskFromUser(taskID: string, userID: string): Promise<ResultDomain<boolean>> {
const response = await api.delete<boolean>(`${this.learningTaskPrefix}/${taskID}/user/${userID}`);
return response.data;
},
/**
* 用户获取个人任务列表(用户视角)

View File

@@ -699,30 +699,35 @@ async function handleUserSelectConfirm(selectedUsers: any[]) {
saving.value = true;
try {
const userIds = selectedUsers.map(u => u.id!);
const selectedUserIds = selectedUsers.map(u => u.id!);
// 计算更新后的用户ID列表
let updatedUserIds: string[];
if (selectorMode.value === 'add') {
// 执行添加操作
for (const userID of userIds) {
await learningTaskApi.assignTaskToUser(managingTask.value.learningTask.taskID!, userID);
}
ElMessage.success(`成功添加 ${userIds.length} 位人员`);
// 添加模式:合并现有用户和新选择的用户
const currentUserIds = currentUsers.value.map(u => u.id!);
updatedUserIds = [...new Set([...currentUserIds, ...selectedUserIds])];
// 更新当前用户列表
currentUsers.value.push(...(selectedUsers as UserVO[]));
ElMessage.success(`成功添加 ${selectedUserIds.length} 位人员`);
} else {
// 执行删除操作
for (const userID of userIds) {
await learningTaskApi.removeTaskFromUser(managingTask.value.learningTask.taskID!, userID);
}
ElMessage.success(`成功删除 ${userIds.length} 位人员`);
// 删除模式:从现有用户中移除选择的用户
updatedUserIds = currentUsers.value
.map(u => u.id!)
.filter(id => !selectedUserIds.includes(id));
// 更新当前用户列表
currentUsers.value = currentUsers.value.filter(user =>
!userIds.includes(user.id!)
!selectedUserIds.includes(user.id!)
);
ElMessage.success(`成功删除 ${selectedUserIds.length} 位人员`);
}
// 调用统一的更新接口
await learningTaskApi.updateTaskUser(managingTask.value.learningTask.taskID!, updatedUserIds);
closeSelectorModal();
loadTaskList();
} catch (error) {