pk,fk 비지니스 컴포넌트 적용
iipbs_wr / build (push) Waiting to run

This commit is contained in:
yschoi
2025-07-14 21:29:31 +09:00
parent f6a8f76cd7
commit c204ba3670
4 changed files with 37 additions and 38 deletions
@@ -91,11 +91,11 @@ function Gis({
if (layerName === '하수재이용시설') {
featureId = data.searchPk;
} else if (layerName === '빗물이용시설'|| layerName == '중수도시설') {
featureId = data.bdstInfoPk;
featureId = data.bdstInfoSn;
} else if (layerName === '하수처리시설') {
featureId = data.bscFctCd;
} else if (layerName === '온배수시설' ) {
featureId = data.bdstRuseFcltPk;
featureId = data.bdstRuseFcltSn;
} else {
console.warn('해당 레이어에 대한 featureId 매핑 없음', layerNm);
featureId = data.fid || data.id || data.ftrIdn;
@@ -10,8 +10,7 @@ import { SdmSearchForm } from "./sdmNameBox";
// 수요처 정보
export type DemandCompType = {
index : number | '';
dmdInfoPk : string | '';
dmdInfoFk : string | '';
dmdInfoId : string | '';
bzmnNo : string | '';
dmdCoNm : string | '';
daddr : string | '';
@@ -49,7 +48,7 @@ interface FormSchema {
ctpvCd: string;
sggCd: string;
dmdCoNm: string;
dmdInfoPk: string;
dmdInfoId: string;
daddr: string;
telno: string;
bznmTotNo?: string;
@@ -127,19 +126,19 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun
type: string,
field: ControllerRenderProps<FormSchema, keyof FormSchema> | undefined
) => {
if(!updateList?.dmdInfoPk)
if(!updateList?.dmdInfoId)
switch (type) {
case "ctpvCd":
initializeSigunData(val);
setSidoValue(val);
field?.onChange(val);
form.setValue('dmdInfoPk', '');
form.setValue('dmdInfoId', '');
form.setValue('bznmTotNo', '');
break;
case "sggCd":
setSigunValue(val);
field?.onChange(val);
form.setValue('dmdInfoPk', '');
form.setValue('dmdInfoId', '');
form.setValue('bznmTotNo', '');
break;
}
@@ -158,11 +157,11 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun
const rtnCompData = item;
form.setValue('dmdCoNm', rtnCompData?.dmdCoNm || '');
form.setValue('dmdInfoPk', rtnCompData?.dmdInfoPk.substring(0,10) || '');
form.setValue('bznmTotNo', rtnCompData?.dmdInfoPk.substring(10,14)==='0000' ? '' : rtnCompData?.dmdInfoPk.substring(10,14));
form.setValue('dmdInfoId', rtnCompData?.dmdInfoId.substring(0,10) || '');
form.setValue('bznmTotNo', rtnCompData?.dmdInfoId.substring(10,14)==='0000' ? '' : rtnCompData?.dmdInfoId.substring(10,14));
// 수요처 불러온 후 사업자번호를 바꿀경우를 대비함
setOrgBznmNo(rtnCompData?.dmdInfoPk);
setOrgBznmNo(rtnCompData?.dmdInfoId);
const sidoCd = rtnCompData?.ctpvCd.trim() || '';
setSidoValue(sidoCd);
form.setValue('ctpvCd', sidoCd);
@@ -174,7 +173,7 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun
form.setValue('sggCd', sigunCd);
}, 100);
if(rtnCompData?.dmdInfoPk.substring(10,14) === '0000') {
if(rtnCompData?.dmdInfoId.substring(10,14) === '0000') {
handleCheckboxChange(true);
} else {
handleCheckboxChange(false);
@@ -194,7 +193,7 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun
const bznNoChange = useCallback((e: React.ChangeEvent<HTMLInputElement>, noType: string, field?: ControllerRenderProps<FormSchema, keyof FormSchema>) => {
const value = e.target.value;
if(noType === 'dmdInfoPk') {
if(noType === 'dmdInfoId') {
// 숫자만 추출하여 저장 (포맷팅 제거)
const digitsOnly = value.replace(/\D/g, "");
@@ -216,15 +215,15 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun
useEffect(() => {
if(updateList?.dmdInfoPk){
if(updateList?.dmdInfoId){
form.reset(updateList)
if(updateList?.dmdInfoPk.slice(10,14) !== '0000') {
if(updateList?.dmdInfoId.slice(10,14) !== '0000') {
handleCheckboxChange( false);
form.setValue('bznmTotNo', updateList?.dmdInfoPk.slice(10,14));
form.setValue('bznmTotNo', updateList?.dmdInfoId.slice(10,14));
} else {
handleCheckboxChange( true);
}
form.setValue('dmdInfoPk', updateList?.dmdInfoPk.slice(0,10));
form.setValue('dmdInfoId', updateList?.dmdInfoId.slice(0,10));
setUpdateNm(updateList?.dmdCoNm)
// setSigunValue(updateList?.sggCd)
}else{
@@ -245,14 +244,14 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun
name: "ctpvCd",
label: "시도",
component: (field) => (
updateList?.dmdInfoPk ? (
updateList?.dmdInfoId ? (
<Input
placeholder="시도"
type="text"
className="!text-xl text-gray-600"
onChange={(e) =>{field.onChange(e.target.value)} }
value={ selectSidoData.find(item => item.val === field.value?.trim() )?.text??''}
readOnly={!!updateList?.dmdInfoPk}
readOnly={!!updateList?.dmdInfoId}
/>
) : (
<SelectBox
@@ -270,14 +269,14 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun
name: "sggCd",
label: "시군구",
component: (field) => (
updateList?.dmdInfoPk ? (
updateList?.dmdInfoId ? (
<Input
placeholder="시도"
type="text"
className="!text-xl text-gray-600"
onChange={(e) =>{field.onChange(e.target.value)} }
value={selectSigunData.find(item => item.val === field.value?.trim() )?.text??''}
readOnly={!!updateList?.dmdInfoPk}
readOnly={!!updateList?.dmdInfoId}
/>
) : (
<SelectBox
@@ -308,16 +307,16 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun
)
},
{
name: "dmdInfoPk",
name: "dmdInfoId",
label: "사업자등록번호",
component: (field) => (
<Input
placeholder="사업자등록번호를 입력하세요"
type="text"
className="!text-xl text-gray-600"
onChange={(e) => bznNoChange(e, 'dmdInfoPk', field)}
onChange={(e) => bznNoChange(e, 'dmdInfoId', field)}
value={formatBusinessNumber(field.value || '')}
readOnly={!!updateList?.dmdInfoPk}
readOnly={!!updateList?.dmdInfoId}
/>
)
},
@@ -338,7 +337,7 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun
onChange={(e) => bznNoChange(e, 'bznmTotNo', field)}
// {...field}
value={ field.value}
readOnly={!!updateList?.dmdInfoPk}
readOnly={!!updateList?.dmdInfoId}
/>
</FormUi>
)
@@ -406,12 +405,12 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun
return (
<>
{formFields
.filter(({ name }) => !(updateList?.dmdInfoPk && (name === "dmdAplyPswd" || name === "dmdAplyPswdConfirm")))
.filter(({ name }) => !(updateList?.dmdInfoId && (name === "dmdAplyPswd" || name === "dmdAplyPswdConfirm")))
.map(({ name, label, component }) => {
const error = form.formState.errors[name];
const inputId = `${name}-input`;
const errorId = `${name}-error`;
const isRequired = ["ctpvCd", "sggCd", "dmdCoNm", "dmdInfoPk", "daddr", "telno", "dmdAplyPswd", "dmdAplyPswdConfirm"].includes(name);
const isRequired = ["ctpvCd", "sggCd", "dmdCoNm", "dmdInfoId", "daddr", "telno", "dmdAplyPswd", "dmdAplyPswdConfirm"].includes(name);
return (
<FormField
@@ -25,7 +25,7 @@ const createFormSchema = (isBznmTotNoDisabled: boolean, isDuplicate: boolean ,up
dmdCoNm: z.string()
.min(1, "회사명을 입력해주세요")
.max(20, "회사명은 20자 이내로 입력해주세요"),
dmdInfoPk: z.string()
dmdInfoId: z.string()
.min(1, "사업자등록번호를 입력해주세요")
.regex(/^\d{10}$/, "사업자등록번호는 10자리 숫자만 입력 가능합니다")
.refine(() => isBznmTotNoDisabled ? !isDuplicate : true, "이미 등록된 사업자등록번호입니다"),
@@ -43,11 +43,11 @@ const createFormSchema = (isBznmTotNoDisabled: boolean, isDuplicate: boolean ,up
.max(11, "전화번호는 11자 이내로 입력해주세요")
.regex(/^[0-9]+$/, "전화번호는 숫자만 입력 가능합니다"),
rgtr: z.string().optional(),
dmdAplyPswd : updateList?.dmdInfoPk // 업데이트일경우
dmdAplyPswd : updateList?.dmdInfoId // 업데이트일경우
? z.string().optional() // 패스워드는 선택 사항이며 길이 제한 없음
: z.string().optional()
.refine((val) => !val || (val.length >= 8 && val.length <= 16), "패스워드는 8자 이상 16자 이내로 입력해주세요"),
dmdAplyPswdConfirm: updateList?.dmdInfoPk // 업데이트일경우
dmdAplyPswdConfirm: updateList?.dmdInfoId // 업데이트일경우
? z.string().optional() // 패스워드는 선택 사항이며 길이 제한 없음
:z.string()
.min(1, "패스워드확인을 입력해주세요"),
@@ -68,7 +68,7 @@ const defaultValues: FormSchema = {
ctpvCd: '',
sggCd: '',
dmdCoNm: '',
dmdInfoPk: '',
dmdInfoId: '',
bznmTotNo: '',
daddr: '',
telno: '',
@@ -152,11 +152,11 @@ export default function SdmInsertForm({selectSidoData, selectSigunData, dataList
return;
}
const dmdInfoPk = data.dmdInfoPk + (data.bznmTotNo || '0000');
const dmdInfoId = data.dmdInfoId + (data.bznmTotNo || '0000');
const formData = {
...data,
dmdInfoPk,
bzmnNo: data.dmdInfoPk,
dmdInfoId,
bzmnNo: data.dmdInfoId,
};
console.log(' formData ', formData)
@@ -102,19 +102,19 @@ export const SdmSearchForm = ({
}
}}
>
{item.dmdInfoPk.substring(10, 14) !== "0000" ? (
{item.dmdInfoId.substring(10, 14) !== "0000" ? (
<>
<span className="text-gray-500">사업자번호 : </span>{" "}
{item.dmdInfoPk.substring(0, 10)}&nbsp;
{item.dmdInfoId.substring(0, 10)}&nbsp;
<span className="text-gray-500">
종사업자번호 :{" "}
</span>{" "}
{item.dmdInfoPk.substring(10, 14)}&nbsp;
{item.dmdInfoId.substring(10, 14)}&nbsp;
</>
) : (
<>
<span className="text-gray-500">사업자번호 : </span>{" "}
{item.dmdInfoPk.substring(0, 10)}&nbsp;
{item.dmdInfoId.substring(0, 10)}&nbsp;
</>
)}
<span className="float-right">{item.dmdCoNm}</span>