添加结算表单动作
parent
828da9b5ac
commit
c925a3bcf6
|
|
@ -206,7 +206,7 @@ class LiveContinueController extends AdminController
|
|||
)->api([
|
||||
'method'=>'get',
|
||||
'data'=> $feeKeys,
|
||||
'url' =>admin_url('feelist')
|
||||
'url' =>admin_url('live-feelist')
|
||||
]),
|
||||
]),
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,186 @@
|
|||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
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\LiveContinueService;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Admin\Components;
|
||||
|
||||
class LiveExitController extends AdminController
|
||||
{
|
||||
protected string $serviceName = LiveContinueService::class;
|
||||
|
||||
|
||||
public function form(): Form
|
||||
{
|
||||
return $this->baseForm()->body([
|
||||
|
||||
]);
|
||||
}
|
||||
|
||||
public function doForm(){
|
||||
|
||||
$feeKeys =[];
|
||||
$feeKeys['oldman_id'] = '${oldman_id}';
|
||||
$feeKeys['add_extends'] = '${add_extends}';
|
||||
$feeKeys['del_extends'] = '${del_extends}';
|
||||
|
||||
$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-continue-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_LIVE),
|
||||
'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()->GroupControl()->body([
|
||||
amisMake()->RadiosControl('nurse_lv', '护理等级')->options(Keyword::getByParentKey('nurse_lv')->pluck('name', 'value'))->disabled(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-const-flow').'?oldman_id=${oldman_id}',
|
||||
])
|
||||
),
|
||||
),
|
||||
|
||||
amisMake()->FieldSetControl()->className('mt-10')->title('附加项')->collapsable(true)->body([
|
||||
amisMake()->ComboControl('del_extends','收费项')->multiple(true)->items([
|
||||
amisMake()->TextControl('name', '名称'),
|
||||
Components::make()->decimalControl('fee', '金额')
|
||||
]),
|
||||
amisMake()->ComboControl('add_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('exit-feelist')
|
||||
]),
|
||||
]),
|
||||
|
||||
]),
|
||||
]),
|
||||
)
|
||||
),
|
||||
]);
|
||||
|
||||
return $this->response()->success($page);
|
||||
}
|
||||
|
||||
public function do(Request $request){
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -215,7 +215,7 @@ class LiveInController extends AdminController
|
|||
)->api([
|
||||
'method'=>'get',
|
||||
'data'=> $feeKeys,
|
||||
'url' =>admin_url('feelist')
|
||||
'url' =>admin_url('live-feelist')
|
||||
]),
|
||||
]),
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ use Slowlyo\OwlAdmin\Controllers\AdminController;
|
|||
use App\Services\Admin\OldmenService;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Admin\Components;
|
||||
use App\Models\ConstFlow;
|
||||
use App\Models\Oldmen;
|
||||
use Carbon\Carbon;
|
||||
|
||||
/**
|
||||
|
|
@ -154,8 +156,11 @@ class OldmenController extends AdminController
|
|||
return $this->response()->success($page);
|
||||
}
|
||||
|
||||
|
||||
public function feelist(Request $request){
|
||||
/**
|
||||
* 生成结算费用清单
|
||||
*/
|
||||
public function liveFeelist(Request $request)
|
||||
{
|
||||
$rows = $addFee = $delFee = [];
|
||||
foreach($request->input() as $key => $value){
|
||||
if($key == 'add_extends'){
|
||||
|
|
@ -209,6 +214,53 @@ class OldmenController extends AdminController
|
|||
]);
|
||||
}
|
||||
|
||||
public function exitFeelist(Request $request)
|
||||
{
|
||||
$rows = $addFee = $delFee = [];
|
||||
$oldMan = Oldmen::find($request->input('oldman_id', 0));
|
||||
if($oldMan){
|
||||
$flowList = ConstFlow::where('oldman_id', $oldMan->id)
|
||||
->whereIn('const_type', [ConstFlow::TYPE_IN, ConstFlow::TYPE_CONTINUE])
|
||||
->whereBetween('start_at', [$oldMan->live_in_at, $oldMan->avliable_at])//开始时间在用户这段时间内的清单
|
||||
->get();
|
||||
foreach($flowList as $flow){
|
||||
$rows[] = [
|
||||
'name' => '缴费记录',
|
||||
'fee_name' => ConstFlow::typeMap()[$flow->const_type].'【'.$flow->created_at->format('m-d H:i:s').'】',
|
||||
'fee_value' => $flow->money,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
$addFee = $request->input('add_extends') ?? [];
|
||||
$delFee = $request->input('del_extends') ?? [];
|
||||
foreach($addFee as $item){
|
||||
if(isset($item['name']) && isset($item['fee'])){
|
||||
$rows[] = [
|
||||
'name' => '抵扣项',
|
||||
'fee_name' => $item['name'],
|
||||
'fee_value' => $item['fee'],
|
||||
];
|
||||
}
|
||||
}
|
||||
foreach($delFee as $item){
|
||||
if(isset($item['name']) && isset($item['fee'])){
|
||||
$rows[] = [
|
||||
'name' => '收费项',
|
||||
'fee_name' => $item['name'],
|
||||
'fee_value' => 0-$item['fee'],
|
||||
];
|
||||
}
|
||||
}
|
||||
return $this->response()->success([
|
||||
'rows'=> $rows,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 费用表单
|
||||
*
|
||||
*/
|
||||
public function liveSchemaForm(Request $request)
|
||||
{
|
||||
$type = $request->input('type', 'live_fee');
|
||||
|
|
@ -266,4 +318,94 @@ class OldmenController extends AdminController
|
|||
|
||||
return $this->response()->success($feeArr);
|
||||
}
|
||||
|
||||
/**
|
||||
* 已缴费明细清单
|
||||
*/
|
||||
public function liveConstFlow(Request $request)
|
||||
{
|
||||
$page = [];
|
||||
$oldMan = Oldmen::find($request->input('oldman_id', 0));
|
||||
if($oldMan){
|
||||
$flowList = ConstFlow::where('oldman_id', $oldMan->id)
|
||||
->whereIn('const_type', [ConstFlow::TYPE_IN, ConstFlow::TYPE_CONTINUE])
|
||||
->whereBetween('start_at', [$oldMan->live_in_at, $oldMan->avliable_at])//开始时间在用户这段时间内的清单
|
||||
->get();
|
||||
$tableList = [];
|
||||
foreach($flowList as $flow){
|
||||
$_feeInfo = $_bonusInfo = $_addInfo = $_delInfo = '';
|
||||
|
||||
foreach($flow->extends as $_feeKey => $_feeArr){
|
||||
$_money = 0;
|
||||
switch($_feeKey){
|
||||
case 'live_fee':
|
||||
case 'continue_fee':
|
||||
foreach($_feeArr as $k => $v){
|
||||
$_fee = Keyword::where('key', $k)->first();
|
||||
$_feeInfo.= '【'.$_fee->name.'】'.$v.'元,';
|
||||
$_money = bcadd($_money, $v, 2);
|
||||
}
|
||||
$_feeInfo = mb_substr($_feeInfo, 0, -1);
|
||||
$_feeInfo = $_money.'元:'.$_feeInfo;
|
||||
break;
|
||||
case 'bonds_fee':
|
||||
foreach($_feeArr as $k => $v){
|
||||
$_fee = Keyword::where('key', $k)->first();
|
||||
$_bonusInfo.= '【'.$_fee->name.'】'.$v.'元,';
|
||||
$_money = bcadd($_money, $v, 2);
|
||||
}
|
||||
$_bonusInfo = mb_substr($_bonusInfo, 0, -1);
|
||||
$_bonusInfo = $_money.'元:'.$_bonusInfo;
|
||||
break;
|
||||
case 'add_fee':
|
||||
foreach($_feeArr as $k => $_fee){
|
||||
$_addInfo.= '【'.$_fee["name"].'】'.$_fee["fee"].'元,';
|
||||
$_money = bcadd($_money, $_fee["fee"], 2);
|
||||
}
|
||||
$_addInfo = mb_substr($_addInfo, 0, -1);
|
||||
$_addInfo = $_money.'元:'.$_addInfo;
|
||||
break;
|
||||
case 'del_fee':
|
||||
foreach($_feeArr as $k => $_fee){
|
||||
$_delInfo.= '【'.$_fee["name"].'】-'.$_fee["fee"].'元,';
|
||||
$_money = bcsub($_money, $_fee["fee"], 2);
|
||||
}
|
||||
$_delInfo = mb_substr($_delInfo, 0, -1);
|
||||
$_delInfo = $_money.'元:'.$_delInfo;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$tableList[] = [
|
||||
'type' => ConstFlow::typeMap()[$flow->const_type],//类别
|
||||
'money'=> $flow->money,//金额(含保证金)
|
||||
'date_range' => Carbon::parse($flow->start_at)->format('Y-m-d').' 至 '.Carbon::parse($flow->end_at)->format('Y-m-d'),//时间区间
|
||||
'flow_at'=>$flow->created_at->format('Y-m-d H:i:s'),//办理时间
|
||||
'fee_info'=>$_feeInfo,//费用明细,
|
||||
'bonus_info'=>$_bonusInfo,
|
||||
'add_info'=>$_addInfo,//收费项
|
||||
'del_info'=>$_delInfo,//抵扣项
|
||||
];
|
||||
}
|
||||
$page = amisMake()->table()
|
||||
->className('m-b-none')->columnsTogglable(false)
|
||||
->data([
|
||||
'rows' => $tableList
|
||||
])
|
||||
->source('${rows}')
|
||||
->footable([
|
||||
'expand'=>'first'
|
||||
])->columns([
|
||||
amisMake()->TableColumn()->name('type')->label('缴费类型'),
|
||||
amisMake()->TableColumn()->name('money')->label('缴费金额'),
|
||||
amisMake()->TableColumn()->name('flow_at')->label('办理时间'),
|
||||
amisMake()->TableColumn()->name('date_range')->label('有效时间')->breakpoint("*"),
|
||||
amisMake()->TableColumn()->name('fee_info')->label('费用明细')->breakpoint("*"),
|
||||
amisMake()->TableColumn()->name('bonus_info')->label('保证金')->breakpoint("*"),
|
||||
amisMake()->TableColumn()->name('add_info')->label('附加-收费项')->breakpoint("*"),
|
||||
amisMake()->TableColumn()->name('del_info')->label('附加-抵扣项')->breakpoint("*"),
|
||||
]);
|
||||
}
|
||||
return $this->response()->success($page);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,8 +25,10 @@ Route::group([
|
|||
|
||||
//客人管理
|
||||
$router->resource('oldmen', \App\Admin\Controllers\OldmenController::class)->names('oldmen');
|
||||
$router->get('feelist', '\App\Admin\Controllers\OldmenController@feelist');
|
||||
$router->get('live-feelist', '\App\Admin\Controllers\OldmenController@liveFeelist');
|
||||
$router->get('exit-feelist', '\App\Admin\Controllers\OldmenController@exitFeelist');
|
||||
$router->get('live-fee-form', '\App\Admin\Controllers\OldmenController@liveSchemaForm');
|
||||
$router->get('live-const-flow', '\App\Admin\Controllers\OldmenController@liveConstFlow');
|
||||
//客人-入住
|
||||
$router->get('live-in', '\App\Admin\Controllers\LiveInController@index');
|
||||
$router->get('live-in-do', '\App\Admin\Controllers\LiveInController@doForm');
|
||||
|
|
@ -35,6 +37,10 @@ Route::group([
|
|||
$router->get('live-continue', '\App\Admin\Controllers\LiveContinueController@index');
|
||||
$router->get('live-continue-do', '\App\Admin\Controllers\LiveContinueController@doForm');
|
||||
$router->post('live-continue-do', '\App\Admin\Controllers\LiveContinueController@do');
|
||||
|
||||
$router->get('live-exit-do', '\App\Admin\Controllers\LiveExitController@doForm');
|
||||
$router->post('live-exit-do', '\App\Admin\Controllers\LiveExitController@do');
|
||||
|
||||
//费用设置
|
||||
$router->get('const-setting', '\App\Admin\Controllers\SettingController@settingFeeConfig');
|
||||
$router->post('const-setting', '\App\Admin\Controllers\SettingController@settingFeeConfigStore');
|
||||
|
|
|
|||
|
|
@ -13,6 +13,15 @@ class ConstFlow extends Model
|
|||
public const TYPE_CONTINUE = 2; //续住
|
||||
public const TYPE_EXIT = 3; //结算
|
||||
|
||||
public static function typeMap()
|
||||
{
|
||||
return [
|
||||
self::TYPE_IN => '入住缴费',
|
||||
self::TYPE_CONTINUE => '续住缴费',
|
||||
self::TYPE_EXIT => '离开结算',
|
||||
];
|
||||
}
|
||||
|
||||
protected $casts = [
|
||||
'extends' => 'array',
|
||||
];
|
||||
|
|
|
|||
Loading…
Reference in New Issue