perf: 新增修改任务时间权限

This commit is contained in:
kuaifan 2024-09-13 06:41:20 +03:00
parent 050c9702d8
commit a967493d77
4 changed files with 62 additions and 10 deletions

View File

@ -1692,7 +1692,7 @@ class ProjectController extends AbstractController
// //
$task = ProjectTask::userTask($file->task_id); $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); $task->pushMsg('filedelete', $file);
$file->delete(); $file->delete();
@ -1964,11 +1964,13 @@ class ProjectController extends AbstractController
$task = ProjectTask::userTask($task_id); $task = ProjectTask::userTask($task_id);
// //
$project = Project::userProject($task->project_id); $project = Project::userProject($task->project_id);
if (Arr::exists($param, 'flow_item_id')) { $permissionKey = ProjectPermission::TASK_UPDATE;
ProjectPermission::userTaskPermission($project, ProjectPermission::TASK_STATUS, $task); if (Arr::exists($param, 'times')) {
}else{ $permissionKey = ProjectPermission::TASK_TIME;
ProjectPermission::userTaskPermission($project, ProjectPermission::TASK_UPDATE, $task); } 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(); $taskUser = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($task_id)->get();
$owners = $taskUser->where('owner', 1)->pluck('userid')->toArray(); $owners = $taskUser->where('owner', 1)->pluck('userid')->toArray();
@ -2625,8 +2627,9 @@ class ProjectController extends AbstractController
ProjectPermission::TASK_LIST_SORT, ProjectPermission::TASK_LIST_SORT,
ProjectPermission::TASK_ADD, ProjectPermission::TASK_ADD,
ProjectPermission::TASK_UPDATE, ProjectPermission::TASK_UPDATE,
ProjectPermission::TASK_REMOVE, ProjectPermission::TASK_TIME,
ProjectPermission::TASK_STATUS, ProjectPermission::TASK_STATUS,
ProjectPermission::TASK_REMOVE,
ProjectPermission::TASK_ARCHIVED, ProjectPermission::TASK_ARCHIVED,
ProjectPermission::TASK_MOVE, ProjectPermission::TASK_MOVE,
]); ]);

View File

@ -10,7 +10,7 @@ use App\Module\Base;
* *
* @property int $id * @property int $id
* @property int|null $project_id 项目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 $created_at
* @property \Illuminate\Support\Carbon|null $updated_at * @property \Illuminate\Support\Carbon|null $updated_at
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel cancelAppend() * @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_LIST_SORT = 'task_list_sort'; // 列表排序
const TASK_ADD = 'task_add'; // 任务添加 const TASK_ADD = 'task_add'; // 任务添加
const TASK_UPDATE = 'task_update'; // 任务更新 const TASK_UPDATE = 'task_update'; // 任务更新
const TASK_TIME = 'task_time'; // 任务时间
const TASK_STATUS = 'task_status'; // 任务状态 const TASK_STATUS = 'task_status'; // 任务状态
const TASK_REMOVE = 'task_remove'; // 任务删除 const TASK_REMOVE = 'task_remove'; // 任务删除
const TASK_ARCHIVED = 'task_archived'; // 任务归档 const TASK_ARCHIVED = 'task_archived'; // 任务归档
@ -69,7 +70,7 @@ class ProjectPermission extends AbstractModel
/** /**
* 权限 * 权限
* @param $value * @param $value
* @return string * @return array
*/ */
public function getPermissionsAttribute($value) public function getPermissionsAttribute($value)
{ {
@ -110,7 +111,8 @@ class ProjectPermission extends AbstractModel
self::TASK_LIST_REMOVE => [self::PERMISSIONS['project_leader']], self::TASK_LIST_REMOVE => [self::PERMISSIONS['project_leader']],
self::TASK_LIST_SORT => $projectTaskList, self::TASK_LIST_SORT => $projectTaskList,
self::TASK_ADD => $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_STATUS => $taskStatus = [self::PERMISSIONS['project_leader'], self::PERMISSIONS['task_leader']],
self::TASK_REMOVE => $taskStatus, self::TASK_REMOVE => $taskStatus,
self::TASK_ARCHIVED => $taskStatus, self::TASK_ARCHIVED => $taskStatus,
@ -160,6 +162,7 @@ class ProjectPermission extends AbstractModel
case self::TASK_LIST_SORT: case self::TASK_LIST_SORT:
case self::TASK_ADD: case self::TASK_ADD:
case self::TASK_UPDATE: case self::TASK_UPDATE:
case self::TASK_TIME:
case self::TASK_STATUS: case self::TASK_STATUS:
case self::TASK_REMOVE: case self::TASK_REMOVE:
case self::TASK_ARCHIVED: case self::TASK_ARCHIVED:

View File

@ -0,0 +1,37 @@
<?php
use App\Models\ProjectPermission;
use Illuminate\Database\Migrations\Migration;
class UpdateProjectPermissions extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
ProjectPermission::orderBy('id')->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()
{
//
}
}

View File

@ -51,6 +51,14 @@
<Checkbox :label="2">{{ $L('项目成员') }}</Checkbox> <Checkbox :label="2">{{ $L('项目成员') }}</Checkbox>
</CheckboxGroup> </CheckboxGroup>
</FormItem> </FormItem>
<FormItem :label="$L('修改时间')">
<CheckboxGroup v-model="formData.task_time">
<Checkbox :label="1" disabled>{{ $L('项目负责人') }}</Checkbox>
<Checkbox :label="3">{{ $L('任务负责人') }}</Checkbox>
<Checkbox :label="4">{{ $L('任务协助人') }}</Checkbox>
<Checkbox :label="2">{{ $L('项目成员') }}</Checkbox>
</CheckboxGroup>
</FormItem>
<FormItem :label="$L('修改状态')"> <FormItem :label="$L('修改状态')">
<CheckboxGroup v-model="formData.task_status"> <CheckboxGroup v-model="formData.task_status">
<Checkbox :label="1" disabled>{{ $L('项目负责人') }}</Checkbox> <Checkbox :label="1" disabled>{{ $L('项目负责人') }}</Checkbox>
@ -109,6 +117,7 @@ export default {
project_task_list: [], project_task_list: [],
task_add: [], task_add: [],
task_update: [], task_update: [],
task_time: [],
task_status: [], task_status: [],
task_archived: [], task_archived: [],
task_remove: [], task_remove: [],