This commit is contained in:
focp212@naver.com
2025-11-20 10:20:25 +09:00
parent bd0fd3bfe2
commit e4b03830f2
10 changed files with 82 additions and 37 deletions

View File

@@ -38,7 +38,7 @@ import { checkGrant } from '@/shared/lib/check-grant';
import { snackBar } from '@/shared/lib'; import { snackBar } from '@/shared/lib';
import { useSettlementsHistoryExcelMutation } from '../api/use-settlements-history-excel-mutation'; import { useSettlementsHistoryExcelMutation } from '../api/use-settlements-history-excel-mutation';
import { VatReturnDownloadExcelResponse } from '@/entities/vat-return/model/types'; import { VatReturnDownloadExcelResponse } from '@/entities/vat-return/model/types';
import { useStore } from '@/shared/model/store'; import { useDetailOnStore, useFilterlOnStore, useStore } from '@/shared/model/store';
export interface ListWrapProps { export interface ListWrapProps {
startDateFromCalendar?: string; startDateFromCalendar?: string;
@@ -67,7 +67,7 @@ export const ListWrap = ({
const [sortType, setSortType] = useState<SortTypeKeys>(SortTypeKeys.LATEST); const [sortType, setSortType] = useState<SortTypeKeys>(SortTypeKeys.LATEST);
const [settlementDateListItems, setSettlementDateListItems] = useState<Array<SettlementsHistoryContent>>([]); const [settlementDateListItems, setSettlementDateListItems] = useState<Array<SettlementsHistoryContent>>([]);
const [transactionDatelistItems, setTransactionDateListItems] = useState<Array<SettlementsTransactionListContent>>([]); const [transactionDatelistItems, setTransactionDateListItems] = useState<Array<SettlementsTransactionListContent>>([]);
const [filterOn, setFilterOn] = useState<boolean>(false); const { filterOn, setFilterOn } = useFilterlOnStore();
const [pageParam, setPageParam] = useState<DefaultRequestPagination>(DEFAULT_PAGE_PARAM); const [pageParam, setPageParam] = useState<DefaultRequestPagination>(DEFAULT_PAGE_PARAM);
const [mid, setMid] = useState<string>(userMid); const [mid, setMid] = useState<string>(userMid);
const [periodType, setPeriodType] = useState<SettlementPeriodType>(defaultParams.periodType); const [periodType, setPeriodType] = useState<SettlementPeriodType>(defaultParams.periodType);
@@ -88,7 +88,7 @@ export const ListWrap = ({
const [preSettlementCancelOffset, setPreSettlementCancelOffset] = useState<number>(); const [preSettlementCancelOffset, setPreSettlementCancelOffset] = useState<number>();
const [isOpenSummary, setIsOpenSummary] = useState<boolean>(false); const [isOpenSummary, setIsOpenSummary] = useState<boolean>(false);
const [detailOn, setDetailOn] = useState<boolean>(false); const { detailOn, setDetailOn } = useDetailOnStore();
const [detailSettlementId, setDetailSettlementId] = useState<string>(''); const [detailSettlementId, setDetailSettlementId] = useState<string>('');
const [detailTid, setDetailTid] = useState<string>(''); const [detailTid, setDetailTid] = useState<string>('');

View File

@@ -9,7 +9,7 @@ import { useEffect, useState } from 'react';
import { useAllTransactioCancleMutation } from '../api/use-all-transaction-cancel-mutation'; import { useAllTransactioCancleMutation } from '../api/use-all-transaction-cancel-mutation';
import { useAllTransactioCancleInfoMutation } from '../api/use-all-transaction-cancel-info-mutation'; import { useAllTransactioCancleInfoMutation } from '../api/use-all-transaction-cancel-info-mutation';
import { snackBar } from '@/shared/lib'; import { snackBar } from '@/shared/lib';
import { useStore } from '@/shared/model/store'; import { useStore, useTransactionCancelPreventBondOnStore } from '@/shared/model/store';
export interface AllTransactionCancelProps { export interface AllTransactionCancelProps {
cancelOn: boolean; cancelOn: boolean;
@@ -55,7 +55,7 @@ export const AllTransactionCancel = ({
const [accountNo, setAccountNo] = useState<string>(''); const [accountNo, setAccountNo] = useState<string>('');
const [accountHolder, setAccountHolder] = useState<string>(''); const [accountHolder, setAccountHolder] = useState<string>('');
const [cancelPreventBondOn, setCancelPreventBondOn] = useState<boolean>(false); const {cancelPreventBondOn, setCancelPreventBondOn} = useTransactionCancelPreventBondOnStore();
const { mutateAsync: transactionCancel } = useAllTransactioCancleMutation(); const { mutateAsync: transactionCancel } = useAllTransactioCancleMutation();
const { mutateAsync: allTransactionCancelInfo } = useAllTransactioCancleInfoMutation(); const { mutateAsync: allTransactionCancelInfo } = useAllTransactioCancleInfoMutation();

View File

@@ -34,6 +34,7 @@ import { checkGrant } from '@/shared/lib/check-grant';
import { showAlert } from '@/widgets/show-alert'; import { showAlert } from '@/widgets/show-alert';
import { snackBar } from '@/shared/lib'; import { snackBar } from '@/shared/lib';
import { AllTransactionCancel } from '../all-transaction-cancel'; import { AllTransactionCancel } from '../all-transaction-cancel';
import { useTransactionCancelOnStore } from '@/shared/model/store';
export interface AllTransactionDetailProps { export interface AllTransactionDetailProps {
detailOn: boolean; detailOn: boolean;
@@ -65,7 +66,7 @@ export const AllTransactionDetail = ({
const [showSettlementInfo, setShowSettlementInfo] = useState<boolean>(false); const [showSettlementInfo, setShowSettlementInfo] = useState<boolean>(false);
const [showPartCancelInfo, setShowPartCancelInfo] = useState<boolean>(false); const [showPartCancelInfo, setShowPartCancelInfo] = useState<boolean>(false);
const [cancelOn, setCancelOn] = useState<boolean>(false); const { transactionCancelOn, setTransactionCancelOn } = useTransactionCancelOnStore();
const { mutateAsync: allTransactionDetail } = useAllTransactionDetailMutation(); const { mutateAsync: allTransactionDetail } = useAllTransactionDetailMutation();
const callDetail = () => { const callDetail = () => {
@@ -88,7 +89,7 @@ export const AllTransactionDetail = ({
}); });
}; };
const onClickToMoveCancel = () => { const onClickToMoveCancel = () => {
setCancelOn(true); setTransactionCancelOn(true);
}; };
useEffect(() => { useEffect(() => {
if(!!detailOn && serviceCode && tid){ if(!!detailOn && serviceCode && tid){
@@ -240,10 +241,10 @@ export const AllTransactionDetail = ({
>{t('transaction.cancelTransaction')}</button> >{t('transaction.cancelTransaction')}</button>
</div> </div>
</motion.div> </motion.div>
{ !!cancelOn && { !!transactionCancelOn &&
<AllTransactionCancel <AllTransactionCancel
cancelOn={ cancelOn } cancelOn={ transactionCancelOn }
setCancelOn={ setCancelOn } setCancelOn={ setTransactionCancelOn }
serviceCode={ serviceCode } serviceCode={ serviceCode }
tid={ tid } tid={ tid }
></AllTransactionCancel> ></AllTransactionCancel>

View File

@@ -18,7 +18,7 @@ import {
} from '../model/types'; } from '../model/types';
import { useVatReturnListMutation } from '../api/use-vat-return-list-mutation'; import { useVatReturnListMutation } from '../api/use-vat-return-list-mutation';
import { ListDateGroup } from './list-date-group'; import { ListDateGroup } from './list-date-group';
import { useStore } from '@/shared/model/store'; import { useDetailOnStore, useFilterlOnStore, useStore } from '@/shared/model/store';
import { DownloadBottomSheet, DownloadSelectedMode } from '@/entities/common/ui/download-bottom-sheet'; import { DownloadBottomSheet, DownloadSelectedMode } from '@/entities/common/ui/download-bottom-sheet';
import useIntersectionObserver from '@/widgets/intersection-observer'; import useIntersectionObserver from '@/widgets/intersection-observer';
import { TaxInvoiceDetail } from './detail/tax-invoice-detail'; import { TaxInvoiceDetail } from './detail/tax-invoice-detail';
@@ -40,7 +40,7 @@ export const ListWrap = () => {
const userMid = useStore.getState().UserStore.mid; const userMid = useStore.getState().UserStore.mid;
const [onActionIntersect, setOnActionIntersect] = useState<boolean>(false); const [onActionIntersect, setOnActionIntersect] = useState<boolean>(false);
const [filterOn, setFilterOn] = useState<boolean>(false); const { filterOn, setFilterOn } = useFilterlOnStore();
const [sortType, setSortType] = useState<SortTypeKeys>(SortTypeKeys.LATEST); const [sortType, setSortType] = useState<SortTypeKeys>(SortTypeKeys.LATEST);
const [listItems, setListItems] = useState<Array<VatReturnListContent>>([]); const [listItems, setListItems] = useState<Array<VatReturnListContent>>([]);
const [pageParam, setPageParam] = useState<DefaultRequestPagination>(DEFAULT_PAGE_PARAM); const [pageParam, setPageParam] = useState<DefaultRequestPagination>(DEFAULT_PAGE_PARAM);
@@ -52,7 +52,7 @@ export const ListWrap = () => {
const [downloadBottomSheetOn, setDownloadBottomSheetOn] = useState<boolean>(false); const [downloadBottomSheetOn, setDownloadBottomSheetOn] = useState<boolean>(false);
const [detailOn, setDetailOn] = useState<boolean>(false); const { detailOn, setDetailOn } = useDetailOnStore();
const [detailTaxInvoiceNumber, setDetailTaxInvoiceNumber] = useState<string>(''); const [detailTaxInvoiceNumber, setDetailTaxInvoiceNumber] = useState<string>('');
const [groupDate, setGroupDate] = useState<string>(''); const [groupDate, setGroupDate] = useState<string>('');

View File

@@ -1,5 +1,5 @@
import moment from 'moment'; import moment from 'moment';
import { useDetailOnStore, useStore } from '@/shared/model/store'; import { useDetailOnStore, useFilterlOnStore, useStore } from '@/shared/model/store';
import { ChangeEvent, useEffect, useState } from 'react'; import { ChangeEvent, useEffect, useState } from 'react';
import { IMAGE_ROOT } from '@/shared/constants/common'; import { IMAGE_ROOT } from '@/shared/constants/common';
import { PATHS } from '@/shared/constants/paths'; import { PATHS } from '@/shared/constants/paths';
@@ -66,7 +66,7 @@ export const AllTransactionListPage = () => {
const [onActionIntersect, setOnActionIntersect] = useState<boolean>(false); const [onActionIntersect, setOnActionIntersect] = useState<boolean>(false);
const [sortType, setSortType] = useState<SortTypeKeys>(SortTypeKeys.LATEST); const [sortType, setSortType] = useState<SortTypeKeys>(SortTypeKeys.LATEST);
const [listItems, setListItems] = useState<Array<ListItemProps>>([]); const [listItems, setListItems] = useState<Array<ListItemProps>>([]);
const [filterOn, setFilterOn] = useState<boolean>(false); const { filterOn, setFilterOn } = useFilterlOnStore();
const [pageParam, setPageParam] = useState<DefaultRequestPagination>(DEFAULT_PAGE_PARAM); const [pageParam, setPageParam] = useState<DefaultRequestPagination>(DEFAULT_PAGE_PARAM);
const [mid, setMid] = useState<string>(userMid); const [mid, setMid] = useState<string>(userMid);
const [moid, setMoid] = useState<string>(defaultParams.moid); const [moid, setMoid] = useState<string>(defaultParams.moid);

View File

@@ -1,7 +1,7 @@
import moment from 'moment'; import moment from 'moment';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { useDetailOnStore, useStore } from '@/shared/model/store'; import { useDetailOnStore, useFilterlOnStore, useStore } from '@/shared/model/store';
import { IMAGE_ROOT } from '@/shared/constants/common'; import { IMAGE_ROOT } from '@/shared/constants/common';
import { PATHS } from '@/shared/constants/paths'; import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { useNavigate } from '@/shared/lib/hooks/use-navigate';
@@ -59,7 +59,7 @@ export const BillingListPage = () => {
const [onActionIntersect, setOnActionIntersect] = useState<boolean>(false); const [onActionIntersect, setOnActionIntersect] = useState<boolean>(false);
const [sortType, setSortType] = useState<SortTypeKeys>(SortTypeKeys.LATEST); const [sortType, setSortType] = useState<SortTypeKeys>(SortTypeKeys.LATEST);
const [listItems, setListItems] = useState<Array<ListItemProps>>([]); const [listItems, setListItems] = useState<Array<ListItemProps>>([]);
const [filterOn, setFilterOn] = useState<boolean>(false); const { filterOn, setFilterOn } = useFilterlOnStore();
const [pageParam, setPageParam] = useState<DefaultRequestPagination>(DEFAULT_PAGE_PARAM); const [pageParam, setPageParam] = useState<DefaultRequestPagination>(DEFAULT_PAGE_PARAM);
const [mid, setMid] = useState<string>(userMid); const [mid, setMid] = useState<string>(userMid);
const [searchType, setSearchType] = useState<BillingSearchType>(defaultParams.searchType); const [searchType, setSearchType] = useState<BillingSearchType>(defaultParams.searchType);

View File

@@ -33,7 +33,7 @@ import {
useSetFooterMode useSetFooterMode
} from '@/widgets/sub-layout/use-sub-layout'; } from '@/widgets/sub-layout/use-sub-layout';
import { getCashReceiptTransactionTypeBtnGroup } from '@/entities/transaction/model/contant'; import { getCashReceiptTransactionTypeBtnGroup } from '@/entities/transaction/model/contant';
import { useDetailOnStore, useStore } from '@/shared/model/store'; import { useDetailOnStore, useFilterlOnStore, useStore } from '@/shared/model/store';
import { useCashReceiptSummaryMutation } from '@/entities/transaction/api/use-cash-receipt-summary-mutation'; import { useCashReceiptSummaryMutation } from '@/entities/transaction/api/use-cash-receipt-summary-mutation';
import { DownloadBottomSheet, DownloadSelectedMode } from '@/entities/common/ui/download-bottom-sheet'; import { DownloadBottomSheet, DownloadSelectedMode } from '@/entities/common/ui/download-bottom-sheet';
import useIntersectionObserver from '@/widgets/intersection-observer'; import useIntersectionObserver from '@/widgets/intersection-observer';
@@ -62,7 +62,7 @@ export const CashReceiptListPage = () => {
const [onActionIntersect, setOnActionIntersect] = useState<boolean>(false); const [onActionIntersect, setOnActionIntersect] = useState<boolean>(false);
const [sortType, setSortType] = useState<SortTypeKeys>(SortTypeKeys.LATEST); const [sortType, setSortType] = useState<SortTypeKeys>(SortTypeKeys.LATEST);
const [listItems, setListItems] = useState<Array<ListItemProps>>([]); const [listItems, setListItems] = useState<Array<ListItemProps>>([]);
const [filterOn, setFilterOn] = useState<boolean>(false); const { filterOn, setFilterOn } = useFilterlOnStore();
const [pageParam, setPageParam] = useState<DefaultRequestPagination>(DEFAULT_PAGE_PARAM); const [pageParam, setPageParam] = useState<DefaultRequestPagination>(DEFAULT_PAGE_PARAM);
const [mid, setMid] = useState<string>(userMid); const [mid, setMid] = useState<string>(userMid);
const [startDate, setStartDate] = useState<string>(moment().format('YYYYMMDD')); const [startDate, setStartDate] = useState<string>(moment().format('YYYYMMDD'));

View File

@@ -1,7 +1,7 @@
import moment from 'moment'; import moment from 'moment';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { useDetailOnStore, useStore } from '@/shared/model/store'; import { useDetailOnStore, useFilterlOnStore, useStore } from '@/shared/model/store';
import { IMAGE_ROOT } from '@/shared/constants/common'; import { IMAGE_ROOT } from '@/shared/constants/common';
import { PATHS } from '@/shared/constants/paths'; import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { useNavigate } from '@/shared/lib/hooks/use-navigate';
@@ -59,7 +59,7 @@ export const EscrowListPage = () => {
const [onActionIntersect, setOnActionIntersect] = useState<boolean>(false); const [onActionIntersect, setOnActionIntersect] = useState<boolean>(false);
const [sortType, setSortType] = useState<SortTypeKeys>(SortTypeKeys.LATEST); const [sortType, setSortType] = useState<SortTypeKeys>(SortTypeKeys.LATEST);
const [listItems, setListItems] = useState<Array<ListItemProps>>([]); const [listItems, setListItems] = useState<Array<ListItemProps>>([]);
const [filterOn, setFilterOn] = useState<boolean>(false); const { filterOn, setFilterOn } = useFilterlOnStore();
const [pageParam, setPageParam] = useState<DefaultRequestPagination>(DEFAULT_PAGE_PARAM); const [pageParam, setPageParam] = useState<DefaultRequestPagination>(DEFAULT_PAGE_PARAM);
const [mid, setMid] = useState<string>(userMid); const [mid, setMid] = useState<string>(userMid);
const [searchType, setSearchType] = useState<EscrowSearchType>(EscrowSearchType.ALL); const [searchType, setSearchType] = useState<EscrowSearchType>(EscrowSearchType.ALL);

View File

@@ -6,9 +6,18 @@ import { createUserInfoStore, UserInfoState } from '@/entities/user/model/store'
import { createBannerInfoStore, BannerInfoState, createCommonStore, CommonState } from '@/entities/common/model/store'; import { createBannerInfoStore, BannerInfoState, createCommonStore, CommonState } from '@/entities/common/model/store';
import { StorageKeys } from '@/shared/constants/local-storage'; import { StorageKeys } from '@/shared/constants/local-storage';
export interface ModalOnStore { export interface FilterOnStore {
modalOn: boolean; filterOn: boolean;
setModalOn: (modalOn: boolean) => void; setFilterOn: (filterOn: boolean) => void;
};
export interface TransactionCancelPreventBondOnStore {
cancelPreventBondOn: boolean;
setCancelPreventBondOn: (cancelPreventBondOn: boolean) => void;
};
export interface TransactionCancelOnStore {
transactionCancelOn: boolean;
setTransactionCancelOn: (modalOn: boolean) => void;
}; };
export interface DetailOnStore { export interface DetailOnStore {
detailOn: boolean; detailOn: boolean;
@@ -29,11 +38,27 @@ export interface MenuIdsStore {
deleteMenuId: (menuId: number) => void; deleteMenuId: (menuId: number) => void;
}; };
export const useModalOnStore = create<ModalOnStore>((set) => ({ export const useFilterlOnStore = create<FilterOnStore>((set) => ({
modalOn: false, filterOn: false,
setModalOn: (modalOn: boolean) => { setFilterOn: (filterOn: boolean) => {
set((state: {modalOn: boolean}) => ({ set((state: {filterOn: boolean}) => ({
modalOn: (state.modalOn = modalOn) filterOn: (state.filterOn = filterOn)
}));
}
}));
export const useTransactionCancelPreventBondOnStore = create<TransactionCancelPreventBondOnStore>((set) => ({
cancelPreventBondOn: false,
setCancelPreventBondOn: (cancelPreventBondOn: boolean) => {
set((state: {cancelPreventBondOn: boolean}) => ({
cancelPreventBondOn: (state.cancelPreventBondOn = cancelPreventBondOn)
}));
}
}));
export const useTransactionCancelOnStore = create<TransactionCancelOnStore>((set) => ({
transactionCancelOn: false,
setTransactionCancelOn: (transactionCancelOn: boolean) => {
set((state: {transactionCancelOn: boolean}) => ({
transactionCancelOn: (state.transactionCancelOn = transactionCancelOn)
})); }));
} }
})); }));

View File

@@ -18,7 +18,7 @@ import {
import { useHomeGroupsMutation } from '@/entities/home/api/use-home-groups-mutation'; import { useHomeGroupsMutation } from '@/entities/home/api/use-home-groups-mutation';
import { useUserInfo } from '@/entities/user/lib/use-user-info'; import { useUserInfo } from '@/entities/user/lib/use-user-info';
import { useAppBridge } from '@/hooks'; import { useAppBridge } from '@/hooks';
import { useDetailOnStore, useFavoriteEditOnStore, useMenuOnStore, useStore } from '@/shared/model/store'; import { useDetailOnStore, useFavoriteEditOnStore, useFilterlOnStore, useMenuOnStore, useStore, useTransactionCancelOnStore, useTransactionCancelPreventBondOnStore } from '@/shared/model/store';
import { HomeGroupsParams, HomeGroupsResponse } from '@/entities/home/model/types'; import { HomeGroupsParams, HomeGroupsResponse } from '@/entities/home/model/types';
import { import {
BusinessPropertyParams, BusinessPropertyParams,
@@ -68,9 +68,13 @@ export const SubLayout = () => {
} = useUserInfo(); } = useUserInfo();
const { reload, navigateBack } = useNavigate(); const { reload, navigateBack } = useNavigate();
const { menuOn, setMenuOn } = useMenuOnStore(); const { menuOn, setMenuOn } = useMenuOnStore();
const { favoriteEditOn, setFavoriteEditOn } = useFavoriteEditOnStore(); const { favoriteEditOn, setFavoriteEditOn } = useFavoriteEditOnStore();
const { detailOn, setDetailOn } = useDetailOnStore(); const { detailOn, setDetailOn } = useDetailOnStore();
const { transactionCancelOn, setTransactionCancelOn } = useTransactionCancelOnStore();
const { cancelPreventBondOn, setCancelPreventBondOn } = useTransactionCancelPreventBondOnStore();
const { filterOn, setFilterOn } = useFilterlOnStore();
const location = useLocation(); const location = useLocation();
console.log(location) console.log(location)
@@ -405,16 +409,31 @@ export const SubLayout = () => {
const pressBackKey = () => { const pressBackKey = () => {
let pathname = location.pathname; let pathname = location.pathname;
console.log('pathname = [' + pathname + ']'); console.log('pathname = [' + pathname + ']');
if(menuOn){ if(pathname === '/home'){
setMenuOn(false);
setFavoriteEditOn(false);
}
else if(detailOn){
setDetailOn(false);
} }
else{ else{
navigateBack(); if(menuOn){
setMenuOn(false);
setFavoriteEditOn(false);
}
else if(cancelPreventBondOn){
setCancelPreventBondOn(false);
}
else if(transactionCancelOn){
setTransactionCancelOn(false);
}
else if(detailOn){
setDetailOn(false);
}
else if(filterOn){
setFilterOn(false);
}
else{
navigateBack();
}
} }
}; };
window.saveToken = saveToken; window.saveToken = saveToken;