대시보드와 주간보고 기능 업데이트
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user