diff --git a/.env.development b/.env.development
index 299350a..8fe3793 100644
--- a/.env.development
+++ b/.env.development
@@ -1,6 +1,4 @@
VITE_APP_ENV=development
-# VITE_APP_AUTH_PROXY_HOST='http://3.35.79.250:8090'
-# VITE_APP_API_PROXY_HOST='http://3.35.79.250:8080'
VITE_APP_AUTH_PROXY_HOST='https://auth.nicepay.co.kr'
VITE_APP_API_PROXY_HOST='https://rest.nicepay.co.kr'
GENERATE_SOURCEMAP=false
diff --git a/package.json b/package.json
index c9dbcae..7d5038d 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
"version": "1.0.3",
"type": "module",
"scripts": {
- "dev": "env-cmd -f .env.local vite --host --open",
+ "dev": "env-cmd -f .env.development vite --host --open",
"build:development": "env-cmd -f .env.development vite build",
"build": "env-cmd -f .env.production vite build",
"lint": "eslint . --ext js,jsx,ts,tsx --report-unused-disable-directives --max-warnings 0",
diff --git a/src/entities/support/ui/detail/notice-detail.tsx b/src/entities/support/ui/detail/notice-detail.tsx
index b50c5d5..4c88a3a 100644
--- a/src/entities/support/ui/detail/notice-detail.tsx
+++ b/src/entities/support/ui/detail/notice-detail.tsx
@@ -84,6 +84,9 @@ export const NoticeDetail = ({
className="notice-detail__body"
dangerouslySetInnerHTML={{ __html: result.contents || '' }}
>
+ {/*
+
{ result.contents }
+ */}
diff --git a/src/entities/transaction/api/use-all-transaction-issue-send-mutation.ts b/src/entities/transaction/api/use-all-transaction-issue-send-mutation.ts
new file mode 100644
index 0000000..18e8b79
--- /dev/null
+++ b/src/entities/transaction/api/use-all-transaction-issue-send-mutation.ts
@@ -0,0 +1,39 @@
+import axios from 'axios';
+import { API_URL_TRANSACTION } from '@/shared/api/api-url-transaction';
+import { resultify } from '@/shared/lib/resultify';
+import { NiceAxiosError } from '@/shared/@types/error';
+import {
+ AllTransactionIssueSendParams,
+ AllTransactionIssueSendResponse
+} from '../model/types';
+import {
+ useMutation,
+ UseMutationOptions
+} from '@tanstack/react-query';
+import { getHeaderUserAgent } from '@/shared/constants/url';
+
+export const allTransactionIssueSend = (params: AllTransactionIssueSendParams) => {
+ let headerOptions = {
+ menuId: 31,
+ apiType: 'SEND'
+ };
+ let options = {
+ headers: {
+ 'X-User-Agent': getHeaderUserAgent(headerOptions)
+ }
+ };
+ return resultify(
+ axios.post(API_URL_TRANSACTION.transactionIssueSend(), params, options),
+ );
+};
+
+export const useAllTransactionIssueSendMutation = (options?: UseMutationOptions) => {
+ const mutation = useMutation({
+ ...options,
+ mutationFn: (params: AllTransactionIssueSendParams) => allTransactionIssueSend(params),
+ });
+
+ return {
+ ...mutation,
+ };
+};
diff --git a/src/entities/transaction/model/types.ts b/src/entities/transaction/model/types.ts
index d3249e7..323432c 100644
--- a/src/entities/transaction/model/types.ts
+++ b/src/entities/transaction/model/types.ts
@@ -454,8 +454,10 @@ export interface ImportantInfo {
approvalDate?: string;
approvalTime?: string;
transactionDate?: string;
+ transactionTime?: string;
requestDate?: string;
cancelDate?: string;
+ cancelTime?: string;
goodsName?: string;
orderNumber?: string;
@@ -483,6 +485,7 @@ export interface PaymentInfo {
depositorName?: string;
depositDeadline?: string;
depositDate?: string;
+ depositTime?: string;
refundScheduleDate?: string;
refundBankName?: string;
refundAccountNumber?: string;
@@ -906,4 +909,35 @@ export interface EscrowMailResendParams {
};
export interface EscrowMailResendResponse {
+};
+
+export interface AllTransactionIssueSendParams {
+ sendEmail: string;
+ mid?: string;
+ tid: string;
+ buyerName?: string;
+ approvalDate?: string;
+ depositDate?: string;
+ transactionDate?: string;
+ approvalTime?: string;
+ depositTime?: string;
+ transactionTime?: string;
+ transactionAmount?: number;
+ goodsName?: string;
+ buyerTel?: string;
+ approvalNo?: string;
+ installmentMonth?: string;
+ moid?: string;
+ bankName?: string;
+ accountNo?: string;
+ purchaseCompany?: string;
+ cancelDate?: string;
+ cancelTime?: string;
+ serviceCode?: string;
+ transactionStatus?: string;
+};
+export interface AllTransactionIssueSendResponse {
+ code: string;
+ message: string;
+ ordNm: string;
};
\ No newline at end of file
diff --git a/src/entities/transaction/ui/detail/all-transaction-detail.tsx b/src/entities/transaction/ui/detail/all-transaction-detail.tsx
index 6f71696..7fe8094 100644
--- a/src/entities/transaction/ui/detail/all-transaction-detail.tsx
+++ b/src/entities/transaction/ui/detail/all-transaction-detail.tsx
@@ -191,6 +191,9 @@ export const AllTransactionDetail = ({
{
const { t } = useTranslation();
+ const { mutateAsync: allTransactionIssueSend } = useAllTransactionIssueSendMutation();
const { mutateAsync: cashReceiptReceiptDownload } = useCashReceiptReceiptDownloadMutation();
const { mutateAsync: cashReceiptReceiptSendEamil } = useCashReceiptReceiptSendEmailMutation();
- const { downloadBottomSheetOn, setDownloadBottomSheetOn } = useDownloadBottomSheetOnStore();
+ const { downloadBottomSheetOn2, setDownloadBottomSheetOn2 } = useDownloadBottomSheetOn2Store();
const [cashReceiptSampleOn, setCashReceiptSampleOn] = useState(false);
const [receiptIssueInfo, setReceiptIssueInfo] = useState({});
@@ -35,7 +40,7 @@ export const AmountInfoSection = ({
const [receiptAmountInfo, setReceiptAmountInfo] = useState({});
const [receiptCustomerInfo, setReceiptCustomerInfo] = useState();
const [receiptProductInfo, setReceiptProductInfo] = useState();
-
+
let newAmountInfo: Record | undefined = amountInfo;
const subItems: Record> = {
transactionRequestAmount: {name: t('transaction.fields.transactionRequestAmount'), type: 'number'},
@@ -199,7 +204,7 @@ export const AmountInfoSection = ({
};
const onClickToOpenDownloadBottomSheet = () => {
- setDownloadBottomSheetOn(true);
+ setDownloadBottomSheetOn2(true);
};
const onRequestDownload = (
@@ -210,21 +215,63 @@ export const AmountInfoSection = ({
if(selectedMode === DownloadSelectedMode.EMAIL
&& !!userEmail
){
- let params: CashReceiptReceiptSendEmailParams = {
- tid: tid,
- email: userEmail
- };
- cashReceiptReceiptSendEamil(params).then((rs: CashReceiptReceiptSendEmailResponse) => {
- console.log(rs);
- if(rs.message){
- snackBar(rs.message);
- }
- }).catch((e: any) => {
- if(e.response?.data?.error?.message){
- snackBar(e.response?.data?.error?.message);
- return;
- }
- });
+ if(transactionCategory === TransactionCategory.AllTransaction){
+ let params: AllTransactionIssueSendParams = {
+ sendEmail: userEmail,
+ mid: amountInfo?.mid,
+ tid: tid,
+ buyerName: transactionInfo?.buyerName,
+ approvalDate: importantInfo?.approvalDate,
+ depositDate: paymentInfo?.depositDate,
+ transactionDate: importantInfo?.transactionDate,
+ approvalTime: importantInfo?.approvalTime,
+ depositTime: paymentInfo?.depositTime,
+ transactionTime: importantInfo?.transactionTime,
+ transactionAmount: amountInfo?.transactionAmount,
+ goodsName: importantInfo?.goodsName,
+ buyerTel: transactionInfo?.buyerTel,
+ approvalNo: paymentInfo?.approvalNo,
+ installmentMonth: paymentInfo?.approvalNo,
+ moid: importantInfo?.moid,
+ bankName: paymentInfo?.bankName || paymentInfo?.refundBankName,
+ accountNo: paymentInfo?.accountNo || paymentInfo?.refundAccountNo,
+ purchaseCompany: paymentInfo?.purchaseCompany,
+ cancelDate: importantInfo?.cancelDate,
+ cancelTime: importantInfo?.cancelTime,
+ serviceCode: serviceCode,
+ transactionStatus: importantInfo?.transactionStatus
+ };
+ allTransactionIssueSend(params).then((rs: AllTransactionIssueSendResponse) => {
+ if(rs.message){
+ snackBar(rs.message);
+ }
+ else{
+ snackBar('메일이 전송 되었습니다.');
+ }
+ }).catch((e: any) => {
+ if(e.response?.data?.error?.message){
+ snackBar(e.response?.data?.error?.message);
+ return;
+ }
+ });
+ }
+ else if(transactionCategory === TransactionCategory.CashReceipt){
+ let params: CashReceiptReceiptSendEmailParams = {
+ tid: tid,
+ email: userEmail
+ };
+ cashReceiptReceiptSendEamil(params).then((rs: CashReceiptReceiptSendEmailResponse) => {
+ console.log(rs);
+ if(rs.message){
+ snackBar(rs.message);
+ }
+ }).catch((e: any) => {
+ if(e.response?.data?.error?.message){
+ snackBar(e.response?.data?.error?.message);
+ return;
+ }
+ });
+ }
}
else if(selectedMode === DownloadSelectedMode.IMAGE){
let params: CashReceiptReceiptDownloadParams = {
@@ -460,8 +507,9 @@ export const AmountInfoSection = ({
}
- { (transactionCategory === TransactionCategory.CashReceipt) &&
- !!canDownloadReceipt &&
+ { ((transactionCategory === TransactionCategory.AllTransaction) ||
+ ((transactionCategory === TransactionCategory.CashReceipt) &&
+ !!canDownloadReceipt)) &&
- { !!downloadBottomSheetOn &&
+ { !!downloadBottomSheetOn2 &&
diff --git a/src/shared/api/api-url-transaction.ts b/src/shared/api/api-url-transaction.ts
index cde9273..f9a8f8c 100644
--- a/src/shared/api/api-url-transaction.ts
+++ b/src/shared/api/api-url-transaction.ts
@@ -31,6 +31,10 @@ export const API_URL_TRANSACTION = {
// POST: 거래취소 정보 조회
return `${API_BASE_URL}/api/v1/${API_URL_KEY}/transaction/cancel-info`;
},
+ transactionIssueSend: () => {
+ // POST: 거래확인서 메일 발송
+ return `${API_BASE_URL}/api/v1/${API_URL_KEY}/transaction/issue/send`;
+ },
/* Cash Receipt Management - 현금영수증 API */
cashReceiptList: () => {
diff --git a/src/shared/model/store.ts b/src/shared/model/store.ts
index 96d6182..7134056 100644
--- a/src/shared/model/store.ts
+++ b/src/shared/model/store.ts
@@ -10,6 +10,10 @@ export interface DownloadBottomSheetOnStore {
downloadBottomSheetOn: boolean;
setDownloadBottomSheetOn: (downloadBottomSheetOn: boolean) => void;
};
+export interface DownloadBottomSheetOn2Store {
+ downloadBottomSheetOn2: boolean;
+ setDownloadBottomSheetOn2: (downloadBottomSheetOn2: boolean) => void;
+};
export interface FilterOnStore {
filterOn: boolean;
setFilterOn: (filterOn: boolean) => void;
@@ -50,6 +54,14 @@ export const useDownloadBottomSheetOnStore = create(
}));
}
}));
+export const useDownloadBottomSheetOn2Store = create((set) => ({
+ downloadBottomSheetOn2: false,
+ setDownloadBottomSheetOn2: (downloadBottomSheetOn2: boolean) => {
+ set((state: {downloadBottomSheetOn2: boolean}) => ({
+ downloadBottomSheetOn2: (state.downloadBottomSheetOn2 = downloadBottomSheetOn2)
+ }));
+ }
+}));
export const useFilterlOnStore = create((set) => ({
filterOn: false,
diff --git a/src/shared/ui/masked-input/masked-name-input.tsx b/src/shared/ui/masked-input/masked-name-input.tsx
index 622d8b8..2a49ea1 100644
--- a/src/shared/ui/masked-input/masked-name-input.tsx
+++ b/src/shared/ui/masked-input/masked-name-input.tsx
@@ -54,11 +54,11 @@ export const MaskedNameInput = ({
onChange(valueWithoutSpace);
}}
onChange={(e: ChangeEvent) => {
-
+ if(isComposing){
// composition 중에는 스페이스 제거
const valueWithoutSpace = e.target.value.replace(/\s/g, '');
onChange(valueWithoutSpace);
-
+ }
}}
onFocus={onFocus}
/>
diff --git a/src/widgets/sub-layout/index.tsx b/src/widgets/sub-layout/index.tsx
index cd5dc8e..ef97c1f 100644
--- a/src/widgets/sub-layout/index.tsx
+++ b/src/widgets/sub-layout/index.tsx
@@ -260,8 +260,8 @@ export const SubLayout = () => {
let userParmas;
if(!isNativeEnvironment){
userParmas = {
- //id: 'nictest00',
- id: 'reptest22m',
+ id: 'nictest00',
+ //id: 'reptest22m',
password: 'nictest00'
};
// userParmas = {