잠재수요처 퍼블 수정, 상세현황 모달 추가, 엑셀등록 모달 추가

This commit is contained in:
jyha00
2025-06-12 13:28:28 +09:00
parent 16b27845d3
commit b85cd78614
12 changed files with 1560 additions and 200 deletions
@@ -0,0 +1,48 @@
"use client"
import { btnClass } from "@/app/store/common/code"
import { drgtDetailHeadListExport } from "@/app/store/matDmd/drgtSttn/headList"
import { ContentsDiv, Title, UiTable } from "@common/business_components/ui"
import ListDiv from "@common/business_components/ui/list_div"
import { Button } from "@common/components/ui"
export default function DrgtDetailModal() {
return (
<>
<ContentsDiv>
<div className="grid grid-cols-4 gap-4 ">
<div className="col-span-4">
<Title title={"우리동네가뭄 상세내용"} />
<div className="w-2/12 mx-5 flex flex-col items-center justify-center space-x-2 ">
<div className="flex flex-row space-x-2">
<Button
size={"sm"}
className={`${btnClass} green`}
onClick={() => { }}
>
다운로드
</Button>
</div>
<div className="grid grid-cols-6 gap-4 ">
<div className="col-span-6">
<ListDiv>
<UiTable
headName={[]}
tableData={[]}
headlist={drgtDetailHeadListExport}
pageSize={10}
total={10000}
cellClick={(index: number | undefined, headId: string) => { }}
onPageChange={() => { }}
></UiTable>
</ListDiv>
</div>
</div>
</div>
</div>
</div>
</ContentsDiv>
</>
)
}
@@ -94,7 +94,6 @@ export function BdstReg<T extends MoType>({ moType }: BdstRegProps<T>) {
useEffect(()=>{
setbdstTable([]) // 초기화 작업
},[])
const nodeList = headMakeColSpan(bdst.moUpHeadList);
return (
<>
<div className="grid grid-cols-12 gap-4 mt-4 items-center">
@@ -135,7 +134,6 @@ export function BdstReg<T extends MoType>({ moType }: BdstRegProps<T>) {
onPageChange={function (page: number): void {
throw new Error("Function not implemented.");
}}>
{nodeList}
</UiTable>
</div>
</ScrollArea>
@@ -0,0 +1,67 @@
import { useWrStore } from "@/app/store";
import { pbnPrfRegExcelZod } from "@/app/store/prfmncReg/pbnstPrfmncReg/headList";
import type { FcPrfType, PrfType } from "@/app/store/prfmncReg/pbnstPrfmncReg/type";
import { yearOptions } from "@/components/lib/func/commom";
import { FileUpload, Form, FormField, FormUi, SelectBox, Title } from "@common/business_components/ui";
import { Button, Input } from "@common/components/ui";
import { zodResolver } from "@hookform/resolvers/zod";
import { useState } from "react";
import { useForm } from "react-hook-form";
import type { z } from "zod";
export default function LdrmntExcelModal({ data }: { data: FcPrfType }) {
const { prfmnRegData } = useWrStore((state) => state);
const [excelData, setExcelData] = useState<PrfType[]>();
const form = useForm<z.infer<typeof pbnPrfRegExcelZod>>({
resolver: zodResolver(pbnPrfRegExcelZod),
defaultValues: {
ym: String(new Date().getFullYear()),
},
});
const onSubmit = (values: z.infer<typeof pbnPrfRegExcelZod>) => {
if (excelData) {
prfmnRegData(excelData as unknown as PrfType);
}
};
const [files, setFiles] = useState<File[] | null>(null);
return (
<>
<div>
<Form {...form}>
<form onSubmit={form.handleSubmit(onSubmit)}>
<div>
<Title title={"잠재수요처 등록"}></Title>
</div>
<div className="flex justify-between">
<h3 className="text-2xl font-bold text-gray-900 mt-1 ml-7">
{"잠재수요처 파일"}
</h3>
<Button className="" type="submit" size={"sm"}>
저장
</Button>
</div>
<div className="mt-4">
<FormField
control={form.control}
name="file"
render={({ field }) => (
<FormUi label="">
<FileUpload
files={files || []}
setFiles={(files: File[] | null) => {
if (files) setFiles(files);
}}
fileTypes="xlsx"
></FileUpload>
</FormUi>
)}
/>
</div>
</form>
</Form>
</div>
</>
)
}
@@ -1,30 +1,824 @@
"use client";
import { useWrStore } from "@/app/store";
import type { CommonTableProps } from "@/app/store/common/type/header";
import { Title } from "@common/business_components/ui";
import { ldrmntZod, type customLdrmntBdst } from "@/app/store/matDmd/ldrmntCoSttn";
import { rainZod, selectClass } from "@/app/store/ruseFcltMng/fcltReg/rainReg";
import { handleCommaNumberChange, formatCommaNumber } from "@/components/lib/func/commom";
import { DatePicker, Form, FormField, FormUi, ScrollArea, Title, UiTable } from "@common/business_components/ui";
import { Button, Input } from "@common/components/ui";
import { zodResolver } from "@hookform/resolvers/zod";
import { useEffect, useState } from "react";
import { useForm } from "react-hook-form";
import type { z } from "zod";
export default function SttnDetailModal(
{formObj,}: {formObj: any;}) {
const { code, rainSttn, rswtSttn, rainSttnChkSearch } = useWrStore(
(state) => state
);
const [detailData, setDetailData] = useState({
head: [] as CommonTableProps[],
node:[] as CommonTableProps[],
data: {} as any,
export default function SttnDetailModal({
formObj,
}: {
formObj: any;
}) {
const defaultValues: z.infer<typeof ldrmntZod> = ldrmntZod.parse({});
const form = useForm<z.infer<typeof ldrmntZod>>({
resolver: zodResolver(ldrmntZod),
defaultValues: defaultValues,
});
useEffect(() =>{
setDetailData({data:[] , head:[], node:[]})
const onSubmit = (values: z.infer<typeof ldrmntZod>) => {
},[])
};
useEffect(() => {
if (ldrmntZod) form.reset(formObj);
console.log("이거", formObj)
}, [formObj]);
return (
<div>
<Title title="잠재수요처 상세정보"></Title>
<ScrollArea className="h-[85vh]">
<Form {...form}>
<form onSubmit={form.handleSubmit(onSubmit)}>
<div className="grid grid-cols-12 flex items-center card-header">
<h1 className="text-2xl font-medium text-label col-span-10">
잠재수요처 상세정보
</h1>
<Button type="submit" className="col-start-12 col-span-1" size={"sm"}>
저장
</Button>
</div>
<div className="grid grid-cols-4 gap-2 mt-4">
<div className="col-span-2">
<FormField
control={form.control}
name="aaaaaa1"
render={({ field }) => (
<FormUi label="회사명">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-2">
<FormField
control={form.control}
name="ctpvCd"
render={({ field }) => (
<FormUi label="시도">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
</div>
<div className="grid grid-cols-4 gap-2 mt-4">
<div className="col-span-2">
<FormField
control={form.control}
name="sggCd"
render={({ field }) => (
<FormUi label="시군구">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-2">
<FormField
control={form.control}
name="aaaaaa"
render={({ field }) => (
<FormUi label="관리기관">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
</div>
<div className="grid grid-cols-4 gap-2 mt-4">
<div className="col-span-2">
<FormField
control={form.control}
name="aaaaaa2"
render={({ field }) => (
<FormUi label="공장구분">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-2">
<FormField
control={form.control}
name="aaaaaa3"
render={({ field }) => (
<FormUi label="단지명">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
</div>
<div className="grid grid-cols-12 gap-2 mt-4">
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa4"
render={({ field }) => (
<FormUi label="설립구분">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa5"
render={({ field }) => (
<FormUi label="입주형태">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa6"
render={({ field }) => (
<FormUi label="보유구분">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
</div>
<div className="grid grid-cols-4 gap-2 mt-4">
<div className="col-span-2">
<FormField
control={form.control}
name="aaaaaa7"
render={({ field }) => (
<FormUi label="최초승인일">
<DatePicker
mode="single"
field={{
value:
field.value && !isNaN(new Date(field.value).getTime())
? new Date(field.value)
: new Date(), // Provide a default Date value
onChange: (date) => field.onChange(date),
}}
selectClass={"w-full"}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-2">
<FormField
control={form.control}
name="aaaaaa8"
render={({ field }) => (
<FormUi label="최초등록일">
<DatePicker
mode="single"
field={{
value:
field.value && !isNaN(new Date(field.value).getTime())
? new Date(field.value)
: new Date(), // Provide a default Date value
onChange: (date) => field.onChange(date),
}}
selectClass={"w-full"}
/>
</FormUi>
)}
/>
</div>
</div>
<div className="grid grid-cols-12 gap-2 mt-4">
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa9"
render={({ field }) => (
<FormUi label="등록구분">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa10"
render={({ field }) => (
<FormUi label="등록일">
<DatePicker
mode="single"
field={{
value:
field.value && !isNaN(new Date(field.value).getTime())
? new Date(field.value)
: new Date(), // Provide a default Date value
onChange: (date) => field.onChange(date),
}}
selectClass={"w-full"}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa11"
render={({ field }) => (
<FormUi label="전화번호">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
</div>
<div className="grid grid-cols-5 gap-2 mt-4">
<div className="col-span-1">
<FormField
control={form.control}
name="aaaaaa12"
render={({ field }) => (
<FormUi label="남자종업원">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-1">
<FormField
control={form.control}
name="aaaaaa13"
render={({ field }) => (
<FormUi label="여자종업원">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-1">
<FormField
control={form.control}
name="aaaaaa14"
render={({ field }) => (
<FormUi label="외국인남자종업원">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-1">
<FormField
control={form.control}
name="aaaaaa15"
render={({ field }) => (
<FormUi label="외국인여자종업원">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-1">
<FormField
control={form.control}
name="aaaaaa16"
render={({ field }) => (
<FormUi label="종업원합계">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
</div>
<div className="grid grid-cols-12 gap-2 mt-4">
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa17"
render={({ field }) => (
<FormUi label="생산품">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa18"
render={({ field }) => (
<FormUi label="원자재">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa19"
render={({ field }) => (
<FormUi label="공장규모">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
</div>
<div className="grid grid-cols-12 gap-2 mt-4">
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa20"
render={({ field }) => (
<FormUi label="용도지역">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa21"
render={({ field }) => (
<FormUi label="지목">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa22"
render={({ field }) => (
<FormUi label="용지면적">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
</div>
<div className="grid grid-cols-12 gap-2 mt-4">
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa23"
render={({ field }) => (
<FormUi label="제조시설면적">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa24"
render={({ field }) => (
<FormUi label="부대시설면적">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa25"
render={({ field }) => (
<FormUi label="건축면적">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
</div>
<div className="grid grid-cols-12 gap-2 mt-4">
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa26"
render={({ field }) => (
<FormUi label="지식산업센터명">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa27"
render={({ field }) => (
<FormUi label="대표업종">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa28"
render={({ field }) => (
<FormUi label="업종명">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
</div>
<div className="grid grid-cols-12 gap-2 mt-4">
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa29"
render={({ field }) => (
<FormUi label="업종코드">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa30"
render={({ field }) => (
<FormUi label="차수">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-4">
<FormField
control={form.control}
name="aaaaaa31"
render={({ field }) => (
<FormUi label="법인주소">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
</div>
<div className="grid grid-cols-4 gap-2 mt-4">
<div className="col-span-2">
<FormField
control={form.control}
name="aaaaaa32"
render={({ field }) => (
<FormUi label="필지수">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-2">
<FormField
control={form.control}
name="aaaaaa35"
render={({ field }) => (
<FormUi label="공장관리번호">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
</div>
<div className="grid grid-cols-4 gap-2 mt-4">
<div className="col-span-2">
<FormField
control={form.control}
name="aaaaaa33"
render={({ field }) => (
<FormUi label="공장주소">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
<div className="col-span-2">
<FormField
control={form.control}
name="aaaaaa34"
render={({ field }) => (
<FormUi label="공장주소_지번">
<Input
className={selectClass}
placeholder=""
type="text"
onChange={(e) => {
handleCommaNumberChange(e, field.onChange);
}}
value={field.value}
/>
</FormUi>
)}
/>
</div>
</div>
</form>
</Form>
</ScrollArea>
</div>
);
}