diff --git a/app/Admin/Controllers/ConstFlowController.php b/app/Admin/Controllers/ConstFlowController.php index 878271c..167a8bb 100644 --- a/app/Admin/Controllers/ConstFlowController.php +++ b/app/Admin/Controllers/ConstFlowController.php @@ -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); + } } diff --git a/app/Admin/Controllers/OldmenController.php b/app/Admin/Controllers/OldmenController.php index b3e23c5..84ccc63 100644 --- a/app/Admin/Controllers/OldmenController.php +++ b/app/Admin/Controllers/OldmenController.php @@ -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) + ])), ]); } diff --git a/app/Admin/routes.php b/app/Admin/routes.php index 6229d80..90c0b7a 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -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'); diff --git a/app/Models/ConstFlow.php b/app/Models/ConstFlow.php index 2082c2f..ec635cc 100644 --- a/app/Models/ConstFlow.php +++ b/app/Models/ConstFlow.php @@ -26,8 +26,8 @@ class ConstFlow extends Model { return [ self::TYPE_IN => "入住缴费", - self::TYPE_CONTINUE => "续住缴费", - self::TYPE_EXIT => "离开结算", + self::TYPE_CONTINUE => "续住缴费", + self::TYPE_EXIT => "离开结算", '*'=>'其他:${live_in}' ]; } diff --git a/app/Services/Admin/ConstFlowService.php b/app/Services/Admin/ConstFlowService.php index 83b4222..79fd7a8 100644 --- a/app/Services/Admin/ConstFlowService.php +++ b/app/Services/Admin/ConstFlowService.php @@ -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 + ])); + } } diff --git a/app/Services/Admin/OldmenService.php b/app/Services/Admin/OldmenService.php index 80ee2d6..af7ef69 100644 --- a/app/Services/Admin/OldmenService.php +++ b/app/Services/Admin/OldmenService.php @@ -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; + } + /** * 删除 *