2.6 KiB
2.6 KiB
2026-05-06 日志
日历事件日程类型功能
修改内容
-
后端
routers/apiCalendar.go:TabCalendarEvent结构体新增ScheduleType string字段(默认值 work)addevent/updateevent接口解析并保存schedule_type参数
-
前端
CalendarDetail.vue:eventData新增scheduleType字段openEventModal/editEvent传递scheduleTypeselectColor函数联动更新scheduleTypesaveEvent/eventDrop提交schedule_typegetEvents返回数据附加extendedProps.scheduleType- 模态框显示日程类型标签
-
i18n:
zh-CN.json: 新增event_type: "日程类型"en.json: 新增event_type: "Event Type"
日程类型选项
- work - 工作
- duty - 值班
- exam - 考试
- standby - 备用
- personal_holiday - 个人假期
- public_holiday - 公众假期
注意事项
- GORM AutoMigrate 会自动添加新字段
- 前端颜色选择与日程类型联动
修复:calendar/events jsonErr
问题:fromGetCalendarEvents 的 start/end 是 *time.Time 类型,无法直接解析字符串格式的日期。
修复:改为直接用类型断言解析字符串,用 time.Parse("2006-01-02", ...) 解析。
优化:BgColor 弃用,前端根据 ScheduleType 渲染颜色
前端:添加 getColorByScheduleType() 函数,getEvents 中使用 scheduleType 映射颜色。
后端:只存储 ScheduleType,不处理颜色逻辑。颜色完全由前端 colorOptions 控制。
CalendarDetail 滚动标题快照对比
功能:每次 getEvents 存快照,数据变化或宽度变化时重新计算标题滚动。
实现:
pageData.lastEventsSnapshot:存储上一次的 JSON 快照getEvents()末尾对比快照,变化则setTimeout(recalcScrollTitles, 150)ResizeObserver监听日历容器宽度变化,防抖 150ms 后重算applyScrollToTitle():清除旧状态 → 测量 overflow → 设置--scroll-distance和data-truncated属性
CalendarList 编辑/删除按钮改用 canEdit
改动:
CalendarList.vue:编辑/删除按钮v-if条件从calendar.UserID === userStore.userInfo?.ID改为calendar.canEdit- 移除废弃的
useUserStore导入
CalendarList 删除改用 ConfirmDialog 组件
改动:
CalendarList.vue导入并使用ConfirmDialog组件- 新增
showDeleteModal+deletingCalendar状态 deleteCalendar()改为打开确认弹窗,confirmDelete()执行实际删除 API- i18n 新增
calendar.confirm_delete_message:zh-CN「确定要删除日历「{name}」吗?此操作不可撤销。」,en 英文版