diff --git a/app/Admin/Controllers/Finance/CommissionIncomeController.php b/app/Admin/Controllers/Finance/CommissionIncomeController.php index d05b868..ab315aa 100644 --- a/app/Admin/Controllers/Finance/CommissionIncomeController.php +++ b/app/Admin/Controllers/Finance/CommissionIncomeController.php @@ -5,8 +5,8 @@ namespace App\Admin\Controllers\Finance; use App\Admin\Controllers\AdminController; use App\Admin\Filters\LedgerFilter; use App\Models\Ledger; -use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Slowlyo\OwlAdmin\Admin; /** * @property mixed $name @@ -17,16 +17,21 @@ class CommissionIncomeController extends AdminController { if ($this->actionOfGetData()) { return $this->response()->success([ - 'items' => [$this->getCommissionIncomeStatistics(request())], + 'items' => [$this->getCommissionIncomeStatistics()], ]); } + if ($this->actionOfExport()) { + return $this->export(); + } + return $this->response()->success( $this->baseList( $this->baseCRUD() - ->headerToolbar([ - amis('filter-toggler')->align('right'), - ]) + ->headerToolbar( + collect($this->baseHeaderToolBar()) + ->when(Admin::user()->can('admin.finance.commission_incomes.export'), fn ($collection) => $collection->push($this->exportAction(true))) + ) ->footerToolbar([]) ->bulkActions([]) ->filter($this->baseFilter()->body([ @@ -57,7 +62,7 @@ class CommissionIncomeController extends AdminController ); } - protected function getCommissionIncomeStatistics(Request $request): array + protected function getCommissionIncomeStatistics(): array { $aggregate = Ledger::select([ DB::raw('SUM(expenditure) as expenditure'), @@ -66,7 +71,7 @@ class CommissionIncomeController extends AdminController DB::raw('SUM(expected_income) as expected_income'), DB::raw('SUM(actual_income) as actual_income'), ]) - ->filter($request->input(), LedgerFilter::class) + ->filter(request()->input(), LedgerFilter::class) ->first(); $expectedCommission = $aggregate->expected_commission ?? '0'; @@ -83,4 +88,69 @@ class CommissionIncomeController extends AdminController 'diff_income' => trim_zeros(bcsub($actualIncome, $expectedIncome, 2)), ]; } + + /** + * 导出按钮 + * + * @param bool $disableSelectedItem + * + * @return \Slowlyo\OwlAdmin\Renderers\Service + */ + protected function exportAction($disableSelectedItem = false) + { + // 下载路径 + $downloadPath = admin_url('_download_export', true); + // 导出接口地址 + $exportPath = $this->getExportPath(); + // 按钮点击事件 + $event = fn($script) => ['click' => ['actions' => [['actionType' => 'custom', 'script' => $script]]]]; + // 导出处理动作 + $doAction = "doAction([{actionType:'setValue',componentId:'export-action',args:{value:{showExportLoading:true}}},{actionType:'ajax',args:{api:{url:url.toString(),method:'get'}}},{actionType:'setValue',componentId:'export-action',args:{value:{showExportLoading:false}}},{actionType:'custom',expression:'\${event.data.responseResult.responseStatus===0}',script:'window.open(\'{$downloadPath}?path=\'+event.data.responseResult.responseData.path)'}])"; + // 按钮 + $button = amis()->Button() + ->label(__('admin.export.title')) + ->icon('fa-solid fa-download') + ->onEvent( + $event("let data=event.data;let params=Object.keys(data).filter(key=>key!=='page' && key!=='__super').reduce((obj,key)=>{obj[key]=data[key];return obj;},{});let url=new URL('{$exportPath}',window.location.origin);Object.keys(params).forEach(key=>url.searchParams.append(key,params[key]));{$doAction}") + ); + + return amis()->Service() + ->id('export-action') + ->set('align', 'right') + ->set('data', ['showExportLoading' => false]) + ->body( + amis()->Spinner()->set('showOn', '${showExportLoading}')->overlay()->body($button) + ); + } + + /** + * 导出 + * + * @return JsonResponse|JsonResource + */ + protected function export() + { + admin_abort_if(!class_exists('\Rap2hpoutre\FastExcel\FastExcel'), __('admin.export.please_install_laravel_excel')); + + // 默认在 storage/app/ 下 + $path = sprintf('佣金收入-%s.xlsx', date('YmdHis')); + + $data = [$this->getCommissionIncomeStatistics()]; + + try { + fastexcel($data)->export(storage_path('app/' . $path), fn($row) => [ + '预期佣金' => $row['expected_commission'], + '实际佣金' => $row['actual_commission'], + '佣金差异' => $row['diff_commission'], + '预期收益' => $row['expected_income'], + '实际收益' => $row['actual_income'], + '收益差异' => $row['diff_income'], + ]); + } catch (\Throwable $e) { + report($e); + admin_abort(__('admin.action_failed')); + } + + return $this->response()->success(compact('path')); + } } 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/SalesStatisticController.php b/app/Admin/Controllers/Finance/SalesStatisticController.php index 4b287b7..db1649d 100644 --- a/app/Admin/Controllers/Finance/SalesStatisticController.php +++ b/app/Admin/Controllers/Finance/SalesStatisticController.php @@ -6,8 +6,8 @@ use App\Admin\Controllers\AdminController; use App\Admin\Filters\LedgerItemFilter; use App\Models\Keyword; use App\Models\LedgerItem; -use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Slowlyo\OwlAdmin\Admin; /** * @property mixed $name @@ -18,16 +18,21 @@ class SalesStatisticController extends AdminController { if ($this->actionOfGetData()) { return $this->response()->success([ - 'items' => $this->getLotteryTypeStatistics(request()), + 'items' => $this->getLotteryTypeStatistics(), ]); } + if ($this->actionOfExport()) { + return $this->export(); + } + return $this->response()->success( $this->baseList( $this->baseCRUD() - ->headerToolbar([ - amis('filter-toggler')->align('right'), - ]) + ->headerToolbar( + collect($this->baseHeaderToolBar()) + ->when(Admin::user()->can('admin.finance.sales_statistics.export'), fn ($collection) => $collection->push($this->exportAction(true))) + ) ->footerToolbar([]) ->bulkActions([]) ->filter($this->baseFilter()->body([ @@ -53,14 +58,14 @@ class SalesStatisticController extends AdminController ]) ->affixRow([ ['type' => 'text', 'text' => '合计'], - ['type' => 'tpl', 'text' => '${items|filter:is_plus:isTrue|pick:sales|sum}'], - ['type' => 'tpl', 'text' => '${items|filter:is_plus:isTrue|pick:expenditure|sum}'], + ['type' => 'tpl', 'text' => '${items|pick:real_sales|sum}'], + ['type' => 'tpl', 'text' => '${items|pick:real_expenditure|sum}'], ]) ) ); } - protected function getLotteryTypeStatistics(Request $request): array + protected function getLotteryTypeStatistics(): array { /** @var \Illuminate\Database\Eloquent\Collection */ $lotteryTypes = Keyword::where('parent_key', 'lottery_type')->get(); @@ -71,7 +76,7 @@ class SalesStatisticController extends AdminController DB::raw('SUM(sales) as sales'), DB::raw('SUM(expenditure) as expenditure'), ]) - ->filter($request->input(), LedgerItemFilter::class) + ->filter(request()->input(), LedgerItemFilter::class) ->whereIn('ledger_item_type_id', $lotteryTypes->pluck('key')) ->groupBy('ledger_item_type_id') ->get() @@ -84,8 +89,78 @@ class SalesStatisticController extends AdminController 'name' => $lotteryType->name, 'sales' => trim_zeros($statistic->sales ?? '0.00'), 'expenditure' => trim_zeros($statistic->expenditure ?? '0.00'), - 'is_plus' => $lotteryType->value !== '-', + 'real_sales' => match($lotteryType->value) { + '+' => $statistic->sales ?? '0.00', + '-' => -($statistic->sales ?? '0.00'), + default => 0, + }, + 'real_expenditure' => match($lotteryType->value) { + '+' => $statistic->expenditure ?? '0.00', + '-' => -($statistic->expenditure ?? '0.00'), + default => 0, + }, ]; })->all(); } + + /** + * 导出按钮 + * + * @param bool $disableSelectedItem + * + * @return \Slowlyo\OwlAdmin\Renderers\Service + */ + protected function exportAction($disableSelectedItem = false) + { + // 下载路径 + $downloadPath = admin_url('_download_export', true); + // 导出接口地址 + $exportPath = $this->getExportPath(); + // 按钮点击事件 + $event = fn($script) => ['click' => ['actions' => [['actionType' => 'custom', 'script' => $script]]]]; + // 导出处理动作 + $doAction = "doAction([{actionType:'setValue',componentId:'export-action',args:{value:{showExportLoading:true}}},{actionType:'ajax',args:{api:{url:url.toString(),method:'get'}}},{actionType:'setValue',componentId:'export-action',args:{value:{showExportLoading:false}}},{actionType:'custom',expression:'\${event.data.responseResult.responseStatus===0}',script:'window.open(\'{$downloadPath}?path=\'+event.data.responseResult.responseData.path)'}])"; + // 按钮 + $button = amis()->Button() + ->label(__('admin.export.title')) + ->icon('fa-solid fa-download') + ->onEvent( + $event("let data=event.data;let params=Object.keys(data).filter(key=>key!=='page' && key!=='__super').reduce((obj,key)=>{obj[key]=data[key];return obj;},{});let url=new URL('{$exportPath}',window.location.origin);Object.keys(params).forEach(key=>url.searchParams.append(key,params[key]));{$doAction}") + ); + + return amis()->Service() + ->id('export-action') + ->set('align', 'right') + ->set('data', ['showExportLoading' => false]) + ->body( + amis()->Spinner()->set('showOn', '${showExportLoading}')->overlay()->body($button) + ); + } + + /** + * 导出 + * + * @return JsonResponse|JsonResource + */ + protected function export() + { + admin_abort_if(!class_exists('\Rap2hpoutre\FastExcel\FastExcel'), __('admin.export.please_install_laravel_excel')); + + // 默认在 storage/app/ 下 + $path = sprintf('销售统计-%s.xlsx', date('YmdHis')); + + $data = $this->getLotteryTypeStatistics(); + + try { + fastexcel($data)->export(storage_path('app/' . $path), fn($row) => [ + '彩种' => $row['name'], + '销量' => $row['sales'], + '兑奖' => $row['expenditure'], + ]); + } catch (\Throwable $e) { + admin_abort(__('admin.action_failed')); + } + + return $this->response()->success(compact('path')); + } } 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/app/Admin/Controllers/Finance/StoreStatisticController.php b/app/Admin/Controllers/Finance/StoreStatisticController.php index d9b78f5..cbed5f8 100644 --- a/app/Admin/Controllers/Finance/StoreStatisticController.php +++ b/app/Admin/Controllers/Finance/StoreStatisticController.php @@ -5,40 +5,43 @@ namespace App\Admin\Controllers\Finance; use App\Admin\Controllers\AdminController; use App\Services\StatisticService; use Illuminate\Support\Arr; +use Slowlyo\OwlAdmin\Admin; class StoreStatisticController extends AdminController { public function index() { if ($this->actionOfGetData()) { - $input = Arr::except(request()->input(), ['orderBy', 'orderDir']); - - $orderBy = request()->input('orderBy') ?: 'sales'; - $orderDir = request()->input('orderDir') ?: 'desc'; - - $input['sort'] = ($orderDir === 'desc' ? '-' : '').$orderBy; - return $this->response()->success([ - 'items' => (new StatisticService())->storeRanking($input), + 'items' => $this->getStoreRanking(), ]); } + if ($this->actionOfExport()) { + return $this->export(); + } + return $this->response()->success( $this->baseList( $this->baseCRUD() - ->headerToolbar([ - amis('filter-toggler')->align('right'), - ]) + ->headerToolbar( + collect($this->baseHeaderToolBar()) + ->when(Admin::user()->can('admin.finance.store_statistics.export'), fn ($collection) => $collection->push($this->exportAction(true))) + ) ->footerToolbar([]) ->bulkActions([]) ->filter($this->baseFilter()->body([ amis()->GroupControl()->mode('horizontal')->body([ amis()->DateRangeControl('date_range', '日期') - ->valueFormat('YYYY-MM-DD') - ->columnRatio(6), + ->valueFormat('YYYY-MM-DD'), amis()->InputCityControl('region', '区域') ->allowDistrict(false) ->extractValue(false), + amis()->SelectControl('store_id', __('finance.ledger.store')) + ->source(admin_url('api/stores?region=${region}')) + ->labelField('title') + ->valueField('id') + ->clearable(), ]), ])) ->filterDefaultVisible() @@ -51,4 +54,81 @@ class StoreStatisticController extends AdminController ) ); } + + protected function getStoreRanking(): array + { + $input = Arr::except(request()->input(), ['orderBy', 'orderDir']); + + $orderBy = request()->input('orderBy') ?: 'sales'; + $orderDir = request()->input('orderDir') ?: 'desc'; + + $input['sort'] = ($orderDir === 'desc' ? '-' : '').$orderBy; + + return (new StatisticService())->storeRanking($input); + } + + /** + * 导出按钮 + * + * @param bool $disableSelectedItem + * + * @return \Slowlyo\OwlAdmin\Renderers\Service + */ + protected function exportAction($disableSelectedItem = false) + { + // 下载路径 + $downloadPath = admin_url('_download_export', true); + // 导出接口地址 + $exportPath = $this->getExportPath(); + // 按钮点击事件 + $event = fn($script) => ['click' => ['actions' => [['actionType' => 'custom', 'script' => $script]]]]; + // 导出处理动作 + $doAction = "doAction([{actionType:'setValue',componentId:'export-action',args:{value:{showExportLoading:true}}},{actionType:'ajax',args:{api:{url:url.toString(),method:'get'}}},{actionType:'setValue',componentId:'export-action',args:{value:{showExportLoading:false}}},{actionType:'custom',expression:'\${event.data.responseResult.responseStatus===0}',script:'window.open(\'{$downloadPath}?path=\'+event.data.responseResult.responseData.path)'}])"; + // 按钮 + $button = amis()->Button() + ->label(__('admin.export.title')) + ->icon('fa-solid fa-download') + ->onEvent( + $event("let data=event.data;let params=Object.keys(data).filter(key=>key!=='page' && key!=='__super').reduce((obj,key)=>{obj[key]=data[key];return obj;},{});let url=new URL('{$exportPath}',window.location.origin);Object.keys(params).forEach(key=>url.searchParams.append(key,params[key]));{$doAction}") + ); + + return amis()->Service() + ->id('export-action') + ->set('align', 'right') + ->set('data', ['showExportLoading' => false]) + ->body( + amis()->Spinner()->set('showOn', '${showExportLoading}')->overlay()->body($button) + ); + } + + /** + * 导出 + * + * @return JsonResponse|JsonResource + */ + protected function export() + { + admin_abort_if(!class_exists('\Rap2hpoutre\FastExcel\FastExcel'), __('admin.export.please_install_laravel_excel')); + + // 默认在 storage/app/ 下 + $path = sprintf('门店统计-%s.xlsx', date('YmdHis')); + + $data = $this->getStoreRanking(); + + try { + fastexcel($data)->export(storage_path('app/' . $path), function($row) { + return [ + '排序' => $row['ranking'], + '门店' => Arr::get($row, 'store.title'), + '收入' => $row['sales'], + '支出' => $row['expenditure'], + ]; + }); + } catch (\Throwable $e) { + report($e); + admin_abort(__('admin.action_failed')); + } + + return $this->response()->success(compact('path')); + } } diff --git a/app/Http/Controllers/Api/LedgerController.php b/app/Http/Controllers/Api/LedgerController.php index c276f72..b3e0b45 100644 --- a/app/Http/Controllers/Api/LedgerController.php +++ b/app/Http/Controllers/Api/LedgerController.php @@ -225,7 +225,7 @@ class LedgerController extends Controller 'name' => $lotteryType->name, 'sales' => $ledgerItem?->sales, 'expenditure' => $ledgerItem?->expenditure, - 'operator' => (string) $lotteryType->value === '-' ? '-' : '+', + 'operator' => (string) $lotteryType->value, ]; })->all(); } diff --git a/app/Services/StatisticService.php b/app/Services/StatisticService.php index 9a149fb..1db3b2e 100644 --- a/app/Services/StatisticService.php +++ b/app/Services/StatisticService.php @@ -192,6 +192,7 @@ class StatisticService ->groupBy('store_id'); $stores = Store::filter($input, StoreFilter::class) + ->selectRaw('stores.*,IFNULL(store_ledgers.sales, 0) as sales,IFNULL(store_ledgers.expenditure, 0) as expenditure') ->leftJoinSub($storeLedgers, 'store_ledgers', fn ($join) => $join->on('stores.id', '=', 'store_ledgers.store_id')) ->when($input['sort'] ?? '', function ($query, $sort) { foreach (explode(',', $sort) as $sort) { diff --git a/database/seeders/AdminPermissionSeeder.php b/database/seeders/AdminPermissionSeeder.php index da9108b..e1cafcd 100644 --- a/database/seeders/AdminPermissionSeeder.php +++ b/database/seeders/AdminPermissionSeeder.php @@ -292,6 +292,7 @@ class AdminPermissionSeeder extends Seeder 'uri' => '/finance/ledgers', 'resource' => ['list', 'update', 'view'], 'children' => [ + 'export' => '导出', 'update_ledger_amount' => '编辑总账金额', ], ], @@ -302,6 +303,7 @@ class AdminPermissionSeeder extends Seeder 'resource' => false, 'children' => [ 'index' => '佣金收入', + 'export' => '导出', ], ], 'reimbursements' => [ @@ -309,7 +311,9 @@ class AdminPermissionSeeder extends Seeder 'icon' => 'ri:money-cny-circle-fill', 'uri' => '/finance/reimbursements', 'resource' => ['list', 'view'], - 'children' => [], + 'children' => [ + 'export' => '导出', + ], ], 'sales_statistics' => [ 'name' => '销售统计', @@ -318,6 +322,7 @@ class AdminPermissionSeeder extends Seeder 'resource' => false, 'children' => [ 'index' => '销售统计', + 'export' => '导出', ], ], 'store_statistics' => [ @@ -327,6 +332,7 @@ class AdminPermissionSeeder extends Seeder 'resource' => false, 'children' => [ 'index' => '门店统计', + 'export' => '导出', ], ], 'store_master_commissions' => [ @@ -334,7 +340,9 @@ class AdminPermissionSeeder extends Seeder 'icon' => 'icon-park-outline:paper-money', 'uri' => '/finance/store-master-commissions', 'resource' => true, - 'children' => [], + 'children' => [ + 'export' => '导出', + ], ], ], ], diff --git a/database/seeders/KeywordSeeder.php b/database/seeders/KeywordSeeder.php index e27c48c..a0108c2 100644 --- a/database/seeders/KeywordSeeder.php +++ b/database/seeders/KeywordSeeder.php @@ -63,19 +63,19 @@ class KeywordSeeder extends Seeder 'key' => 'lottery_type', 'name' => '彩种类型', 'children' => [ - '七星彩', - '排列三', - '排列五', - '大乐透', - '传统足彩', - '竞彩', - '顶呱刮', - '福彩', - '合买', - '电彩分票+', - '即开分票+', - ['name' => '电彩分票-', 'value' => '-'], - ['name' => '即开分票-', 'value' => '-'], + ['name' => '七星彩', 'value' => '+'], + ['name' => '排列三', 'value' => '+'], + ['name' => '排列五', 'value' => '+'], + ['name' => '大乐透', 'value' => '+'], + ['name' => '传统足彩', 'value' => '+'], + ['name' => '竞彩', 'value' => '+'], + ['name' => '顶呱刮', 'value' => '+'], + ['name' => '福彩', 'value' => '+'], + ['name' => '合买', 'value' => '+'], + ['name' => '电彩分票+', 'value' => ''], + ['name' => '即开分票+', 'value' => ''], + ['name' => '电彩分票-', 'value' => ''], + ['name' => '即开分票-', 'value' => ''], ], ], [