대시보드와 주간보고 기능 업데이트

This commit is contained in:
2026-01-10 14:40:01 +09:00
parent 0dd4b561f0
commit e4627caa4c
26 changed files with 3329 additions and 1720 deletions

View File

@@ -139,6 +139,7 @@ import { useRouter } from 'vue-router'
const router = useRouter()
const { fetchCurrentUser, isAdmin } = useAuth()
const { getWeekInfo, getWeekDates, getWeeksInYear, changeWeek: calcChangeWeek } = useWeekCalc()
const isLoading = ref(false)
const isLoaded = ref(false)
@@ -178,72 +179,23 @@ onMounted(async () => {
})
function initCurrentWeek() {
const now = new Date()
const jan4 = new Date(now.getFullYear(), 0, 4)
const jan4Day = jan4.getDay() || 7
const week1Monday = new Date(jan4)
week1Monday.setDate(jan4.getDate() - jan4Day + 1)
const diff = now.getTime() - week1Monday.getTime()
const weekNum = Math.floor(diff / (7 * 24 * 60 * 60 * 1000)) + 1
selectedYear.value = now.getFullYear()
selectedWeek.value = weekNum > 0 ? weekNum : 1
const weekInfo = getWeekInfo(new Date())
selectedYear.value = weekInfo.year
selectedWeek.value = weekInfo.week
updateWeekDates()
}
function changeWeek(delta: number) {
let year = selectedYear.value
let week = selectedWeek.value + delta
if (week < 1) {
year--
week = getWeeksInYear(year)
} else if (week > getWeeksInYear(year)) {
year++
week = 1
}
const { year, week } = calcChangeWeek(selectedYear.value, selectedWeek.value, delta)
selectedYear.value = year
selectedWeek.value = week
updateWeekDates()
}
function getWeeksInYear(year: number): number {
const dec31 = new Date(year, 11, 31)
const dayOfWeek = dec31.getDay()
return dayOfWeek >= 4 || dayOfWeek === 0 ? 53 : 52
}
function updateWeekDates() {
const { monday, sunday } = getWeekDates(selectedYear.value, selectedWeek.value)
weekStartDate.value = monday
weekEndDate.value = sunday
}
function getWeekDates(year: number, week: number): { monday: string, sunday: string } {
const jan4 = new Date(year, 0, 4)
const jan4Day = jan4.getDay() || 7
const week1Monday = new Date(jan4)
week1Monday.setDate(jan4.getDate() - jan4Day + 1)
const monday = new Date(week1Monday)
monday.setDate(week1Monday.getDate() + (week - 1) * 7)
const sunday = new Date(monday)
sunday.setDate(monday.getDate() + 6)
return {
monday: formatDate(monday),
sunday: formatDate(sunday)
}
}
function formatDate(date: Date): string {
const y = date.getFullYear()
const m = String(date.getMonth() + 1).padStart(2, '0')
const d = String(date.getDate()).padStart(2, '0')
return `${y}-${m}-${d}`
const weekInfo = getWeekDates(selectedYear.value, selectedWeek.value)
weekStartDate.value = weekInfo.startDateStr
weekEndDate.value = weekInfo.endDateStr
}
async function loadAggregate() {