baseCRUD() ->filterTogglable(false) ->headerToolbar([ amis('button')->label('入住')->icon('fa fa-plus')->actionType('link')->level('primary')->link('live-in-do'), ]) ->filter( $this->baseFilter()->body([ 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', 'value'))->checkAll(true)->multiple(true)->size('md'), amis('button')->label(__('admin.reset'))->actionType('clear-and-submit'), amis('submit')->label(__('admin.search'))->level('primary'), ])->actions([]) ) ->columns([ // TableColumn::make()->name('id')->label('ID')->sortable(), TableColumn::make()->name('name')->label('姓名'), 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', '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), TableColumn::make()->name('avliable_at')->label('截至时间')->type('datetime')->sortable(true), amisMake()->Operation()->label(__('admin.actions'))->buttons([ amisMake()->LinkAction()->label('续住')->icon('fa fa-plus')->link('live-continue-do?oldman_id=${id}')->level('link'), amisMake()->LinkAction()->label('结算')->icon('fa fa-external-link-alt')->link('live-exit-do?oldman_id=${id}')->level('link') ]), ]); return $this->baseList($crud); } public function form(): Form { return $this->baseForm()->body([ ]); } public function doForm(){ $feeKeys =[]; $feeKeys['add_extends'] = '${add_extends}'; $feeKeys['del_extends'] = '${del_extends}'; $feeKeys['live_fee'] = '${live_fee}'; $feeKeys['bonds_fee'] = '${bonds_fee}'; // foreach(Keyword::getByParentKey('live_fee') as $fee){ // $feeKeys[$fee->key] = '${'.$fee->key.'}'; // } // foreach(Keyword::getByParentKey('bonds_fee') as $fee){ // $feeKeys[$fee->key] = '${'.$fee->key.'}'; // } $page = $this->basePage()->body([ amisMake()->Card()->className('border-0')->body( amisMake()->Wrapper()->className('p-0')->body( amisMake()->Grid()->className('relative')->columns([ amisMake()->Wrapper()->sm(8)->body([ amisMake()->Panel()->title('入住表单')->body( amisMake()->form()->title('')->panelClassName('border-0')->mode('horizontal')->name('base_form') ->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&live_in='.Oldmen::STATUS_NORMAL), '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', 'value'))->disabled(true), amisMake()->DateRangeControl('live_in_date', '入住时间')->format('YYYY-MM-DD')->ranges([ '1monthslater','3monthslater','6monthslater','1yearslater', ])->required(true)->description('先选择结束时间,再选择开始时间'), ]), amisMake()->FieldSetControl()->className('mt-10')->title('费用明细')->collapsable(true)->body([ amisMake()->FieldSetControl()->title('基础费用')->className('mt-5')->collapsable(true)->size('base')->body( amisMake()->Service()->schemaApi([ "method"=>'get', "url" => admin_url('live-fee-form').'?nurse_lv=${nurse_lv}&live_in_date=${live_in_date}&type=live_fee', ]) ), amisMake()->FieldSetControl()->title('保证金')->className('mt-5')->collapsable(true)->size('base')->body( amisMake()->Service()->schemaApi([ "method"=>'get', "url" => admin_url('live-fee-form').'?nurse_lv=${nurse_lv}&live_in_date=${live_in_date}&type=bonds_fee', ]) ), ]), // 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('确认入住')->confirmText('是否确认入住,并且已查看入住清单?') ->redirect('live-in') ->level('danger'), ]), ), ]), amisMake()->Wrapper()->sm(4)->className('absolute bottom-20 w-2/6')->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-feelist') ]), ]), ]), ]), ) ), ]); return $this->response()->success($page); } public function do(Request $request) { $oldManId = $request->input('oldman_id'); $dateRange = $request->input('live_in_date', ''); $startDay = $dateRange ? explode(',', $dateRange)[0].' 00:00:00' : null; $endDay = $dateRange ? explode(',', $dateRange)[1].' 23:59:59' : null; $liveFee = $request->input('live_fee', []); $bondsFee = $request->input('bonds_fee', []); // $addFee = $request->input('add_extends', []); // $delFee = $request->input('del_extends', []); $res = $this->service->do($oldManId, $startDay, $endDay, [ 'live_fee' => $liveFee, 'bonds_fee' => $bondsFee, ]); return $this->autoResponse($res, '入住'); } }