정산달력

This commit is contained in:
focp212@naver.com
2025-09-19 09:05:41 +09:00
parent e795e3343d
commit 3a813420dd
2 changed files with 18 additions and 34 deletions

View File

@@ -21,6 +21,9 @@ export const CalendarWrap = () => {
const [totalScheduledAmount, setTotalScheduledAmount] = useState<number>(0); const [totalScheduledAmount, setTotalScheduledAmount] = useState<number>(0);
const [scheduledList, setScheduledList] = useState<Array<SettlementDays | undefined>>([]); const [scheduledList, setScheduledList] = useState<Array<SettlementDays | undefined>>([]);
const [completedList, setCompletedList] = useState<Array<SettlementDays | undefined>>([]); const [completedList, setCompletedList] = useState<Array<SettlementDays | undefined>>([]);
const [scheduledDateList, setScheduledDateList] = useState<Array<number>>([]);
const [completedDateList, setCompletedDateList] = useState<Array<number>>([]);
const { mutateAsync: settlementsCalendar } = useSettlementsCalendarMutation(); const { mutateAsync: settlementsCalendar } = useSettlementsCalendarMutation();
@@ -30,23 +33,29 @@ export const CalendarWrap = () => {
yearMonth: yearMonth yearMonth: yearMonth
}; };
settlementsCalendar(params).then((rs: SettlementsCalendarResponse) => { settlementsCalendar(params).then((rs: SettlementsCalendarResponse) => {
console.log(rs);
setTotalCompletedAmount(rs.totalCompletedAmount); setTotalCompletedAmount(rs.totalCompletedAmount);
setTotalScheduledAmount(rs.totalScheduledAmount); setTotalScheduledAmount(rs.totalScheduledAmount);
setYearMonth(rs.yearMonth); setYearMonth(rs.yearMonth);
let scheduleArr = []; let scheduleArr = [];
let scheduleDateArr = [];
let completedArr = []; let completedArr = [];
let completedDateArr = [];
if(!!rs.settlementDays && rs.settlementDays.length > 0){ if(!!rs.settlementDays && rs.settlementDays.length > 0){
for(let i=0;i<rs.settlementDays.length;i++){ for(let i=0;i<rs.settlementDays.length;i++){
let date = moment(rs.settlementDays[i]?.settlementDate).date();
if(rs.settlementDays[i]?.settlementStatus === SettlementStatus.SCHEDULED){ if(rs.settlementDays[i]?.settlementStatus === SettlementStatus.SCHEDULED){
scheduleArr.push(rs.settlementDays[i]); scheduleArr.push(rs.settlementDays[i]);
scheduleDateArr.push(date);
} }
else if(rs.settlementDays[i]?.settlementStatus === SettlementStatus.COMPLETED){ else if(rs.settlementDays[i]?.settlementStatus === SettlementStatus.COMPLETED){
completedArr.push(rs.settlementDays[i]); completedArr.push(rs.settlementDays[i]);
completedDateArr.push(date);
} }
} }
setScheduledList(scheduleArr); setScheduledList(scheduleArr);
setScheduledDateList(scheduleDateArr);
setCompletedList(completedArr); setCompletedList(completedArr);
setCompletedDateList(completedDateArr);
} }
}); });
}; };
@@ -127,8 +136,8 @@ export const CalendarWrap = () => {
<CalendarGrid <CalendarGrid
yearMonth={ yearMonth } yearMonth={ yearMonth }
scheduledList={ scheduledList } scheduledDateList={ scheduledDateList }
completedList={ completedList } completedDateList={ completedDateList }
></CalendarGrid> ></CalendarGrid>
<div className="settlement-list"> <div className="settlement-list">

View File

@@ -4,37 +4,16 @@ import { useEffect, useState } from 'react';
export interface CalendarGridProps { export interface CalendarGridProps {
yearMonth: string; yearMonth: string;
scheduledList: Array<SettlementDays | undefined>; scheduledDateList: Array<number>;
completedList: Array<SettlementDays | undefined>; completedDateList: Array<number>;
}; };
export const CalendarGrid = ({ export const CalendarGrid = ({
yearMonth, yearMonth,
scheduledList, scheduledDateList,
completedList, completedDateList
}: CalendarGridProps) => { }: CalendarGridProps) => {
const [scheduledDateList, setScheduledDateList] = useState<Array<number>>();
const [completedDateList, setCompletedDateList] = useState<Array<number>>();
const [assembled, setAssembled] = useState<boolean>(false);
const assembleDate = () => {
let rsScheduledDate = [];
let rsCompletedList = [];
for(let i=0;i<scheduledList.length;i++){
let date = moment(scheduledList[i]?.settlementDate).date();
rsScheduledDate.push(date);
}
for(let i=0;i<completedList.length;i++){
let date = moment(completedList[i]?.settlementDate).date();
rsCompletedList.push(date);
}
setScheduledDateList(rsScheduledDate);
setCompletedDateList(rsCompletedList);
setAssembled(true);
};
const makeCalendarDate = () => { const makeCalendarDate = () => {
let startDay = moment(yearMonth).startOf('month').day(); let startDay = moment(yearMonth).startOf('month').day();
let lastDate = moment(yearMonth).endOf('month').date(); let lastDate = moment(yearMonth).endOf('month').date();
@@ -90,10 +69,6 @@ export const CalendarGrid = ({
return rs; return rs;
} }
useEffect(() => {
assembleDate();
}, [yearMonth])
return ( return (
<> <>
<div className="calendar-grid"> <div className="calendar-grid">
@@ -107,7 +82,7 @@ export const CalendarGrid = ({
<div className="weekday sat"></div> <div className="weekday sat"></div>
</div> </div>
<div className="days"> <div className="days">
{ !!assembled && makeCalendarDate() } { makeCalendarDate() }
</div> </div>
</div> </div>
</> </>