adminProject()->orderBy("id", "desc")->get(); view()->share(compact("projects")); return $projects; } public function index(Request $request) { $data = $this->model->with(["paramedicLevels","wechatpayAccount","alipayAccount"])->paginate(10); return view($this->bladePath . ".index", compact("data")); } public function stored($model) { event(new ProjectSaved($model)); } public function edit($id = null, Request $request, FormBuilder $formBuilder) { $vo = (new Project())->with("paramedicLevels")->find($id ?: $request->id); $form = $formBuilder->create($this->formClass, [ "method" => "POST", "id" => "fm", "url" => url($this->urlPrefix . "/update/" . $vo->id), "class" => "form form-horizontal validate-form", "model" => $vo ]); $form->add("_previous", "hidden", ["value" => (url()->previous())]); return view($this->bladePath . ".create", compact("form")); } public function updated($model) { event(new ProjectSaved($model)); } public function beds($id) { $project = (new Project())->with(["buildings"])->find($id); $data = (new Bed())->where("project_id", $id)->orderBy("id", "desc")->with(["project", "building", "area", "room"]); if (request()->room_id) { $data = $data->where("room_id", request()->room_id); $room = (new Room())->find(request()->room_id); $rooms = (new Room())->where("area_id", $room->area_id)->get(); $area = (new Area())->where("id", $room->area_id)->first(); $areas = (new Area())->where("building_id", $area->building_id)->get(); view()->share(compact("rooms", "areas")); } elseif (request()->area_id) { $data = $data->where("area_id", request()->area_id); $area = (new Area())->find(request()->area_id); $areas = (new Area())->where("building_id", $area->building_id)->get(); $rooms = (new Room())->where("area_id", $area->id)->get(); view()->share(compact("areas", "rooms")); } elseif (request()->building_id) { $areas = (new Area())->where("building_id", request()->building_id)->get(); $data = $data->where("building_id", request()->building_id); view()->share(compact("areas")); } $data = $data->paginate(10); return view($this->bladePath . ".beds", compact("project", "data")); } public function getHeadList() { $areaId = \request('area_id', 0); $project_id = \request('project_id'); // 获取护士长 $roleId = Role::where('name', 'like', '%护士长%')->where('guard_name', 'admin')->value('id'); $adminIds = DB::table('model_has_roles')->where('role_id', $roleId)->where('model_type', 'App\Admin')->pluck('model_id'); // 全量护工数据 $headList = Admin::whereIn('id', $adminIds)->whereRaw("find_in_set('$project_id',project_ids)")->get(); // 获取病区选中的护工 foreach ($headList as $item) { $item->selected = ''; if ($areaId) { $has = AdminAreaLink::where('area_id', $areaId)->where('admin_id', $item->id)->count(); if ($has) $item->selected = 'selected'; } } return $this->ajaxResponse($headList); } public function getYuanfangList() { $buildingId = \request('building_id', 0); $project_id = \request('project_id'); // 获取院方管理 $roleId = Role::where('name', 'like', '%院方管理%')->where('guard_name', 'admin')->value('id'); $adminIds = DB::table('model_has_roles')->where('role_id', $roleId)->where('model_type', 'App\Admin')->pluck('model_id'); // 全量院方管理数据 $yuanfangList = Admin::whereIn('id', $adminIds)->whereRaw("find_in_set('$project_id',project_ids)")->get(); // 获取楼栋选中的院方管理 foreach ($yuanfangList as $item) { $item->selected = ''; if ($buildingId) { $has = AdminBuildingLink::where('building_id', $buildingId)->where('admin_id', $item->id)->count(); if ($has) $item->selected = 'selected'; } } return $this->ajaxResponse($yuanfangList); } public function createSub(Request $request) { switch ($request->type) { case "project": $data = [ "project_id" => $request->id, "name" => $request->name, "myindex" => $request->myindex ]; $res = (new Building())->create($data); // 添加选中的院方管理 if (isset($request->yuanfang) && is_array($request->yuanfang)) { $links = []; foreach ($request->yuanfang as $item) { $links[] = [ 'admin_id' => $item, 'building_id' => $res->id, 'project_id' => $res->project_id, 'created_at' => date('Y-m-d H:i:s') ]; } if (!empty($links)) { AdminBuildingLink::insert($links); } } break; case "building": $parent = Building::find($request->id); $data = [ "project_id" => $parent->project_id, "building_id" => $request->id, "name" => $request->name, "myindex" => $request->myindex ]; $res = (new Area())->create($data); // 添加选中的护工 $links = []; foreach ($request->head as $item) { $links[] = [ 'admin_id' => $item, 'area_id' => $res->id, 'project_id' => $res->project_id, 'created_at' => date('Y-m-d H:i:s') ]; } AdminAreaLink::insert($links); break; case "area": $parent = Area::find($request->id); $data = [ "project_id" => $parent->project_id, "building_id" => $parent->building_id, "area_id" => $request->id, "name" => $request->name, "myindex" => $request->myindex ]; $res = (new Room())->create($data); break; case "room": $parent = Room::find($request->id); $data = [ "project_id" => $parent->project_id, "building_id" => $parent->building_id, "area_id" => $parent->area_id, "room_id" => $request->id, "name" => $request->name, "myindex" => $request->myindex ]; $res = (new Bed())->create($data); break; default: return $this->error("不正确的类型"); } return $this->success("添加成功!", '', $res); } public function getSubs(Request $request) { switch ($request->type) { case "building": $res = (new Area())->where("building_id", $request->id)->get(); break; case "area": $res = (new Room())->where("area_id", $request->id)->get(); break; default: $res = []; } return $this->ajaxResponse($res); } public function editDepartment(Request $request) { $data = [ "name" => $request->name, "myindex" => $request->myindex ]; switch ($request->type) { case "building": $res = (new Building())->find($request->id); $res->update($data); // 删除原来关联,添加新关联 AdminBuildingLink::where('building_id', $request->id)->delete(); if (isset($request->yuanfang) && is_array($request->yuanfang)) { $links = []; foreach ($request->yuanfang as $item) { $links[] = [ 'admin_id' => $item, 'building_id' => $request->id, 'project_id' => $res->project_id, 'created_at' => date('Y-m-d H:i:s') ]; } if (!empty($links)) { AdminBuildingLink::insert($links); } } break; case "area": $res = (new Area())->find($request->id); $res->update($data); // 删除原来关联,添加新关联 AdminAreaLink::where('area_id', $request->id)->delete(); $links = []; foreach ($request->head as $item) { $links[] = [ 'admin_id' => $item, 'area_id' => $request->id, 'project_id' => $res->project_id, 'created_at' => date('Y-m-d H:i:s') ]; } AdminAreaLink::insert($links); break; case "room": $res = (new Room())->find($request->id)->update($data); break; case "bed": $res = (new Bed())->find($request->id)->update($data); break; default: return $this->error("不正确的类型"); } return $this->success($res); } public function deleteDepartment(Request $request) { switch ($request->type) { case "building": $vo = (new Building())->find($request->id); break; case "area": $vo = (new Area())->find($request->id); break; case "room": $vo = (new Room())->find($request->id); break; case "bed": $vo = (new Bed())->find($request->id); break; default: return $this->error("不正确的类型"); } $res = $vo->delete(); if ($res) { return $this->success("删除成功"); } else { return $this->success("删除失败"); } } function exportBeds(Request $request) { $beds = Bed::with(["area", "building", "room"]) ->whereHas("area") ->whereHas("building") ->whereHas("room") ->where("project_id", $request->project_id) ->orderBy("building_id") ->orderBy("area_id") ->orderBy("room_id") ->get(); $data = []; foreach ($beds as $bed) { $data[] = [ "楼栋" => $bed->building ? $bed->building->name : "", "病区" => $bed->area ? $bed->area->name : "", "病房" => $bed->room ? $bed->room->name : "", "床号" => $bed->name, ]; } $data = collect($data); return Excel::download(new CommonExport($data), "beds.xlsx"); } /** * 满意度调查 */ public function askSubmit() { $is_export = \request('export', 0); $userId = auth()->id(); $projects = (new ProjectController())->_checkProjects(); $project_id = \request('project_id', ($projects[0]->id) ?? ''); // 判断是否护士长 $roleId = Role::where('name', 'like', '%护士长%')->where('guard_name', 'admin')->value('id'); $hushizhang = DB::table('model_has_roles')->where('role_id', $roleId) ->where('model_type', 'App\Admin') ->where('model_id', $userId)->count(); $data = AskSubmit::with("admin", "project") ->where(function ($qeury) use ($hushizhang, $userId, $project_id) { if ($hushizhang) $qeury->where('admin_id', $userId); if ($project_id) $qeury->where('project_id', $project_id); }); // 导出 if ($is_export) { $data = $data->get()->toArray(); $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setCellValue('A1', '日期'); $sheet->setCellValue('B1', '名字'); $sheet->setCellValue('C1', '医院'); $sheet->setCellValue('D1', '详情'); $sheet->setCellValue('E1', '建议'); $sheet->setCellValue('F1', '总分'); $sheet->getColumnDimension('A')->setWidth(20); $sheet->getColumnDimension('B')->setWidth(20); $sheet->getColumnDimension('C')->setWidth(20); $sheet->getColumnDimension('D')->setWidth(60); $sheet->getColumnDimension('E')->setWidth(20); $sheet->getColumnDimension('F')->setWidth(20); $count = count($data); //计算有多少条数据1 for ($i = 2; $i <= $count + 1; $i++) { $content = ''; foreach ($data[$i - 2]['content'] as $item) { $content .= $item['ask'] . ':' . $item['score'] . "\n"; } if ($data[$i - 2]['mobile']) { $name = $data[$i - 2]['name'] . "(" . $data[$i - 2]['mobile'] . ")"; } else { $name = $data[$i - 2]['admin']['name']; } $sheet->setCellValue('A' . $i, $data[$i - 2]['date']); $sheet->setCellValue('B' . $i, $name); $sheet->setCellValue('C' . $i, $data[$i - 2]['project']['name']); $sheet->setCellValue('D' . $i, $content); $sheet->setCellValue('E' . $i, $data[$i - 2]['tip']); $sheet->setCellValue('F' . $i, $data[$i - 2]['score']); } header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="' . '满意度调查_' . date('YmdHis') . '.xlsx"'); header('Cache-Control: max-age=0'); $writer = new Xlsx($spreadsheet); $writer->save('php://output'); exit; } $data = $data->orderBy('id', 'desc')->paginate(10); $data = $data->appends(['project_id' => $project_id]); return view($this->bladePath . ".asksubmit_index", compact("data", "projects", "project_id")); } public function askSubmitCreate(FormBuilder $formBuilder) { $project_ids = auth()->user()->project_ids; $project_id = \request('project_id'); if ($project_ids) { $project_ids = explode(',', $project_ids); } if ($project_id == 7) { $askSubmitForm = AskSubmitScForm::class; } else { $askSubmitForm = AskSubmitForm::class; } $form = $formBuilder->create($askSubmitForm, [ "method" => "POST", "id" => "fm", "url" => url($this->urlPrefix . "/asksubmit_store?project_id=" . $project_id) ]); $choices = (new Project())->where(function ($query) use ($project_ids) { if ($project_ids) { $query->whereIn("id", $project_ids); } })->get()->pluck("name", "id"); $form->modify("project_id", "select", [ "choices" => $choices->toArray(), "selected" => $choices->keys()->first() ]); $form->modify('project_id', Field::HIDDEN, ["default_value" => $project_id]); $form->modify('date', Field::DATE, ['default_value' => date('Y-m-d')]); return view($this->bladePath . ".asksubmit_create", compact("form")); } public function askSubmitStore(Request $request) { $all = \request()->all(); $project_id = \request('project_id'); $userId = auth()->user()->id; // 一个月只能提交一次 $has = AskSubmit::where('admin_id', $userId) ->where('project_id', $all['project_id']) ->where('date', 'like', '%' . date('Y-m') . '%') ->first(); if ($has) return $this->error("每个月只能提交一次"); $content = []; $socre = 0; $askList = AskSubmit::$askList; if ($project_id == 7) { $askList = AskSubmit::$askListSc; } foreach ($all['ask'] as $key => $item) { $content[] = [ 'ask' => $askList[$key], 'score' => $item ]; $socre += $item; } $all['admin_id'] = $userId; $all['score'] = $socre; $all['content'] = $content; $model = AskSubmit::create($all); $url = "/admin/project/asksubmit"; return $this->success("新增成功", $url, $model); } public function askSubmitEdit(Request $request, FormBuilder $formBuilder) { $vo = AskSubmit::find($request->id); if ($vo->project_id == 7) { $askSubmitForm = AskSubmitScForm::class; } else { $askSubmitForm = AskSubmitForm::class; } $form = $formBuilder->create($askSubmitForm, [ "method" => "POST", "id" => "fm", "url" => url($this->urlPrefix . "/asksubmit_update/" . $vo->id), "class" => "form form-horizontal validate-form", "model" => $vo ]); $project_ids = auth()->user()->project_ids; if ($project_ids) { $project_ids = explode(',', $project_ids); } $form->modify("project_id", "select", [ "choices" => (new Project())->where(function ($query) use ($project_ids) { if ($project_ids) { $query->whereIn("id", $project_ids); } })->get()->pluck("name", "id")->toArray() ]); $form->modify('project_id', Field::HIDDEN, ["default_value" => $vo->project_id]); $form->add("_previous", "hidden", ["value" => (url()->previous())]); return view($this->bladePath . ".asksubmit_create", compact("form")); } public function askSubmitUpdate($id = null, Request $request) { try { $all = $request->all(); $model = AskSubmit::find($id); $content = []; $socre = 0; foreach ($all['ask'] as $key => $item) { $content[] = [ 'ask' => AskSubmit::$askList[$key], 'score' => $item ]; $socre += $item; } $all['score'] = $socre; $all['content'] = $content; $model->fill($all); $model->save(); $url = "/admin/project/asksubmit/" . $request->project_id; return $this->success("修改成功", $url, $model); } catch (\Exception $exception) { return $this->error("修改失败:" . $exception->getMessage()); } } public function delete(Request $request) { try { $array = explode('-', $request->id); if (count($array) == 2) { $model = AskSubmit::find($array[1]); } else { $model = $this->model->find($request->id); } $model->delete(); $this->deleted($model); return $this->success("删除成功"); } catch (\Exception $exception) { return $this->error("删除失败:" . $exception->getMessage()); } } public function askSubmitCreateV2(FormBuilder $formBuilder) { $project_id = \request('project_id'); if ($project_id == 7) { $askSubmitForm = AskSubmitScForm::class; } else { $askSubmitForm = AskSubmitForm::class; } $form = $formBuilder->create($askSubmitForm, [ "method" => "POST", "id" => "fm", "url" => url($this->urlPrefix . "/asksubmit_store_v2?project_id=" . $project_id) ]); $choices = (new Project())->get()->pluck("name", "id"); $form->modify("project_id", "select", [ "choices" => $choices->toArray(), "selected" => $choices->keys()->first() ]); $form->modify('project_id', Field::HIDDEN, ["default_value" => $project_id]); $form->modify('date', Field::DATE, ['default_value' => date('Y-m-d')]); return view($this->bladePath . ".asksubmit_create_v2", compact("form")); } public function askSubmitStoreV2(Request $request) { $all = \request()->all(); if (!isset($all['mobile']) || empty($all['mobile'])) { return $this->error("手机号不存在", ''); } $project_id = \request('project_id'); // 一个月只能提交一次 $has = AskSubmit::where('project_id', $all['project_id']) ->where('mobile', $all['mobile']) ->first(); if ($has) return $this->error("请勿重复提交"); $content = []; $socre = 0; $askList = AskSubmit::$askList; if ($project_id == 7) { $askList = AskSubmit::$askListSc; } foreach ($all['ask'] as $key => $item) { $content[] = [ 'ask' => $askList[$key], 'score' => $item ]; $socre += $item; } $all['score'] = $socre; $all['content'] = $content; $model = AskSubmit::create($all); return $this->success("新增成功", '', $model); } }