diff --git a/backend/src/main/java/com/designhub/service/TaskApprovalService.java b/backend/src/main/java/com/designhub/service/TaskApprovalService.java index 9454e86..fb16559 100644 --- a/backend/src/main/java/com/designhub/service/TaskApprovalService.java +++ b/backend/src/main/java/com/designhub/service/TaskApprovalService.java @@ -720,7 +720,8 @@ public class TaskApprovalService { boolean isAdmin = user != null && Integer.valueOf(1).equals(user.getIsAdmin()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.in(Task::getApprovalStatus, "pending_demand_approval", "pending_receiving_approval"); + // 包括一级需求审核和明细完善状态 + wrapper.in(Task::getApprovalStatus, "pending_primary_approval", "pending_detail_completion", "pending_demand_approval", "pending_receiving_approval"); // 非管理员只能看到分配给自己的待审核任务 if (!isAdmin) { diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index 1ae9f7d..b2617e4 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -819,15 +819,15 @@ public class TaskService { /** * 获取所有待审核任务(处于审批流程中的任务) - * 包括:pending_demand_approval 和 pending_receiving_approval 状态的任务 + * 包括:pending_primary_approval、pending_detail_completion、pending_demand_approval、pending_receiving_approval 状态的任务 * 非管理员只能看到分配给自己的待审核任务 */ public IPage getAllPendingApprovalTasks(Long userId, Integer page, Integer pageSize, Long taskTypeId) { Page pageParam = new Page<>(page, pageSize); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - // 查询处于审批流程中的任务 - wrapper.in(Task::getApprovalStatus, "pending_demand_approval", "pending_receiving_approval"); + // 查询处于审批流程中的任务(包括一级需求审核和明细完善状态) + wrapper.in(Task::getApprovalStatus, "pending_primary_approval", "pending_detail_completion", "pending_demand_approval", "pending_receiving_approval"); // 检查用户是否是管理员 User user = userService.getUserById(userId); @@ -3395,6 +3395,8 @@ public class TaskService { throw new BusinessException(ResultCode.PARAM_ERROR, "需求部门 [" + demandDept.getDeptName() + "] 未配置负责人,请联系管理员"); } + // 设置任务状态为待审核(pending_audit),区别于草稿状态 + task.setStatus("pending_audit"); // 设置审核状态为待一级审核(由需求部门负责人审核) task.setApprovalStatus("pending_primary_approval"); task.setCurrentApproverId(demandDept.getLeaderId()); @@ -3402,6 +3404,29 @@ public class TaskService { log.info("一级需求任务已设置待审核状态,品牌={}, 路由到需求部门={}, 负责人={}", brandId, demandDept.getDeptName(), demandDept.getLeaderId()); + + // 发送通知给需求部门负责人 + try { + User primaryPublisher = userService.getUserById(task.getPrimaryPublisherId()); + Department primaryDept = departmentService.getDepartmentById(task.getPrimaryPublisherDeptId()); + + Notification notification = new Notification(); + notification.setReceiverId(demandDept.getLeaderId()); + notification.setTitle("新的一级需求任务待审核"); + notification.setContent(String.format("[%s-%s] 发起了新的一级需求任务 [%s],请审核并指定完善人", + primaryDept != null ? primaryDept.getDeptName() : "未知部门", + primaryPublisher != null ? primaryPublisher.getRealName() : "未知用户", + task.getTitle())); + notification.setNotificationType("PRIMARY_TASK_APPROVAL"); + notification.setRelatedType("task"); + notification.setRelatedId(task.getId()); + notification.setPriority(2); // 高优先级 + notification.setPushDingtalk(1); // 推送到钉钉 + notificationService.sendNotification(notification); + log.info("已发送一级需求审核通知给需求部门负责人: {}", demandDept.getLeaderId()); + } catch (Exception e) { + log.error("发送一级需求审核通知失败", e); + } } /** diff --git a/frontend/src/views/TaskHall.vue b/frontend/src/views/TaskHall.vue index 44ca8dd..9fa3cea 100644 --- a/frontend/src/views/TaskHall.vue +++ b/frontend/src/views/TaskHall.vue @@ -2722,8 +2722,10 @@ const reviewSortOptions = [ // 待审核任务 - 状态选项 const reviewStatusOptions = [ { value: '', label: '全部待审核' }, + { value: 'pending_primary_approval', label: '待一级审核' }, { value: 'pending_demand_approval', label: '待需求审核' }, - { value: 'pending_receiving_approval', label: '待接单审核' } + { value: 'pending_receiving_approval', label: '待接单审核' }, + { value: 'pending_detail_completion', label: '待完善明细' } ] // 进行中任务 - 排序选项 @@ -3497,6 +3499,8 @@ const loadPendingApprovalTasks = async () => { // 获取审核状态颜色 const getApprovalStatusColor = (status: string) => { const colorMap: Record = { + 'pending_primary_approval': 'purple', + 'pending_detail_completion': 'cyan', 'pending_demand_approval': 'orange', 'pending_receiving_approval': 'blue', 'approved': 'green', @@ -3509,6 +3513,8 @@ const getApprovalStatusColor = (status: string) => { // 获取审核状态文本 const getApprovalStatusText = (status: string) => { const textMap: Record = { + 'pending_primary_approval': '一级需求待审核', + 'pending_detail_completion': '待完善明细', 'pending_demand_approval': '需求部门待审核', 'pending_receiving_approval': '接单部门待审核', 'approved': '已通过', @@ -5608,6 +5614,12 @@ const getTaskStatusText = (status: string, task?: any) => { } // 3. 检查是否正在审核中 + if (task.approvalStatus === 'pending_primary_approval') { + return '待一级审核' + } + if (task.approvalStatus === 'pending_detail_completion') { + return '待完善明细' + } if (task.approvalStatus === 'pending_demand_approval') { return '待部门审核' } @@ -5636,6 +5648,7 @@ const getTaskStatusText = (status: string, task?: any) => { const statusMap: Record = { 'pending': '待接单', + 'pending_audit': '待审核', 'in_progress': '进行中', 'review': '待审核', 'completed': '已完成',