diff --git a/src/entities/transaction/ui/billing-list.tsx b/src/entities/transaction/ui/billing-list.tsx index 0947d98..4a112b8 100644 --- a/src/entities/transaction/ui/billing-list.tsx +++ b/src/entities/transaction/ui/billing-list.tsx @@ -16,7 +16,7 @@ export const BillingList = ({ for(let i=0;i
발행번호
- ) => setIssueNumber(e.target.value) } - /> + >
@@ -122,12 +124,13 @@ export const CashReceiptHandWrittenIssuanceStep1 = ({
전화번호
- ) => setPhoneNumber(e.target.value) } - /> + >
diff --git a/src/pages/transaction/cash-receipt/hand-written-issuance-page.tsx b/src/pages/transaction/cash-receipt/hand-written-issuance-page.tsx index ccfe330..d0d1212 100644 --- a/src/pages/transaction/cash-receipt/hand-written-issuance-page.tsx +++ b/src/pages/transaction/cash-receipt/hand-written-issuance-page.tsx @@ -7,21 +7,22 @@ import { CashReceiptPurposeType, ProcessStep } from '@/entities/transaction/mode import { HeaderType} from '@/entities/common/model/types'; import { useSetFooterMode, useSetHeaderTitle, useSetHeaderType } from '@/widgets/sub-layout/use-sub-layout'; import { useCashReceiptManualIssueMutation } from '@/entities/transaction/api/use-cash-receipt-manual-issue-mutation'; +import { showAlert } from '@/widgets/show-alert'; export const CashReceitHandWrittenIssuancePage = () => { const { navigate } = useNavigate(); // 1 or 2 const [processStep, setProcessStep] = useState(ProcessStep.One); - const [businessNumber, setBusinessNumber] = useState('5459577852'); + const [businessNumber, setBusinessNumber] = useState(''); const [purposeType, setPurposeType] = useState(CashReceiptPurposeType.INCOME_DEDUCTION); - const [productName, setProductName] = useState('상품명'); - const [buyerName, setBuyerName] = useState('구매자명'); - const [issueNumber, setIssueNumber] = useState('01012341234'); - const [email, setEmail] = useState('test123@nicepay.com'); - const [phoneNumber, setPhoneNumber] = useState('01012341234'); - const [supplyAmount, setSupplyAmount] = useState(9091); - const [vatAmount, setVatAmount] = useState(909); + const [productName, setProductName] = useState(''); + const [buyerName, setBuyerName] = useState(''); + const [issueNumber, setIssueNumber] = useState(''); + const [email, setEmail] = useState(''); + const [phoneNumber, setPhoneNumber] = useState(''); + const [supplyAmount, setSupplyAmount] = useState(0); + const [vatAmount, setVatAmount] = useState(0); const [taxFreeAmount, setTaxFreeAmount] = useState(0); const [serviceCharge, setServiceCharge] = useState(0); @@ -31,6 +32,16 @@ export const CashReceitHandWrittenIssuancePage = () => { const { mutateAsync: cashReceiptManualIssue } = useCashReceiptManualIssueMutation(); + const checkEmail = (email: string) => { + var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i; + if(email != '' && email != 'undefined' && re.test(email)){ + return true; + } + else{ + return false; + } + }; + const callManualIssue = () => { let params = { businessNumber: businessNumber, @@ -40,10 +51,10 @@ export const CashReceitHandWrittenIssuancePage = () => { issueNumber: issueNumber, email: email, phoneNumber: phoneNumber, - supplyAmount: 9091, - vatAmount: 909, - taxFreeAmount: 0, - serviceCharge: 0 + supplyAmount: supplyAmount, + vatAmount: vatAmount, + taxFreeAmount: taxFreeAmount, + serviceCharge: serviceCharge }; cashReceiptManualIssue(params).then((rs) => { console.log(rs); @@ -54,6 +65,24 @@ export const CashReceitHandWrittenIssuancePage = () => { const onClickToChangeTab = () => { if(processStep === ProcessStep.One){ + if(!businessNumber){ + showAlert('사업자 번호는 필수 입력 항목 입니다.'); + } + else if(!productName){ + showAlert('상품명은 필수 입력 항목 입니다.'); + } + else if(!buyerName){ + showAlert('구매자는 필수 입력 항목 입니다.'); + } + else if(!issueNumber){ + showAlert('발행번호는 필수 입력 항목 입니다.'); + } + else if(email && !checkEmail(email)){ + showAlert('이메일 형식이 맞지 않습니다.'); + } + else if(!phoneNumber){ + showAlert('전화번호는 필수 입력 항목 입니다.'); + } setProcessStep(ProcessStep.Two); } else if(processStep === ProcessStep.Two){ diff --git a/src/widgets/show-alert/index.tsx b/src/widgets/show-alert/index.tsx new file mode 100644 index 0000000..25c03db --- /dev/null +++ b/src/widgets/show-alert/index.tsx @@ -0,0 +1,20 @@ +import { Dialog } from '@/shared/ui/dialogs/dialog'; +import { overlay } from 'overlay-kit'; + +export const showAlert = (msg: string) => { + overlay.open(({ + isOpen, + close, + unmount + }) => { + return ( + + ); + }); +}; \ No newline at end of file