オペレータキュー画面の修正
All checks were successful
Deploy main / deploy (push) Successful in 22s

- ルーティングコメントを修正
This commit is contained in:
kin.rinzen 2025-10-08 14:50:40 +09:00
parent fd6686d5c9
commit 9a6abe680f
9 changed files with 182 additions and 192 deletions

View File

@ -22,7 +22,8 @@ class OperatorQueController extends Controller
public function list(Request $request) public function list(Request $request)
{ {
$sort = $request->input('sort', 'que_id'); $sort = $request->input('sort', 'que_id');
$sort_type = $request->input('sort_type', 'desc'); $sort_type = $request->input('sort_type', 'asc');
$que_status = $request->input('que_status');
// 許可されたカラム名のリストDB定義に合わせて // 許可されたカラム名のリストDB定義に合わせて
$allowedSorts = ['que_id', 'ope_id', 'que_status', 'created_at', 'updated_at']; $allowedSorts = ['que_id', 'ope_id', 'que_status', 'created_at', 'updated_at'];
@ -38,34 +39,46 @@ class OperatorQueController extends Controller
$query = OperatorQue::query(); $query = OperatorQue::query();
// フィルタリング(絞り込み) // フィルタリング(絞り込み)
if ($request->filled('que_status')) { if (!empty($que_status)) {
$query->where('que_status', $request->input('que_status')); $query->where('que_status', $que_status);
} }
$list = $query->orderBy($sort, $sort_type) $list = $query->orderBy($sort, $sort_type)
->paginate(\App\Utils::item_per_page ?? 20); ->paginate(\App\Utils::item_per_page ?? 20);
return view('admin.operator_ques.list', compact('list', 'sort', 'sort_type')); // view に $que_status を渡す
return view('admin.operator_ques.list', compact('list', 'sort', 'sort_type', 'que_status'));
} }
/** /**
* 新規登録(画面/処理) * 新規登録(画面/処理)
*/ */
public function add(Request $request) public function add(Request $request)
{ {
if ($request->isMethod('get')) { if ($request->isMethod('get')) {
// 新規時は空の値でフォーム描画 // 新規時は空のレコードを用意してフォーム描画
return view('admin.operator_ques.add', $this->formPayload()); return view('admin.operator_ques.add', array_merge(
$this->formPayload(),
[
'isEdit' => false,
'record' => new OperatorQue(), // ← ★ _form.blade.php で使う用
'que_id' => null,
]
));
} }
// POST時バリデーション
$data = $this->validateRequest($request); $data = $this->validateRequest($request);
// 登録処理
OperatorQue::create($data); OperatorQue::create($data);
return redirect()->route('operator_ques')->with('success', 'オペレーターキューを登録しました。'); return redirect()->route('operator_ques')->with('success', 'オペレーターキューを登録しました。');
} }
/** /**
* 編集(画面/処理) * 編集(画面/処理)
*/ */
@ -76,7 +89,10 @@ class OperatorQueController extends Controller
if ($request->isMethod('get')) { if ($request->isMethod('get')) {
return view('admin.operator_ques.edit', array_merge( return view('admin.operator_ques.edit', array_merge(
$this->formPayload($que), $this->formPayload($que),
['que_id' => $que->que_id] [
'que_id' => $que->que_id,
'record' => $que,
]
)); ));
} }
@ -84,7 +100,7 @@ class OperatorQueController extends Controller
$que->fill($data)->save(); $que->fill($data)->save();
return redirect()->route('operator_ques')->with('success', 'オペレータキューを更新しました。'); return redirect()->route('operator_ques')->with('success', 'オペレータキューを更新しました。');
} }
/** /**
@ -233,9 +249,9 @@ class OperatorQueController extends Controller
private function validateRequest(Request $request, $queId = null): array private function validateRequest(Request $request, $queId = null): array
{ {
$rules = [ $rules = [
'user_id' => 'required|integer', 'user_id' => 'nullable|integer',
'contract_id' => 'nullable|integer', 'contract_id' => 'nullable|integer',
'park_id' => 'required|integer', 'park_id' => 'nullable|integer',
'que_class' => 'required|integer', 'que_class' => 'required|integer',
'que_comment' => 'nullable|string|max:2000', 'que_comment' => 'nullable|string|max:2000',
'que_status' => 'required|integer', 'que_status' => 'required|integer',

View File

@ -6,89 +6,128 @@
@elseif(Session::has('error')) @elseif(Session::has('error'))
<div class="alert alert-danger alert-dismissible"> <div class="alert alert-danger alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h4><i class="icon fa fa-ban"></i> {{__('誤差')}}:</h4> <h4><i class="icon fa fa-ban"></i> {{ __('入力内容に不備があります:') }}:</h4>
{!! Session::get('error') !!} {!! Session::get('error') !!}
</div> </div>
@elseif(isset($errorMsg)) @elseif(isset($errorMsg))
<div class="alert alert-danger alert-dismissible"> <div class="alert alert-danger alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h4><i class="icon fa fa-ban"></i> {{__('誤差')}}:</h4> <h4><i class="icon fa fa-ban"></i> {{ __('入力内容に不備があります:') }}:</h4>
{!! $errorMsg !!} {!! $errorMsg !!}
</div> </div>
@endif @endif
<div class="card-body"> <div class="card-body">
@if ($errors->any())
<div class="alert alert-danger">
<h4>入力内容に不備があります:</h4>
<ol>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ol>
</div>
@endif
<div class="row"> <div class="row">
@if($isEdit || $isInfo) {{-- キューID編集時のみ表示 --}}
<!-- キューID --> @if($isEdit)
<div class="form-group col-3"> <div class="form-group col-3">
<label>{{__('validation.attributes.que_id')}}</label> <label>{{ __('validation.attributes.que_id') }}</label>
</div> </div>
<div class="form-group col-9"> <div class="form-group col-9">
<div class="input-group"> <div class="input-group">
<input type="text" value="{{$que_id}}" placeholder="{{__('validation.attributes.que_id')}}" <input type="text"
class="form-control form-control-lg" readonly/> value="{{ $que_id }}"
placeholder="{{ __('validation.attributes.que_id') }}"
class="form-control form-control-lg"
readonly />
</div> </div>
</div> </div>
<!-- /.form group - キューID -->
@endif @endif
<!-- 利用者名 -->
{{-- 利用者名 --}}
<div class="form-group col-3"> <div class="form-group col-3">
<label @if(!$isInfo) class="required" @endif>{{__('validation.attributes.user_name')}}</label> <label>{{ __('validation.attributes.user_name') }}</label>
</div> </div>
<div class="form-group col-9"> <div class="form-group col-9">
<select class="form-control form-control-lg" id="select_user" name="user_name" @if($isInfo) disabled @endif> <select class="form-control form-control-lg" id="select_user" name="user_id">
<option value="">{{__('validation.attributes.user_name')}}</option> <option value="">{{ __('validation.attributes.user_name') }}</option>
@foreach($users as $item) @foreach($users as $item)
<option value="{{$item->user_seq}}" mobile="{{$item->user_mobile}}" homePhone="{{$item->user_homephone}}" @if($item->user_seq == $user_id) selected @endif>{{$item->user_name}}</option> <option value="{{ $item->user_seq }}"
mobile="{{ $item->user_mobile }}"
homePhone="{{ $item->user_homephone }}"
@if($item->user_seq == $user_id) selected @endif>
{{ $item->user_name }}
</option>
@endforeach @endforeach
</select> </select>
</div> </div>
{{-- 携帯電話番号 --}}
<!-- 携帯電話番号 -->
<div class="form-group col-3"> <div class="form-group col-3">
<label>{{__('validation.attributes.user_mobile')}}</label> <label>{{ __('validation.attributes.user_mobile') }}</label>
</div> </div>
<div class="form-group col-9"> <div class="form-group col-9">
<div class="input-group"> <div class="input-group">
<input type="text" value="" id="mobile" placeholder="{{__('validation.attributes.user_mobile')}}" <input type="text"
class="form-control form-control-lg" readonly/> id="mobile"
value=""
placeholder="{{ __('validation.attributes.user_mobile') }}"
class="form-control form-control-lg"
readonly />
</div> </div>
</div> </div>
<!-- 自宅電話番号 --> {{-- 自宅電話番号 --}}
<div class="form-group col-3"> <div class="form-group col-3">
<label>{{__('validation.attributes.user_homephone')}}</label> <label>{{ __('validation.attributes.user_homephone') }}</label>
</div> </div>
<div class="form-group col-9"> <div class="form-group col-9">
<div class="input-group"> <div class="input-group">
<input type="text" value="" id="homephone" placeholder="{{__('validation.attributes.user_homephone')}}" <input type="text"
class="form-control form-control-lg" readonly/> id="homephone"
value=""
placeholder="{{ __('validation.attributes.user_homephone') }}"
class="form-control form-control-lg"
readonly />
</div> </div>
</div> </div>
<!-- 駐輪場 --> {{-- 定期契約ID --}}
<div class="form-group col-3"> <div class="form-group col-3">
<label @if(!$isInfo) class="required" @endif>{{__('validation.attributes.park_name')}}</label> <label>{{ __('validation.attributes.contract_id') }}</label>
</div> </div>
<div class="form-group col-9"> <div class="form-group col-9">
<select class="form-control form-control-lg" name="park_name" @if($isInfo) disabled @endif> <div class="input-group">
<option value="">{{__('validation.attributes.park_name')}}</option> <input type="text"
name="contract_id"
value="{{ old('contract_id', $contract_id ?? '') }}"
class="form-control form-control-lg"
placeholder="{{ __('validation.attributes.contract_id') }}"
readonly>
</div>
</div>
{{-- 駐輪場 --}}
<div class="form-group col-3">
<label>{{ __('validation.attributes.park_name') }}</label>
</div>
<div class="form-group col-9">
<select class="form-control form-control-lg" name="park_id">
<option value="">{{ __('validation.attributes.park_name') }}</option>
@foreach($parks as $key => $item) @foreach($parks as $key => $item)
<option value="{{$key}}" @if($key == $park_id) selected @endif>{{$item}}</option> <option value="{{ $key }}" @if($key == $park_id) selected @endif>{{ $item }}</option>
@endforeach @endforeach
</select> </select>
</div> </div>
<!-- キュー種別 --> {{-- キュー種別 --}}
<div class="form-group col-3"> <div class="form-group col-3">
<label @if(!$isInfo) class="required" @endif> <label class="required">{{ __('validation.attributes.que_class') }}</label>
{{ __('validation.attributes.que_class') }}
</label>
</div> </div>
<div class="form-group col-9"> <div class="form-group col-9">
<select class="form-control form-control-lg" name="que_class" @if($isInfo) disabled @endif> <select class="form-control form-control-lg" name="que_class">
<option value="">{{ __('validation.attributes.que_class') }}</option> <option value="">{{ __('validation.attributes.que_class') }}</option>
@foreach(\App\Models\OperatorQue::QueClass as $key => $item) @foreach(\App\Models\OperatorQue::QueClass as $key => $item)
<option value="{{ $key }}" @if($key == $que_class) selected @endif> <option value="{{ $key }}" @if($key == $que_class) selected @endif>
@ -98,28 +137,25 @@
</select> </select>
</div> </div>
{{-- キューコメント --}}
<!-- キューコメント -->
<div class="form-group col-3"> <div class="form-group col-3">
<label>{{__('validation.attributes.que_comment')}}</label> <label>{{ __('validation.attributes.que_comment') }}</label>
</div> </div>
<div class="form-group col-9"> <div class="form-group col-9">
<div class="input-group"> <div class="input-group">
<textarea class="form-control form-control-lg" @if($isInfo) readonly @endif rows="5" <textarea class="form-control form-control-lg"
placeholder="{{__('validation.attributes.que_comment')}}" rows="5"
name="que_comment">{{$que_comment}}</textarea> name="que_comment"
placeholder="{{ __('validation.attributes.que_comment') }}">{{ $que_comment }}</textarea>
</div> </div>
</div> </div>
<!-- /.form group - キューコメント -->
<!-- キューステータス --> {{-- キューステータス --}}
<div class="form-group col-3"> <div class="form-group col-3">
<label @if(!$isInfo) class="required" @endif> <label class="required">{{ __('validation.attributes.que_status') }}</label>
{{ __('validation.attributes.que_status') }}
</label>
</div> </div>
<div class="form-group col-9"> <div class="form-group col-9">
<select class="form-control form-control-lg" name="que_status" @if($isInfo) disabled @endif> <select class="form-control form-control-lg" name="que_status">
<option value="">{{ __('validation.attributes.que_status') }}</option> <option value="">{{ __('validation.attributes.que_status') }}</option>
@foreach(\App\Models\OperatorQue::QueStatus as $key => $item) @foreach(\App\Models\OperatorQue::QueStatus as $key => $item)
<option value="{{ $key }}" @if($key == $que_status) selected @endif> <option value="{{ $key }}" @if($key == $que_status) selected @endif>
@ -129,28 +165,43 @@
</select> </select>
</div> </div>
<!-- キューステータスコメント --> {{-- キューステータスコメント --}}
<div class="form-group col-3"> <div class="form-group col-3">
<label>{{__('validation.attributes.que_status_comment')}}</label> <label>{{ __('validation.attributes.que_status_comment') }}</label>
</div> </div>
<div class="form-group col-9"> <div class="form-group col-9">
<div class="input-group"> <div class="input-group">
<textarea class="form-control form-control-lg" @if($isInfo) readonly @endif rows="5" <textarea class="form-control form-control-lg"
placeholder="{{__('validation.attributes.que_status_comment')}}" rows="5"
name="que_status_comment">{{$que_status_comment}}</textarea> name="que_status_comment"
placeholder="{{ __('validation.attributes.que_status_comment') }}">{{ $que_status_comment }}</textarea>
</div> </div>
</div> </div>
</div> </div>
{{-- 下部ボタン --}} {{-- 下部ボタン --}}
@if($isEdit) <div class="row mt-4">
<button type="submit" class="btn btn-lg btn-success register">{{ __('保存') }}</button> <div class="form-group col-md-10 d-flex align-items-center gap-2 justify-content-start">
<button type="submit" class="btn btn-lg btn-secondary register">{{ __('戻る') }}</button>
@else
<button type="submit" class="btn btn-lg btn-success register">{{ __('登録') }}</button>
<button type="submit" class="btn btn-lg btn-danger register">{{ __('削除') }}</button>
@endif
{{-- 登録ボタン --}}
@if($isEdit)
<button type="button" id="register_edit" class="btn btn-lg btn-success mr-2">
{{ __('登録') }}
</button>
@else
<button type="button" id="register" class="btn btn-lg btn-success mr-2 register">
{{ __('登録') }}
</button>
@endif
{{-- 削除ボタン(編集時のみ表示) --}}
@if($isEdit)
<button type="button" id="delete_edit" class="btn btn-lg btn-danger">
{{ __('削除') }}
</button>
@endif
</div>
</div>
</div> </div>

View File

@ -1,6 +1,6 @@
@extends('layouts.app') @extends('layouts.app')
@section('title', '[東京都|〇〇駐輪場] オペレータキュー') @section('title', '新規')
@section('content') @section('content')
<!-- Content Header (Page header) --> <!-- Content Header (Page header) -->
@ -8,13 +8,13 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row mb-2"> <div class="row mb-2">
<div class="col-lg-6"> <div class="col-lg-6">
<h1 class="m-0 text-dark">新規登録</h1> <h1 class="m-0 text-dark">新規</h1>
</div><!-- /.col --> </div><!-- /.col -->
<div class="col-lg-6"> <div class="col-lg-6">
<ol class="breadcrumb float-sm-right text-sm"> <ol class="breadcrumb float-sm-right text-sm">
<li class="breadcrumb-item"><a href="{{ route('home') }}">ホーム</a></li> <li class="breadcrumb-item"><a href="{{ route('home') }}">ホーム</a></li>
<li class="breadcrumb-item"><a href="{{ route('operator_ques') }}">オペレータキュー</a></li> <li class="breadcrumb-item"><a href="{{ route('operator_ques') }}">オペレータキュー</a></li>
<li class="breadcrumb-item active">新規登録</li> <li class="breadcrumb-item active">新規</li>
</ol> </ol>
</div><!-- /.col --> </div><!-- /.col -->
</div><!-- /.row --> </div><!-- /.row -->
@ -30,12 +30,15 @@
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<div class="card"> <div class="card">
<form method="post" action="{{ route('operator_ques_add')}}" enctype="multipart/form-data"> {{-- 新規登録フォーム --}}
<!-- TOKEN FORM --> <form id="form_register"
<input type="hidden" name="_token" value="{{ csrf_token() }}" > action="{{ route('operator_ques_add') }}"
<!-- / .TOKEN FORM --> method="POST"
@include('admin.operator_ques._form',['isEdit'=>0,'isInfo'=>0]) enctype="multipart/form-data">
@csrf
@include('admin.operator_ques._form', ['isEdit' => false])
</form> </form>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,6 +1,6 @@
@extends('layouts.app') @extends('layouts.app')
@section('title', '[東京都|〇〇駐輪場] オペレータキュー') @section('title', '編集')
@section('content') @section('content')
<!-- Content Header (Page header) --> <!-- Content Header (Page header) -->
@ -30,12 +30,24 @@
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<div class="card"> <div class="card">
<form method="post" action="{{ route('operator_ques_edit',['id'=>$que_id])}}" enctype="multipart/form-data">
<!-- TOKEN FORM --> {{-- Edit Form --}}
<input type="hidden" name="_token" value="{{ csrf_token() }}" > <form id="form_edit"
<!-- / .TOKEN FORM --> action="{{ route('operator_ques_edit', ['id' => $record->que_id]) }}"
@include('admin.operator_ques._form',['isEdit'=>1,'isInfo'=>0]) method="POST">
@csrf
@include('admin.operator_ques._form', ['isEdit' => true])
</form> </form>
{{-- Delete Form --}}
<form id="form_delete"
action="{{ route('operator_ques_delete') }}"
method="POST"
style="display:none;">
@csrf
<input type="hidden" name="id" value="{{ $record->que_id }}">
</form>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,53 +0,0 @@
@extends('layouts.app')
@section('title', '[東京都|〇〇駐輪場] オペレータキュー')
@section('content')
<!-- Content Header (Page header) -->
<div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-lg-6">
<h1 class="m-0 text-dark">[東京都|〇〇駐輪場] オペレータキュー</h1>
</div><!-- /.col -->
<div class="col-lg-6">
<ol class="breadcrumb float-sm-right text-sm">
<li class="breadcrumb-item"><a href="./index2.html">XX様info(ホーム)</a></li>
<li class="breadcrumb-item"><a href="./index3.html">[東京都|〇〇駐輪場]</a></li>
<li class="breadcrumb-item">オペレータキュー</li>
<li class="breadcrumb-item active">利用者マスタ</li>
</ol>
</div><!-- /.col -->
</div><!-- /.row -->
</div><!-- /.container-fluid -->
</div>
<!-- /.content-header -->
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<!-- SELECT2 EXAMPLE -->
<div class="row">
<div class="col-lg-12">
<div class="card">
<form method="post" action="{{ route('operator_ques_info',['id'=>$que_id])}}" enctype="multipart/form-data">
<!-- TOKEN FORM -->
<input type="hidden" name="_token" value="{{ csrf_token() }}" >
<!-- / .TOKEN FORM -->
@include('admin.operator_ques._form',['isEdit'=>0,'isInfo'=>1])
</form>
</div>
</div>
</div>
<div class="container-fluid mb20">
<button type="submit" class="btn btn-sm btn-default mr10">{{__('削除')}}</button>
<button type="submit" class="btn btn-sm btn-default mr10">{{__('インポート')}}</button>
<button type="submit" class="btn btn-sm btn-default mr10">{{__('CSV出力')}}</button>
</div>
</div>
</section>
<!-- /.content -->
@endsection

View File

@ -1,5 +1,5 @@
@extends('layouts.app') @extends('layouts.app')
@section('title', '[東京都|〇〇駐輪場] オペレータキュー') @section('title', 'オペレータキュー')
@section('content') @section('content')
<div class="content-header"> <div class="content-header">
@ -41,11 +41,11 @@
@endforeach @endforeach
</select> </select>
</div> </div>
</div>
<div class="form-group col-12 text-left"> <div class="form-group col-12 text-left">
<button type="submit" name="action" value="filter" class="btn btn-default">絞り込み</button> <button type="submit" name="action" value="filter" class="btn btn-default">絞り込み</button>
<button type="submit" name="action" value="reset" class="btn btn-default">解除</button> <a href="{{ route('operator_ques') }}" class="btn btn-default">解除</a>
</div>
</div> </div>
</form> </form>
</div> </div>
@ -56,9 +56,9 @@
<div class="container-fluid"> <div class="container-fluid">
<!-- ツールバー --> <!-- ツールバー -->
<div class="container-fluid mb20"> <div class="container-fluid mb20">
<button type="button" class="btn btn-sm btn-default mr10" onclick="location.href='{{ route('operator_ques_add') }}'">新規</button>
<button type="button" class="btn btn-sm btn-default mr10" id="delete">削除</button> <button type="button" class="btn btn-sm btn-default mr10" id="delete">削除</button>
<button type="button" class="btn btn-sm btn-default mr10" onclick="location.href='{{ route('operator_ques_import') }}'">インポート</button>
<button type="submit" class="btn btn-sm btn-default mr10" form="form_export">{{ __('CSV出力') }}</button>
<div class="d-flex justify-content-end"> <div class="d-flex justify-content-end">
{{ $list->appends(['sort' => $sort ?? '', 'sort_type' => $sort_type ?? ''])->links('pagination') }} {{ $list->appends(['sort' => $sort ?? '', 'sort_type' => $sort_type ?? ''])->links('pagination') }}
</div> </div>
@ -75,13 +75,13 @@
@elseif(Session::has('error')) @elseif(Session::has('error'))
<div class="alert alert-danger alert-dismissible"> <div class="alert alert-danger alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h4><i class="icon fa fa-ban"></i> {{ __('誤差') }}:</h4> <h4><i class="icon fa fa-ban"></i> {{ __('入力内容に不備があります') }}:</h4>
{!! Session::get('error') !!} {!! Session::get('error') !!}
</div> </div>
@elseif(isset($errorMsg)) @elseif(isset($errorMsg))
<div class="alert alert-danger alert-dismissible"> <div class="alert alert-danger alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h4><i class="icon fa fa-ban"></i> {{ __('誤差') }}:</h4> <h4><i class="icon fa fa-ban"></i> {{ __('入力内容に不備があります') }}:</h4>
{!! $errorMsg !!} {!! $errorMsg !!}
</div> </div>
@endif @endif
@ -94,9 +94,9 @@
<form action="{{ route('operator_ques_delete') }}" method="POST" id="form_delete"> <form action="{{ route('operator_ques_delete') }}" method="POST" id="form_delete">
@csrf @csrf
<table class="table table-bordered dataTable text-nowrap"> <table class="table table-bordered dataTable text-nowrap">
<thead> <thead class="thead-light">
<tr> <tr>
<th style="width:140px;" class="text-left"> <th style="width:120px;" class="text-left">
<input type="checkbox" onclick="$('input[name*=\'pk\']').prop('checked', this.checked);"> <input type="checkbox" onclick="$('input[name*=\'pk\']').prop('checked', this.checked);">
</th> </th>
<th class="sorting {{ ($sort=='que_id') ? ($sort_type=='asc'?'sorting_asc':'sorting_desc') : '' }}" sort="que_id"><span>キューID</span></th> <th class="sorting {{ ($sort=='que_id') ? ($sort_type=='asc'?'sorting_asc':'sorting_desc') : '' }}" sort="que_id"><span>キューID</span></th>
@ -141,43 +141,4 @@
</div> </div>
</section> </section>
<form action="{{ route('operator_ques_export') }}" method="GET" id="form_export"></form>
@push('scripts')
<script>
// 全選択・全解除
document.getElementById('checkbox_all')?.addEventListener('change', function(e){
document.querySelectorAll('.checkbox').forEach(cb => cb.checked = e.target.checked);
});
// 削除確認
document.getElementById('delete')?.addEventListener('click', function(){
const anyChecked = Array.from(document.querySelectorAll('.checkbox')).some(cb => cb.checked);
if (!anyChecked) {
alert('削除対象が選択されていません。');
return;
}
if (confirm('削除してよろしいですか?')) {
document.getElementById('form_delete').submit();
}
});
// ソート
document.querySelectorAll('th.sorting').forEach(th => {
th.addEventListener('click', function(){
const form = document.getElementById('list-form');
const current = "{{ $sort ?? '' }}";
const currentType = "{{ $sort_type ?? '' }}";
const nextCol = this.getAttribute('sort');
let nextType = 'asc';
if (current === nextCol) {
nextType = (currentType === 'asc') ? 'desc' : 'asc';
}
form.querySelector('[name=sort]').value = nextCol;
form.querySelector('[name=sort_type]').value = nextType;
form.submit();
});
});
</script>
@endpush
@endsection @endsection

View File

@ -282,7 +282,7 @@
</div> </div>
{{-- 下部ボタン --}} {{-- 下部ボタン --}}
<div class="row mt-4"> <div class="row mt-4">
<div class="form-group col-md-10 d-flex align-items-center gap-2 justify-content-start"> <div class="form-group col-md-10 d-flex align-items-center gap-2 justify-content-start">
{{-- 登録ボタン --}} {{-- 登録ボタン --}}
@if($isEdit) @if($isEdit)
@ -302,7 +302,7 @@
</button> </button>
@endif @endif
</div> </div>
</div> </div>
</div> </div>

View File

@ -605,7 +605,7 @@
<ul class="nav nav-treeview" style="display: @if(in_array($current, $systemRoutes)) block @else none @endif;"> <ul class="nav nav-treeview" style="display: @if(in_array($current, $systemRoutes)) block @else none @endif;">
<li class="nav-item"> <li class="nav-item">
<a href="{{ route('opes') }}" class="nav-link @if($current === 'opes') active @endif"> <a href="{{ route('opes') }}" class="nav-link @if($current === 'opes') active @endif">
<span style="margin-left:20px;">{{ __("オペレータマスタ") }}</span> <span style="margin-left:20px;">{{ __("オペレータマスタ") }}</span>
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
@ -616,7 +616,7 @@
<li class="nav-item"> <li class="nav-item">
<a href="{{ route('operator_ques') }}" class="nav-link @if($current === 'operator_ques') active @endif"> <a href="{{ route('operator_ques') }}" class="nav-link @if($current === 'operator_ques') active @endif">
<i class="nav-icon"></i> <i class="nav-icon"></i>
<span style="margin-left:20px;">{{ __("オペレータキュー") }}</span> <span style="margin-left:20px;">{{ __("オペレータキュー") }}</span>
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">

View File

@ -438,7 +438,7 @@ Route::middleware('auth')->group(function () {
Route::match(['get', 'post'], '/devices/delete', [DeviceController::class, 'delete'])->name('devices_delete'); Route::match(['get', 'post'], '/devices/delete', [DeviceController::class, 'delete'])->name('devices_delete');
Route::post('/devices/import', [DeviceController::class, 'import'])->name('devices_import'); Route::post('/devices/import', [DeviceController::class, 'import'])->name('devices_import');
// [東京都|〇〇駐輪場] オペレータキュー // [東京都|〇〇駐輪場] オペレータキュー
Route::match(['get', 'post'], '/operator_ques', [OperatorQueController::class, 'list'])->name('operator_ques'); Route::match(['get', 'post'], '/operator_ques', [OperatorQueController::class, 'list'])->name('operator_ques');
Route::match(['get', 'post'], '/operator_ques/add', [OperatorQueController::class, 'add'])->name('operator_ques_add'); Route::match(['get', 'post'], '/operator_ques/add', [OperatorQueController::class, 'add'])->name('operator_ques_add');
Route::match(['get', 'post'], '/operator_ques/edit/{id}', [OperatorQueController::class, 'edit']) Route::match(['get', 'post'], '/operator_ques/edit/{id}', [OperatorQueController::class, 'edit'])