完善费用清单

develop
vine_liutk 2023-06-08 18:58:53 +08:00
parent 4525c3e4e9
commit c8c4b65aff
6 changed files with 156 additions and 95 deletions

View File

@ -7,6 +7,7 @@ use Slowlyo\OwlAdmin\Renderers\Page;
use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Controllers\AdminController;
use App\Services\Admin\ConstFlowService;
use Illuminate\Http\Request;
/**
* 费用明细
@ -22,7 +23,6 @@ class ConstFlowController extends AdminController
$crud = $this->baseCRUD()
->filterTogglable(false)
->headerToolbar([
...$this->baseHeaderToolBar()
])
->filter(
$this->baseFilter()->body([
@ -40,7 +40,7 @@ class ConstFlowController extends AdminController
amisMake()->TableColumn('created_at', '办理时间')->type('datetime')->sortable(true),
amisMake()->Operation()->label(__('admin.actions'))->buttons([
$this->showFlow(),
//打印清单
//打印票据
]),
]);
@ -57,10 +57,32 @@ class ConstFlowController extends AdminController
public function showFlow(){
return amisMake()->DialogAction()->icon('fa-regular fa-eye')->label('费用清单')->level('link')->dialog(
amisMake()->Dialog()->title('查看详情')->body([
// \amisMake()->Service()->schemaApi(admin_url('custom-region-tabs?id=${id}'))
])->size('lg')->actions([
//打印--todo
])
\amisMake()->Service()->schemaApi(admin_url('flow-list-tabs?id=${id}'))
])->size('lg')->actions([])
);
}
public function flowExtendList(Request $request)
{
$id = $request->input('id');
$rows = [];
$flow = $this->service->getDetail($id);
$rows = $this->service->makeFeelist($flow);
$page = amisMake()->table()->affixHeader(false)
->data([
'rows' => $rows
])
->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))}')
]);
return $this->response()->success($page);
}
}

View File

@ -167,99 +167,17 @@ class OldmenController extends AdminController
*/
public function liveFeelist(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{
if(is_array($value)){
foreach($value as $item =>$vv){
$_fee = Keyword::where('key', $item)->first();
$rows[] = [
'name' => $_fee->parent->name,
'fee_name' => $_fee->name,
'fee_value' => $vv,
];
}
}else{
$_fee = Keyword::where('key', $key)->first();
$rows[] = [
'name' => $_fee->parent->name,
'fee_name' => $_fee->name,
'fee_value' => $value,
];
}
}
}
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,
'rows'=> $this->service->makeFeelist(ConstFlow::TYPE_IN, $request->input()),
]);
}
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,
'rows'=> $this->service->makeFeelist(ConstFlow::TYPE_EXIT, array_merge($request->input(), [
'oldman_id' => $request->input('oldman_id', 0)
])),
]);
}

View File

@ -43,6 +43,7 @@ Route::group([
//费用设置
$router->resource('consts', \App\Admin\Controllers\ConstFlowController::class)->only(['index', 'show', 'destroy']);
$router->post('flow-list-tabs', '\App\Admin\Controllers\ConstFlowController@flowExtendList');
$router->get('const-setting', '\App\Admin\Controllers\SettingController@settingFeeConfig');
$router->post('const-setting', '\App\Admin\Controllers\SettingController@settingFeeConfigStore');

View File

@ -26,8 +26,8 @@ class ConstFlow extends Model
{
return [
self::TYPE_IN => "<span class='label label-info'>入住缴费</span>",
self::TYPE_CONTINUE => "<span class='label label-success'>续住缴费</span>",
self::TYPE_EXIT => "<span class='label label-warning'>离开结算</span>",
self::TYPE_CONTINUE => "<span class='label label-warning'>续住缴费</span>",
self::TYPE_EXIT => "<span class='label label-danger'>离开结算</span>",
'*'=>'其他:${live_in}'
];
}

View File

@ -19,4 +19,13 @@ class ConstFlowService extends BaseService
protected string $modelFilterName = ConstFlowFilter::class;
protected array $withRelationships = ['oldman'];
public function makeFeelist(ConstFlow $flow)
{
return (new OldmenService())->makeFeelist($flow->const_type, array_merge($flow->extends, [
'oldman_id' => $flow->oldman_id,
'live_in_at' => $flow->start_at,
'avliable_at' => $flow->end_at
]));
}
}

View File

@ -3,8 +3,10 @@
namespace App\Services\Admin;
use App\Models\Oldmen;
use App\Models\Keyword;
use App\Filters\Admin\OldmenFilter;
use App\Models\ConstFlow;
use Illuminate\Support\Arr;
/**
* @method Oldmen getModel()
@ -102,6 +104,115 @@ class OldmenService extends BaseService
return $money;
}
public function makeFeelist($type, $extends = []){
$rows = $addFee = $delFee =[];
$oldMan = Oldmen::find(Arr::get($extends, 'oldman_id', 0));
switch($type){
case ConstFlow::TYPE_EXIT:
if($oldMan){
if(isset($extends['live_in_at']) && $extends['avliable_at']){
$startAt = $extends['live_in_at'];
$endAt = $extends['avliable_at'];
}else{
$startAt = $oldMan->live_in_at;
$endAt = $oldMan->avliable_at;
}
$flowList = ConstFlow::where('oldman_id', $oldMan->id)
->whereIn('const_type', [ConstFlow::TYPE_IN, ConstFlow::TYPE_CONTINUE])
->whereBetween('start_at', [$startAt, $endAt])//开始时间在用户这段时间内的清单
->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 = Arr::get($extends, 'add_extends', []);
if(!$addFee){
$addFee = Arr::get($extends, 'add_fee', []);
}
$delFee = Arr::get($extends, 'del_extends', []);
if(!$delFee){
$delFee = Arr::get($extends, 'del_fee', []);
}
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'],
];
}
}
break;
default:
unset($extends['oldman_id'], $extends['live_in_at'], $extends['avliable_at']);
foreach($extends as $key => $value){
if(in_array($key, ['add_extends', 'add_fee'])){
if(is_array($value)){
$addFee = $value;
}
}elseif(in_array($key, ['del_extends', 'del_fee'])){
if(is_array($value)){
$delFee = $value;
}
}else{
if(is_array($value)){
foreach($value as $item =>$vv){
$_fee = Keyword::where('key', $item)->first();
$rows[] = [
'name' => $_fee->parent?->name ?? '',
'fee_name' => $_fee->name,
'fee_value' => $vv,
];
}
}else{
$_fee = Keyword::where('key', $key)->first();
$rows[] = [
'name' => $_fee->parent?->name ?? '',
'fee_name' => $_fee->name,
'fee_value' => $value,
];
}
}
}
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'],
];
}
}
break;
}
return $rows;
}
/**
* 删除
*