model ->with("project") ->when($request->project_id, function ($query) use ($request) { $query->where("project_id", $request->project_id); }) ->orderBy("project_id") ->orderBy("date", "desc") ->orderBy("id", "desc") ->paginate(100); return view($this->bladePath . ".index", compact("data")); } public function create(FormBuilder $formBuilder) { $projects = Project::orderBy("id", "desc")->get(); $holiday = new Holiday(); if (request()->project_id) { $holiday->project_id = request()->project_id; } $isEdit = false; return view($this->bladePath . ".create", compact("projects", "holiday", "isEdit")); } public function store(Request $request) { $request->validate([ "project_id" => "required|integer", "price_ratio" => "required|numeric|min:0", "dates" => "required|array|min:1", "dates.*" => "required|date_format:Y-m-d", "remark" => "nullable|string", ], [ "dates.required" => "请至少选择一个日期", "dates.min" => "请至少选择一个日期", ]); $dates = collect($request->dates)->filter()->unique()->values(); foreach ($dates as $date) { Holiday::updateOrCreate( [ "project_id" => $request->project_id, "date" => $date, ], [ "price_ratio" => $request->price_ratio, "remark" => $request->remark, ] ); } $url = url($this->urlPrefix . "?project_id=" . $request->project_id); return $this->success("保存成功,共处理 {$dates->count()} 个日期", $url); } public function edit($id = null, Request $request, FormBuilder $formBuilder) { $projects = Project::orderBy("id", "desc")->get(); $holiday = $this->model->find($id ?: $request->id); $isEdit = true; return view($this->bladePath . ".create", compact("projects", "holiday", "isEdit")); } public function update($id = null, Request $request) { $request->validate([ "project_id" => "required|integer", "price_ratio" => "required|numeric|min:0", "date" => "required|date_format:Y-m-d", "remark" => "nullable|string", ]); $holiday = $this->model->find($id ?: $request->id); $holiday->update([ "project_id" => $request->project_id, "date" => $request->date, "price_ratio" => $request->price_ratio, "remark" => $request->remark, ]); $url = url($this->urlPrefix . "?project_id=" . $request->project_id); return $this->success("修改成功", $url); } }