253 lines
15 KiB
PHP
253 lines
15 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Admin\Components;
|
|
use App\Models\{Keyword,Oldmen};
|
|
use Slowlyo\OwlAdmin\Renderers\Page;
|
|
use Slowlyo\OwlAdmin\Renderers\Form;
|
|
use Slowlyo\OwlAdmin\Renderers\TableColumn;
|
|
use Slowlyo\OwlAdmin\Controllers\AdminController;
|
|
use App\Services\Admin\LiveInService;
|
|
use Illuminate\Http\Request;
|
|
|
|
class LiveInController extends AdminController
|
|
{
|
|
protected string $serviceName = LiveInService::class;
|
|
|
|
public function list(): Page
|
|
{
|
|
$crud = $this->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, '入住');
|
|
}
|
|
}
|