diff --git a/src/entities/settlement/model/types.ts b/src/entities/settlement/model/types.ts
index c31fa8a..5a5c04c 100644
--- a/src/entities/settlement/model/types.ts
+++ b/src/entities/settlement/model/types.ts
@@ -36,6 +36,11 @@ export enum SettlementPaymentMethod {
CULTURE_VOUCHER = 'CULTURE_VOUCHER',
TMONEY_PAY = 'TMONEY_PAY',
};
+
+export enum SettlementStatus {
+ COMPLETED = 'COMPLETED',
+ SCHEDULED = 'SCHEDULED'
+};
export interface SettlementsTransactionSummaryParams {
mid: string;
periodType: SettlementPeriodType;
@@ -172,7 +177,7 @@ export interface SettlementDays {
settlementDate: string;
completedAmount: number;
scheduledAmount: number;
- settlementStatus: string;
+ settlementStatus: SettlementStatus;
};
export interface ListDateGroupProps {
date?: string;
diff --git a/src/entities/settlement/ui/calandar-amount-row.tsx b/src/entities/settlement/ui/calandar-amount-row.tsx
new file mode 100644
index 0000000..b2e2900
--- /dev/null
+++ b/src/entities/settlement/ui/calandar-amount-row.tsx
@@ -0,0 +1,40 @@
+import { NumericFormat } from 'react-number-format';
+import { SettlementStatus } from '../model/types';
+
+export interface CalendarAmountRowProps {
+ amount: number;
+ settlementStatus: SettlementStatus;
+};
+
+export const CalendarAmountRow = ({
+ amount,
+ settlementStatus
+}: CalendarAmountRowProps) => {
+
+ const makeTitle = () => {
+ let rs = [];
+ if(settlementStatus === SettlementStatus.SCHEDULED){
+ rs.push(예정)
+ }
+ else if(settlementStatus === SettlementStatus.COMPLETED){
+ rs.push(완료)
+ }
+ return rs;
+ };
+
+ return (
+ <>
+
+
정산 { makeTitle() } 금액
+
+
+
+
+ >
+ );
+};
\ No newline at end of file
diff --git a/src/entities/settlement/ui/calandar-wrap.tsx b/src/entities/settlement/ui/calandar-wrap.tsx
index ccf67d1..8079bb3 100644
--- a/src/entities/settlement/ui/calandar-wrap.tsx
+++ b/src/entities/settlement/ui/calandar-wrap.tsx
@@ -1,10 +1,65 @@
-import { NumericFormat } from 'react-number-format';
+import moment from 'moment';
import { IMAGE_ROOT } from '@/shared/constants/common';
+import { useSettlementsCalendarMutation } from '../api/use-settlements-calendar-mutation';
+import { useEffect, useState } from 'react';
+import {
+ SettlementDays,
+ SettlementsCalendarParams,
+ SettlementsCalendarResponse,
+ SettlementStatus
+} from '../model/types';
+import { CalendarAmountRow } from './calandar-amount-row';
+import { CalendarSettlementItem } from './calendar-settlement-item';
export const CalendarWrap = () => {
+ moment.locale('ko');
+
+ const [mid, setMid] = useState('nictest001m');
+ const [yearMonth, setYearMonth] = useState(moment().format('YYYY-MM'));
+ const [totalCompletedAmount, setTotalCompletedAmount] = useState(0);
+ const [totalScheduledAmount, setTotalScheduledAmount] = useState(0);
+ const [scheduledList, setScheduledList] = useState>([]);
+ const [completedList, setCompletedList] = useState>([]);
+
+ const { mutateAsync: settlementsCalendar } = useSettlementsCalendarMutation();
+
+ const callCalendar = () => {
+ let params: SettlementsCalendarParams = {
+ mid: mid,
+ yearMonth: yearMonth
+ };
+ settlementsCalendar(params).then((rs: SettlementsCalendarResponse) => {
+ console.log(rs);
+ setTotalCompletedAmount(rs.totalCompletedAmount);
+ setTotalScheduledAmount(rs.totalScheduledAmount);
+ setYearMonth(rs.yearMonth);
+ let scheduleArr = [];
+ let completedArr = [];
+ if(!!rs.settlementDays && rs.settlementDays.length > 0){
+ for(let i=0;i {
+
+ };
+
+ useEffect(() => {
+ callCalendar();
+ }, []);
return (
<>
-
+
@@ -121,66 +162,18 @@ export const CalendarWrap = () => {
-
-
-
-
-
+ { (!!scheduledList && scheduledList.length > 0) &&
+
+ }
+ { (!!completedList && completedList.length > 0) &&
+
+ }
>
diff --git a/src/entities/settlement/ui/calendar-settlement-item.tsx b/src/entities/settlement/ui/calendar-settlement-item.tsx
new file mode 100644
index 0000000..9ae94df
--- /dev/null
+++ b/src/entities/settlement/ui/calendar-settlement-item.tsx
@@ -0,0 +1,81 @@
+import moment from 'moment';
+import { NumericFormat } from 'react-number-format';
+import { PATHS } from '@/shared/constants/paths';
+import { useNavigate } from '@/shared/lib/hooks/use-navigate';
+import { SettlementDays, SettlementStatus } from '../model/types';
+
+export interface CalendarSettlementItemProps {
+ list: Array
;
+ settlementStatus: SettlementStatus;
+};
+
+export const CalendarSettlementItem = ({
+ list,
+ settlementStatus
+}: CalendarSettlementItemProps) => {
+ const { navigate } = useNavigate();
+
+ const getAmount = (
+ scheduledAmount: number | undefined,
+ completedAmount: number | undefined
+ ) => {
+ let amount = 0;
+ if(settlementStatus === SettlementStatus.SCHEDULED){
+ amount = scheduledAmount || 0;
+ }
+ else if(settlementStatus === SettlementStatus.COMPLETED){
+ amount = completedAmount || 0;
+ }
+ return amount;
+ };
+
+ const getClassName = () => {
+ let className = '';
+ if(settlementStatus === SettlementStatus.SCHEDULED){
+ className = 'scheduled';
+ }
+ else if(settlementStatus === SettlementStatus.COMPLETED){
+ className = 'complete';
+ }
+ return className;
+ };
+
+ const onClickToMoveList = (settlementDate?: string) => {
+ if(!!settlementDate){
+ navigate(PATHS.settlement.list, {
+ state: {
+ startDate: settlementDate,
+ endDate: settlementDate
+ }
+ });
+ }
+ };
+
+ return (
+ <>
+ { list.map((value, index) => (
+ onClickToMoveList(value?.settlementDate) }
+ >
+
{ value?.settlementStatus }
+
+ { moment(value?.settlementDate).format('MM.DD(ddd)') }
+
+
+
+
+
+ ))
+ }
+
+
+ >
+ )
+};
\ No newline at end of file
diff --git a/src/entities/settlement/ui/list-wrap.tsx b/src/entities/settlement/ui/list-wrap.tsx
index 423b0ba..0396b80 100644
--- a/src/entities/settlement/ui/list-wrap.tsx
+++ b/src/entities/settlement/ui/list-wrap.tsx
@@ -26,7 +26,15 @@ import 'react-slidedown/lib/slidedown.css';
import { ListFilter } from './filter/list-filter';
import { useDownloadExcelMutation } from '@/entities/transaction/api/use-download-excel-mutation';
-export const ListWrap = () => {
+export interface ListWrapProps {
+ startDateFromCalendar?: string;
+ endDateFromCalendar?: string;
+};
+
+export const ListWrap = ({
+ startDateFromCalendar,
+ endDateFromCalendar
+}: ListWrapProps) => {
const { navigate } = useNavigate();
const [sortBy, setSortBy] = useState(SortByKeys.New);
@@ -36,8 +44,8 @@ export const ListWrap = () => {
const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM);
const [mid, setMid] = useState('nictest001m');
const [periodType, setPeriodType] = useState(SettlementPeriodType.SETTLEMENT_DATE);
- const [startDate, setStartDate] = useState(moment().format('YYYY-MM-DD'));
- const [endDate, setEndDate] = useState(moment().format('YYYY-MM-DD'));
+ const [startDate, setStartDate] = useState(startDateFromCalendar? moment(startDateFromCalendar).format('YYYY-MM-DD'): moment().format('YYYY-MM-DD'));
+ const [endDate, setEndDate] = useState(endDateFromCalendar? moment(endDateFromCalendar).format('YYYY-MM-DD'): moment().format('YYYY-MM-DD'));
const [paymentMethod, setPaymentMethod] = useState(SettlementPaymentMethod.ALL);
const [settlementAmount, setSettlementAmount] = useState();
diff --git a/src/pages/settlement/list/list-page.tsx b/src/pages/settlement/list/list-page.tsx
index 891e32c..aaa61dd 100644
--- a/src/pages/settlement/list/list-page.tsx
+++ b/src/pages/settlement/list/list-page.tsx
@@ -1,4 +1,5 @@
import { useState } from 'react';
+import { useLocation } from 'react-router';
import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { SettlementTab } from '@/entities/settlement/ui/settlement-tab';
@@ -16,6 +17,10 @@ import {
export const ListPage = () => {
const { navigate } = useNavigate();
+ const location = useLocation();
+
+ const startDate: string | undefined = location?.state?.startDate;
+ const endDate: string | undefined = location?.state?.endDate;
const [activeTab, setActiveTab] = useState(SettlementTabKeys.List);
@@ -33,7 +38,10 @@ export const ListPage = () => {