Compare commits
10 Commits
f07a8e2be4
...
02b3d2faa4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
02b3d2faa4 | ||
|
|
06dc05da65 | ||
|
|
3571b6d2e2 | ||
|
|
047eb8c45d | ||
|
|
53d67fcb13 | ||
|
|
f17c8c8875 | ||
|
|
8cbd76a58d | ||
|
|
29fe1719c9 | ||
|
|
d607b6c619 | ||
|
|
bd79f4f06c |
@@ -213,7 +213,16 @@ export interface ExtensionFundAccountBalanceParams {
|
|||||||
mid: string;
|
mid: string;
|
||||||
};
|
};
|
||||||
export interface ExtensionFundAccountBalanceResponse {
|
export interface ExtensionFundAccountBalanceResponse {
|
||||||
balance: number;
|
status: boolean;
|
||||||
|
error?: {
|
||||||
|
root? : string;
|
||||||
|
errorKey?: string;
|
||||||
|
message?: string;
|
||||||
|
}
|
||||||
|
data?: {
|
||||||
|
balance?: number;
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// 입금확인증 다운로드
|
// 입금확인증 다운로드
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import { showAlert } from '@/widgets/show-alert';
|
|||||||
import { snackBar } from '@/shared/lib';
|
import { snackBar } from '@/shared/lib';
|
||||||
import { DepositReceiptSample } from '@/entities/common/ui/deposit-receipt-sample';
|
import { DepositReceiptSample } from '@/entities/common/ui/deposit-receipt-sample';
|
||||||
import { DepositInfo } from '@/entities/transaction/model/types';
|
import { DepositInfo } from '@/entities/transaction/model/types';
|
||||||
|
import { useDownloadBottomSheetOn2Store } from '@/shared/model/store';
|
||||||
|
|
||||||
export interface FundAccountResultDetailProps {
|
export interface FundAccountResultDetailProps {
|
||||||
detailOn: boolean;
|
detailOn: boolean;
|
||||||
@@ -31,10 +32,9 @@ export const FundAccountResultDetail = ({
|
|||||||
tid
|
tid
|
||||||
}: FundAccountResultDetailProps) => {
|
}: FundAccountResultDetailProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { downloadBottomSheetOn2, setDownloadBottomSheetOn2 } = useDownloadBottomSheetOn2Store();
|
||||||
|
|
||||||
const [detail, setDetail] = useState<ExtensionFundAccountResultDetailResponse>();
|
const [detail, setDetail] = useState<ExtensionFundAccountResultDetailResponse>();
|
||||||
|
|
||||||
const [downloadBottomSheetOn, setDownloadBottomSheetOn] = useState<boolean>(false);
|
|
||||||
const [depositReceiptSampleOn, setDepositReceiptSampleOn] = useState<boolean>(false);
|
const [depositReceiptSampleOn, setDepositReceiptSampleOn] = useState<boolean>(false);
|
||||||
const { mutateAsync: extensionFundAccountResultDetail } = useExtensionFundAccountResultDetailMutation();
|
const { mutateAsync: extensionFundAccountResultDetail } = useExtensionFundAccountResultDetailMutation();
|
||||||
const { mutateAsync: extensionFundAccountDownlaodReceipt } = useExtensionFundAccountDownloadReceiptMutation();
|
const { mutateAsync: extensionFundAccountDownlaodReceipt } = useExtensionFundAccountDownloadReceiptMutation();
|
||||||
@@ -57,7 +57,7 @@ export const FundAccountResultDetail = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const onClickToOpenDownloadBottomSheet = () => {
|
const onClickToOpenDownloadBottomSheet = () => {
|
||||||
setDownloadBottomSheetOn(true);
|
setDownloadBottomSheetOn2(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
const onRequestDownload = (
|
const onRequestDownload = (
|
||||||
@@ -200,10 +200,10 @@ export const FundAccountResultDetail = ({
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{!!downloadBottomSheetOn &&
|
{!!downloadBottomSheetOn2 &&
|
||||||
<DownloadBottomSheet
|
<DownloadBottomSheet
|
||||||
bottomSheetOn={downloadBottomSheetOn}
|
bottomSheetOn={downloadBottomSheetOn2}
|
||||||
setBottomSheetOn={setDownloadBottomSheetOn}
|
setBottomSheetOn={setDownloadBottomSheetOn2}
|
||||||
imageMode={true}
|
imageMode={true}
|
||||||
emailMode={true}
|
emailMode={true}
|
||||||
sendRequest={onRequestDownload}
|
sendRequest={onRequestDownload}
|
||||||
|
|||||||
@@ -194,7 +194,17 @@ export const FundAccountTransferListWrap = () => {
|
|||||||
mid: mid
|
mid: mid
|
||||||
};
|
};
|
||||||
extensionFundAccountBalance(params).then((rs: ExtensionFundAccountBalanceResponse) => {
|
extensionFundAccountBalance(params).then((rs: ExtensionFundAccountBalanceResponse) => {
|
||||||
setBalance(rs.balance);
|
if (rs.status) {
|
||||||
|
if (!rs.data?.balance) {
|
||||||
|
setBalance(0);
|
||||||
|
} else {
|
||||||
|
setBalance(balance)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const errorMessage = rs.error?.message || t('additionalService.fundAccount.failRequestBalance');
|
||||||
|
setBalance(0);
|
||||||
|
snackBar(errorMessage)
|
||||||
|
}
|
||||||
}).catch((e: any) => {
|
}).catch((e: any) => {
|
||||||
if (e.response?.data?.error?.message) {
|
if (e.response?.data?.error?.message) {
|
||||||
snackBar(e.response?.data?.error?.message);
|
snackBar(e.response?.data?.error?.message);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { checkGrant } from '@/shared/lib/check-grant';
|
|||||||
import { snackBar } from '@/shared/lib';
|
import { snackBar } from '@/shared/lib';
|
||||||
import { DepositReceiptSample } from '@/entities/common/ui/deposit-receipt-sample';
|
import { DepositReceiptSample } from '@/entities/common/ui/deposit-receipt-sample';
|
||||||
import { DepositInfo } from '@/entities/transaction/model/types';
|
import { DepositInfo } from '@/entities/transaction/model/types';
|
||||||
|
import { useDownloadBottomSheetOn2Store } from '@/shared/model/store';
|
||||||
|
|
||||||
export interface PayoutDetailProps {
|
export interface PayoutDetailProps {
|
||||||
detailOn: boolean;
|
detailOn: boolean;
|
||||||
@@ -30,10 +31,9 @@ export const PayoutDetail = ({
|
|||||||
depositAmount
|
depositAmount
|
||||||
}: PayoutDetailProps) => {
|
}: PayoutDetailProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { downloadBottomSheetOn2, setDownloadBottomSheetOn2 } = useDownloadBottomSheetOn2Store();
|
||||||
const [detail, setDetail] = useState<ExtensionPayoutDetailResponse>();
|
const [detail, setDetail] = useState<ExtensionPayoutDetailResponse>();
|
||||||
|
|
||||||
const [downloadBottomSheetOn, setDownloadBottomSheetOn] = useState<boolean>(false);
|
|
||||||
const [depositReceiptSampleOn, setDepositReceiptSampleOn] = useState<boolean>(false);
|
const [depositReceiptSampleOn, setDepositReceiptSampleOn] = useState<boolean>(false);
|
||||||
const [depositReceiptData, setDepositReceiptData] = useState<ExtensionPayoutDetailDownloadCertificateResponse>();
|
const [depositReceiptData, setDepositReceiptData] = useState<ExtensionPayoutDetailDownloadCertificateResponse>();
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ export const PayoutDetail = ({
|
|||||||
showAlert(t('common.nopermission'));
|
showAlert(t('common.nopermission'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setDownloadBottomSheetOn(true);
|
setDownloadBottomSheetOn2(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
const onRequestDownload = (
|
const onRequestDownload = (
|
||||||
@@ -208,10 +208,10 @@ export const PayoutDetail = ({
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{!!downloadBottomSheetOn &&
|
{!!downloadBottomSheetOn2 &&
|
||||||
<DownloadBottomSheet
|
<DownloadBottomSheet
|
||||||
bottomSheetOn={downloadBottomSheetOn}
|
bottomSheetOn={ downloadBottomSheetOn2 }
|
||||||
setBottomSheetOn={setDownloadBottomSheetOn}
|
setBottomSheetOn={ setDownloadBottomSheetOn2 }
|
||||||
imageMode={true}
|
imageMode={true}
|
||||||
emailMode={true}
|
emailMode={true}
|
||||||
sendRequest={onRequestDownload}
|
sendRequest={onRequestDownload}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import {
|
|||||||
} from '../model/types';
|
} from '../model/types';
|
||||||
import { useNavigate } from '@/shared/lib/hooks';
|
import { useNavigate } from '@/shared/lib/hooks';
|
||||||
import { PATHS } from '@/shared/constants/paths';
|
import { PATHS } from '@/shared/constants/paths';
|
||||||
import { useStore } from '@/shared/model/store';
|
import { useNewMidStore, useStore } from '@/shared/model/store';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { showAlert } from '@/widgets/show-alert';
|
import { showAlert } from '@/widgets/show-alert';
|
||||||
import { checkGrant } from '@/shared/lib/check-grant';
|
import { checkGrant } from '@/shared/lib/check-grant';
|
||||||
@@ -19,9 +19,9 @@ import { snackBar } from '@/shared/lib';
|
|||||||
export const BoxContainer1 = () => {
|
export const BoxContainer1 = () => {
|
||||||
const { navigate } = useNavigate();
|
const { navigate } = useNavigate();
|
||||||
const { t, i18n } = useTranslation();
|
const { t, i18n } = useTranslation();
|
||||||
const userMid = useStore.getState().UserStore.mid;
|
const { newMid } = useNewMidStore();
|
||||||
|
|
||||||
const [mid, setMid] = useState<string>(userMid);
|
const [mid, setMid] = useState<string>();
|
||||||
const [searchDate, setSearchDate] = useState<string>(moment().format('YYYYMMDD'));
|
const [searchDate, setSearchDate] = useState<string>(moment().format('YYYYMMDD'));
|
||||||
|
|
||||||
const [sales, setSales] = useState<Sales>();
|
const [sales, setSales] = useState<Sales>();
|
||||||
@@ -84,8 +84,19 @@ export const BoxContainer1 = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
callToday();
|
const userMid = useStore.getState().UserStore.mid;
|
||||||
|
setMid(userMid);
|
||||||
}, []);
|
}, []);
|
||||||
|
useEffect(() => {
|
||||||
|
if(mid){
|
||||||
|
callToday();
|
||||||
|
}
|
||||||
|
}, [mid]);
|
||||||
|
useEffect(() => {
|
||||||
|
if(!!newMid){
|
||||||
|
setMid(newMid);
|
||||||
|
}
|
||||||
|
}, [newMid]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import { useHomeOverviewMutation } from '../api/use-home-overview-mutation';
|
|||||||
import { useHomeMonthwMutation } from '../api/use-home-month-mutation';
|
import { useHomeMonthwMutation } from '../api/use-home-month-mutation';
|
||||||
import { useNavigate } from '@/shared/lib/hooks';
|
import { useNavigate } from '@/shared/lib/hooks';
|
||||||
import { PATHS } from '@/shared/constants/paths';
|
import { PATHS } from '@/shared/constants/paths';
|
||||||
import { useStore } from '@/shared/model/store';
|
import { useNewMidStore, useStore } from '@/shared/model/store';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { showAlert } from '@/widgets/show-alert';
|
import { showAlert } from '@/widgets/show-alert';
|
||||||
import { checkGrant } from '@/shared/lib/check-grant';
|
import { checkGrant } from '@/shared/lib/check-grant';
|
||||||
@@ -15,9 +15,9 @@ import { snackBar } from '@/shared/lib';
|
|||||||
export const BoxContainer2 = () => {
|
export const BoxContainer2 = () => {
|
||||||
const { navigate } = useNavigate();
|
const { navigate } = useNavigate();
|
||||||
const { t, i18n } = useTranslation();
|
const { t, i18n } = useTranslation();
|
||||||
const userMid = useStore.getState().UserStore.mid;
|
const { newMid } = useNewMidStore();
|
||||||
|
|
||||||
const [mid, setMid] = useState<string>(userMid);
|
const [mid, setMid] = useState<string>();
|
||||||
const [searchMonth, setSearchMonth] = useState<string>(moment().format('YYYYMM'));
|
const [searchMonth, setSearchMonth] = useState<string>(moment().format('YYYYMM'));
|
||||||
const [searchDate, setSearchDate] = useState<string>(moment().format('YYYYMMDD'));
|
const [searchDate, setSearchDate] = useState<string>(moment().format('YYYYMMDD'));
|
||||||
|
|
||||||
@@ -89,9 +89,20 @@ export const BoxContainer2 = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
const userMid = useStore.getState().UserStore.mid;
|
||||||
|
setMid(userMid);
|
||||||
|
}, []);
|
||||||
|
useEffect(() => {
|
||||||
|
if(!!mid){
|
||||||
callMonth();
|
callMonth();
|
||||||
callOverview();
|
callOverview();
|
||||||
}, []);
|
}
|
||||||
|
}, [mid]);
|
||||||
|
useEffect(() => {
|
||||||
|
if(!!newMid){
|
||||||
|
setMid(newMid);
|
||||||
|
}
|
||||||
|
}, [newMid]);
|
||||||
|
|
||||||
const onClickToNavigate = (path: string) => {
|
const onClickToNavigate = (path: string) => {
|
||||||
if(path === 'allTransaction'){
|
if(path === 'allTransaction'){
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import * as _ from 'lodash-es';
|
||||||
import { motion } from 'framer-motion';
|
import { motion } from 'framer-motion';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { IMAGE_ROOT } from '@/shared/constants/common';
|
import { IMAGE_ROOT } from '@/shared/constants/common';
|
||||||
@@ -43,37 +44,57 @@ export const CardCommissionBottomSheet = ({
|
|||||||
feeRate
|
feeRate
|
||||||
}: CardCommissionBottomSheetProps) => {
|
}: CardCommissionBottomSheetProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
// 01: 비씨, 02: KB국민, 03: 하나(외환), 04: 삼성, 06: 신한,
|
||||||
|
// 07: 현대, 08: 롯데, 11: 씨티, 12: NH채움, 16: 하나
|
||||||
|
// const useCodes = ['01', '02', '03', '04', '06', '07', '08', '11', '12', '16'];
|
||||||
const cardList = useStore.getState().CommonStore.creditCardList;
|
const cardList = useStore.getState().CommonStore.creditCardList;
|
||||||
console.log(cardList);
|
|
||||||
let newCardList = cardList.filter((value, index) => value.code2 === 'pur');
|
let newCardList = cardList.filter((value, index) => value.code2 === 'pur');
|
||||||
|
// let newCardList = cardList.filter((value, index) => useCodes.includes(value.code1));
|
||||||
|
|
||||||
|
const [newGeneralTabItems, setNewGeneralTabItems] = useState<Record<string, any>>({});
|
||||||
|
const [newInstallmentTabItems, setNewInstallmentTabItems] = useState<Array<InstallmentTabItems> | undefined>();
|
||||||
|
const [newMoneyPointTabItems, setNewMoneyPointTabItems] = useState<Array<MoneyPointTabItems> | undefined>();
|
||||||
|
|
||||||
const [onTab, setOnTab] = useState<CardCommissionTabKey>(CardCommissionTabKey.GENERAL);
|
const [onTab, setOnTab] = useState<CardCommissionTabKey>(CardCommissionTabKey.GENERAL);
|
||||||
const [selectedCard, setSelectedCard] = useState<string>(cardList[0].desc1);
|
const [selectedCard, setSelectedCard] = useState<string>(cardList[0].desc1);
|
||||||
const [leftTitle, setLeftTitle] = useState<string>('');
|
const [moneyPointTitle, setMoneyPointTitle] = useState<string>('');
|
||||||
const [leftText, setLeftText] = useState<string>('');
|
const [moneyPointText, setMoneyPointText] = useState<string>('');
|
||||||
|
const [moneyPointRate, setMoneyPointRate] = useState<string>();
|
||||||
|
|
||||||
const onClickToClose = () => {
|
const onClickToClose = () => {
|
||||||
setCardCommissionBottomSheetOn(false);
|
setCardCommissionBottomSheetOn(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const getItemList = (key?: CardCommissionTabKey) => {
|
const getItemList = (key?: CardCommissionTabKey) => {
|
||||||
let rs = [];
|
let rs = [];
|
||||||
if(key === CardCommissionTabKey.GENERAL){
|
if(key === CardCommissionTabKey.GENERAL){
|
||||||
for(let i=0;i<newCardList.length;i++){
|
for(let i=0;i<newCardList.length;i++){
|
||||||
|
let cardItem = newCardList[i];
|
||||||
|
let cardCompany = cardItem.desc1;
|
||||||
|
if(newGeneralTabItems.hasOwnProperty(cardCompany)){
|
||||||
|
let feeRate = newGeneralTabItems[cardCompany];
|
||||||
rs.push(
|
rs.push(
|
||||||
<div
|
<div
|
||||||
key={`card-fee-row-${i}`}
|
key={`card-fee-row-${i}`}
|
||||||
className="card-fee-row"
|
className="card-fee-row"
|
||||||
>
|
>
|
||||||
<span>{ newCardList[i].desc1 }</span>
|
<span>{ cardCompany }</span>
|
||||||
<span>2.000%</span>
|
<span>{ feeRate+'%' || ''}</span>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return rs;
|
return rs;
|
||||||
}
|
}
|
||||||
|
const getMoneyPointRate = (itemKey: string) => {
|
||||||
|
let items = moneyPointTabItems?.filter((value, index) => {
|
||||||
|
return value.category === itemKey;
|
||||||
|
});
|
||||||
|
setNewMoneyPointTabItems(items);
|
||||||
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// 탭 이동시 할일
|
// 탭 이동시 할일
|
||||||
@@ -81,22 +102,43 @@ export const CardCommissionBottomSheet = ({
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if(!!itemKey){
|
if(!!itemKey){
|
||||||
|
getMoneyPointRate(itemKey);
|
||||||
if(itemKey === 'kakaoPay'){
|
if(itemKey === 'kakaoPay'){
|
||||||
setLeftTitle('구분');
|
setMoneyPointTitle('구분');
|
||||||
setLeftText('카카오머니');
|
setMoneyPointText('카카오머니');
|
||||||
}
|
}
|
||||||
else if(itemKey === 'naverPay'){
|
else if(itemKey === 'naverPay'){
|
||||||
setLeftTitle('할부개월');
|
setMoneyPointTitle('할부개월');
|
||||||
setLeftText('네이버포인트');
|
setMoneyPointText('네이버포인트');
|
||||||
}
|
|
||||||
else if(itemKey === 'tossPay'){
|
|
||||||
setLeftTitle('할부개원');
|
|
||||||
setLeftText('토스머니');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else if(itemKey === 'tossPay'){
|
||||||
|
setMoneyPointTitle('할부개원');
|
||||||
|
setMoneyPointText('토스머니');
|
||||||
|
}
|
||||||
|
}
|
||||||
}, [itemKey]);
|
}, [itemKey]);
|
||||||
|
|
||||||
|
const getInstallmentTabItems = () => {
|
||||||
|
let items = installmentTabItems?.filter((value, index) => {
|
||||||
|
return value.cardCompany === selectedCard;
|
||||||
|
});
|
||||||
|
setNewInstallmentTabItems(items);
|
||||||
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if(onTab === CardCommissionTabKey.NO_INTEREST && !!selectedCard){
|
||||||
|
getInstallmentTabItems();
|
||||||
|
}
|
||||||
|
}, [selectedCard]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if(!!generalTabItems){
|
||||||
|
let objectGeneralTabItems = _.chain(generalTabItems).keyBy('cardCompany').mapValues('feeRate').value();
|
||||||
|
setNewGeneralTabItems(objectGeneralTabItems);
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{ cardCommissionBottomSheetOn &&
|
{ cardCommissionBottomSheetOn &&
|
||||||
@@ -172,11 +214,13 @@ export const CardCommissionBottomSheet = ({
|
|||||||
onChange={ (e: ChangeEvent<HTMLSelectElement>) => setSelectedCard(e.target.value) }
|
onChange={ (e: ChangeEvent<HTMLSelectElement>) => setSelectedCard(e.target.value) }
|
||||||
>
|
>
|
||||||
{
|
{
|
||||||
newCardList.map((value, index) => (
|
newCardList.filter((value1, index1) => {
|
||||||
|
return newGeneralTabItems.hasOwnProperty(value1.desc1)
|
||||||
|
}).map((value2, index2) => (
|
||||||
<option
|
<option
|
||||||
key={ `card-list-${value.desc1}`}
|
key={ `card-list-${value2.desc1}`}
|
||||||
value={ value.desc1 }
|
value={ value2.desc1 }
|
||||||
>{ value.desc1 }</option>
|
>{ value2.desc1 }</option>
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
</select>
|
</select>
|
||||||
@@ -188,42 +232,13 @@ export const CardCommissionBottomSheet = ({
|
|||||||
<span className="th-left">{t('payment.installmentMonths')}</span>
|
<span className="th-left">{t('payment.installmentMonths')}</span>
|
||||||
<span className="th-right">{t('payment.commission')}</span>
|
<span className="th-right">{t('payment.commission')}</span>
|
||||||
</div>
|
</div>
|
||||||
|
{ !!newInstallmentTabItems && newInstallmentTabItems.map((value, index) => (
|
||||||
<div className="card-fee-row">
|
<div className="card-fee-row">
|
||||||
<span>{t('payment.months', { count: 2 })}</span>
|
<span>{t('payment.months', { count: parseInt(value.installmentMonth.substring(0, 1)) })}</span>
|
||||||
<span>2.000%</span>
|
<span>{ value.feeRate+'%' || '' }</span>
|
||||||
</div>
|
|
||||||
<div className="card-fee-row">
|
|
||||||
<span>{t('payment.months', { count: 3 })}</span>
|
|
||||||
<span>3.100%</span>
|
|
||||||
</div>
|
|
||||||
<div className="card-fee-row">
|
|
||||||
<span>{t('payment.months', { count: 4 })}</span>
|
|
||||||
<span>4.400%</span>
|
|
||||||
</div>
|
|
||||||
<div className="card-fee-row">
|
|
||||||
<span>{t('payment.months', { count: 5 })}</span>
|
|
||||||
<span>5.200%</span>
|
|
||||||
</div>
|
|
||||||
<div className="card-fee-row">
|
|
||||||
<span>{t('payment.months', { count: 6 })}</span>
|
|
||||||
<span>6.000%</span>
|
|
||||||
</div>
|
|
||||||
<div className="card-fee-row">
|
|
||||||
<span>{t('payment.months', { count: 7 })}</span>
|
|
||||||
<span>6.600%</span>
|
|
||||||
</div>
|
|
||||||
<div className="card-fee-row">
|
|
||||||
<span>{t('payment.months', { count: 8 })}</span>
|
|
||||||
<span>7.500%</span>
|
|
||||||
</div>
|
|
||||||
<div className="card-fee-row">
|
|
||||||
<span>{t('payment.months', { count: 9 })}</span>
|
|
||||||
<span>8.000%</span>
|
|
||||||
</div>
|
|
||||||
<div className="card-fee-row">
|
|
||||||
<span>{t('payment.months', { count: 10 })}</span>
|
|
||||||
<span>9.000%</span>
|
|
||||||
</div>
|
</div>
|
||||||
|
))
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
@@ -231,13 +246,16 @@ export const CardCommissionBottomSheet = ({
|
|||||||
{ (onTab === CardCommissionTabKey.MONEY_POINT) &&
|
{ (onTab === CardCommissionTabKey.MONEY_POINT) &&
|
||||||
<>
|
<>
|
||||||
<div className="card-fee-list-header">
|
<div className="card-fee-list-header">
|
||||||
<span className="th-left">{ leftTitle }</span>
|
<span className="th-left">{ moneyPointTitle }</span>
|
||||||
<span className="th-right">{t('payment.commission')}</span>
|
<span className="th-right">{t('payment.commission')}</span>
|
||||||
</div>
|
</div>
|
||||||
|
{ !!newMoneyPointTabItems && newMoneyPointTabItems.map((value, index) => (
|
||||||
<div className="card-fee-row">
|
<div className="card-fee-row">
|
||||||
<span>{ leftText }</span>
|
<span>{ value.category }</span>
|
||||||
<span>2.000%</span>
|
<span>{ value.feeRate+'%' || '' }</span>
|
||||||
</div>
|
</div>
|
||||||
|
))
|
||||||
|
}
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -58,7 +58,8 @@ export const InfoWrap = () => {
|
|||||||
|
|
||||||
const [payType, setPayType] = useState<number>(2);
|
const [payType, setPayType] = useState<number>(2);
|
||||||
const [itemKey, setItemKey] = useState<string>('');
|
const [itemKey, setItemKey] = useState<string>('');
|
||||||
const [settlementPeriod, setSettlementPeriod] = useState<string>();
|
const [cardSettlementPeriod, setCardSettlementPeriod] = useState<string>();
|
||||||
|
const [nonCardSettlementPeriod, setNonCardSettlementPeriod] = useState<string>();
|
||||||
const [generalTabItems, setGeneralTabItems] = useState<Array<GeneralTabItems>>([]);
|
const [generalTabItems, setGeneralTabItems] = useState<Array<GeneralTabItems>>([]);
|
||||||
const [installmentTabItems, setInstallmentTabItems] = useState<Array<InstallmentTabItems>>([]);
|
const [installmentTabItems, setInstallmentTabItems] = useState<Array<InstallmentTabItems>>([]);
|
||||||
const [moneyPointTabItems, setMoneyPointTabItems] = useState<Array<MoneyPointTabItems>>([]);
|
const [moneyPointTabItems, setMoneyPointTabItems] = useState<Array<MoneyPointTabItems>>([]);
|
||||||
@@ -175,7 +176,7 @@ export const InfoWrap = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
paymentCard(params).then((rs: PaymentCardResponse) => {
|
paymentCard(params).then((rs: PaymentCardResponse) => {
|
||||||
setSettlementPeriod(rs.settlementPeriod);
|
setCardSettlementPeriod(rs.settlementPeriod);
|
||||||
setGeneralTabItems(rs.generalTab.items);
|
setGeneralTabItems(rs.generalTab.items);
|
||||||
setInstallmentTabItems(rs.installmentTab.items);
|
setInstallmentTabItems(rs.installmentTab.items);
|
||||||
setMoneyPointTabItems(rs.moneyPointTab.items);
|
setMoneyPointTabItems(rs.moneyPointTab.items);
|
||||||
@@ -193,7 +194,7 @@ export const InfoWrap = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
paymentNonCard(params).then((rs: PaymentNonCardResponse) => {
|
paymentNonCard(params).then((rs: PaymentNonCardResponse) => {
|
||||||
setSettlementPeriod(rs.settlementPeriod);
|
setNonCardSettlementPeriod(rs.settlementPeriod);
|
||||||
setFeeRanges(rs.accountTransferData.feeRanges);
|
setFeeRanges(rs.accountTransferData.feeRanges);
|
||||||
setBankFees(rs.accountTransferData.bankFees);
|
setBankFees(rs.accountTransferData.bankFees);
|
||||||
setPaymentFees(rs.mobilePaymentData.paymentFees);
|
setPaymentFees(rs.mobilePaymentData.paymentFees);
|
||||||
@@ -297,7 +298,7 @@ export const InfoWrap = () => {
|
|||||||
setCardCommissionBottomSheetOn={ setCardCommissionBottomSheetOn }
|
setCardCommissionBottomSheetOn={ setCardCommissionBottomSheetOn }
|
||||||
payType={ payType }
|
payType={ payType }
|
||||||
itemKey={ itemKey }
|
itemKey={ itemKey }
|
||||||
settlementPeriod={ settlementPeriod }
|
settlementPeriod={ cardSettlementPeriod }
|
||||||
generalTabItems={ generalTabItems }
|
generalTabItems={ generalTabItems }
|
||||||
installmentTabItems={ installmentTabItems }
|
installmentTabItems={ installmentTabItems }
|
||||||
moneyPointTabItems= { moneyPointTabItems }
|
moneyPointTabItems= { moneyPointTabItems }
|
||||||
@@ -311,6 +312,7 @@ export const InfoWrap = () => {
|
|||||||
{ !!transferCommissionBottomSheetOn &&
|
{ !!transferCommissionBottomSheetOn &&
|
||||||
<TransferCommissionBottomSheet
|
<TransferCommissionBottomSheet
|
||||||
itemKey={ itemKey }
|
itemKey={ itemKey }
|
||||||
|
settlementPeriod={ nonCardSettlementPeriod }
|
||||||
transferCommissionBottomSheetOn={ transferCommissionBottomSheetOn }
|
transferCommissionBottomSheetOn={ transferCommissionBottomSheetOn }
|
||||||
setTransferCommissionBottomSheetOn={ setTransferCommissionBottomSheetOn }
|
setTransferCommissionBottomSheetOn={ setTransferCommissionBottomSheetOn }
|
||||||
></TransferCommissionBottomSheet>
|
></TransferCommissionBottomSheet>
|
||||||
|
|||||||
@@ -278,11 +278,6 @@ export const AmountInfoSection = ({
|
|||||||
tid: tid
|
tid: tid
|
||||||
};
|
};
|
||||||
cashReceiptReceiptDownload(params).then((rs: CashReceiptReceiptDownloadResponse) => {
|
cashReceiptReceiptDownload(params).then((rs: CashReceiptReceiptDownloadResponse) => {
|
||||||
/*
|
|
||||||
if(rs?.merchantInfo){
|
|
||||||
rs.merchantInfo.merchantName = '나이스페이먼츠';
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
setReceiptIssueInfo(rs?.issueInfo);
|
setReceiptIssueInfo(rs?.issueInfo);
|
||||||
setReceiptMerchantInfo(rs?.merchantInfo);
|
setReceiptMerchantInfo(rs?.merchantInfo);
|
||||||
setReceiptTransactionInfo(rs?.transactionInfo);
|
setReceiptTransactionInfo(rs?.transactionInfo);
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { useVatReturnTaxInvoiceMutation } from '../../api/use-vat-return-tax-inv
|
|||||||
import { TaxInvoiceSample } from '@/entities/common/ui/tax-invoice-sample';
|
import { TaxInvoiceSample } from '@/entities/common/ui/tax-invoice-sample';
|
||||||
import { useVatReturnTaxInvoiceSendEmailMutation } from '../../api/use-vat-return-tax-invoice-send-email-mutation';
|
import { useVatReturnTaxInvoiceSendEmailMutation } from '../../api/use-vat-return-tax-invoice-send-email-mutation';
|
||||||
import { snackBar } from '@/shared/lib';
|
import { snackBar } from '@/shared/lib';
|
||||||
import { useDownloadBottomSheetOnStore } from '@/shared/model/store';
|
import { useDownloadBottomSheetOn2Store } from '@/shared/model/store';
|
||||||
|
|
||||||
export interface AmountSectionProps {
|
export interface AmountSectionProps {
|
||||||
taxInvoiceNumber: string;
|
taxInvoiceNumber: string;
|
||||||
@@ -23,7 +23,7 @@ export const AmountSection = ({
|
|||||||
}: AmountSectionProps) => {
|
}: AmountSectionProps) => {
|
||||||
const { t, i18n } = useTranslation();
|
const { t, i18n } = useTranslation();
|
||||||
const [isOpen, setIsOpen] = useState<boolean>(false);
|
const [isOpen, setIsOpen] = useState<boolean>(false);
|
||||||
const { downloadBottomSheetOn, setDownloadBottomSheetOn } = useDownloadBottomSheetOnStore();
|
const { downloadBottomSheetOn2, setDownloadBottomSheetOn2 } = useDownloadBottomSheetOn2Store();
|
||||||
|
|
||||||
const [taxInvoiceSampleOn, setTaxInvoiceSampleOn] = useState<boolean>(false);
|
const [taxInvoiceSampleOn, setTaxInvoiceSampleOn] = useState<boolean>(false);
|
||||||
|
|
||||||
@@ -95,7 +95,7 @@ export const AmountSection = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const onClickToOpenDownloadBottomSheet = () => {
|
const onClickToOpenDownloadBottomSheet = () => {
|
||||||
setDownloadBottomSheetOn(true);
|
setDownloadBottomSheetOn2(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -151,10 +151,10 @@ export const AmountSection = ({
|
|||||||
>{t('vatReturn.taxInvoice')}</button>
|
>{t('vatReturn.taxInvoice')}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{ !!downloadBottomSheetOn &&
|
{ !!downloadBottomSheetOn2 &&
|
||||||
<DownloadBottomSheet
|
<DownloadBottomSheet
|
||||||
bottomSheetOn={ downloadBottomSheetOn }
|
bottomSheetOn={ downloadBottomSheetOn2 }
|
||||||
setBottomSheetOn={ setDownloadBottomSheetOn }
|
setBottomSheetOn={ setDownloadBottomSheetOn2 }
|
||||||
imageMode={ true }
|
imageMode={ true }
|
||||||
emailMode={ true }
|
emailMode={ true }
|
||||||
sendRequest={ onRequestDownload }
|
sendRequest={ onRequestDownload }
|
||||||
|
|||||||
@@ -1131,6 +1131,7 @@
|
|||||||
"registrationSuccess": "Transfer registration successful.",
|
"registrationSuccess": "Transfer registration successful.",
|
||||||
"registrationFailed": "Transfer registration failed.",
|
"registrationFailed": "Transfer registration failed.",
|
||||||
"registrationError": "An error occurred during transfer registration.",
|
"registrationError": "An error occurred during transfer registration.",
|
||||||
|
"failReqeustBalance": "An error occured during request balance",
|
||||||
"register": "Register",
|
"register": "Register",
|
||||||
"transferDetailTitle": "Fund Transfer Detail",
|
"transferDetailTitle": "Fund Transfer Detail",
|
||||||
"detailInfo": "Detail Information",
|
"detailInfo": "Detail Information",
|
||||||
|
|||||||
@@ -1131,6 +1131,7 @@
|
|||||||
"registrationSuccess": "이체등록을 성공하였습니다.",
|
"registrationSuccess": "이체등록을 성공하였습니다.",
|
||||||
"registrationFailed": "이체등록이 실패하였습니다.",
|
"registrationFailed": "이체등록이 실패하였습니다.",
|
||||||
"registrationError": "이체등록 중 오류가 발생했습니다.",
|
"registrationError": "이체등록 중 오류가 발생했습니다.",
|
||||||
|
"failReqeustBalance": "잔액을 불러오는데 실패했습니다.",
|
||||||
"register": "등록",
|
"register": "등록",
|
||||||
"transferDetailTitle": "자금이체 상세",
|
"transferDetailTitle": "자금이체 상세",
|
||||||
"detailInfo": "상세 정보",
|
"detailInfo": "상세 정보",
|
||||||
|
|||||||
@@ -258,8 +258,11 @@ export const KeyInPaymentRequestPage = () => {
|
|||||||
|
|
||||||
<div className="billing-row">
|
<div className="billing-row">
|
||||||
<div className="billing-label">{t('additionalService.keyIn.cardNumber')} <span>*</span></div>
|
<div className="billing-label">{t('additionalService.keyIn.cardNumber')} <span>*</span></div>
|
||||||
|
</div>
|
||||||
|
<div className="billing-row" style={{ gap: '10px'}}>
|
||||||
<div className="billing-field">
|
<div className="billing-field">
|
||||||
<PatternFormat
|
<PatternFormat
|
||||||
|
className='card-format-input'
|
||||||
value={cardNo1}
|
value={cardNo1}
|
||||||
allowEmptyFormatting
|
allowEmptyFormatting
|
||||||
valueIsNumericString
|
valueIsNumericString
|
||||||
@@ -271,6 +274,7 @@ export const KeyInPaymentRequestPage = () => {
|
|||||||
</div>
|
</div>
|
||||||
<div className="billing-field">
|
<div className="billing-field">
|
||||||
<PatternFormat
|
<PatternFormat
|
||||||
|
className='card-format-input'
|
||||||
value={cardNo2}
|
value={cardNo2}
|
||||||
allowEmptyFormatting
|
allowEmptyFormatting
|
||||||
valueIsNumericString
|
valueIsNumericString
|
||||||
@@ -282,6 +286,7 @@ export const KeyInPaymentRequestPage = () => {
|
|||||||
</div>
|
</div>
|
||||||
<div className="billing-field">
|
<div className="billing-field">
|
||||||
<PatternFormat
|
<PatternFormat
|
||||||
|
className='card-format-input'
|
||||||
value={cardNo3}
|
value={cardNo3}
|
||||||
allowEmptyFormatting
|
allowEmptyFormatting
|
||||||
valueIsNumericString
|
valueIsNumericString
|
||||||
@@ -293,6 +298,7 @@ export const KeyInPaymentRequestPage = () => {
|
|||||||
</div>
|
</div>
|
||||||
<div className="billing-field">
|
<div className="billing-field">
|
||||||
<PatternFormat
|
<PatternFormat
|
||||||
|
className='card-format-input'
|
||||||
value={cardNo4}
|
value={cardNo4}
|
||||||
allowEmptyFormatting
|
allowEmptyFormatting
|
||||||
valueIsNumericString
|
valueIsNumericString
|
||||||
|
|||||||
@@ -168,6 +168,7 @@ export const NoticeListPage = () => {
|
|||||||
placeholder={ t('support.notice.searchPlaceholder') }
|
placeholder={ t('support.notice.searchPlaceholder') }
|
||||||
value={ searchKeyword }
|
value={ searchKeyword }
|
||||||
onChange={ (e: ChangeEvent<HTMLInputElement>) => setSearchKeyword(e.target.value) }
|
onChange={ (e: ChangeEvent<HTMLInputElement>) => setSearchKeyword(e.target.value) }
|
||||||
|
onBlur={ onClickToAction }
|
||||||
onKeyDown={ (e: React.KeyboardEvent<HTMLInputElement>) => {
|
onKeyDown={ (e: React.KeyboardEvent<HTMLInputElement>) => {
|
||||||
if (e.key === 'Enter' && !e.nativeEvent.isComposing) {
|
if (e.key === 'Enter' && !e.nativeEvent.isComposing) {
|
||||||
onClickToAction();
|
onClickToAction();
|
||||||
|
|||||||
@@ -15,4 +15,5 @@ export enum StorageKeys {
|
|||||||
AppVersion = 'APP_VERSION',
|
AppVersion = 'APP_VERSION',
|
||||||
LogOut = 'LOGOUT',
|
LogOut = 'LOGOUT',
|
||||||
i18nextLng = 'i18nextLng',
|
i18nextLng = 'i18nextLng',
|
||||||
|
UserMid = 'USER_MID',
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,6 +6,10 @@ 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 NewMidStore {
|
||||||
|
newMid: string;
|
||||||
|
setNewMid: (newMid: string) => void;
|
||||||
|
};
|
||||||
export interface DownloadBottomSheetOnStore {
|
export interface DownloadBottomSheetOnStore {
|
||||||
downloadBottomSheetOn: boolean;
|
downloadBottomSheetOn: boolean;
|
||||||
setDownloadBottomSheetOn: (downloadBottomSheetOn: boolean) => void;
|
setDownloadBottomSheetOn: (downloadBottomSheetOn: boolean) => void;
|
||||||
@@ -46,6 +50,15 @@ export interface MenuIdsStore {
|
|||||||
deleteMenuId: (menuId: number) => void;
|
deleteMenuId: (menuId: number) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const useNewMidStore = create<NewMidStore>((set) => ({
|
||||||
|
newMid: '',
|
||||||
|
setNewMid: (newMid: string) => {
|
||||||
|
set((state: {newMid: string}) => ({
|
||||||
|
newMid: (state.newMid = newMid)
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
export const useDownloadBottomSheetOnStore = create<DownloadBottomSheetOnStore>((set) => ({
|
export const useDownloadBottomSheetOnStore = create<DownloadBottomSheetOnStore>((set) => ({
|
||||||
downloadBottomSheetOn: false,
|
downloadBottomSheetOn: false,
|
||||||
setDownloadBottomSheetOn: (downloadBottomSheetOn: boolean) => {
|
setDownloadBottomSheetOn: (downloadBottomSheetOn: boolean) => {
|
||||||
|
|||||||
@@ -12,7 +12,9 @@ main {
|
|||||||
.align-left {
|
.align-left {
|
||||||
text-align: left !important;
|
text-align: left !important;
|
||||||
}
|
}
|
||||||
|
.align-center{
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
.transaction-list {
|
.transaction-list {
|
||||||
/* overflow-y: auto; */
|
/* overflow-y: auto; */
|
||||||
}
|
}
|
||||||
@@ -648,3 +650,7 @@ main.pop .apply-row {
|
|||||||
.settings-login-auth .icon-btn.minus {
|
.settings-login-auth .icon-btn.minus {
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-format-input{
|
||||||
|
text-align: center; letter-spacing: 1px;
|
||||||
|
}
|
||||||
@@ -24,7 +24,8 @@ export const FilterButtonGroups = ({
|
|||||||
style={{
|
style={{
|
||||||
width: `calc((100% - ${onwRowMaxBtn === 2? '10px': '30px'}) / ${onwRowMaxBtn})`,
|
width: `calc((100% - ${onwRowMaxBtn === 2? '10px': '30px'}) / ${onwRowMaxBtn})`,
|
||||||
wordBreak: 'break-all',
|
wordBreak: 'break-all',
|
||||||
fontSize: 'var(--fs-13)'
|
fontSize: 'var(--fs-13)',
|
||||||
|
height: 'auto'
|
||||||
}}
|
}}
|
||||||
onClick={ () => setter(btnGroups[i]?.value || '') }
|
onClick={ () => setter(btnGroups[i]?.value || '') }
|
||||||
>{ btnGroups[i]?.name }</span>
|
>{ btnGroups[i]?.name }</span>
|
||||||
@@ -49,7 +50,8 @@ export const FilterButtonGroups = ({
|
|||||||
visibility: 'hidden',
|
visibility: 'hidden',
|
||||||
width: `calc((100% - ${onwRowMaxBtn === 2? '10px': '30px'}) / ${onwRowMaxBtn})`,
|
width: `calc((100% - ${onwRowMaxBtn === 2? '10px': '30px'}) / ${onwRowMaxBtn})`,
|
||||||
wordBreak: 'break-all',
|
wordBreak: 'break-all',
|
||||||
fontSize: 'var(--fs-13)'
|
fontSize: 'var(--fs-13)',
|
||||||
|
height: 'auto'
|
||||||
}}
|
}}
|
||||||
></span>
|
></span>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -64,6 +64,9 @@ export const FilterCalendar = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const onClickToOpenCalendar = (calendarType: CalendarType) => {
|
const onClickToOpenCalendar = (calendarType: CalendarType) => {
|
||||||
|
setCalendarOpen(true);
|
||||||
|
setCalendarType(calendarType);
|
||||||
|
/*
|
||||||
if(!dateReadOnly){
|
if(!dateReadOnly){
|
||||||
setCalendarOpen(true);
|
setCalendarOpen(true);
|
||||||
setCalendarType(calendarType);
|
setCalendarType(calendarType);
|
||||||
@@ -72,6 +75,7 @@ export const FilterCalendar = ({
|
|||||||
setCalendarOpen(false);
|
setCalendarOpen(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
const setNewDate = (date: string, calendarType: CalendarType) => {
|
const setNewDate = (date: string, calendarType: CalendarType) => {
|
||||||
@@ -83,6 +87,7 @@ export const FilterCalendar = ({
|
|||||||
setEndDate(moment(date, 'YYYY.MM.DD').format('YYYYMMDD'));
|
setEndDate(moment(date, 'YYYY.MM.DD').format('YYYYMMDD'));
|
||||||
setNewEndDate(moment(date, 'YYYY.MM.DD').format('YYYY.MM.DD'));
|
setNewEndDate(moment(date, 'YYYY.MM.DD').format('YYYY.MM.DD'));
|
||||||
}
|
}
|
||||||
|
setFilterDateOptionsBtn(FilterDateOptions.Input);
|
||||||
setCalendarOpen(false);
|
setCalendarOpen(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -141,7 +146,6 @@ export const FilterCalendar = ({
|
|||||||
placeholder={t('filter.selectDate')}
|
placeholder={t('filter.selectDate')}
|
||||||
value={ newStartDate }
|
value={ newStartDate }
|
||||||
onChange={ (e: ChangeEvent<HTMLInputElement>) => {} }
|
onChange={ (e: ChangeEvent<HTMLInputElement>) => {} }
|
||||||
readOnly={ dateReadOnly }
|
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
@@ -163,7 +167,6 @@ export const FilterCalendar = ({
|
|||||||
placeholder={t('filter.selectDate')}
|
placeholder={t('filter.selectDate')}
|
||||||
value={ newEndDate }
|
value={ newEndDate }
|
||||||
onChange={ (e: ChangeEvent<HTMLInputElement>) => {} }
|
onChange={ (e: ChangeEvent<HTMLInputElement>) => {} }
|
||||||
readOnly={ dateReadOnly }
|
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
|||||||
@@ -6,11 +6,13 @@ import {
|
|||||||
HeaderType,
|
HeaderType,
|
||||||
HeaderNavigationProps
|
HeaderNavigationProps
|
||||||
} from '@/entities/common/model/types';
|
} from '@/entities/common/model/types';
|
||||||
import { useStore } from '@/shared/model/store';
|
import { useNewMidStore, useStore } from '@/shared/model/store';
|
||||||
import { ChangeEvent, useEffect, useState } from 'react';
|
import { ChangeEvent, useEffect, useState } from 'react';
|
||||||
import { AppAlarmUnreadCountParams, AppAlarmUnreadCountResponse, MERCHANT_ADMIN_APP } from '@/entities/alarm/model/types';
|
import { AppAlarmUnreadCountParams, AppAlarmUnreadCountResponse, MERCHANT_ADMIN_APP } from '@/entities/alarm/model/types';
|
||||||
import { useAppAlarmUnreadCountMutation } from '@/entities/alarm/api/use-app-alarm-unread-count-mutation';
|
import { useAppAlarmUnreadCountMutation } from '@/entities/alarm/api/use-app-alarm-unread-count-mutation';
|
||||||
import { appBridge } from '@/utils/appBridge';
|
import { appBridge } from '@/utils/appBridge';
|
||||||
|
import { getLocalStorage, setLocalStorage } from '@/shared/lib';
|
||||||
|
import { StorageKeys } from '@/shared/constants/local-storage';
|
||||||
|
|
||||||
export const HeaderNavigation = ({
|
export const HeaderNavigation = ({
|
||||||
onBack,
|
onBack,
|
||||||
@@ -22,13 +24,16 @@ export const HeaderNavigation = ({
|
|||||||
setMid
|
setMid
|
||||||
}: HeaderNavigationProps) => {
|
}: HeaderNavigationProps) => {
|
||||||
const { mutateAsync: appAlarmUnreadCount } = useAppAlarmUnreadCountMutation();
|
const { mutateAsync: appAlarmUnreadCount } = useAppAlarmUnreadCountMutation();
|
||||||
|
const { newMid, setNewMid } = useNewMidStore();
|
||||||
|
|
||||||
let [selectOptions, setSelectOptions] = useState<Array<Record<string, string>>>([]);
|
let [selectOptions, setSelectOptions] = useState<Array<Record<string, string>>>([]);
|
||||||
const [unreadCount, setUnreadCount] = useState<number>(0);
|
const [unreadCount, setUnreadCount] = useState<number>(0);
|
||||||
|
|
||||||
|
|
||||||
const {
|
const {
|
||||||
navigate,
|
navigate,
|
||||||
navigateBack
|
navigateBack,
|
||||||
|
reload
|
||||||
} = useNavigate();
|
} = useNavigate();
|
||||||
|
|
||||||
const handleBack = () => {
|
const handleBack = () => {
|
||||||
@@ -53,7 +58,9 @@ export const HeaderNavigation = ({
|
|||||||
const onChangeToMid = (e: ChangeEvent<HTMLSelectElement>) => {
|
const onChangeToMid = (e: ChangeEvent<HTMLSelectElement>) => {
|
||||||
let value = e.target.value;
|
let value = e.target.value;
|
||||||
useStore.getState().UserStore.setMid(value);
|
useStore.getState().UserStore.setMid(value);
|
||||||
|
setLocalStorage(StorageKeys.UserMid, value);
|
||||||
setMid(value);
|
setMid(value);
|
||||||
|
setNewMid(value);
|
||||||
};
|
};
|
||||||
|
|
||||||
const callAlarmCount = () => {
|
const callAlarmCount = () => {
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ import { AlarmLinkOptions } from '@/entities/alarm/model/types';
|
|||||||
import { AlarmRoutes } from '@/entities/alarm/ui/alarm-routes';
|
import { AlarmRoutes } from '@/entities/alarm/ui/alarm-routes';
|
||||||
import { useNavigate } from '@/shared/lib/hooks';
|
import { useNavigate } from '@/shared/lib/hooks';
|
||||||
import { PATHS } from '@/shared/constants/paths';
|
import { PATHS } from '@/shared/constants/paths';
|
||||||
|
import { getLocalStorage, setLocalStorage } from '@/shared/lib';
|
||||||
|
import { StorageKeys } from '@/shared/constants/local-storage';
|
||||||
|
|
||||||
export interface ContextType {
|
export interface ContextType {
|
||||||
setOnBack: (onBack: () => void) => void;
|
setOnBack: (onBack: () => void) => void;
|
||||||
@@ -69,6 +71,7 @@ export const SubLayout = () => {
|
|||||||
} = useUserInfo();
|
} = useUserInfo();
|
||||||
|
|
||||||
const { reload, navigateBack, navigate } = useNavigate();
|
const { reload, navigateBack, navigate } = useNavigate();
|
||||||
|
const userMid = getLocalStorage(StorageKeys.UserMid);
|
||||||
|
|
||||||
const { menuOn, setMenuOn } = useMenuOnStore();
|
const { menuOn, setMenuOn } = useMenuOnStore();
|
||||||
const { favoriteEditOn, setFavoriteEditOn } = useFavoriteEditOnStore();
|
const { favoriteEditOn, setFavoriteEditOn } = useFavoriteEditOnStore();
|
||||||
@@ -79,7 +82,6 @@ export const SubLayout = () => {
|
|||||||
const { downloadBottomSheetOn, setDownloadBottomSheetOn } = useDownloadBottomSheetOnStore();
|
const { downloadBottomSheetOn, setDownloadBottomSheetOn } = useDownloadBottomSheetOnStore();
|
||||||
|
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
console.log(location)
|
|
||||||
|
|
||||||
const [isPullToRefreshEnabled, setIsPullToRefreshEnabled] = useState(false);
|
const [isPullToRefreshEnabled, setIsPullToRefreshEnabled] = useState(false);
|
||||||
const [onBack, setOnBack] = useState(undefined);
|
const [onBack, setOnBack] = useState(undefined);
|
||||||
@@ -90,7 +92,7 @@ export const SubLayout = () => {
|
|||||||
const [footerCurrentPage, setFooterCurrentPage] = useState<undefined | string | null>(undefined);
|
const [footerCurrentPage, setFooterCurrentPage] = useState<undefined | string | null>(undefined);
|
||||||
const [headerNavigationKey, setHeaderNavigationKey] = useState<number>(1);
|
const [headerNavigationKey, setHeaderNavigationKey] = useState<number>(1);
|
||||||
const [loginSuccess, setLoginSuccess] = useState<boolean>(false);
|
const [loginSuccess, setLoginSuccess] = useState<boolean>(false);
|
||||||
const [mid, setMid] = useState<string>();
|
const [mid, setMid] = useState<string>(userMid || undefined);
|
||||||
const [alarmRoutesOn, setAlarmRoutesOn] = useState<boolean>(false);
|
const [alarmRoutesOn, setAlarmRoutesOn] = useState<boolean>(false);
|
||||||
const [alarmOptions, setAlarmOptions] = useState<AlarmLinkOptions>();
|
const [alarmOptions, setAlarmOptions] = useState<AlarmLinkOptions>();
|
||||||
|
|
||||||
@@ -111,9 +113,17 @@ export const SubLayout = () => {
|
|||||||
};
|
};
|
||||||
homeGroups(params).then((rs: HomeGroupsResponse) => {
|
homeGroups(params).then((rs: HomeGroupsResponse) => {
|
||||||
useStore.getState().UserStore.setUserMids(rs.mids);
|
useStore.getState().UserStore.setUserMids(rs.mids);
|
||||||
if(!!rs.mids[0]){
|
let userMid = getLocalStorage(StorageKeys.UserMid);
|
||||||
|
if(!userMid){
|
||||||
|
if(rs.mids[0]){
|
||||||
useStore.getState().UserStore.setMid(rs.mids[0]);
|
useStore.getState().UserStore.setMid(rs.mids[0]);
|
||||||
setMid(rs.mids[0]);
|
setMid(rs.mids[0]);
|
||||||
|
setLocalStorage(StorageKeys.UserMid, rs.mids[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
useStore.getState().UserStore.setMid(userMid);
|
||||||
|
setMid(userMid);
|
||||||
}
|
}
|
||||||
let options: Array<Record<string, string>> = rs.mids.map((value, index) => {
|
let options: Array<Record<string, string>> = rs.mids.map((value, index) => {
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user