diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index 116d2cc..02583d0 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -518,13 +518,21 @@ public class TaskService { firstTaskTypeId = itemDto.getTaskTypeId(); } - // 添加任务类型明细 + // 添加任务类型明细(包含预先指定的设计师信息) java.util.Map detail = new java.util.LinkedHashMap<>(); detail.put("typeId", itemDto.getTaskTypeId()); detail.put("typeName", demandType.getName()); detail.put("quantity", itemDto.getQuantity()); detail.put("unitScore", demandType.getUnitScore()); detail.put("totalScore", itemScore); + // 如果指定了设计师,也保存到明细中 + if (itemDto.getReceiverId() != null) { + detail.put("receiverId", itemDto.getReceiverId()); + User receiver = userService.getUserById(itemDto.getReceiverId()); + if (receiver != null) { + detail.put("receiverName", receiver.getRealName()); + } + } typeDetailsList.add(detail); } @@ -1532,12 +1540,21 @@ public class TaskService { firstTaskTypeId = itemDto.getTaskTypeId(); } + // 添加任务类型明细(包含预先指定的设计师信息) java.util.Map detail = new java.util.LinkedHashMap<>(); detail.put("typeId", itemDto.getTaskTypeId()); detail.put("typeName", demandType.getName()); detail.put("quantity", itemDto.getQuantity()); detail.put("unitScore", demandType.getUnitScore()); detail.put("totalScore", itemScore); + // 如果指定了设计师,也保存到明细中 + if (itemDto.getReceiverId() != null) { + detail.put("receiverId", itemDto.getReceiverId()); + User receiver = userService.getUserById(itemDto.getReceiverId()); + if (receiver != null) { + detail.put("receiverName", receiver.getRealName()); + } + } typeDetailsList.add(detail); } diff --git a/frontend/src/views/TaskHall.vue b/frontend/src/views/TaskHall.vue index 3e08a7f..2c24b99 100644 --- a/frontend/src/views/TaskHall.vue +++ b/frontend/src/views/TaskHall.vue @@ -2030,7 +2030,19 @@ 已预先指定设计师接单 -
+ +
+
+
+ {{ item.typeName }} + 数量: {{ item.quantity }} +
+ {{ item.designerName }} +
+
+ +
指定设计师: {{ preAssignedDesignerName }}
@@ -2475,6 +2487,8 @@ interface TaskTypeDetail { quantity: number unitScore: number totalScore: number + receiverId?: number // 预先指定的设计师ID + receiverName?: string // 预先指定的设计师姓名 } interface TaskOrSubTask extends Task { @@ -3535,11 +3549,15 @@ const approveDesignerId = ref(undefined) const designersList = ref([]) const newTaskTypePath = ref<(string | number)[] | undefined>(undefined) const preAssignedDesignerName = ref('') // 预先指定的设计师姓名 +const preAssignedDesignersList = ref>([]) // 多个预先指定的设计师列表 // 判断任务是否已预先指定设计师 const isTaskPreAssigned = computed(() => { if (!approveTaskData.value) return false const task = approveTaskData.value as any + // 检查是否有预先指定的设计师列表(多个子任务情况) + if (preAssignedDesignersList.value.length > 0) return true + // 兼容旧逻辑:检查主任务的 receiverId return task.releaseType === 'assigned' && task.receiverId != null }) @@ -3621,7 +3639,29 @@ const showAssignDesignerModal = async (task: Task) => { // 检查任务是否已预先指定设计师 const taskAny = task as any - if (taskAny.releaseType === 'assigned' && taskAny.receiverId) { + preAssignedDesignersList.value = [] // 重置列表 + + // 检查 typeDetails 中是否有预先指定的设计师(同部门多设计师情况) + if (typeDetailsArray.length > 0) { + const designersInDetails: Array<{typeName: string, designerName: string, quantity: number}> = [] + for (const detail of typeDetailsArray) { + if (detail.receiverId && detail.receiverName) { + designersInDetails.push({ + typeName: detail.typeName || getTaskTypeName(detail.typeId), + designerName: detail.receiverName, + quantity: detail.quantity || 1 + }) + } + } + if (designersInDetails.length > 0) { + preAssignedDesignersList.value = designersInDetails + approveAssignType.value = 'manual' + console.log('任务类型明细中预先指定的设计师:', designersInDetails) + } + } + + // 兼容旧逻辑:检查主任务的 receiverId + if (taskAny.releaseType === 'assigned' && taskAny.receiverId && preAssignedDesignersList.value.length === 0) { // 已预先指定设计师,设置相关状态 approveAssignType.value = 'manual' approveDesignerId.value = taskAny.receiverId @@ -3629,10 +3669,10 @@ const showAssignDesignerModal = async (task: Task) => { const preAssigned = designers.find(d => d.id === taskAny.receiverId) preAssignedDesignerName.value = preAssigned?.realName || taskAny.receiverName || '未知' console.log('任务已预先指定设计师:', preAssignedDesignerName.value) - } else { + } else if (preAssignedDesignersList.value.length === 0) { // 未预先指定,重置状态 - approveAssignType.value = 'auto' - approveDesignerId.value = undefined + approveAssignType.value = 'auto' + approveDesignerId.value = undefined preAssignedDesignerName.value = '' }