diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php
index 7abf59c96..568258918 100755
--- a/app/Http/Controllers/Api/ProjectController.php
+++ b/app/Http/Controllers/Api/ProjectController.php
@@ -1692,7 +1692,7 @@ class ProjectController extends AbstractController
//
$task = ProjectTask::userTask($file->task_id);
//
- ProjectPermission::userTaskPermission(Project::userProject($task->project_id), ProjectPermission::TASK_UPDATE, $task);
+ ProjectPermission::userTaskPermission(Project::userProject($task->project_id), ProjectPermission::TASK_REMOVE, $task);
//
$task->pushMsg('filedelete', $file);
$file->delete();
@@ -1964,11 +1964,13 @@ class ProjectController extends AbstractController
$task = ProjectTask::userTask($task_id);
//
$project = Project::userProject($task->project_id);
- if (Arr::exists($param, 'flow_item_id')) {
- ProjectPermission::userTaskPermission($project, ProjectPermission::TASK_STATUS, $task);
- }else{
- ProjectPermission::userTaskPermission($project, ProjectPermission::TASK_UPDATE, $task);
+ $permissionKey = ProjectPermission::TASK_UPDATE;
+ if (Arr::exists($param, 'times')) {
+ $permissionKey = ProjectPermission::TASK_TIME;
+ } else if (Arr::exists($param, 'flow_item_id')) {
+ $permissionKey = ProjectPermission::TASK_STATUS;
}
+ ProjectPermission::userTaskPermission($project, $permissionKey, $task);
//
$taskUser = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($task_id)->get();
$owners = $taskUser->where('owner', 1)->pluck('userid')->toArray();
@@ -2625,8 +2627,9 @@ class ProjectController extends AbstractController
ProjectPermission::TASK_LIST_SORT,
ProjectPermission::TASK_ADD,
ProjectPermission::TASK_UPDATE,
- ProjectPermission::TASK_REMOVE,
+ ProjectPermission::TASK_TIME,
ProjectPermission::TASK_STATUS,
+ ProjectPermission::TASK_REMOVE,
ProjectPermission::TASK_ARCHIVED,
ProjectPermission::TASK_MOVE,
]);
diff --git a/app/Models/ProjectPermission.php b/app/Models/ProjectPermission.php
index cbfd06e56..2655dddfe 100644
--- a/app/Models/ProjectPermission.php
+++ b/app/Models/ProjectPermission.php
@@ -10,7 +10,7 @@ use App\Module\Base;
*
* @property int $id
* @property int|null $project_id 项目ID
- * @property string $permissions 权限
+ * @property array|string $permissions 权限
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel cancelAppend()
@@ -38,6 +38,7 @@ class ProjectPermission extends AbstractModel
const TASK_LIST_SORT = 'task_list_sort'; // 列表排序
const TASK_ADD = 'task_add'; // 任务添加
const TASK_UPDATE = 'task_update'; // 任务更新
+ const TASK_TIME = 'task_time'; // 任务时间
const TASK_STATUS = 'task_status'; // 任务状态
const TASK_REMOVE = 'task_remove'; // 任务删除
const TASK_ARCHIVED = 'task_archived'; // 任务归档
@@ -69,7 +70,7 @@ class ProjectPermission extends AbstractModel
/**
* 权限
* @param $value
- * @return string
+ * @return array
*/
public function getPermissionsAttribute($value)
{
@@ -110,7 +111,8 @@ class ProjectPermission extends AbstractModel
self::TASK_LIST_REMOVE => [self::PERMISSIONS['project_leader']],
self::TASK_LIST_SORT => $projectTaskList,
self::TASK_ADD => $projectTaskList,
- self::TASK_UPDATE => [self::PERMISSIONS['project_leader'], self::PERMISSIONS['task_leader'], self::PERMISSIONS['task_assist']],
+ self::TASK_UPDATE => $taskUpdate = [self::PERMISSIONS['project_leader'], self::PERMISSIONS['task_leader'], self::PERMISSIONS['task_assist']],
+ self::TASK_TIME => $taskUpdate,
self::TASK_STATUS => $taskStatus = [self::PERMISSIONS['project_leader'], self::PERMISSIONS['task_leader']],
self::TASK_REMOVE => $taskStatus,
self::TASK_ARCHIVED => $taskStatus,
@@ -153,13 +155,14 @@ class ProjectPermission extends AbstractModel
$userid = User::userid();
$permissions = self::getPermission($project->id, $action);
switch ($action) {
- // 任务添加,任务更新, 任务状态, 任务删除, 任务完成, 任务归档, 任务移动
+ // 任务添加,任务更新, 任务状态, 任务删除, 任务完成, 任务归档, 任务移动
case self::TASK_LIST_ADD:
case self::TASK_LIST_UPDATE:
case self::TASK_LIST_REMOVE:
case self::TASK_LIST_SORT:
case self::TASK_ADD:
case self::TASK_UPDATE:
+ case self::TASK_TIME:
case self::TASK_STATUS:
case self::TASK_REMOVE:
case self::TASK_ARCHIVED:
diff --git a/database/migrations/2024_09_13_055518_update_project_permissions.php b/database/migrations/2024_09_13_055518_update_project_permissions.php
new file mode 100644
index 000000000..12807490f
--- /dev/null
+++ b/database/migrations/2024_09_13_055518_update_project_permissions.php
@@ -0,0 +1,37 @@
+chunk(100, function ($rows) {
+ /** @var ProjectPermission $row */
+ foreach ($rows as $row) {
+ $permissions = $row->permissions;
+ if (!isset($permissions[ProjectPermission::TASK_TIME])) {
+ $permissions[ProjectPermission::TASK_TIME] = $permissions[ProjectPermission::TASK_UPDATE];
+ $row->permissions = \App\Module\Base::array2json($permissions);
+ $row->save();
+ }
+ }
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ //
+ }
+}
diff --git a/resources/assets/js/pages/manage/components/ProjectPermission.vue b/resources/assets/js/pages/manage/components/ProjectPermission.vue
index 723bc4fcd..5d11b455d 100644
--- a/resources/assets/js/pages/manage/components/ProjectPermission.vue
+++ b/resources/assets/js/pages/manage/components/ProjectPermission.vue
@@ -51,6 +51,14 @@
{{ $L('项目成员') }}
+
+
+ {{ $L('项目负责人') }}
+ {{ $L('任务负责人') }}
+ {{ $L('任务协助人') }}
+ {{ $L('项目成员') }}
+
+
{{ $L('项目负责人') }}
@@ -109,6 +117,7 @@ export default {
project_task_list: [],
task_add: [],
task_update: [],
+ task_time: [],
task_status: [],
task_archived: [],
task_remove: [],