作者 ZhengBing He

ok

@@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
3 namespace App\Http\Controllers\Api\WorkOrder; 3 namespace App\Http\Controllers\Api\WorkOrder;
4 4
5 use App\Http\Controllers\Api\BaseController; 5 use App\Http\Controllers\Api\BaseController;
  6 +use App\Http\Requests\Api\WorkOrder\TicketListRequest;
6 use App\Http\Requests\Api\WorkOrder\TicketStoreRequest; 7 use App\Http\Requests\Api\WorkOrder\TicketStoreRequest;
7 use App\Models\WorkOrder\TicketLog; 8 use App\Models\WorkOrder\TicketLog;
8 use App\Models\WorkOrder\TicketProject; 9 use App\Models\WorkOrder\TicketProject;
@@ -17,8 +18,9 @@ class TicketController extends BaseController @@ -17,8 +18,9 @@ class TicketController extends BaseController
17 * 18 *
18 * @return \Illuminate\Http\Response 19 * @return \Illuminate\Http\Response
19 */ 20 */
20 - public function index($project_id, Request $request) 21 + public function index(TicketListRequest $request, $project_id)
21 { 22 {
  23 + $validated = $request->validated();
22 $project = TicketProject::where('uuid', $project_id)->first(); 24 $project = TicketProject::where('uuid', $project_id)->first();
23 if (!$project) return $this->error('未找到项目', 404); 25 if (!$project) return $this->error('未找到项目', 404);
24 $page = (int)$request->input('page', 1); 26 $page = (int)$request->input('page', 1);
@@ -30,6 +32,22 @@ class TicketController extends BaseController @@ -30,6 +32,22 @@ class TicketController extends BaseController
30 ]) 32 ])
31 ->where('project_id', $project->id) 33 ->where('project_id', $project->id)
32 // ->where('submit_side', 2) 34 // ->where('submit_side', 2)
  35 + ->when($request->input('status') !== null, function ($query) use ($request) {
  36 + // status 查 gl_tickets.status
  37 + $status = $request->input('status');
  38 + return $query->where('status', $status);
  39 + })
  40 + ->when($request->input('search'), function ($query) use ($request) {
  41 + // search 查 gl_tickets.title 或 gl_ticket_projects.title 或 gl_ticket_projects.company_name
  42 + $search = $request->input('search');
  43 + return $query->where(function ($q) use ($search) {
  44 + $q->where('title', 'like', '%' . $search . '%')
  45 + ->orWhereHas('project', function ($q1) use ($search) {
  46 + $q1->where('title', 'like', '%' . $search . '%')
  47 + ->orWhere('company_name', 'like', '%' . $search . '%');
  48 + });
  49 + });
  50 + })
33 ->orderBy('id', 'desc') 51 ->orderBy('id', 'desc')
34 ->paginate($size, ['*'], 'page', $page); 52 ->paginate($size, ['*'], 'page', $page);
35 return response()->json(['data' => $tickets]); 53 return response()->json(['data' => $tickets]);
  1 +<?php
  2 +
  3 +namespace App\Http\Requests\Api\WorkOrder;
  4 +
  5 +use Illuminate\Foundation\Http\FormRequest;
  6 +
  7 +class TicketListRequest extends FormRequest
  8 +{
  9 + /**
  10 + * Determine if the user is authorized to make this request.
  11 + *
  12 + * @return bool
  13 + */
  14 + public function authorize()
  15 + {
  16 + return true;
  17 + }
  18 +
  19 + /**
  20 + * Get the validation rules that apply to the request.
  21 + *
  22 + * @return array
  23 + */
  24 + public function rules()
  25 + {
  26 + return [
  27 + 'status' => 'nullable|in:0,1,2,3|integer',
  28 + 'search' => 'nullable|string', // 搜索关键词
  29 + 'page' => 'nullable|integer',
  30 + 'size' => 'nullable|integer',
  31 + ];
  32 + }
  33 +}