diff --git a/app/Admin/Controllers/Finance/LedgerController.php b/app/Admin/Controllers/Finance/LedgerController.php index 44b48af..ad478ee 100644 --- a/app/Admin/Controllers/Finance/LedgerController.php +++ b/app/Admin/Controllers/Finance/LedgerController.php @@ -8,6 +8,7 @@ use App\Enums\CheckStatus; use App\Models\Ledger; use App\Traits\HasCheckActions; use Illuminate\Http\Request; +use Illuminate\Support\Arr; use Illuminate\Support\Facades\Validator; use Slowlyo\OwlAdmin\Admin; use Slowlyo\OwlAdmin\Renderers\DrawerAction; @@ -56,9 +57,10 @@ class LedgerController extends AdminController public function list(): Page { $crud = $this->baseCRUD() - ->headerToolbar([ - ...$this->baseHeaderToolBar(), - ]) + ->headerToolbar( + collect($this->baseHeaderToolBar()) + ->when(Admin::user()->can('admin.finance.ledgers.export'), fn ($collection) => $collection->push($this->exportAction(true))) + ) ->bulkActions([]) ->filter($this->baseFilter()->body([ amis()->GroupControl()->mode('horizontal')->body([ @@ -220,4 +222,29 @@ class LedgerController extends AdminController ])->size('lg') ); } + + protected function exportFileName() + { + return '上报数据'; + } + + protected function exportMap($row) + { + return [ + __('finance.ledger.date') => $row['date'], + __('finance.ledger.store') => Arr::get($row, 'store.title'), + __('finance.ledger.sales') => $row['sales'], + __('finance.ledger.expenditure') => $row['expenditure'], + __('finance.ledger.new_customers') => $row['new_customers'], + __('finance.ledger.handover_amount') => $row['handover_amount'], + __('finance.ledger.ledger_amount') => $row['ledger_amount'], + __('finance.ledger.ledger_difference') => $row['ledger_difference'], + __('finance.ledger.expected_commission') => $row['expected_commission'], + __('finance.ledger.actual_commission') => $row['actual_commission'], + __('finance.ledger.expected_income') => $row['expected_income'], + __('finance.ledger.actual_income') => $row['actual_income'], + __('workflow_log.check_status') => CheckStatus::tryFrom(Arr::get($row, 'workflow.check_status'))?->text(), + __('finance.ledger.created_at') => $row['created_at'], + ]; + } } diff --git a/app/Admin/Controllers/Finance/ReimbursementController.php b/app/Admin/Controllers/Finance/ReimbursementController.php index 75d9a14..2959d05 100644 --- a/app/Admin/Controllers/Finance/ReimbursementController.php +++ b/app/Admin/Controllers/Finance/ReimbursementController.php @@ -23,9 +23,10 @@ class ReimbursementController extends AdminController public function list(): Page { $crud = $this->baseCRUD() - ->headerToolbar([ - ...$this->baseHeaderToolBar(), - ]) + ->headerToolbar( + collect($this->baseHeaderToolBar()) + ->when(Admin::user()->can('admin.finance.reimbursements.export'), fn ($collection) => $collection->push($this->exportAction(true))) + ) ->bulkActions([]) ->filter($this->baseFilter()->body([ amis()->GroupControl()->mode('horizontal')->body([ @@ -94,4 +95,21 @@ class ReimbursementController extends AdminController $this->baseWorkflowLogList($detailId)->id($serviceId), ]); } + + protected function exportFileName() + { + return '收支报销'; + } + + protected function exportMap($row) + { + return [ + __('finance.reimbursement.employee') => Arr::get($row, 'employee.name'), + __('finance.reimbursement.expense') => $row['expense'], + __('finance.reimbursement.reason') => $row['reason'], + __('finance.reimbursement.type') => Arr::get($row, 'type.name'), + __('workflow_log.check_status') => CheckStatus::tryFrom(Arr::get($row, 'workflow.check_status'))?->text(), + __('finance.reimbursement.created_at') => $row['created_at'], + ]; + } } diff --git a/app/Admin/Controllers/Finance/StoreMasterCommissionController.php b/app/Admin/Controllers/Finance/StoreMasterCommissionController.php index 330953a..f6583ef 100644 --- a/app/Admin/Controllers/Finance/StoreMasterCommissionController.php +++ b/app/Admin/Controllers/Finance/StoreMasterCommissionController.php @@ -23,11 +23,11 @@ class StoreMasterCommissionController extends AdminController public function list(): Page { $crud = $this->baseCRUD() - ->headerToolbar([ - $this->createTypeButton('drawer', 'lg') - ->visible(Admin::user()->can('admin.finance.store_master_commissions.create')), - ...$this->baseHeaderToolBar(), - ]) + ->headerToolbar( + collect($this->baseHeaderToolBar()) + ->when(Admin::user()->can('admin.finance.store_master_commissions.create'), fn ($collection) => $collection->push($this->createTypeButton('drawer', 'lg'))) + ->when(Admin::user()->can('admin.finance.store_master_commissions.export'), fn ($collection) => $collection->push($this->exportAction(true))) + ) ->bulkActions([]) ->filter($this->baseFilter()->body([ amis()->GroupControl()->mode('horizontal')->body([ @@ -66,7 +66,6 @@ class StoreMasterCommissionController extends AdminController ->method('post') ->data(['id' => '${workflow.id}']) ), - // $this->cancelAction(), $this->rowEditTypeButton('drawer', 'lg') ->visible(Admin::user()->can('admin.finance.store_master_commissions.update')) ->visibleOn('${OR(workflow.check_status == '.CheckStatus::None->value.', workflow.check_status == '.CheckStatus::Cancel->value.', workflow.check_status == '.CheckStatus::Fail->value.')}'), @@ -157,4 +156,25 @@ class StoreMasterCommissionController extends AdminController $this->baseWorkflowLogList($detailId)->id($serviceId), ]); } + + protected function exportFileName() + { + return '店长提成'; + } + + protected function exportMap($row) + { + return [ + __('finance.store_master_commission.id') => $row['id'], + __('finance.store_master_commission.month') => $row['month'], + __('finance.store_master_commission.store') => Arr::get($row, 'store.title'), + __('finance.store_master_commission.store_master') => Arr::get($row, 'master.name'), + __('finance.store_master_commission.commission') => $row['commission'], + __('finance.store_master_commission.daily_expenses') => $row['daily_expenses'], + __('finance.store_master_commission.employee_expenses') => $row['employee_expenses'], + __('finance.store_master_commission.other_expenses') => $row['other_expenses'], + __('workflow_log.check_status') => CheckStatus::tryFrom(Arr::get($row, 'workflow.check_status'))?->text(), + __('finance.store_master_commission.created_at') => $row['created_at'], + ]; + } } diff --git a/database/seeders/AdminPermissionSeeder.php b/database/seeders/AdminPermissionSeeder.php index 43dc1ff..9c5d0ed 100644 --- a/database/seeders/AdminPermissionSeeder.php +++ b/database/seeders/AdminPermissionSeeder.php @@ -267,6 +267,7 @@ class AdminPermissionSeeder extends Seeder 'uri' => '/finance/ledgers', 'resource' => ['list', 'update', 'view'], 'children' => [ + 'export' => '导出', 'update_ledger_amount' => '编辑总账金额', ], ], @@ -284,7 +285,9 @@ class AdminPermissionSeeder extends Seeder 'icon' => 'ri:money-cny-circle-fill', 'uri' => '/finance/reimbursements', 'resource' => ['list', 'view'], - 'children' => [], + 'children' => [ + 'export' => '导出', + ], ], 'sales_statistics' => [ 'name' => '销售统计', @@ -309,7 +312,9 @@ class AdminPermissionSeeder extends Seeder 'icon' => 'icon-park-outline:paper-money', 'uri' => '/finance/store-master-commissions', 'resource' => true, - 'children' => [], + 'children' => [ + 'export' => '导出', + ], ], ], ],