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), ]) ); }