refactor(manage): 收口部门负责人ID规范化逻辑并简化后端对话可见性校验
- 后端:任务群/项目群统一按项目级共享判断,不再区分任务可见性 - 前端:新增 department/owner/ids/save mutation 及 normalizeIntArray 工具函数 - 前端:departmentOwnerReadonlyUrls 从 action 局部变量提升至 state - 前端:修复 TaskDetail 提示文本多余空格 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
8cd4669b90
commit
ef7293704b
@@ -904,19 +904,16 @@ class WebSocketDialog extends AbstractModel
|
||||
case 'project':
|
||||
case 'task':
|
||||
// 项目群、任务群对话校验是否在项目内
|
||||
$taskVisibility = 1; // 项目群不涉及任务可见性,按可见处理
|
||||
if ($dialog->group_type === 'project') {
|
||||
$projectId = intval(Project::whereDialogId($dialog->id)->value('id'));
|
||||
} else {
|
||||
$taskRow = ProjectTask::select(['project_id', 'visibility'])->whereDialogId($dialog->id)->first();
|
||||
$projectId = intval($taskRow?->project_id);
|
||||
$taskVisibility = intval($taskRow?->visibility);
|
||||
$projectId = intval(ProjectTask::whereDialogId($dialog->id)->value('project_id'));
|
||||
}
|
||||
if ($projectId > 0 && ProjectUser::whereProjectId($projectId)->whereUserid($userid)->exists()) {
|
||||
return $dialog;
|
||||
}
|
||||
// 部门负责人只读视角:项目群放行;任务群仅"全员可见"任务放行,指定成员可见任务不放行
|
||||
if ($projectId > 0 && $checkOwner === false && ($dialog->group_type === 'project' || $taskVisibility === 1)) {
|
||||
// 部门负责人只读视角:项目/任务群按项目级共享放行(任务数据另按可见性校验,与普通成员一致)
|
||||
if ($projectId > 0 && $checkOwner === false) {
|
||||
$departmentView = UserDepartment::ownerViewContext(User::auth(), true);
|
||||
if (UserDepartment::isDepartmentReadonlyProject($departmentView, $projectId)) {
|
||||
return $dialog;
|
||||
|
||||
Reference in New Issue
Block a user