baseCRUD() ->tableLayout('fixed') ->headerToolbar([ $this->createTypeButton('drawer', 'xl')->visible(Admin::user()->can('admin.hr.repairs.create')), ...$this->baseHeaderToolBar(), ]) ->bulkActions([]) ->filter($this->baseFilter()->body([ amis()->GroupControl()->mode('horizontal')->body([ amisMake()->SelectControl()->name('store_id')->label(__('employee_sign_repair.store_id')) ->source(admin_url('api/stores?_all=1')) ->labelField('title') ->valueField('id') ->searchable() ->columnRatio(3) ->clearable(), amisMake()->TextControl()->name('employee_name')->label(__('employee_sign_repair.employee_id')) ->placeholder(__('employee.name').'/'.__('employee.phone')) ->columnRatio(3) ->clearable(), ]), ])) ->columns([ amisMake()->Column()->name('id')->label(__('employee_sign_repair.id')), amisMake()->Column()->name('store.title')->label(__('employee_sign_repair.store_id')), amisMake()->Column()->name('employee.name')->label(__('employee_sign_repair.employee_id')), amisMake()->Column()->name('date')->label(__('employee_sign_repair.date')), amisMake()->Column()->name('repair_type')->label(__('employee_sign_repair.repair_type')) ->set('type', 'mapping') ->map(SignTime::options()), amisMake()->Column()->name('check_status')->label(__('employee_sign_repair.check_status')) ->set('type', 'mapping') ->map(CheckStatus::options()), $this->rowActions([ $this->rowShowButton()->visible(Admin::user()->can('admin.hr.repairs.view')), $this->rowEditTypeButton('drawer', 'xl')->visible(Admin::user()->can('admin.hr.repairs.update')), $this->rowDeleteButton()->visible(Admin::user()->can('admin.hr.repairs.delete')), amisMake()->AjaxAction() ->label('发起审核') ->level('link') ->api(amisMake()->BaseApi()->url(admin_url('api/workflow/apply'))->method('post')->data([ 'subject_type' => (new EmployeeSignRepair)->getMorphClass(), 'subject_id' => '${id}', 'user' => '${employee_id}' ])) ->confirmText(__('admin.confirm')) ->visibleOn('${OR(check_status == '.CheckStatus::None->value.', check_status == '.CheckStatus::Cancel->value.', check_status == '.CheckStatus::Fail->value.')}'), amisMake()->AjaxAction() ->label('审核通过') ->level('link') ->api(amisMake()->BaseApi()->url(admin_url('api/workflow/cancel'))->method('post')->data([ 'subject_type' => EmployeeSignRepair::class, 'subject_id' => '${id}', ])) ->confirmText(__('admin.confirm')) ->visibleOn('${check_status == '.CheckStatus::Processing->value.'}'), amisMake()->AjaxAction() ->label('审核不通过') ->level('link') ->api(amisMake()->BaseApi()->url(admin_url('api/workflow/cancel'))->method('post')->data([ 'subject_type' => EmployeeSignRepair::class, 'subject_id' => '${id}', ])) ->confirmText(__('admin.confirm')) ->visibleOn('${check_status == '.CheckStatus::Processing->value.'}'), amisMake()->AjaxAction() ->label('取消审核') ->level('link') ->api(amisMake()->BaseApi()->url(admin_url('api/workflow/cancel'))->method('post')->data([ 'subject_type' => EmployeeSignRepair::class, 'subject_id' => '${id}', ])) ->confirmText(__('admin.confirm')) ->visibleOn('${check_status == '.CheckStatus::Processing->value.'}'), ]) ]); return $this->baseList($crud); } public function form($edit): Form { return $this->baseForm()->title('')->body([ amisMake()->SelectControl()->name('employee_id')->label(__('employee_sign.employee_id')) ->source(admin_url('api/employees?_all=1&store_id_gt=0&employee_status='.EmployeeStatus::Online->value)) ->labelField('name') ->valueField('id') ->searchable() ->joinValues(false) ->extractValue() ->required(), amisMake()->DateControl()->format('YYYY-MM-DD HH:mm:ss')->name('date')->label(__('employee_sign_repair.date'))->required(), amisMake()->SelectControl()->options(SignTime::options())->name('repair_type')->label(__('employee_sign_repair.repair_type'))->required(), amisMake()->TextControl()->name('reason')->label(__('employee_sign_repair.reason'))->required(), ]); } public function detail(): Form { $detail = amisMake()->Property()->items([ ]); return $this->baseDetail()->title('')->body($detail); } }