baseCRUD() ->filterTogglable(false) ->headerToolbar([ ...$this->baseHeaderToolBar(), ]) ->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', 'id'))->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', 'id'))->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), amisMake()->Operation()->label(__('admin.actions'))->buttons([ ]), ]); return $this->baseList($crud); } public function form(): Form { return $this->baseForm()->body([ ]); } 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.'}'; } foreach(Keyword::getByParentKey('bonds_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()->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('确认入住')->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); } }