store-manage/app/Traits/HasCheckActions.php

90 lines
3.6 KiB
PHP

<?php
namespace App\Traits;
use App\Enums\CheckStatus;
use Slowlyo\OwlAdmin\Renderers\Service;
trait HasCheckActions
{
public function applyAction()
{
return amisMake()
->AjaxAction()
->label('发起审核')
->level('link')
->api(amisMake()->BaseApi()->url(admin_url('api/workflow/apply'))->method('post')->data([
'id' => '${workflow.id}',
'user' => '${employee_id}',
]))
->confirmText(__('admin.confirm'))
->visibleOn('${OR(workflow.check_status == '.CheckStatus::None->value.', workflow.check_status == '.CheckStatus::Cancel->value.', workflow.check_status == '.CheckStatus::Fail->value.')}');
}
public function cancelAction()
{
return amisMake()
->AjaxAction()
->label('取消审核')
->level('link')
->api(amisMake()->BaseApi()->url(admin_url('api/workflow/cancel'))->method('post')->data([
'id' => '${workflow.id}',
]))
->confirmText(__('admin.confirm'))
->visibleOn('${workflow.check_status == '.CheckStatus::Processing->value.'}');
}
public function succesAction()
{
return amisMake()
->AjaxAction()
->label('审核通过')
->level('link')
->api('post:'.admin_url('api/workflow/success?id=${id}'))
->confirmText(__('admin.confirm'))
->visibleOn('${check_status == '.CheckStatus::Processing->value.'}');
}
public function failAction()
{
return amisMake()
->DialogAction()
->label('审核不通过')
->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()->TextControl()->name('remarks')->label(__('workflow_log.remarks'))->required(),
])
))
->visibleOn('${check_status == '.CheckStatus::Processing->value.'}');
}
/**
* 审批流水
*/
public function baseWorkflowLogList($reloadAfterCheckSuccess = null, $reloadAfterCheckFailed = null): Service
{
if (func_num_args() === 1 && ! is_null($reloadAfterCheckSuccess)) {
$reloadAfterCheckFailed = $reloadAfterCheckSuccess;
}
return amis()->Service()
->initFetch(false)
->api(admin_url('api/workflow/logs?id=${workflow.id}'))
->body(
amis()->Table()->columnsTogglable(false)->columns([
amis()->TableColumn()->name('batch_id')->label(__('workflow_log.batch_id')),
amis()->TableColumn()->name('check_name')->label(__('workflow_log.check_name')),
amis()->TableColumn()->name('check_user.name')->label(__('workflow_log.check_user_id')),
amis()->TableColumn()->name('check_status')->label(__('workflow_log.check_status'))->set('type', 'mapping')->map(CheckStatus::options()),
amis()->TableColumn()->name('checked_at')->label(__('workflow_log.checked_at')),
amis()->TableColumn()->name('remarks')->label(__('workflow_log.remarks')),
])->itemActions([
$this->succesAction()->visibleOn('${checkable}')->reload($reloadAfterCheckSuccess),
$this->failAction()->visibleOn('${checkable}')->reload($reloadAfterCheckFailed),
])
);
}
}