From 193810628a517849acbfe36f8956b1ab5f5c29be Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 3 Jan 2026 11:48:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=B8=89=E4=B8=AA?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题1:接单部门负责人审核缺少指派选项 - 已在之前修复handleApproveTask函数,接单部门负责人审核时会调用handleApproveTwoLevelTask - 提供完整的审核选项(指派设计师/发布到大厅) 问题2:被驳回任务状态显示和编辑功能 - 修复状态显示:rejected显示"已驳回"(之前显示"已取消") - 添加"重新编辑提交"按钮到被驳回的任务卡片 - 点击跳转到任务创建页面进行编辑 - 用户可以修改任务信息后重新提交审核 问题3:钉钉群通知调试改进 - 添加更详细的日志记录 - 在发送前后都记录日志 - 记录sendRobotMessage的返回值 - 方便排查通知发送失败的问题 改进内容: 1. 任务状态映射优化 - rejected -> "已驳回" - cancelled -> "已取消" - 不再混淆这两种状态 2. 被驳回任务编辑流程 - 任务卡片显示"重新编辑提交"按钮 - 跳转到创建页面(带editId和mode参数) - 保留原有任务信息,允许修改后重新提交 3. 钉钉通知日志增强 - "准备发送钉钉群通知" - "准备调用钉钉机器人发送消息" - "钉钉群通知发送成功/失败" - 详细的异常堆栈信息 --- .../service/TaskApprovalService.java | 12 ++++++-- frontend/src/views/TaskHall.vue | 30 ++++++++++++++++++- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/com/designhub/service/TaskApprovalService.java b/backend/src/main/java/com/designhub/service/TaskApprovalService.java index 6edc43c..9fe1e89 100644 --- a/backend/src/main/java/com/designhub/service/TaskApprovalService.java +++ b/backend/src/main/java/com/designhub/service/TaskApprovalService.java @@ -261,6 +261,7 @@ public class TaskApprovalService { if (assignedReceiverId != null) { log.info("任务【{}】已指定给设计师", task.getTitle()); } else { + log.info("任务【{}】已发布到任务大厅,准备发送钉钉群通知", task.getTitle()); // 任务发布到大厅,发送钉钉群机器人通知 try { String title = "🎯 新任务发布"; @@ -283,10 +284,15 @@ public class TaskApprovalService { content.append("---\n\n"); content.append("💡 赶快去任务大厅抢单吧!"); - dingTalkService.sendRobotMessage(title, content.toString()); - log.info("任务【{}】已发布到任务大厅,已发送钉钉群通知", task.getTitle()); + log.info("准备调用钉钉机器人发送消息,title={}", title); + boolean success = dingTalkService.sendRobotMessage(title, content.toString()); + if (success) { + log.info("任务【{}】钉钉群通知发送成功", task.getTitle()); + } else { + log.warn("任务【{}】钉钉群通知发送失败(返回false)", task.getTitle()); + } } catch (Exception e) { - log.error("发送钉钉群通知失败:taskId={}", taskId, e); + log.error("发送钉钉群通知异常:taskId={}, error={}", taskId, e.getMessage(), e); // 通知发送失败不影响主流程 } } diff --git a/frontend/src/views/TaskHall.vue b/frontend/src/views/TaskHall.vue index 224abab..b5da372 100644 --- a/frontend/src/views/TaskHall.vue +++ b/frontend/src/views/TaskHall.vue @@ -1567,6 +1567,18 @@ 截止: {{ formatDate(task.deadline) }} + + +
+ + + 重新编辑提交 + +
@@ -2200,7 +2212,11 @@ const getProcessStage = (task: TaskOrSubTask): string => { return '已完成' } - if (task.status === 'rejected' || task.status === 'cancelled') { + if (task.status === 'rejected') { + return '已驳回' + } + + if (task.status === 'cancelled') { return '已取消' } @@ -3270,6 +3286,18 @@ const handleUpdateProgress = (task: TaskOrSubTask) => { } // 完结任务(支持普通任务和子任务) +// 编辑被驳回的任务 +const handleEditRejectedTask = (task: Task) => { + // 跳转到创建任务页面,并传入任务ID作为编辑标识 + router.push({ + path: '/tasks/create', + query: { + editId: task.id, + mode: 'edit' + } + }) +} + const handleCompleteTask = (task: TaskOrSubTask) => { let deliveryPath = '' const isSubTask = task.isSubTask