dm_new: 로그인 처리 중
This commit is contained in:
@@ -2,6 +2,10 @@
|
||||
|
||||
import { useEffect, useId, useState } from "react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { useDmStore } from "@/app/store";
|
||||
import { sha512 } from 'js-sha512';
|
||||
import toast from "react-hot-toast";
|
||||
import { Button, Input } from "@common/components";
|
||||
|
||||
type LoginModalProps = {
|
||||
open: boolean;
|
||||
@@ -28,8 +32,8 @@ export default function LoginModal({ open, onClose, onSuccess }: LoginModalProps
|
||||
const titleId = useId();
|
||||
const router = useRouter();
|
||||
|
||||
const [bizNo, setBizNo] = useState("");
|
||||
const [workerNo, setWorkerNo] = useState("");
|
||||
const [bizNo, setBizNo] = useState(""); // 사업자번호
|
||||
const [workerNo, setWorkerNo] = useState(""); // 종사업자번호
|
||||
const [noWorker, setNoWorker] = useState(true); // 종사업자번호 해당없음 checked
|
||||
const [pw, setPw] = useState("");
|
||||
|
||||
@@ -41,13 +45,13 @@ export default function LoginModal({ open, onClose, onSuccess }: LoginModalProps
|
||||
useEffect(() => {
|
||||
if (!open) return;
|
||||
const onKeyDown = (e: KeyboardEvent) => {
|
||||
if (e.key === "Escape") onClose();
|
||||
if (e.key === "Escape") onClose(); // ESC 키로 모달 닫기
|
||||
};
|
||||
window.addEventListener("keydown", onKeyDown);
|
||||
|
||||
// 스크롤 잠금
|
||||
const prev = document.body.style.overflow;
|
||||
document.body.style.overflow = "hidden";
|
||||
document.body.style.overflow = "hidden"; // 모달 오픈 시 배경 스크롤 방지
|
||||
|
||||
// 모달 오픈 시 에러/터치 초기화
|
||||
setErrors({});
|
||||
@@ -90,6 +94,23 @@ export default function LoginModal({ open, onClose, onSuccess }: LoginModalProps
|
||||
return next;
|
||||
};
|
||||
|
||||
const formatBusinessNumber = (value: string) => {
|
||||
// 숫자만 추출
|
||||
const digitsOnly = value.replace(/\D/g, "");
|
||||
|
||||
// 10자리까지만 처리
|
||||
const limitedDigits = digitsOnly.slice(0, 10);
|
||||
|
||||
// 3-2-5 형식으로 포맷팅
|
||||
if (limitedDigits.length <= 3) {
|
||||
return limitedDigits;
|
||||
} else if (limitedDigits.length <= 5) {
|
||||
return `${limitedDigits.slice(0, 3)}-${limitedDigits.slice(3)}`;
|
||||
} else {
|
||||
return `${limitedDigits.slice(0, 3)}-${limitedDigits.slice(3, 5)}-${limitedDigits.slice(5)}`;
|
||||
}
|
||||
};
|
||||
|
||||
const markTouched = (key: FieldKey) =>
|
||||
setTouched((p) => ({ ...p, [key]: true }));
|
||||
|
||||
@@ -132,6 +153,21 @@ export default function LoginModal({ open, onClose, onSuccess }: LoginModalProps
|
||||
}
|
||||
};
|
||||
|
||||
// const handleLogin = () => {
|
||||
// const data = form.getValues();
|
||||
// const passwordStr = sha512.hex(data.password)
|
||||
// data.dmdAplyPswd = passwordStr;
|
||||
// const param = {
|
||||
// dmdInfoId: data.dmdInfoId + (isBznmTotNoDisabled ? '0000' : data.bznmTotNo),
|
||||
// dmdAplyPswd: data.dmdAplyPswd,
|
||||
// }
|
||||
// actionLogin(param as unknown as DemandCompType);
|
||||
// };
|
||||
|
||||
const initPassword = () => {
|
||||
alert("관리자(031-0000-0000)에게 비밀번호 초기화 요청을 유선으로 하시기 바랍니다.");
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="fixed inset-0 z-[100]">
|
||||
{/* Backdrop */}
|
||||
@@ -181,7 +217,7 @@ export default function LoginModal({ open, onClose, onSuccess }: LoginModalProps
|
||||
사업자 등록번호
|
||||
</label>
|
||||
<input
|
||||
value={bizNo}
|
||||
value={formatBusinessNumber(bizNo)}
|
||||
onChange={(e) => {
|
||||
setBizNo(e.target.value);
|
||||
setErrors((p) => ({ ...p, bizNo: undefined }));
|
||||
@@ -279,6 +315,7 @@ export default function LoginModal({ open, onClose, onSuccess }: LoginModalProps
|
||||
? "bg-sky-300 cursor-not-allowed"
|
||||
: "bg-sky-500 hover:bg-sky-600 active:bg-sky-700",
|
||||
].join(" ")}
|
||||
onClick={handleLogin}
|
||||
>
|
||||
{submitting ? "로그인 중..." : "로그인"}
|
||||
</button>
|
||||
@@ -286,7 +323,7 @@ export default function LoginModal({ open, onClose, onSuccess }: LoginModalProps
|
||||
{/* 비밀번호 초기화 요청 */}
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => alert("TODO: 비밀번호 초기화 요청 화면/기능 연결")}
|
||||
onClick={initPassword}
|
||||
className="mx-auto block text-[14px] text-[#767676] hover:text-gray-900"
|
||||
>
|
||||
비밀번호 초기화 요청
|
||||
|
||||
Reference in New Issue
Block a user