This commit is contained in:
focp212@naver.com
2025-10-15 19:49:21 +09:00
parent a07e80e60c
commit b457716c3f
5 changed files with 85 additions and 46 deletions

View File

@@ -153,12 +153,10 @@ export interface BillingListProps {
export interface AllTransactionListItem { export interface AllTransactionListItem {
tid?: string; tid?: string;
mid?: string; mid?: string;
stateDate?: string; transactionDateTime?: string;
stateCode?: string; statusCode?: string;
stateName?: string;
installmentMonth?: string; installmentMonth?: string;
serviceCode?: string; serviceCode?: string;
serviceName?: string;
serviceDetailName?: string; serviceDetailName?: string;
goodsAmount?: number; goodsAmount?: number;
}; };
@@ -221,8 +219,8 @@ export interface AllTransactionListSummaryParams extends AllTransactionListParam
} }
export interface AllTransactionListSummaryResponse { export interface AllTransactionListSummaryResponse {
totalTransactionCount: number; totalCount: number;
totalTransactionAmount: number; totalAmount: number;
}; };
export interface AllTransactionListParams { export interface AllTransactionListParams {
moid?: string; moid?: string;

View File

@@ -25,12 +25,9 @@ export const ListDateGroup = ({
key={ key } key={ key }
tid={ items[i]?.tid } tid={ items[i]?.tid }
mid={ items[i]?.mid } mid={ items[i]?.mid }
stateDate={ items[i]?.stateDate } statusCode={ items[i]?.statusCode }
stateCode={ items[i]?.stateCode }
stateName={ items[i]?.stateName }
installmentMonth={ items[i]?.installmentMonth } installmentMonth={ items[i]?.installmentMonth }
serviceCode={ items[i]?.serviceCode } serviceCode={ items[i]?.serviceCode }
serviceName={ items[i]?.serviceName }
serviceDetailName={ items[i]?.serviceDetailName } serviceDetailName={ items[i]?.serviceDetailName }
goodsAmount={ items[i]?.goodsAmount } goodsAmount={ items[i]?.goodsAmount }

View File

@@ -6,8 +6,8 @@ import moment from 'moment';
export const ListItem = ({ export const ListItem = ({
transactionCategory, transactionCategory,
tid, mid, stateDate, stateCode, stateName, tid, mid, statusCode,
installmentMonth, serviceCode, serviceName, installmentMonth, serviceCode,
serviceDetailName, goodsAmount, serviceDetailName, goodsAmount,
id, amount, customerName, issueNumber, id, amount, customerName, issueNumber,
issueStatus, paymentMethod, processResult, issueStatus, paymentMethod, processResult,
@@ -18,13 +18,13 @@ export const ListItem = ({
const { navigate } = useNavigate(); const { navigate } = useNavigate();
const getItemClass = () => { const getItemClass = () => {
let rs = ''; let rs = '';
if(stateCode === '0'){ if(statusCode === '0'){
rs = ''; rs = '';
} }
else if(stateCode === '1'){ else if(statusCode === '1'){
rs = 'approved'; rs = 'approved';
} }
else if(stateCode === '2'){ else if(statusCode === '2'){
rs = 'refund'; rs = 'refund';
} }
return rs; return rs;
@@ -32,13 +32,13 @@ export const ListItem = ({
const getDotClass = (str?: string) => { const getDotClass = (str?: string) => {
let rs = ''; let rs = '';
if(stateCode === '0'){ if(statusCode === '0'){
rs = ''; rs = '';
} }
else if(stateCode === '1'){ else if(statusCode === '1'){
rs = 'blue'; rs = 'blue';
} }
else if(stateCode === '2'){ else if(statusCode === '2'){
rs = 'gray'; rs = 'gray';
} }
return rs; return rs;
@@ -82,7 +82,7 @@ export const ListItem = ({
const getTime = () => { const getTime = () => {
let timeStr = ''; let timeStr = '';
if(transactionCategory === TransactionCategory.AllTransaction){ if(transactionCategory === TransactionCategory.AllTransaction){
let time = stateDate?.substring(8, 12); let time = transactionDateTime?.substring(8, 12);
timeStr = time?.substring(0, 2) + ':' + time?.substring(2, 4); timeStr = time?.substring(0, 2) + ':' + time?.substring(2, 4);
} }
else{ else{
@@ -94,7 +94,15 @@ export const ListItem = ({
const getTitle = () => { const getTitle = () => {
let str = ''; let str = '';
if(transactionCategory === TransactionCategory.AllTransaction){ if(transactionCategory === TransactionCategory.AllTransaction){
str = `${serviceName}(${serviceDetailName})`; let strDetailName = serviceDetailName?.split('|').join(',');
if(strDetailName){
let last = strDetailName.slice(-1);
if(last === ','){
strDetailName = strDetailName.substring(0, strDetailName.length - 1);
}
str = `(${strDetailName})`;
}
} }
else if(transactionCategory === TransactionCategory.CashReceipt){ else if(transactionCategory === TransactionCategory.CashReceipt){
str = `${customerName}(${issueNumber})` str = `${customerName}(${issueNumber})`
@@ -115,7 +123,7 @@ export const ListItem = ({
<div className="transaction-details"> <div className="transaction-details">
<span>{ getTime() }</span> <span>{ getTime() }</span>
<span className="separator">|</span> <span className="separator">|</span>
<span>{ stateName }</span> <span>{ statusCode }</span>
<span className="separator">|</span> <span className="separator">|</span>
<span>{ mid }</span> <span>{ mid }</span>
{ {

View File

@@ -49,8 +49,8 @@ export const AllTransactionListPage = () => {
const [searchCl, setSearchCl] = useState<AllTransactionSearchCl | undefined>(); const [searchCl, setSearchCl] = useState<AllTransactionSearchCl | undefined>();
const [searchValue, setSearchValue] = useState<string | undefined>(); const [searchValue, setSearchValue] = useState<string | undefined>();
const [totalTransactionCount, setTotalTransactionCount] = useState<number>(0); const [totalCount, setTotalCount] = useState<number>(0);
const [totalTransactionAmount, setTotalTransactionAmount] = useState<number>(0); const [totalAmount, setTotalAmount] = useState<number>(0);
useSetHeaderTitle('거래내역 조회'); useSetHeaderTitle('거래내역 조회');
@@ -96,8 +96,8 @@ export const AllTransactionListPage = () => {
setListItems(assembleData(rs.content)); setListItems(assembleData(rs.content));
}); });
allTransactionListSummary(listSummaryParams).then((rs) => { allTransactionListSummary(listSummaryParams).then((rs) => {
setTotalTransactionAmount(rs.totalTransactionAmount); setTotalAmount(rs.totalAmount);
setTotalTransactionCount(rs.totalTransactionCount); setTotalCount(rs.totalCount);
}); });
}; };
@@ -105,8 +105,8 @@ export const AllTransactionListPage = () => {
let data: any = {}; let data: any = {};
if(content && content.length > 0){ if(content && content.length > 0){
for(let i=0;i<content?.length;i++){ for(let i=0;i<content?.length;i++){
let stateDate = content[i]?.stateDate?.substring(0, 8); let transactionDateTime = content[i]?.transactionDateTime?.substring(0, 8);
let groupDate = moment(stateDate).format('YYYYMMDD'); let groupDate = moment(transactionDateTime).format('YYYYMMDD');
if(!!groupDate && !data.hasOwnProperty(groupDate)){ if(!!groupDate && !data.hasOwnProperty(groupDate)){
data[groupDate] = []; data[groupDate] = [];
} }
@@ -171,9 +171,21 @@ export const AllTransactionListPage = () => {
useEffect(() => { useEffect(() => {
callServiceCodeOptions(); callServiceCodeOptions();
callList();
}, []); }, []);
useEffect(() => {
callList();
}, [
mid, moid,
tid, fromDate,
toDate, stateCode,
serviceCode, minAmount,
maxAmount, bankCode,
cardCode, searchCl,
searchValue
]);
return ( return (
<> <>
<main> <main>
@@ -184,10 +196,10 @@ export const AllTransactionListPage = () => {
<div className="summary-amount"> <div className="summary-amount">
<span className="amount-text"> <span className="amount-text">
<NumericFormat <NumericFormat
value={ totalTransactionAmount } value={ totalAmount }
thousandSeparator thousandSeparator
displayType="text" displayType="text"
suffix={ '원' } suffix='원'
></NumericFormat> ></NumericFormat>
</span> </span>
<div className="summary-actions"> <div className="summary-actions">
@@ -216,11 +228,11 @@ export const AllTransactionListPage = () => {
<span className="detail-label"></span> <span className="detail-label"></span>
<span className="detail-value"> <span className="detail-value">
<NumericFormat <NumericFormat
value={ totalTransactionCount } value={ totalCount }
thousandSeparator thousandSeparator
displayType="text" displayType="text"
prefix={ '총 ' } prefix='총 '
suffix={ ' 건' } suffix=' 건'
></NumericFormat> ></NumericFormat>
</span> </span>
</div> </div>

View File

@@ -26,22 +26,31 @@ export const FilterCalendar = ({
const [calendarOpen, setCalendarOpen] = useState<boolean>(false); const [calendarOpen, setCalendarOpen] = useState<boolean>(false);
const [calendarType, setCalendarType] = useState<CalendarType>(CalendarType.Start); const [calendarType, setCalendarType] = useState<CalendarType>(CalendarType.Start);
const [newStartDate, setNewStartDate] = useState<string>('');
const [newEndDate, setNewEndDate] = useState<string>('');
const setFilterDate = (dateOptions: FilterDateOptions) => { const setFilterDate = (dateOptions: FilterDateOptions) => {
if(dateOptions === FilterDateOptions.Today){ if(dateOptions === FilterDateOptions.Today){
setStartDate(moment().format('YYYY.MM.DD')); setStartDate(moment().format('YYYYMMDD'));
setEndDate(moment().format('YYYY.MM.DD')); setNewStartDate(moment().format('YYYY.MM.DD'));
setEndDate(moment().format('YYYYMMDD'));
setNewEndDate(moment().format('YYYY.MM.DD'));
setDateReadyOnly(true); setDateReadyOnly(true);
setFilterDateOptionsBtn(FilterDateOptions.Today); setFilterDateOptionsBtn(FilterDateOptions.Today);
} }
else if(dateOptions === FilterDateOptions.Week){ else if(dateOptions === FilterDateOptions.Week){
setStartDate(moment().subtract(1, 'week').format('YYYY.MM.DD')); setStartDate(moment().subtract(1, 'week').format('YYYYMMDD'));
setEndDate(moment().format('YYYY.MM.DD')); setNewStartDate(moment().subtract(1, 'week').format('YYYY.MM.DD'));
setEndDate(moment().format('YYYYMMDD'));
setNewEndDate(moment().format('YYYY.MM.DD'));
setDateReadyOnly(true); setDateReadyOnly(true);
setFilterDateOptionsBtn(FilterDateOptions.Week); setFilterDateOptionsBtn(FilterDateOptions.Week);
} }
else if(dateOptions === FilterDateOptions.Month){ else if(dateOptions === FilterDateOptions.Month){
setStartDate(moment().subtract(1, 'month').format('YYYY.MM.DD')); setStartDate(moment().subtract(1, 'month').format('YYYYMMDD'));
setEndDate(moment().format('YYYY.MM.DD')); setNewStartDate(moment().subtract(1, 'month').format('YYYY.MM.DD'));
setEndDate(moment().format('YYYYMMDD'));
setNewEndDate(moment().format('YYYY.MM.DD'));
setDateReadyOnly(true); setDateReadyOnly(true);
setFilterDateOptionsBtn(FilterDateOptions.Month); setFilterDateOptionsBtn(FilterDateOptions.Month);
} }
@@ -65,16 +74,31 @@ export const FilterCalendar = ({
const setNewDate = (date: string) => { const setNewDate = (date: string) => {
if(calendarType === CalendarType.Start){ if(calendarType === CalendarType.Start){
setStartDate(date); setStartDate(moment(date).format('YYYYMMDD'));
setNewStartDate(moment(date).format('YYYY.MM.DD'));
} }
else if(calendarType === CalendarType.End){ else if(calendarType === CalendarType.End){
setEndDate(date); setEndDate(moment(date).format('YYYYMMDD'));
setNewEndDate(moment(date).format('YYYY.MM.DD'));
} }
setCalendarOpen(false); setCalendarOpen(false);
} }
useEffect(() => { useEffect(() => {
if(startDate && startDate.length === 8){
let str = startDate.substring(0, 4)+'.'+startDate.substring(4, 6)+'.'+startDate.substring(6, 8);
setNewStartDate(str);
}
else{
setNewStartDate(startDate);
}
if(endDate && endDate.length === 8){
let str = endDate.substring(0, 4)+'.'+endDate.substring(4, 6)+'.'+endDate.substring(6, 8);
setNewEndDate(str);
}
else{
setNewEndDate(endDate);
}
}, []); }, []);
return ( return (
<> <>
@@ -106,7 +130,7 @@ export const FilterCalendar = ({
className="date-input" className="date-input"
type="text" type="text"
placeholder="날짜 선택" placeholder="날짜 선택"
value={ startDate } value={ newStartDate }
onChange={ (e: ChangeEvent<HTMLInputElement>) => {} } onChange={ (e: ChangeEvent<HTMLInputElement>) => {} }
readOnly={ dateReadOnly } readOnly={ dateReadOnly }
/> />
@@ -128,7 +152,7 @@ export const FilterCalendar = ({
className="date-input" className="date-input"
type="text" type="text"
placeholder="날짜 선택" placeholder="날짜 선택"
value={ endDate } value={ newEndDate }
onChange={ (e: ChangeEvent<HTMLInputElement>) => {} } onChange={ (e: ChangeEvent<HTMLInputElement>) => {} }
readOnly={ dateReadOnly } readOnly={ dateReadOnly }
/> />
@@ -149,8 +173,8 @@ export const FilterCalendar = ({
<NiceCalendar <NiceCalendar
calendarOpen={ calendarOpen } calendarOpen={ calendarOpen }
setCalendarOpen={ setCalendarOpen } setCalendarOpen={ setCalendarOpen }
startDate={ startDate } startDate={ newStartDate }
endDate={ endDate } endDate={ newEndDate }
calendarType={ calendarType } calendarType={ calendarType }
setNewDate={ setNewDate } setNewDate={ setNewDate }
></NiceCalendar> ></NiceCalendar>