From 2a00cf2dd6ab9739dae8aba1d59b88436d1f9a89 Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Wed, 31 May 2023 12:09:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=85=A5=E4=BD=8F=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E6=A0=B7=E5=BC=8F=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Controllers/LiveInController.php | 206 ++++++++++++++++++++ app/Admin/Controllers/OldmenController.php | 60 +++++- app/Admin/Controllers/SettingController.php | 23 ++- app/Admin/routes.php | 7 + app/Filters/Admin/OldmenFilter.php | 7 + 5 files changed, 300 insertions(+), 3 deletions(-) diff --git a/app/Admin/Controllers/LiveInController.php b/app/Admin/Controllers/LiveInController.php index 8e6fc90..b4059b3 100644 --- a/app/Admin/Controllers/LiveInController.php +++ b/app/Admin/Controllers/LiveInController.php @@ -2,6 +2,7 @@ namespace App\Admin\Controllers; +use App\Admin\Components; use App\Models\Keyword; use Slowlyo\OwlAdmin\Renderers\Page; use Slowlyo\OwlAdmin\Renderers\Form; @@ -54,4 +55,209 @@ class LiveInController extends AdminController ]); } + + public function doForm(){ + + $feeArr = $helpMsg = $feeKeys =[]; + $targetStr = ''; + + $targetStr .= 'add_extends=${add_extends}'; + $feeKeys['add_extends'] = '${add_extends}'; + + $targetStr .= '&del_extends=${del_extends}'; + $feeKeys['del_extends'] = '${del_extends}'; + + foreach(Keyword::getByParentKey('live_fee') as $fee){ + $targetStr .= '&'.$fee->key.'=${'.$fee->key.'}'; + $feeKeys[$fee->key] = '${'.$fee->key.'}'; + } + $page = $this->basePage()->body([ + amisMake()->Card()->className('border-0')->body( + amisMake()->Wrapper()->className('p-0')->body( + amisMake()->Grid()->columns([ + amisMake()->Wrapper()->sm(8)->body([ + amisMake()->Panel()->title('入住表单')->body( + amisMake()->form()->title('')->panelClassName('border-0')->mode('horizontal')->name('base_form') + ->data(array_merge([ + + ], $helpMsg)) + ->api(admin_url('live-in-do')) + ->body([ + amisMake()->FieldSetControl()->title('入住人信息')->collapsable(true)->body([ + amisMake()->Service()->api([ + "method"=>'get', + "url" => admin_url('oldmen/${oldman_id}/edit'), + "data"=>[ + '_action' => 'getData', + ], + "sendOn" => "this.oldman_id > 0 " + ]), + amisMake()->GroupControl()->body([ + amisMake()->PickerControl('oldman_id', '姓名') + ->valueField('id') + ->labelField('name') + ->joinValues(false)->extractValue(true) + ->size('lg') + ->source([ + 'method' => 'get', + 'url' => admin_url('oldmen?_action=getData'), + 'data' => [ + 'name'=>'${term}', + ] + ]) + ->pickerSchema( + [ + 'mode' => 'table', + 'name' => 'monitor_list', + 'headerToolbar' => amisMake()->form() + ->wrapWithPanel(false) + ->className('text-right') + ->target('monitor_list') + ->mode('inline') + ->body([ + amisMake()->TextControl('term', '姓名/身份证号')->addOn( + amis('submit')->label(__('admin.search'))->level('primary') + ) + ]), + 'columns' => [ + TableColumn::make()->name('name')->label('姓名'), + TableColumn::make()->name('card_no')->label('身份证号码'), + ] + ] + )->value(0) + ->required(true), + + amisMake()->RadiosControl('sex', '性别')->options([ + 1=>'男',2=>'女' + ])->disabled(true), + ]), + amisMake()->GroupControl()->body([ + amisMake()->TextControl('card_no', '身份证号码')->disabled(true), + amisMake()->DateControl('birthday', '出生日期')->format('YYYY-MM-DD')->disabled(true), + ]), + + amisMake()->GroupControl()->body([ + 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()->FieldSetControl()->className('mt-10')->title('费用明细')->collapsable(true)->body( + amisMake()->Service()->schemaApi([ + "method"=>'get', + "url" => admin_url('live-fee-form').'?nurse_lv=${nurse_lv}&live_in_date=${live_in_date}', + ]) + ), + + amisMake()->FieldSetControl()->className('mt-10')->title('附加项')->collapsable(true)->body([ + amisMake()->ComboControl('add_extends','收费项')->multiple(true)->items([ + amisMake()->TextControl('name', '名称'), + Components::make()->decimalControl('fee', '金额') + ]), + amisMake()->ComboControl('del_extends','抵扣项')->multiple(true)->items([ + amisMake()->TextControl('name', '名称'), + Components::make()->decimalControl('fee', '金额') + ]), + ]), + ]) + ->actions([ + amis('button')->label("生成清单")->level('primary') + ->onEvent([ + 'click'=>[ + 'actions'=>[ + [ + 'actionType'=>'reload', + 'componentId'=>'fee_table' + ], + [ + 'actionType'=>'setValue', + 'componentId'=>'fee_table', + 'args'=>[ + 'value'=> $feeKeys + ] + ] + ] + ] + ]), + amis('submit')->label('确认入住')->level('danger'), + ]), + ), + ]), + amisMake()->Wrapper()->sm(4)->body([ + amisMake()->Panel()->title('结算清单')->body([ + amisMake()->Service()->name('fee_table_name')->id('fee_table') + ->data($feeKeys) + ->body( + amisMake()->table()->affixHeader(false) + ->title('') + ->source('${rows}') + ->combineNum(2) + ->columns([ + amisMake()->TableColumn()->name('name')->label('名称'), + amisMake()->TableColumn()->name('fee_name')->label('费用项'), + amisMake()->TableColumn()->name('fee_value')->label('费用'), + ])->affixRow([ + amis('text')->text('合计')->colSpan(2), + amis('tpl')->tpl('${SUM(ARRAYMAP(rows, item => item.fee_value))}') + ]), + )->api([ + 'method'=>'get', + 'data'=> $feeKeys, + 'url' =>admin_url('live-in-feelist') + ]), + ]), + ]), + ]), + ) + ), + ]); + + return $this->response()->success($page); + } + + public function liveInFeelist(Request $request){ + $rows = $addFee = $delFee = []; + foreach($request->input() as $key => $value){ + if($key == 'add_extends'){ + if(is_array($value)){ + $addFee = $value; + } + }elseif($key == 'del_extends'){ + if(is_array($value)){ + $delFee = $value; + } + }else{ + $_fee = Keyword::where('key', $key)->first(); + $rows[] = [ + 'name' => $_fee->parent->name, + 'fee_name' => $_fee->name, + 'fee_value' => $value, + ]; + } + } + foreach($addFee as $item){ + $rows[] = [ + 'name' => '收费项', + 'fee_name' => $item['name'], + 'fee_value' => $item['fee'], + ]; + } + foreach($delFee as $item){ + $rows[] = [ + 'name' => '抵扣项', + 'fee_name' => $item['name'], + 'fee_value' => 0-$item['fee'], + ]; + } + return $this->response()->success([ + 'rows'=> $rows, + ]); + } + + public function do(Request $request){ + dd($request); + } } diff --git a/app/Admin/Controllers/OldmenController.php b/app/Admin/Controllers/OldmenController.php index 5b85c8d..c0e1451 100644 --- a/app/Admin/Controllers/OldmenController.php +++ b/app/Admin/Controllers/OldmenController.php @@ -9,6 +9,8 @@ use Slowlyo\OwlAdmin\Renderers\TableColumn; use Slowlyo\OwlAdmin\Renderers\TextControl; use Slowlyo\OwlAdmin\Controllers\AdminController; use App\Services\Admin\OldmenService; +use Illuminate\Http\Request; +use App\Admin\Components; /** * @property OldmenService $service @@ -19,6 +21,12 @@ class OldmenController extends AdminController protected string $pageTitle = '客人管理'; + public function options(){ + $list = $this->service->listQuery()->select(['id as value', 'name as label'])->get(); + + return $this->response()->success($list); + } + public function list(): Page { $crud = $this->baseCRUD() @@ -80,7 +88,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.id > 0'), + amisMake()->RadiosControl('nurse_lv', '护理等级')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'id'))->required(true)->disabledOn('data.live_in > 0'), ]), amisMake()->FieldSetControl()->className('mt-10')->title('委托人信息')->collapsable(true)->body([ amisMake()->GroupControl()->body([ @@ -103,4 +111,54 @@ class OldmenController extends AdminController TextControl::make()->static()->name('updated_at')->label(__('admin.updated_at')) ]); } + + /** + * 获取编辑页面 + * + * @param $id + * + * @return JsonResponse|JsonResource + * @throws ContainerExceptionInterface + * @throws NotFoundExceptionInterface + */ + public function edit($id) + { + $this->isEdit = true; + + if ($this->actionOfGetData()) { + $data = null; + if($id){ + $data = $this->service->getEditData($id); + } + return $this->response()->success($data); + } + + $form = amisMake() + ->Card() + ->className('base-form') + ->header(['title' => __('admin.edit')]) + ->toolbar([$this->backButton()]) + ->body( + $this->form(true)->api($this->getUpdatePath())->initApi($this->getEditGetDataPath()) + ); + + $page = $this->basePage()->body($form); + + return $this->response()->success($page); + } + + public function liveSchemaForm(Request $request) + { + $type = $request->input('type', 'live_fee'); + + foreach(Keyword::getByParentKey($type) as $fee){ + $_feeValue = 0; + if($fee == 'live_base_fee'){ + + } + $feeArr[] = Components::make()->decimalControl($fee->key, $fee->name)->description(amis('tpl')->tpl('根据当前护理等级,建议费用为:'.$_feeValue)); + } + + return $this->response()->success($feeArr); + } } diff --git a/app/Admin/Controllers/SettingController.php b/app/Admin/Controllers/SettingController.php index e24c4f1..a717a91 100644 --- a/app/Admin/Controllers/SettingController.php +++ b/app/Admin/Controllers/SettingController.php @@ -6,6 +6,7 @@ use Illuminate\Http\Request; use Slowlyo\OwlAdmin\Renderers\Tab; use Slowlyo\OwlAdmin\Renderers\Tabs; use Slowlyo\OwlAdmin\Controllers\AdminController; +use App\Models\Oldmen; class SettingController extends AdminController { @@ -22,6 +23,12 @@ class SettingController extends AdminController public function form() { + // dd([ + // 'a'=> + // amis('object')->title('养老费')->additionalProperties(false)->properties([ + // 'year'=>amis('number')->title('年') + // ]), + // ]); return $this->baseForm() ->redirect('') ->api($this->getStorePath()) @@ -32,8 +39,8 @@ class SettingController extends AdminController Tabs::make()->tabs([ Tab::make()->title('基本设置')->body([ amisMake()->NumberControl('live_continue_day','续住提醒')->value(0)->size('lg')->description('设置该项,提前对应天数在续住列表中显示提醒;0天则直到欠费才提醒'), - ]) - ]) + ]), + ]), ); } @@ -45,4 +52,16 @@ class SettingController extends AdminController return settings()->adminSetMany($data); } + + 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); + } } \ No newline at end of file diff --git a/app/Admin/routes.php b/app/Admin/routes.php index 1a90fd2..5547f54 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -13,6 +13,7 @@ Route::group([ 'prefix' => 'api', ], function (Router $router) { $router->get('keywords/tree-list', '\App\Admin\Controllers\KeywordController@getTreeList')->name('api.keywords.tree-list'); + $router->get('oldmen/options', [\App\Admin\Controllers\OldmenController::class, 'options'])->name('api.oldmen.options'); }); $router->resource('dashboard', \App\Admin\Controllers\HomeController::class); @@ -25,6 +26,12 @@ Route::group([ $router->resource('oldmen', \App\Admin\Controllers\OldmenController::class)->names('oldmen'); $router->get('live-in', '\App\Admin\Controllers\LiveInController@index'); + $router->get('live-in-do', '\App\Admin\Controllers\LiveInController@doForm'); + $router->post('live-in-do', '\App\Admin\Controllers\LiveInController@do'); + $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'); }); diff --git a/app/Filters/Admin/OldmenFilter.php b/app/Filters/Admin/OldmenFilter.php index 51c0a96..31623d9 100644 --- a/app/Filters/Admin/OldmenFilter.php +++ b/app/Filters/Admin/OldmenFilter.php @@ -34,4 +34,11 @@ class OldmenFilter extends ModelFilter return $this->where('nurse_lv', $nurseLv); } } + + public function term($term){ + return $this->where(function($q) use ($term) { + return $q->where('name', 'like', '%'.$term.'%') + ->orWhere('card_no', 'like', $term.'%'); + }); + } }