From 07c283c7616be98258c04e2b135693e2a75d9fae Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Sat, 3 Jun 2023 17:13:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=B4=B9=E7=94=A8=E6=8E=A8?= =?UTF-8?q?=E8=8D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/LiveContinueController.php | 4 +- app/Admin/Controllers/LiveInController.php | 10 ++-- app/Admin/Controllers/OldmenController.php | 58 ++++++++++++++++--- app/Admin/Controllers/SettingController.php | 21 +++---- app/Admin/routes.php | 3 +- database/seeders/KeywordSeeder.php | 6 +- 6 files changed, 72 insertions(+), 30 deletions(-) diff --git a/app/Admin/Controllers/LiveContinueController.php b/app/Admin/Controllers/LiveContinueController.php index 87ee3fd..412edd9 100644 --- a/app/Admin/Controllers/LiveContinueController.php +++ b/app/Admin/Controllers/LiveContinueController.php @@ -26,7 +26,7 @@ class LiveContinueController extends AdminController amisMake()->TextControl('name', '名称')->size('md'), amisMake()->TextControl('card_no', '身份证')->size('md'), amisMake()->TextControl('floor_name', '楼栋')->size('md'), - amisMake()->SelectControl('nurse_lv', '护理等级')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'id'))->checkAll(true)->multiple(true)->size('md'), + amisMake()->SelectControl('nurse_lv', '护理等级')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'value'))->checkAll(true)->multiple(true)->size('md'), amis('button')->label(__('admin.reset'))->actionType('clear-and-submit'), amis('submit')->label(__('admin.search'))->level('primary'), ])->actions([]) @@ -37,7 +37,7 @@ class LiveContinueController extends AdminController TableColumn::make()->name('age')->label('年龄')->sortable(), TableColumn::make()->name('card_no')->label('身份证')->copyable(true), TableColumn::make()->name('floor_name')->label('楼栋'), - TableColumn::make()->name('nurse_lv')->type('mapping')->map(Keyword::getByParentKey('nurse_lv')->pluck('name', 'id'))->label('护理等级')->className('text-primary')->sortable(), + TableColumn::make()->name('nurse_lv')->type('mapping')->map(Keyword::getByParentKey('nurse_lv')->pluck('name', 'value'))->label('护理等级')->className('text-primary')->sortable(), TableColumn::make()->name('client_name')->label('委托人'), TableColumn::make()->name('client_phone')->label('委托人-手机号')->copyable(true), TableColumn::make()->name('avliable_at')->label('截至时间')->type('datetime')->sortable(true), diff --git a/app/Admin/Controllers/LiveInController.php b/app/Admin/Controllers/LiveInController.php index ba19a6d..e2d8db6 100644 --- a/app/Admin/Controllers/LiveInController.php +++ b/app/Admin/Controllers/LiveInController.php @@ -27,7 +27,7 @@ class LiveInController extends AdminController amisMake()->TextControl('name', '名称')->size('md'), amisMake()->TextControl('card_no', '身份证')->size('md'), amisMake()->TextControl('floor_name', '楼栋')->size('md'), - amisMake()->SelectControl('nurse_lv', '护理等级')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'id'))->checkAll(true)->multiple(true)->size('md'), + amisMake()->SelectControl('nurse_lv', '护理等级')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'value'))->checkAll(true)->multiple(true)->size('md'), amis('button')->label(__('admin.reset'))->actionType('clear-and-submit'), amis('submit')->label(__('admin.search'))->level('primary'), ])->actions([]) @@ -38,7 +38,7 @@ class LiveInController extends AdminController TableColumn::make()->name('age')->label('年龄')->sortable(), TableColumn::make()->name('card_no')->label('身份证')->copyable(true), TableColumn::make()->name('floor_name')->label('楼栋'), - TableColumn::make()->name('nurse_lv')->type('mapping')->map(Keyword::getByParentKey('nurse_lv')->pluck('name', 'id'))->label('护理等级')->className('text-primary')->sortable(), + TableColumn::make()->name('nurse_lv')->type('mapping')->map(Keyword::getByParentKey('nurse_lv')->pluck('name', 'value'))->label('护理等级')->className('text-primary')->sortable(), TableColumn::make()->name('client_name')->label('委托人'), TableColumn::make()->name('client_phone')->label('委托人-手机号')->copyable(true), TableColumn::make()->name('live_in_at')->label('入住时间')->type('datetime')->sortable(true), @@ -144,8 +144,10 @@ class LiveInController extends AdminController amisMake()->TextControl('floor_name', '楼栋')->disabled(true), amisMake()->TextControl('agreement_no', '协议号码')->disabled(true), ]), - amisMake()->RadiosControl('nurse_lv', '护理等级')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'id'))->disabled(true), - amisMake()->DateRangeControl('live_in_date', '入住时间')->format('YYYY-MM-DD')->ranges([])->required(true), + amisMake()->RadiosControl('nurse_lv', '护理等级')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'value'))->disabled(true), + amisMake()->DateRangeControl('live_in_date', '入住时间')->format('YYYY-MM-DD')->ranges([ + '1monthslater','3monthslater','6monthslater','1yearslater', + ])->required(true)->description('先选择结束时间,再选择开始时间'), ]), diff --git a/app/Admin/Controllers/OldmenController.php b/app/Admin/Controllers/OldmenController.php index c0e1451..aab086b 100644 --- a/app/Admin/Controllers/OldmenController.php +++ b/app/Admin/Controllers/OldmenController.php @@ -3,6 +3,7 @@ namespace App\Admin\Controllers; use App\Models\Keyword; +use Slowlyo\OwlAdmin\Models\AdminSetting; use Slowlyo\OwlAdmin\Renderers\Page; use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\TableColumn; @@ -11,6 +12,7 @@ use Slowlyo\OwlAdmin\Controllers\AdminController; use App\Services\Admin\OldmenService; use Illuminate\Http\Request; use App\Admin\Components; +use Carbon\Carbon; /** * @property OldmenService $service @@ -40,7 +42,7 @@ class OldmenController extends AdminController amisMake()->TextControl('name', '名称')->size('md'), amisMake()->TextControl('card_no', '身份证')->size('md'), amisMake()->TextControl('floor_name', '楼栋')->size('md'), - amisMake()->SelectControl('nurse_lv', '护理等级')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'id'))->checkAll(true)->multiple(true)->size('md'), + amisMake()->SelectControl('nurse_lv', '护理等级')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'value'))->checkAll(true)->multiple(true)->size('md'), amis('button')->label(__('admin.reset'))->actionType('clear-and-submit'), amis('submit')->label(__('admin.search'))->level('primary'), ])->actions([]) @@ -51,7 +53,7 @@ class OldmenController extends AdminController TableColumn::make()->name('age')->label('年龄')->sortable(), TableColumn::make()->name('card_no')->label('身份证')->copyable(true), TableColumn::make()->name('floor_name')->label('楼栋'), - TableColumn::make()->name('nurse_lv')->type('mapping')->map(Keyword::getByParentKey('nurse_lv')->pluck('name', 'id'))->label('护理等级')->className('text-primary')->sortable(), + TableColumn::make()->name('nurse_lv')->type('mapping')->map(Keyword::getByParentKey('nurse_lv')->pluck('name', 'value'))->label('护理等级')->className('text-primary')->sortable(), TableColumn::make()->name('client_name')->label('委托人'), TableColumn::make()->name('client_phone')->label('委托人-手机号')->copyable(true), TableColumn::make()->name('live_in_at')->label('入住时间')->type('datetime')->sortable(true), @@ -88,7 +90,7 @@ class OldmenController extends AdminController amisMake()->TextControl('floor_name', '楼栋'), amisMake()->TextControl('agreement_no', '协议号码'), ]), - amisMake()->RadiosControl('nurse_lv', '护理等级')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'id'))->required(true)->disabledOn('data.live_in > 0'), + amisMake()->RadiosControl('nurse_lv', '护理等级')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'value'))->required(true)->disabledOn('data.live_in > 0'), ]), amisMake()->FieldSetControl()->className('mt-10')->title('委托人信息')->collapsable(true)->body([ amisMake()->GroupControl()->body([ @@ -150,11 +152,53 @@ class OldmenController extends AdminController public function liveSchemaForm(Request $request) { $type = $request->input('type', 'live_fee'); - - foreach(Keyword::getByParentKey($type) as $fee){ - $_feeValue = 0; - if($fee == 'live_base_fee'){ + $dateRange = $request->input('live_in_date', null); + $startDay = $dateRange ? explode(',', $dateRange)[0].' 00:00:00' : null; + $endDay = $dateRange ? explode(',', $dateRange)[1].' 23:59:59' : null; + if($startDay && $endDay){ + $diffYears = Carbon::parse($startDay)->diffInYears($endDay); + $diffMonths = Carbon::parse($startDay)->addYears($diffYears)->diffInMonths($endDay); + $diffAbMonths = Carbon::parse($startDay)->diffInMonths($endDay); + $diffDays = Carbon::parse($startDay)->addYears($diffYears)->addMonths($diffMonths)->diffInDays($endDay); + $diffAbDays = Carbon::parse($startDay)->diffInDays($endDay); + } + + $lv = $request->input('nurse_lv', 1); + $feeKey = Keyword::getByParentKey($type); + $feeKeyHelp = AdminSetting::whereIn('key', $feeKey?->pluck('key')->toArray())->pluck('values','key')->toArray(); + foreach(Keyword::getByParentKey($type) as $fee) + { + $_feeValue = 0; + if(isset($feeKeyHelp[$fee->key])){ + $_feeValues = []; + if($feeKeyHelp[$fee->key]['has_time'] == 2 && !empty($dateRange)){ + array_map(function($item) use(&$_feeValues){ + $_feeValues[$item['lv']][$item['time_type']] = $item['fee']; + }, $feeKeyHelp[$fee->key]['values']); + + if(isset($_feeValues[$lv]['day'])){ + //判断是否有设置年份 + if(isset($_feeValues[$lv]['year'])){ + $_feeValue += bcmul($diffYears, $_feeValues[$lv]['year'], 2); + if(isset($_feeValues[$lv]['month'])){ + $_feeValue += bcmul($diffMonths, $_feeValues[$lv]['month'], 2); + $_feeValue += bcmul($diffDays, $_feeValues[$lv]['day'], 2); + }else{ + $_feeValue += bcmul($diffAbDays, $_feeValues[$lv]['day'], 2); + } + }else{ + if(isset($_feeValues[$lv]['month'])){ + $_feeValue += bcmul($diffAbMonths, $_feeValues[$lv]['month'], 2); + }else{ + $_feeValue += bcmul($diffAbDays, $_feeValues[$lv]['day'], 2); + } + } + } + }else{ + $_feeValues = collect($feeKeyHelp[$fee->key]['values'] ?? [])->keyBy('lv')->toArray(); + $_feeValue = $_feeValues[$lv]['fee'] ?? 0; + } } $feeArr[] = Components::make()->decimalControl($fee->key, $fee->name)->description(amis('tpl')->tpl('根据当前护理等级,建议费用为:'.$_feeValue)); } diff --git a/app/Admin/Controllers/SettingController.php b/app/Admin/Controllers/SettingController.php index 34af05b..81054f2 100644 --- a/app/Admin/Controllers/SettingController.php +++ b/app/Admin/Controllers/SettingController.php @@ -60,13 +60,13 @@ class SettingController extends AdminController ->description('如果选择按时间设置,则必须要设置每天维度的价格,否则无法计算'), amisMake()->ComboControl('values', '金额设置')->multiple(true)->items([ amisMake()->InputGroupControl()->label('配置')->body([ - amisMake()->SelectControl('lv')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'id')), + amisMake()->SelectControl('lv')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'value')), Components::make()->decimalControl('fee'), ]) ])->visibleOn('this.has_time < 2'), amisMake()->ComboControl('values', '金额设置')->multiple(true)->items([ amisMake()->InputGroupControl()->label('配置')->body([ - amisMake()->SelectControl('lv')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'id')), + amisMake()->SelectControl('lv')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'value')), amisMake()->SelectControl('time_type')->options([ 'year'=>'每年','month'=>'每月','day'=>'每天', ]), @@ -79,7 +79,7 @@ class SettingController extends AdminController $page = $this->basePage()->body([ amisMake()->Form()->mode('horizontal') ->data($formData) - ->api() + ->api(admin_url('/const-setting')) ->body( Tabs::make()->tabs($tabs) ) @@ -87,15 +87,10 @@ class SettingController extends AdminController return $this->response()->success($page); } - public function queryFeeHelp($nurseLv, $dateRange, Request $request){ - $data = []; - //入住推荐金额 - // $liveInSetting = - $data['live_base_fee_help'] = 1000; - $data['physical_help'] = 1000; - $data['heating_help'] = 1000; - $data['bedding_help'] = 1000; - //续住推荐金额 - return $this->response()->success($data); + public function settingFeeConfigStore(Request $request) + { + $data = $request->input(); + + return settings()->adminSetMany($data); } } \ No newline at end of file diff --git a/app/Admin/routes.php b/app/Admin/routes.php index 9681b14..433fbe8 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -31,9 +31,10 @@ Route::group([ $router->get('live-in-feelist', '\App\Admin\Controllers\LiveInController@liveInFeelist'); $router->get('live-fee-form', '\App\Admin\Controllers\OldmenController@liveSchemaForm'); - $router->get('query-fee-help/{oldmen}/{date_range}', '\App\Admin\Controllers\SettingController@queryFeeHelp'); $router->get('live-continue', '\App\Admin\Controllers\LiveContinueController@index'); $router->get('const-setting', '\App\Admin\Controllers\SettingController@settingFeeConfig'); + $router->post('const-setting', '\App\Admin\Controllers\SettingController@settingFeeConfigStore'); + }); diff --git a/database/seeders/KeywordSeeder.php b/database/seeders/KeywordSeeder.php index aa6f20f..e1162ba 100644 --- a/database/seeders/KeywordSeeder.php +++ b/database/seeders/KeywordSeeder.php @@ -41,9 +41,9 @@ class KeywordSeeder extends Seeder ]], ]], ['key' => 'nurse_lv', 'name' => '护理等级', 'value' => '', 'list' => [ - ['key' => 'nurse_lv_1', 'name' => '一级护理', 'type_key' => 'nurse_lv', 'value' => ''], - ['key' => 'nurse_lv_2', 'name' => '二级护理', 'type_key' => 'nurse_lv', 'value' => ''], - ['key' => 'nurse_lv_3', 'name' => '三级护理', 'type_key' => 'nurse_lv', 'value' => ''], + ['key' => 'nurse_lv_1', 'name' => '一级护理', 'type_key' => 'nurse_lv', 'value' => '1'], + ['key' => 'nurse_lv_2', 'name' => '二级护理', 'type_key' => 'nurse_lv', 'value' => '2'], + ['key' => 'nurse_lv_3', 'name' => '三级护理', 'type_key' => 'nurse_lv', 'value' => '3'], ]], ];