From c70868c91d93df61d25cdb7998b8b1026a4578fa Mon Sep 17 00:00:00 2001 From: panliang <1163816051@qq.com> Date: Sun, 21 Apr 2024 10:55:56 +0800 Subject: [PATCH] =?UTF-8?q?admin=20workflow=20=E5=AE=A1=E6=A0=B8=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/System/WorkflowController.php | 9 ++++++++- app/Admin/Services/WorkFlowService.php | 15 +++++---------- app/Http/Controllers/Api/WorkflowController.php | 2 +- app/Traits/HasCheckActions.php | 4 ++-- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/app/Admin/Controllers/System/WorkflowController.php b/app/Admin/Controllers/System/WorkflowController.php index 32b2248..485b275 100644 --- a/app/Admin/Controllers/System/WorkflowController.php +++ b/app/Admin/Controllers/System/WorkflowController.php @@ -4,7 +4,7 @@ namespace App\Admin\Controllers\System; use App\Admin\Controllers\AdminController; use App\Admin\Services\WorkFlowService; -use App\Enums\CheckType; +use App\Enums\{CheckType, CheckStatus}; use App\Models\Employee; use App\Models\Keyword; use App\Models\WorkflowCheck; @@ -231,6 +231,13 @@ class WorkflowController extends AdminController public function logs(Request $request) { $list = WorkflowLog::with(['checkUser'])->where('check_id', $request->input('id'))->sort()->get(); + // 判断当前用户是否有权限审核 + $user = Employee::with(['jobs'])->where('admin_user_id', Admin::user()->id)->first(); + if ($user) { + foreach($list as &$item) { + $item->checkable = $item->check_status == CheckStatus::Processing && $this->service->authCheck($user, $item); + } + } return $this->response()->success($list); } diff --git a/app/Admin/Services/WorkFlowService.php b/app/Admin/Services/WorkFlowService.php index 7d8e19d..56e2f6f 100644 --- a/app/Admin/Services/WorkFlowService.php +++ b/app/Admin/Services/WorkFlowService.php @@ -196,19 +196,14 @@ class WorkFlowService extends BaseService // if ($user->adminUser?->isAdministrator()) { // return true; // } - if ($log->check_type == CheckType::User && $log->check_value == $user->id) { - return true; - } elseif ($log->check_type == CheckType::Job) { - $jobs = $user->jobs; - foreach ($jobs as $job) { - if ($log->check_value == $user->store_id.'-'.$job->key) { - return true; - } + $checkValue = [$user->id]; + if ($user->jobs) { + foreach($user->jobs as $item) { + array_push($checkValue, $user->store_id . '-' . $item->key); } - } - return false; + return in_array($log->check_value, $checkValue); } public function resloveData($data, $model = null) diff --git a/app/Http/Controllers/Api/WorkflowController.php b/app/Http/Controllers/Api/WorkflowController.php index fc1f4aa..5cd5289 100644 --- a/app/Http/Controllers/Api/WorkflowController.php +++ b/app/Http/Controllers/Api/WorkflowController.php @@ -4,7 +4,7 @@ namespace App\Http\Controllers\Api; use Illuminate\Http\{Request, Response}; use Illuminate\Database\Eloquent\Relations\Relation; -use App\Http\Resources\{ReimbursementResource, WorkflowLogResource, EmployeeSignRepairResource, HolidayApplyResource, OvertimeApplyResource, AgreementResource, EmployeePromotionResource}; +use App\Http\Resources\{ReimbursementResource, WorkflowLogResource, OfficalBusinessResource, EmployeeSignRepairResource, HolidayApplyResource, OvertimeApplyResource, AgreementResource, EmployeePromotionResource}; use App\Enums\CheckStatus; use App\Models\{WorkflowLog, WorkflowCheck}; use Illuminate\Support\Facades\DB; diff --git a/app/Traits/HasCheckActions.php b/app/Traits/HasCheckActions.php index 06aed1a..c54ad06 100644 --- a/app/Traits/HasCheckActions.php +++ b/app/Traits/HasCheckActions.php @@ -74,8 +74,8 @@ trait HasCheckActions amis()->TableColumn()->name('checked_at')->label(__('workflow_log.checked_at')), amis()->TableColumn()->name('remarks')->label(__('workflow_log.remarks')), ])->itemActions([ - $this->succesAction()->reload($reload), - $this->failAction()->reload($reload), + $this->succesAction()->visibleOn('${checkable}')->reload($reload), + $this->failAction()->visibleOn('${checkable}')->reload($reload), ]) ); }