From bc9e32d62a118dc146536943f144190a556cadc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E5=BC=BA?= <357099073@qq.com> Date: Thu, 24 Sep 2026 15:14:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=A5=E5=8E=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/api/oaSchedule.js | 12 + .../apps/oa/schedule/components/edit.vue | 7 +- backend/src/views/apps/oa/schedule/index.vue | 351 +++++++++++++++++- go/controllers/backend_oa_schedule.go | 157 ++++++++ go/docs/sql/create_oa_holiday.sql | 36 ++ go/models/init.go | 1 + go/models/oa_holiday.go | 33 ++ go/pkg/holiday/fallback.go | 122 ++++++ go/pkg/holiday/fetch.go | 257 +++++++++++++ go/pkg/holiday/holiday.go | 201 ++++++++++ go/pkg/holiday/holiday_test.go | 229 ++++++++++++ go/pkg/holiday/year2027_probe_test.go | 43 +++ go/routers/backend/backend.go | 3 + 13 files changed, 1446 insertions(+), 6 deletions(-) create mode 100644 go/docs/sql/create_oa_holiday.sql create mode 100644 go/models/oa_holiday.go create mode 100644 go/pkg/holiday/fallback.go create mode 100644 go/pkg/holiday/fetch.go create mode 100644 go/pkg/holiday/holiday.go create mode 100644 go/pkg/holiday/holiday_test.go create mode 100644 go/pkg/holiday/year2027_probe_test.go diff --git a/backend/src/api/oaSchedule.js b/backend/src/api/oaSchedule.js index 82f87f1..0f5fe4d 100644 --- a/backend/src/api/oaSchedule.js +++ b/backend/src/api/oaSchedule.js @@ -83,3 +83,15 @@ export function carryPendingSchedules(data) { data }) } + +// 中国法定节假日/调休日 +// 返回 { list: [{date, name, type, year, wage}], builtin_years: [..] } +// type: 0 调休上班(周末补班,显示「班」);1 法定放假(显示「休」) +// 传 start_date + end_date 查区间(日历按 42 格查询),或传 year 查整年。 +export function getScheduleHolidays(params) { + return request({ + url: '/backend/oa/holiday', + method: 'get', + params + }) +} diff --git a/backend/src/views/apps/oa/schedule/components/edit.vue b/backend/src/views/apps/oa/schedule/components/edit.vue index c265874..bbae3fd 100644 --- a/backend/src/views/apps/oa/schedule/components/edit.vue +++ b/backend/src/views/apps/oa/schedule/components/edit.vue @@ -176,6 +176,11 @@ const props = defineProps({ draft: { type: Object, default: null + }, + // 新建时预填的标题(如从节假日快捷新建,预填节日名称) + prefillTitle: { + type: String, + default: "" } }); @@ -367,7 +372,7 @@ function initForm() { } } else { editingId.value = 0; - form.title = ""; + form.title = props.prefillTitle || ""; form.schedule_date = props.defaultDate || ""; form.all_day = true; form.start_time = ""; diff --git a/backend/src/views/apps/oa/schedule/index.vue b/backend/src/views/apps/oa/schedule/index.vue index 19a1d86..2c4251d 100644 --- a/backend/src/views/apps/oa/schedule/index.vue +++ b/backend/src/views/apps/oa/schedule/index.vue @@ -92,18 +92,27 @@ 'other-month': !cell.inMonth, today: cell.isToday, selected: cell.date === selectedDate, - 'has-items': cell.items.length > 0 + 'has-items': cell.items.length > 0, + 'is-off': cell.tag === 'off', + 'is-work': cell.tag === 'work' }" @click="selectedDate = cell.date" @dblclick="openCreate(cell.date)" >