From ed314051d7b79c2ffc8d041ebabb22c009263a27 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 14 Jan 2026 18:46:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=8C=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E5=A4=9A=E8=AE=BE=E8=AE=A1=E5=B8=88=E5=AE=A1=E6=A0=B8=E6=97=B6?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 后端:在typeDetails中保存receiverId和receiverName 2. 前端:审核弹窗支持显示多个预先指定的设计师列表 3. 前端:扩展TaskTypeDetail接口支持receiverId和receiverName --- .../com/designhub/service/TaskService.java | 19 ++++++- frontend/src/views/TaskHall.vue | 50 +++++++++++++++++-- 2 files changed, 63 insertions(+), 6 deletions(-) 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 = '' }