From 30871b22aea32a4a6552594c8ca87e4d0481182d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=A0=E7=9A=84=E5=90=8D=E5=AD=97?= <你的邮箱> Date: Tue, 7 Oct 2025 18:15:32 +0900 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=88=A9=E7=94=A8=E8=80=85=E5=88=86?= =?UTF-8?q?=E9=A1=9E=E3=83=9E=E3=82=B9=E3=82=BF=E3=80=91=E4=B8=A6=E3=81=B3?= =?UTF-8?q?=E6=9B=BF=E3=81=88=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Admin/UsertypeController.php | 22 ++- app/Models/Usertype.php | 32 +++-- .../views/admin/usertypes/_form.blade.php | 48 +++++-- .../views/admin/usertypes/edit.blade.php | 78 +++++++++-- .../views/admin/usertypes/list.blade.php | 132 +++++++++--------- 5 files changed, 212 insertions(+), 100 deletions(-) diff --git a/app/Http/Controllers/Admin/UsertypeController.php b/app/Http/Controllers/Admin/UsertypeController.php index 0b53e66..1ce9a6e 100644 --- a/app/Http/Controllers/Admin/UsertypeController.php +++ b/app/Http/Controllers/Admin/UsertypeController.php @@ -15,9 +15,16 @@ class UsertypeController extends Controller { public function list(Request $request) { - $sortable = ['user_categoryid', 'sort_order', 'usertype_subject1', 'usertype_subject2', 'usertype_subject3', 'print_name', 'usertype_remarks']; $sort = $request->input('sort', 'user_categoryid'); - if (!in_array($sort, $sortable, true)) { + $allowSort = [ + 'user_categoryid', + 'sort_order', + 'usertype_subject1', + 'usertype_subject2', + 'usertype_subject3', + 'print_name', + ]; + if (!in_array($sort, $allowSort, true)) { $sort = 'user_categoryid'; } $sortType = strtolower($request->input('sort_type', 'asc')); @@ -33,9 +40,9 @@ class UsertypeController extends Controller ]; $filters = [ 'filter_sort_order' => $request->input('filter_sort_order', ''), - 'filter_category_name1' => $request->input('filter_category_name1', ''), - 'filter_category_name2' => $request->input('filter_category_name2', ''), - 'filter_category_name3' => $request->input('filter_category_name3', ''), + 'filter_usertype_subject1' => $request->input('filter_usertype_subject1', ''), + 'filter_usertype_subject2' => $request->input('filter_usertype_subject2', ''), + 'filter_usertype_subject3' => $request->input('filter_usertype_subject3', ''), ]; $searchParams = array_merge($inputs, $filters); $viewData = $searchParams; @@ -227,7 +234,10 @@ class UsertypeController extends Controller 'isExport' => 1, 'sort' => $request->input('sort', ''), 'sort_type' => $request->input('sort_type', ''), - + 'filter_sort_order' => $request->input('filter_sort_order', ''), + 'filter_usertype_subject1' => $request->input('filter_usertype_subject1', ''), + 'filter_usertype_subject2' => $request->input('filter_usertype_subject2', ''), + 'filter_usertype_subject3' => $request->input('filter_usertype_subject3', ''), ]; $dataExport = Usertype::search($inputs); diff --git a/app/Models/Usertype.php b/app/Models/Usertype.php index b2b28ae..0501705 100644 --- a/app/Models/Usertype.php +++ b/app/Models/Usertype.php @@ -34,28 +34,36 @@ class Usertype extends Model }); } - public static function search($inputs) + public static function search(array $inputs) { $query = self::query(); + $table = (new self())->getTable(); if (!empty($inputs['filter_sort_order'])) { $query->where('sort_order', $inputs['filter_sort_order']); } - if (!empty($inputs['filter_category_name1'])) { - $query->where('usertype_subject1', 'like', '%' . $inputs['filter_category_name1'] . '%'); + if (!empty($inputs['filter_usertype_subject1'])) { + $query->where('usertype_subject1', 'like', '%' . $inputs['filter_usertype_subject1'] . '%'); } - if (!empty($inputs['filter_category_name2'])) { - $query->where('usertype_subject2', 'like', '%' . $inputs['filter_category_name2'] . '%'); + if (!empty($inputs['filter_usertype_subject2'])) { + $query->where('usertype_subject2', 'like', '%' . $inputs['filter_usertype_subject2'] . '%'); } - if (!empty($inputs['filter_category_name3'])) { - $query->where('usertype_subject3', 'like', '%' . $inputs['filter_category_name3'] . '%'); + if (!empty($inputs['filter_usertype_subject3'])) { + $query->where('usertype_subject3', 'like', '%' . $inputs['filter_usertype_subject3'] . '%'); } - $sortable = ['user_categoryid', 'sort_order', 'usertype_subject1', 'usertype_subject2', 'usertype_subject3', 'print_name', 'usertype_remarks']; - $sortColumn = $inputs['sort'] ?? 'user_categoryid'; - if (!in_array($sortColumn, $sortable, true)) { - $sortColumn = 'user_categoryid'; - } + $sortable = [ + 'user_categoryid' => "{$table}.user_categoryid", + 'sort_order' => "{$table}.sort_order", + 'usertype_subject1' => "{$table}.usertype_subject1", + 'usertype_subject2' => "{$table}.usertype_subject2", + 'usertype_subject3' => "{$table}.usertype_subject3", + 'print_name' => "{$table}.print_name", + 'usertype_remarks' => "{$table}.usertype_remarks", + ]; + + $sortKey = $inputs['sort'] ?? 'user_categoryid'; + $sortColumn = $sortable[$sortKey] ?? "{$table}.user_categoryid"; $direction = strtolower($inputs['sort_type'] ?? 'asc'); if (!in_array($direction, ['asc', 'desc'], true)) { diff --git a/resources/views/admin/usertypes/_form.blade.php b/resources/views/admin/usertypes/_form.blade.php index 0a03880..104464f 100644 --- a/resources/views/admin/usertypes/_form.blade.php +++ b/resources/views/admin/usertypes/_form.blade.php @@ -28,9 +28,10 @@
@endif @@ -106,14 +107,14 @@| - {{__('利用者分類ID')}} - {!! $renderSortIcon($state) !!} - | ++ + {{ __('利用者分類ID') }} + {!! $renderSortIcon($state) !!} + + | @php $state = $arrowState('sort_order'); @endphp -- {{__('ソートオーダー')}} - {!! $renderSortIcon($state) !!} - | ++ + {{ __('ソートオーダー') }} + {!! $renderSortIcon($state) !!} + + | @php $state = $arrowState('usertype_subject1'); @endphp -- {{__('分類名1')}} - {!! $renderSortIcon($state) !!} - | ++ + {{ __('分類名1') }} + {!! $renderSortIcon($state) !!} + + | @php $state = $arrowState('usertype_subject2'); @endphp -- {{__('分類名2')}} - {!! $renderSortIcon($state) !!} - | ++ + {{ __('分類名2') }} + {!! $renderSortIcon($state) !!} + + | @php $state = $arrowState('usertype_subject3'); @endphp -- {{__('分類名3')}} - {!! $renderSortIcon($state) !!} - | ++ + {{ __('分類名3') }} + {!! $renderSortIcon($state) !!} + + | @php $state = $arrowState('print_name'); @endphp -- {{__('印字名')}} - {!! $renderSortIcon($state) !!} - | ++ + {{ __('印字名') }} + {!! $renderSortIcon($state) !!} + + | {{__('適用料率')}} | @@ -276,32 +306,6 @@ }); } - var sortHeaders = document.querySelectorAll('th[data-sort]'); - if (sortHeaders.length) { - var sortInput = document.getElementById('sort'); - var sortTypeInput = document.getElementById('sort_type'); - var listForm = document.getElementById('list-form'); - if (sortInput && sortTypeInput && listForm) { - Array.prototype.forEach.call(sortHeaders, function (th) { - th.addEventListener('click', function () { - var key = th.getAttribute('data-sort'); - if (!key) { return; } - var nextDirection = 'asc'; - if (sortInput.value === key) { - nextDirection = sortTypeInput.value === 'asc' ? 'desc' : 'asc'; - } - sortInput.value = key; - sortTypeInput.value = nextDirection; - if (typeof listForm.requestSubmit === 'function') { - listForm.requestSubmit(); - } else { - listForm.submit(); - } - }); - }); - } - } - var deleteBtn = document.getElementById('btnDeleteSelected'); if (deleteBtn) { deleteBtn.addEventListener('click', function () { @@ -339,7 +343,7 @@ var exportForm = document.getElementById('form_export'); var filterForm = document.getElementById('list-form'); if (!exportForm || !filterForm) { return; } - ['filter_sort_order', 'filter_category_name1', 'filter_category_name2', 'filter_category_name3', 'sort', 'sort_type'].forEach(function (name) { + ['filter_sort_order', 'filter_usertype_subject1', 'filter_usertype_subject2', 'filter_usertype_subject3', 'sort', 'sort_type'].forEach(function (name) { var source = filterForm.querySelector('[name="' + name + '"]'); var target = exportForm.querySelector('[name="' + name + '"]'); if (source && target) {
|---|