Workshop นี้เป็นส่วนหนึ่งของคอร์ส สอนทำระบบแจ้งซ่อมออนไลน์ Laravel
คอร์สเรียนออนไลน์ สอนทำระบบแจ้งซ่อม ราคา 999 บาท จะได้ Template ตั้งต้น สอนทำเต็มระบบ
- repair.blade.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
@extends('layouts.master') @section('title') @lang('Repair') @endsection @section('content') @component('common-components.breadcrumb') @slot('pagetitle') technicians @endslot @slot('title') Repair @endslot @endcomponent <div class="row"> <div class="col-lg-12"> <div class="card"> <div class="card-body"> <div class="row mb-2"> <div class="col-md-6"> </div> <div class="col-md-6"> <div class="form-inline float-md-end mb-3"> <div class="search-box ms-2"> <div class="position-relative"> <form action="" id="search"> <input type="text" class="form-control rounded bg-light border-0" placeholder="Search..." id="search-input" name="search"> <i class="mdi mdi-magnify search-icon"></i> </form> </div> </div> </div> </div> </div> <!-- end row --> <div class="table-responsive mb-4"> <table class="table table-centered table-nowrap mb-0" id="userTable"> <thead> <tr> <th scope="col" style="width: 5%;">ID</th> <th scope="col" style="width: 10%;">ประเภทอุปกรณ์</th> <th scope="col" style="width: 10%;">ชื่ออุปกรณ์</th> <th scope="col" style="width: 10%;">หมายเลขเครื่อง</th> <th scope="col" style="width: 20%;">ผู้แจ้งซ่อม</th> <th scope="col" style="width: 20%;">สถานที่แจ้งซ่อม</th> <th scope="col" style="width: 10%;">วันที่แจ้งซ่อม</th> <th scope="col" style="width: 10%;">สถานะ</th> <th scope="col" style="width: 10%;">ปรับสถานะ</th> </tr> </thead> @foreach ($data as $item) <tr> <td>{{ $item->id }}</td> <td>{{ $item->eq_name }}</td> <td>{{ $item->r_name }}</td> <td>{{ $item->r_serialnumber }}</td> <td>{{ $item->firstname }} {{ $item->lastname }}</td> <td>{{ $item->build_name }} ชั้น {{ $item->floor }} ห้อง {{ $item->room }}</td> <td>{{ $item->r_date ? \Carbon\Carbon::parse($item->r_date)->format('d/m/Y') : 'ไม่ระบุ' }} </td> <td>{{ $item->s_status }}</td> <td> <button type="button" class="btn btn-success" data-bs-toggle="modal" data-bs-target="#statusModal" data-id="{{ $item->id }}"> ปรับสถานะ </button> </td> </tr> @endforeach </table> </div> {!! $data->links('layouts.pagination') !!} </div> </div> </div> </div> <!-- Modal Bootstrap --> <div class="modal fade" id="statusModal" tabindex="-1" aria-labelledby="statusModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <form action="{{ url('technicians/update_status') }}" method="POST"> @csrf <div class="modal-header"> <h5 class="modal-title" id="statusModalLabel">ปรับสถานะงานแจ้งซ่อม</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <input type="hidden" id="item-id" name="item_id"> <div class="mb-4"> <select class="form-select" name="status" required> <option value="" selected disabled>เลือกสถานะ</option> @foreach ($statuses as $status) <option value="{{ $status->id }}">{{ $status->s_status }}</option> @endforeach </select> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">ปิด</button> <button type="submit" class="btn btn-primary">บันทึก</button> </div> </form> </div> </div> </div> @section('script'); <script> // เมื่อ Modal ถูกเปิด document.getElementById('statusModal').addEventListener('show.bs.modal', function (event) { // ดึงปุ่มที่เปิด Modal const button = event.relatedTarget; // ดึงค่า data-id จากปุ่ม const itemId = button.getAttribute('data-id'); // กำหนดค่าให้กับฟิลด์ที่ซ่อนอยู่ (item-id) document.getElementById('item-id').value = itemId; }); </script> <script> $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); @if (session('success')) Swal.fire({ icon: 'success', title: 'สำเร็จ!', text: '{{ session('success') }}', timer: 2000, // แสดง 1 วินาที showConfirmButton: false }); @endif $('#search-input').change(function() { document.getElementById("search").submit(); }); </script> @endsection @endsection |
-
TechnicianController
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
<?php namespace App\Http\Controllers; use App\Models\User; use App\Models\Repair; use App\Models\Status; use Illuminate\Http\Request; class TechnicianController extends Controller { public function __construct() { $this->middleware('auth'); } public function index(Request $request) { $userId = auth()->user()->id; $data = User::select('users.*', 'position.position_name', 'department.dep_name', 'user_level.level_name') ->leftJoin('position', 'users.p_id', '=', 'position.id') ->leftJoin('department', 'users.dep_id', '=', 'department.id') ->leftJoin('user_level', 'users.level_id', '=', 'user_level.id') ->where('users.id', $userId) ->first(); // return $data; return view('technicians.index', compact('data')); } public function technician_repair(Request $request) { $technicianId = auth()->user()->id; // ดึง ID ของช่างที่ล็อกอินอยู่ $query = Repair::select( 'repair.*', 'users.firstname', 'users.lastname', 'equipment.eq_name', 'building.build_name', 'status.s_status' ) ->join('users', 'repair.u_id', '=', 'users.id') ->join('equipment', 'repair.eq_id', '=', 'equipment.id') ->join('building', 'repair.build_id', '=', 'building.id') ->join('status', 'repair.s_id', '=', 'status.id') ->where('repair.technician_id', $technicianId) // เพิ่มเงื่อนไขให้กรองเฉพาะงานซ่อมที่มอบหมายให้ช่างคนนี้ ->orderBy('repair.id', 'DESC'); // ตรวจสอบว่ามีการค้นหาหรือไม่ if ($request->has('search') && $request->search != '') { $search = $request->search; $query->where(function ($q) use ($search) { $q->where('users.firstname', 'like', '%' . $search . '%') ->orWhere('users.lastname', 'like', '%' . $search . '%') ->orWhere('equipment.eq_name', 'like', '%' . $search . '%') ->orWhere('repair.r_name', 'like', '%' . $search . '%') ->orWhere('repair.r_serialnumber', 'like', '%' . $search . '%'); }); } $data = $query->paginate(10); $statuses = Status::all(); return view('technicians/repair', compact('data', 'statuses')); } public function updateStatus(Request $request) { // ตรวจสอบค่าที่ส่งมา $validated = $request->validate([ 'item_id' => 'required|integer', // ไอดีของการซ่อม 'status' => 'required|integer', // ไอดีของสถานะ ]); // ค้นหา Repair ที่ตรงกับ item_id $repair = Repair::find($validated['item_id']); // ถ้าพบข้อมูลการซ่อม ให้ทำการอัปเดตสถานะ if ($repair) { $repair->s_id = $validated['status']; $repair->save(); // บันทึกการเปลี่ยนแปลง return redirect()->back()->with('success', 'ปรับสถานะเรียบร้อยแล้ว'); } // หากไม่พบข้อมูล return redirect()->back()->with('error', 'ไม่พบข้อมูลการซ่อม'); } } |

สนใจจ้างพัฒนาระบบ เขียนระบบ
ทำเว็บไซต์ รับสอนเขียนโปรแกรม
inbox มาที่เพจ หรือติดต่อ 098-373-8651
ช่องทางการชำระเงิน
เงินสด หรือ e-banking
ธนาคารกสิกรไทย
เลขบัญชี : 0951168564
ชื่อบัญชี : นายวัยวุฒิ ชุมเมืองปัก