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