| | |
| | | end_date: undefined, |
| | | start_date: undefined, |
| | | }); |
| | | const formatDate = (date, format = 'YYYY年M月') => { |
| | | return dayjs(date).format(format); |
| | | }; |
| | | |
| | | const eventIcons = ref({ |
| | | 'work-order': ev1, |
| | | task: ev2, |
| | | }); |
| | | // 初始化月份范围 |
| | | |
| | | const monthRange = getCurrentMonthRange(); |
| | | params.value = monthRange; |
| | | // 检查日期是否是当前月份 |
| | |
| | | }; |
| | | // 处理月份选择器变化 |
| | | const handleMonthChange = val => { |
| | | const selectedDate = new Date(val); |
| | | const now = new Date(); |
| | | |
| | | const selectedMonth = new Date(val); |
| | | currentMonth.value = selectedMonth; |
| | | |
| | | // 如果是当前月份,则选中当天;否则不选中 |
| | | if ( |
| | | selectedDate.getFullYear() === now.getFullYear() && |
| | | selectedDate.getMonth() === now.getMonth() |
| | | ) { |
| | | currentMonth.value = selectedDate; |
| | | if (isCurrentMonth(selectedMonth)) { |
| | | selectedDate.value = new Date(); |
| | | } else { |
| | | currentMonth.value = selectedDate; |
| | | // 清除选中状态 |
| | | nextTick(() => { |
| | | const selectedCells = document.querySelectorAll('.el-calendar-table td.is-selected'); |
| | | selectedCells.forEach(cell => { |
| | | cell.classList.remove('is-selected'); |
| | | }); |
| | | }); |
| | | selectedDate.value = null; |
| | | } |
| | | |
| | | // 强制更新日历视图 |
| | | nextTick(() => { |
| | | updateCalendarSelection(); |
| | | }); |
| | | }; |
| | | |
| | | // 获取日历数据 |
| | |
| | | currentMonth.value = dayjs(currentMonth.value).add(1, 'month').toDate(); |
| | | } |
| | | |
| | | // 如果是当前月份,则选中当天;否则不选中 |
| | | if (isCurrentMonth(currentMonth.value)) { |
| | | selectedDate.value = new Date(); |
| | | } else { |
| | | selectedDate.value = null; |
| | | } |
| | | |
| | | await nextTick(); |
| | | // 强制清除所有选中状态 |
| | | updateCalendarSelection(); |
| | | }; |
| | | const updateCalendarSelection = () => { |
| | | // 清除所有选中状态 |
| | | const selectedCells = document.querySelectorAll('.el-calendar-table td.is-selected'); |
| | | selectedCells.forEach(cell => { |
| | | cell.classList.remove('is-selected'); |
| | | }); |
| | | |
| | | // 如果是当前月份才设置选中 |
| | | if (isCurrentMonth(currentMonth.value)) { |
| | | selectedDate.value = new Date(); |
| | | // 如果是当前月份,设置当前日为选中状态 |
| | | if (isCurrentMonth(currentMonth.value) && selectedDate.value) { |
| | | const currentDay = dayjs(selectedDate.value).date(); |
| | | const calendarCells = document.querySelectorAll('.el-calendar-table td'); |
| | | |
| | | calendarCells.forEach(cell => { |
| | | const day = parseInt(cell.querySelector('.date-number').textContent); |
| | | if (day === currentDay) { |
| | | cell.classList.add('is-selected'); |
| | | } |
| | | }); |
| | | } |
| | | }; |
| | | |
| | |
| | | selectedDate.value = null; |
| | | } |
| | | |
| | | nextTick(() => { |
| | | updateCalendarSelection(); |
| | | }); |
| | | |
| | | getJobEventBar(); |
| | | }, |
| | | { deep: true, immediate: true } |
| | |
| | | } else { |
| | | selectedDate.value = null; |
| | | } |
| | | |
| | | nextTick(() => { |
| | | updateCalendarSelection(); |
| | | }); |
| | | |
| | | getJobEventBar(); |
| | | }); |
| | | </script> |
| | |
| | | display: none; |
| | | } |
| | | .el-calendar__body { |
| | | padding-top: 0; |
| | | padding-top: 0 !important; |
| | | } |
| | | .date-number { |
| | | font-size: 13px !important; |
| | |
| | | .el-calendar-table td.is-selected { |
| | | background-color: transparent; |
| | | } |
| | | |
| | | } |
| | | |
| | | .event-item { |