增加审批操作

main
Jing Li 2024-04-04 14:40:05 +08:00
parent 39b48d1c85
commit 49a0ac6989
4 changed files with 67 additions and 10 deletions

View File

@ -62,8 +62,7 @@ class StoreMasterCommissionController extends AdminController
->method('post')
->data(['id' => '${workflow.id}'])
),
$this->succesAction(),
$this->failAction(),
$this->approveAction(),
$this->cancelAction(),
$this->rowEditTypeButton('drawer', 'lg')
->visible(Admin::user()->can('admin.finance.store_master_commissions.update'))

View File

@ -5,14 +5,16 @@ namespace App\Admin\Controllers\System;
use App\Admin\Controllers\AdminController;
use App\Admin\Services\WorkFlowService;
use App\Enums\CheckType;
use App\Models\{Employee, WorkflowLog, WorkflowCheck};
use App\Models\Keyword;
use App\Models\{Employee, WorkflowLog, WorkflowCheck};
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
use Slowlyo\OwlAdmin\Admin;
use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page;
use Illuminate\Http\Request;
use Slowlyo\OwlAdmin\Admin;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Eloquent\Relations\Relation;
/**
* 审核流程管理
@ -121,6 +123,34 @@ class WorkflowController extends AdminController
}
}
/**
* 审批
*/
public function approve(Request $request)
{
$validator = Validator::make(
data: $request->input(),
rules: [
'approval_results' => ['bail', 'required', Rule::in([1, 2])],
'remarks' => ['bail', 'required_if:approval_results,2', 'string'],
],
attributes: [
'approval_results' => '审核结果',
'remarks' => '拒绝原因',
],
);
if ($validator->fails()) {
admin_abort($validator->errors()->first());
}
if ($request->input('approval_results') == 1) {
return $this->success($request);
}
return $this->fail($request);
}
public function cancel(Request $request)
{
$model = WorkflowCheck::findOrFail($request->input('id'));

View File

@ -193,6 +193,7 @@ Route::group([
$router->get('keywords/tree-list', [KeywordController::class, 'getTreeList'])->name('api.keywords.tree-list');
$router->post('workflow/apply', [WorkflowController::class, 'apply']);
$router->post('workflow/approve', [WorkflowController::class, 'approve']);
$router->post('workflow/cancel', [WorkflowController::class, 'cancel']);
$router->post('workflow/success', [WorkflowController::class, 'success']);
$router->post('workflow/fail', [WorkflowController::class, 'fail']);

View File

@ -2,7 +2,8 @@
namespace App\Traits;
use App\Enums\{CheckStatus};
use App\Enums\CheckStatus;
use Slowlyo\OwlAdmin\Renderers\DrawerAction;
trait HasCheckActions
{
@ -20,6 +21,32 @@ trait HasCheckActions
->visibleOn('${OR(workflow.check_status == '.CheckStatus::None->value.', workflow.check_status == '.CheckStatus::Cancel->value.', workflow.check_status == '.CheckStatus::Fail->value.')}');
}
/**
* 审批操作
*/
public function approveAction(): DrawerAction
{
return amis()->DrawerAction()->icon('fa fa-check-square')->label('审核')->level('link')->drawer(
amis()->Drawer()->title('审核')->body([
amis()->Form()->title('')
->api('post:'.admin_url('api/workflow/approve'))
->body([
amis()->HiddenControl()->name('id')->value('${workflow.id}'),
amis()->RadiosControl('approval_results', '审核结果')
->options([
['label' => '通过', 'value' => 1],
['label' => '拒绝', 'value' => 2],
])
->selectFirst()
->required(),
amis()->TextareaControl('remarks', '拒绝原因')
->visibleOn('${approval_results == 2}')
->required()
->minRows(15),
]),
])->size('lg')
)->visibleOn('${workflow.check_status == '.CheckStatus::Processing->value.'}');
}
public function cancelAction()
{
@ -40,7 +67,7 @@ trait HasCheckActions
->AjaxAction()
->label('审核通过')
->level('link')
->api('post:' . admin_url('api/workflow/success?id=${id}'))
->api('post:' . admin_url('api/workflow/success?id=${workflow.id}'))
->confirmText(__('admin.confirm'))
->visibleOn('${workflow.check_status == '.CheckStatus::Processing->value.'}');
}
@ -53,7 +80,7 @@ trait HasCheckActions
->level('link')
->dialog(amisMake()->Dialog()->title('审核不通过')->body(
amisMake()->Form()->title('')->api('post:'.admin_url('api/workflow/fail'))->body([
amisMake()->HiddenControl()->name('id')->value('${id}'),
amisMake()->HiddenControl()->name('id')->value('${workflow.id}'),
amisMake()->TextControl()->name('remarks')->label(__('workflow_log.remarks'))->required(),
])
))