diff --git a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMeetingController.java b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMeetingController.java index e7fbba2..cf58014 100644 --- a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMeetingController.java +++ b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMeetingController.java @@ -351,8 +351,8 @@ public class BizMeetingController extends BaseController { /** * 执行人员提交材料 (分轨: 劳务 LABOR / 会务 SERVICE 可多选, 每轨独立提交). * @@ -366,11 +366,15 @@ public class BizMeetingController extends BaseController { if (m == null) throw new ServiceException("会议不存在"); Long userId = SecurityUtils.getUserId(); - if (!bizProjectService.isExecutorOfProject(m.getProjectId(), userId)) { + String roleType = SecurityUtils.getLoginUser().getUser().getRoleType(); + // 合规员(manager) 自建会议可自传自审: 跳过"必须是项目执行方"的强校验 + if (!"manager".equals(roleType) && !bizProjectService.isExecutorOfProject(m.getProjectId(), userId)) { throw new ServiceException("您不是该项目的执行方, 无法提交材料"); } - if (!isExecuted(m)) throw new ServiceException("会议尚未执行, 不能提交材料"); - if (isFrozen(m)) throw new ServiceException("会议已冻结, 不能提交材料"); + // 合规员(manager) 自建会议自传自审: 不依赖 scheduler 翻 is_executed, 跳过"已执行"时间门槛 + if (!"manager".equals(roleType) && !isExecuted(m)) throw new ServiceException("会议尚未执行, 不能提交材料"); + // 合规员(manager) 自建会议自传自审: 同样跳过"已冻结"门槛 (冻结=提交截止已过, 但自审流程不应对合规员本人设卡) + if (!"manager".equals(roleType) && isFrozen(m)) throw new ServiceException("会议已冻结, 不能提交材料"); List types = body == null ? null : body.getTypes(); if (types == null || types.isEmpty()) throw new ServiceException("请选择要提交的材料类型"); diff --git a/ry-vue3/src/views/meetings/MeetingDetail.vue b/ry-vue3/src/views/meetings/MeetingDetail.vue index 2be43fc..0c0640f 100644 --- a/ry-vue3/src/views/meetings/MeetingDetail.vue +++ b/ry-vue3/src/views/meetings/MeetingDetail.vue @@ -63,8 +63,9 @@
材料管理
- +
+
劳务明细表
+ 新增参会人 批量导入 @@ -195,7 +196,10 @@