From 438eb0b6355da30ac643402acddaca33c394e489 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=AD=90=E7=90=A6?= <95332614+wangziqi0409@users.noreply.github.com> Date: Tue, 20 Jan 2026 13:56:37 +0800 Subject: [PATCH] add --- .../controller/AdminController.java | 8 + .../controller/NurseController.java | 10 + .../nursinghome/mapper/ScheduleMapper.java | 6 + frontend/src/api/index.js | 2 + frontend/src/main.js | 2 +- frontend/src/views/admin/Schedules.vue | 264 +++++++++++++----- frontend/src/views/nurse/Schedules.vue | 143 ++++++++-- 7 files changed, 353 insertions(+), 82 deletions(-) diff --git a/backend/src/main/java/com/nursinghome/controller/AdminController.java b/backend/src/main/java/com/nursinghome/controller/AdminController.java index 67f028e..cd404b2 100644 --- a/backend/src/main/java/com/nursinghome/controller/AdminController.java +++ b/backend/src/main/java/com/nursinghome/controller/AdminController.java @@ -162,6 +162,14 @@ public class AdminController { return ApiResponse.success(scheduleMapper.listByDate(java.time.LocalDate.parse(date))); } + @GetMapping("/schedules/range") + public ApiResponse> listSchedulesRange(@RequestParam String start, @RequestParam String end) { + return ApiResponse.success(scheduleMapper.listByDateRange( + java.time.LocalDate.parse(start), + java.time.LocalDate.parse(end) + )); + } + @PostMapping("/schedules") public ApiResponse createSchedule(@RequestBody ScheduleRequest request) { Schedule schedule = new Schedule(); diff --git a/backend/src/main/java/com/nursinghome/controller/NurseController.java b/backend/src/main/java/com/nursinghome/controller/NurseController.java index 2f0cb53..77c84d2 100644 --- a/backend/src/main/java/com/nursinghome/controller/NurseController.java +++ b/backend/src/main/java/com/nursinghome/controller/NurseController.java @@ -40,6 +40,16 @@ public class NurseController { return ApiResponse.success(scheduleMapper.listByNurseAndDate(nurseId, java.time.LocalDate.parse(date))); } + @GetMapping("/schedules/range") + public ApiResponse> listSchedulesRange(@RequestParam String start, @RequestParam String end) { + Long nurseId = Long.valueOf(StpUtil.getLoginId().toString()); + return ApiResponse.success(scheduleMapper.listByNurseAndDateRange( + nurseId, + java.time.LocalDate.parse(start), + java.time.LocalDate.parse(end) + )); + } + @PostMapping("/care-records") public ApiResponse createCare(@RequestBody CareRecordRequest request) { CareRecord record = new CareRecord(); diff --git a/backend/src/main/java/com/nursinghome/mapper/ScheduleMapper.java b/backend/src/main/java/com/nursinghome/mapper/ScheduleMapper.java index 2b75226..61c616e 100644 --- a/backend/src/main/java/com/nursinghome/mapper/ScheduleMapper.java +++ b/backend/src/main/java/com/nursinghome/mapper/ScheduleMapper.java @@ -14,6 +14,12 @@ public interface ScheduleMapper { @Select("SELECT * FROM schedule WHERE date = #{date} ORDER BY id DESC") List listByDate(LocalDate date); + @Select("SELECT * FROM schedule WHERE date BETWEEN #{start} AND #{end} ORDER BY date ASC") + List listByDateRange(@Param("start") LocalDate start, @Param("end") LocalDate end); + + @Select("SELECT * FROM schedule WHERE nurse_id = #{nurseId} AND date BETWEEN #{start} AND #{end} ORDER BY date ASC") + List listByNurseAndDateRange(@Param("nurseId") Long nurseId, @Param("start") LocalDate start, @Param("end") LocalDate end); + @Insert("INSERT INTO schedule(nurse_id, date, shift, task, created_at, updated_at) VALUES(#{nurseId}, #{date}, #{shift}, #{task}, NOW(), NOW())") @Options(useGeneratedKeys = true, keyProperty = "id") int insert(Schedule schedule); diff --git a/frontend/src/api/index.js b/frontend/src/api/index.js index dd8c061..a00f2a7 100644 --- a/frontend/src/api/index.js +++ b/frontend/src/api/index.js @@ -17,6 +17,7 @@ export const eldersUpdate = (payload) => http.put("/admin/elders", payload); export const eldersDelete = (id) => http.delete(`/admin/elders/${id}`); export const schedulesByDate = (date) => http.get("/admin/schedules", { params: { date } }); +export const schedulesByRange = (start, end) => http.get("/admin/schedules/range", { params: { start, end } }); export const scheduleCreate = (payload) => http.post("/admin/schedules", payload); export const scheduleUpdate = (payload) => http.put("/admin/schedules", payload); export const scheduleDelete = (id) => http.delete(`/admin/schedules/${id}`); @@ -31,6 +32,7 @@ export const noticeCreate = (payload) => http.post("/admin/notices", payload); export const noticeList = (role, userId) => http.get("/admin/notices", { params: { role, userId } }); export const nurseSchedules = (date) => http.get("/nurse/schedules", { params: { date } }); +export const nurseSchedulesRange = (start, end) => http.get("/nurse/schedules/range", { params: { start, end } }); export const nurseCareCreate = (payload) => http.post("/nurse/care-records", payload); export const nurseCareList = (elderId) => http.get("/nurse/care-records", { params: { elderId } }); export const nurseHealthCreate = (payload) => http.post("/nurse/health-records", payload); diff --git a/frontend/src/main.js b/frontend/src/main.js index a845671..716e965 100644 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -1,4 +1,4 @@ -import Vue from "vue"; +import Vue from "vue"; import ElementUI from "element-ui"; import "element-ui/lib/theme-chalk/index.css"; import "./assets/theme.css"; diff --git a/frontend/src/views/admin/Schedules.vue b/frontend/src/views/admin/Schedules.vue index 761f942..b49d72a 100644 --- a/frontend/src/views/admin/Schedules.vue +++ b/frontend/src/views/admin/Schedules.vue @@ -1,108 +1,244 @@ -