all(), rules: [ 'approval_result' => ['bail', 'required', Rule::in([1, 2])], 'failed_reason' => ['bail', 'required_if:approval_result,2'], ], attributes: [ 'approval_result' => __('finance.store_master_commission.approval_result'), 'failed_reason' => __('finance.store_master_commission.failed_reason'), ], ); if ($validator->fails()) { return $this->response()->fail($validator->errors()->first()); } $masterCommission = StoreMasterCommission::findOrFail($id); if ($masterCommission->approval_status !== StoreMasterCommissionApprovalStatus::Pending) { return $this->response()->fail('店长提成不是待审核状态'); } if ($request->input('approval_result') == 1) { $masterCommission->approval_status = StoreMasterCommissionApprovalStatus::Passed; } else { $masterCommission->approval_status = StoreMasterCommissionApprovalStatus::Rejected; } $masterCommission->save(); return $this->response()->success(null, '操作成功'); } public function list(): Page { $crud = $this->baseCRUD() ->headerToolbar([ $this->createTypeButton('drawer', 'lg') ->visible(Admin::user()->can('admin.finance.store_master_commissions.create')), ...$this->baseHeaderToolBar(), ]) ->bulkActions([]) ->filter($this->baseFilter()->body([ amis()->GroupControl()->mode('horizontal')->body([ amis()->MonthControl() ->name('month') ->label(__('finance.store_master_commission.month')) ->valueFormat('YYYY-MM') ->columnRatio(3), amis()->SelectControl('store_id', __('finance.ledger.store')) ->source(admin_url('api/stores')) ->labelField('title') ->valueField('id') ->clearable() ->columnRatio(3), amis()->SelectControl('status', __('finance.store_master_commission.approval_status')) ->multiple() ->options(StoreMasterCommissionApprovalStatus::options()) ->columnRatio(3), ]), ])) ->columns([ amis()->TableColumn()->name('id')->label(__('finance.store_master_commission.id')), amis()->TableColumn()->name('month')->label(__('finance.store_master_commission.month')), amis()->TableColumn()->name('store.title')->label(__('finance.store_master_commission.store')), amis()->TableColumn()->name('master.name')->label(__('finance.store_master_commission.store_master')), amis()->TableColumn()->name('commission')->label(__('finance.store_master_commission.commission')), amis()->TableColumn()->name('daily_expenses')->label(__('finance.store_master_commission.daily_expenses')), amis()->TableColumn()->name('employee_expenses')->label(__('finance.store_master_commission.employee_expenses')), amis()->TableColumn()->name('other_expenses')->label(__('finance.store_master_commission.other_expenses')), amis()->TableColumn() ->name('approval_status') ->label(__('finance.store_master_commission.approval_status')) ->type('mapping') ->map(StoreMasterCommissionApprovalStatus::labelMap()), amis()->TableColumn()->name('created_at')->label(__('finance.store_master_commission.created_at')), $this->rowActions([ $this->rowApprovalButton() ->visibleOn('${approval_status == '.StoreMasterCommissionApprovalStatus::Pending->value.'}'), $this->rowEditTypeButton('drawer', 'lg') ->visible(Admin::user()->can('admin.finance.store_master_commissions.update')) ->visibleOn('${approval_status == '.StoreMasterCommissionApprovalStatus::Rejected->value.'}'), $this->rowDeleteButton()->visible(Admin::user()->can('admin.finance.store_master_commissions.delete')), ]), ]); return $this->baseList($crud); } public function form(): Form { return $this->baseForm()->title('')->body([ amis()->MonthControl() ->name('month') ->label(__('finance.store_master_commission.month')) ->required() ->valueFormat('YYYY-MM'), amis()->SelectControl('store_id', __('finance.store_master_commission.store')) ->source(admin_url('api/stores')) ->labelField('title') ->valueField('id') ->required() ->clearable(), amis()->NumberControl() ->name('commission') ->label(__('finance.store_master_commission.commission')) ->precision(2) ->showSteps(false) ->required(), amis()->NumberControl() ->name('daily_expenses') ->label(__('finance.store_master_commission.daily_expenses')) ->precision(2) ->showSteps(false) ->required(), amis()->NumberControl() ->name('employee_expenses') ->label(__('finance.store_master_commission.employee_expenses')) ->precision(2) ->showSteps(false) ->required(), amis()->NumberControl() ->name('other_expenses') ->label(__('finance.store_master_commission.other_expenses')) ->precision(2) ->showSteps(false) ->required(), ]); } protected function rowApprovalButton() { return amis()->DialogAction()->icon('fa-regular fa-check-circle')->label(__('finance.store_master_commission.approval'))->level('link')->dialog( amis()->Dialog()->title(__('finance.store_master_commission.approval'))->body([ amis()->Form()->title('') ->api('post:'.admin_url('finance/store-master-commissions/${id}/approval')) ->body([ amis()->RadiosControl('approval_result', __('finance.store_master_commission.approval_result')) ->options([ ['label' => '通过', 'value' => 1], ['label' => '驳回', 'value' => 2], ]) ->selectFirst() ->required(), amis()->TextareaControl('failed_reason', __('finance.store_master_commission.failed_reason')) ->visibleOn('${approval_result == 2}') ->required(), ]), ])->size('md') ); } }