【シール発行履歴】ソート機能追加
All checks were successful
Deploy main / deploy (push) Successful in 24s

This commit is contained in:
你的名字 2025-09-05 20:13:05 +09:00
parent 7913f58d19
commit 277631c23a
4 changed files with 108 additions and 16 deletions

View File

@ -10,14 +10,61 @@ class SealsController extends Controller
{ {
public function list(Request $request) public function list(Request $request)
{ {
// ソート用パラメータを取得(デフォルト値を設定 // ソート用パラメータ取得指定がなければnull
$sort = $request->input('sort', 'seal_issueid'); $sort = $request->input('sort');
$sort_type = $request->input('sort_type', 'desc'); $sort_type = $request->input('sort_type', 'asc');
// sealテーブルを参照し、ソート // sealテーブルを参照し、フィルター
$list = DB::table('seal') $query = DB::table('seal');
->orderBy($sort, $sort_type)
->paginate(20); // フィルター:発行日
$periodType = $request->input('period_type');
$recentPeriod = $request->input('recent_period');
$sealDayFrom = $request->input('seal_day_from');
$sealDayTo = $request->input('seal_day_to');
if ($periodType === 'range' && $sealDayFrom && $sealDayTo) {
$query->whereBetween('seal_day', [$sealDayFrom, $sealDayTo]);
} elseif ($periodType === 'recent' && $recentPeriod) {
$now = date('Y-m-d');
switch ($recentPeriod) {
case '12m':
$from = date('Y-m-d', strtotime('-12 months', strtotime($now)));
break;
case '6m':
$from = date('Y-m-d', strtotime('-6 months', strtotime($now)));
break;
case '3m':
$from = date('Y-m-d', strtotime('-3 months', strtotime($now)));
break;
case '2m':
$from = date('Y-m-d', strtotime('-2 months', strtotime($now)));
break;
case '1m':
$from = date('Y-m-d', strtotime('-1 months', strtotime($now)));
break;
case '1w':
$from = date('Y-m-d', strtotime('-1 week', strtotime($now)));
break;
default:
$from = null;
}
if (isset($from)) {
$query->where('seal_day', '>=', $from);
}
} else {
// デフォルト直近3ヶ月
$now = date('Y-m-d');
$from = date('Y-m-d', strtotime('-3 months', strtotime($now)));
$query->where('seal_day', '>=', $from);
}
// ソート指定があればorderBy、なければDB物理順
if ($sort) {
$list = $query->orderBy($sort, $sort_type)->paginate(20);
} else {
$list = $query->paginate(20);
}
return view('admin.seals.list', [ return view('admin.seals.list', [
'list' => $list, 'list' => $list,

View File

@ -22,10 +22,10 @@ class TagissueController extends Controller
->select('user_name', 'user_regident_zip', 'user_regident_pre') ->select('user_name', 'user_regident_zip', 'user_regident_pre')
->get(); ->get();
// PDF生成Laravel-dompdf使用例 // PDF生成Laravel-dompdf使用例
$pdfHtml = view('admin.tag_issue.pdf_labels', ['users' => $users])->render(); $pdfHtml = view('admin.tag_issue.pdf_labels', ['users' => $users])->render();
$pdf = \PDF::loadHTML($pdfHtml); $pdf = Pdf::setOptions(['isRemoteEnabled' => true])->loadHTML($pdfHtml);
return $pdf->download('tag_labels.pdf'); return $pdf->download('tag_labels.pdf');
} }
public function list(Request $request) public function list(Request $request)
{ {

View File

@ -83,12 +83,47 @@
<table class="table table-bordered table-hover table-sm"> <table class="table table-bordered table-hover table-sm">
<thead class="thead-light"> <thead class="thead-light">
<tr> <tr>
<th>シール発行履歴ID</th> <th>
<th>シール発行駐輪場</th> <a href="{{ route('seals', array_merge(request()->all(), ['sort' => 'seal_issueid', 'sort_type' => ($sort === 'seal_issueid' && $sort_type === 'asc') ? 'desc' : 'asc'])) }}">
<th>定期契約ID</th> シール発行履歴ID
@if($sort === 'seal_issueid')
<i class="fa fa-sort-{{ $sort_type }}"></i>
@endif
</a>
</th>
<th>
<a href="{{ route('seals', array_merge(request()->all(), ['sort' => 'park_id', 'sort_type' => ($sort === 'park_id' && $sort_type === 'asc') ? 'desc' : 'asc'])) }}">
シール発行駐輪場
@if($sort === 'park_id')
<i class="fa fa-sort-{{ $sort_type }}"></i>
@endif
</a>
</th>
<th>
<a href="{{ route('seals', array_merge(request()->all(), ['sort' => 'contract_id', 'sort_type' => ($sort === 'contract_id' && $sort_type === 'asc') ? 'desc' : 'asc'])) }}">
定期契約ID
@if($sort === 'contract_id')
<i class="fa fa-sort-{{ $sort_type }}"></i>
@endif
</a>
</th>
<th>車種区分ID</th> <th>車種区分ID</th>
<th>発行日</th> <th>
<th>発行回数</th> <a href="{{ route('seals', array_merge(request()->all(), ['sort' => 'seal_day', 'sort_type' => ($sort === 'seal_day' && $sort_type === 'asc') ? 'desc' : 'asc'])) }}">
発行日
@if($sort === 'seal_day')
<i class="fa fa-sort-{{ $sort_type }}"></i>
@endif
</a>
</th>
<th>
<a href="{{ route('seals', array_merge(request()->all(), ['sort' => 'contract_seal_issue', 'sort_type' => ($sort === 'contract_seal_issue' && $sort_type === 'asc') ? 'desc' : 'asc'])) }}">
発行回数
@if($sort === 'contract_seal_issue')
<i class="fa fa-sort-{{ $sort_type }}"></i>
@endif
</a>
</th>
<th>理由</th> <th>理由</th>
</tr> </tr>
</thead> </thead>

View File

@ -3,6 +3,16 @@
@section('content') @section('content')
<div class="container-fluid"> <div class="container-fluid">
@if(session('success'))
<div class="alert alert-success" style="margin-top:10px;">
{{ session('success') }}
</div>
@endif
@if(session('error'))
<div class="alert alert-danger" style="margin-top:10px;">
{{ session('error') }}
</div>
@endif
<div class="d-flex justify-content-between align-items-center mb-2"> <div class="d-flex justify-content-between align-items-center mb-2">
<h3 class="m-0 text-dark">タグ発行キュー処理、履歴表示</h3> <h3 class="m-0 text-dark">タグ発行キュー処理、履歴表示</h3>
<nav aria-label="breadcrumb" class="mb-0" style="background: transparent;"> <nav aria-label="breadcrumb" class="mb-0" style="background: transparent;">