Co-authored-by: truthplumage <truthplumage@users.noreply.github.com>
This commit is contained in:
@@ -23,7 +23,7 @@ import { PbnstRegModal } from "@/components/ui/modal/fcltReg/pbnstRegModal/pbnst
|
||||
import { Toaster } from "react-hot-toast";
|
||||
|
||||
export default function PublicReuseFaciltyInsert() {
|
||||
const { code, pbnst, pubHasuInit,pbnstRegInit } = useWrStore((state) => state);
|
||||
const { code, pbnst, pubHasuInit,pbnstRegInit,pbnstMngData } = useWrStore((state) => state);
|
||||
const { pubFacHeadList,pbnstHasuRes, pbnstRes } = pbnst;
|
||||
const [currentTab, setCurrentTab] = useState<string>("mng");
|
||||
const [fcltMng, setFcltMng] = useState<ruseFcltType[]>();
|
||||
@@ -60,9 +60,7 @@ useEffect(() => {
|
||||
if (selectRow) {
|
||||
setSelectedRow(selectRow);
|
||||
}
|
||||
|
||||
|
||||
console.log('selectRow ', selectRow)
|
||||
pbnstRegInit(selectRow)
|
||||
|
||||
// setSelectBdst(pbnstRes);
|
||||
@@ -109,7 +107,11 @@ useEffect(() => {
|
||||
<Button
|
||||
size={"sm"}
|
||||
className=""
|
||||
onClick={() => setIsNewReg(!issNewReg) }
|
||||
onClick={() => {
|
||||
pbnstMngData([] as customPbnst[] )
|
||||
setIsNewReg(!issNewReg)
|
||||
|
||||
} }
|
||||
>
|
||||
신규등록
|
||||
</Button>
|
||||
@@ -148,7 +150,7 @@ useEffect(() => {
|
||||
</Button>
|
||||
</TabsList>
|
||||
<TabsContent className="max-h-full" value="mng">
|
||||
<PbnstMngForm data={selectBdst || null} />
|
||||
<PbnstMngForm formType="update" />
|
||||
</TabsContent>
|
||||
<TabsContent className="max-h-full" value="buse">
|
||||
<PbnstBuseForm data={pbnstBiz || []} />
|
||||
|
||||
@@ -37,6 +37,7 @@ const fcOrgwtsHeadList = fcOrgwtsHeadListExport;
|
||||
export type pubFacState = {
|
||||
pbnst: {
|
||||
isInit: boolean;
|
||||
isReginit:boolean;
|
||||
pubFacHeadList: TableUpperProps[];
|
||||
pbnstMngUpHeadList: TableUpperProps[];
|
||||
pbnstMngNm: chHeadType[];
|
||||
@@ -61,7 +62,8 @@ type pubFacActions = {
|
||||
fileDownLoad: (atflCd: string) => void;
|
||||
pbnstMngData: (data: customPbnst[]) => void;
|
||||
pbnstBizData(data: fcBizType): void;
|
||||
getBizCycle: (pbnstObj: customPbnst) => void;
|
||||
getBizCycle: (pbnstObj: customPbnst) => void;
|
||||
pbnstRegFormInit:()=>void
|
||||
};
|
||||
|
||||
export type pubFacType = pubFacState & pubFacActions;
|
||||
@@ -69,6 +71,7 @@ export type pubFacType = pubFacState & pubFacActions;
|
||||
export const pubFacStateExport: pubFacState = {
|
||||
pbnst: {
|
||||
isInit: false,
|
||||
isReginit:false,
|
||||
pubFacHeadList: pubFacHeadList,
|
||||
pbnstMngUpHeadList: pbnstMngUpHeadList,
|
||||
pbnstMngNm: pbnstMngNm,
|
||||
@@ -242,6 +245,13 @@ export const pubFacActionsExport: (set: any) => pubFacActions = (set: any) => {
|
||||
return state;
|
||||
});
|
||||
},
|
||||
pbnstRegFormInit:()=>{
|
||||
return set((state: pubFacState) => {
|
||||
|
||||
return state.pbnst.pbnstMngRegData;
|
||||
});
|
||||
|
||||
},
|
||||
pbnstBizData: (data: fcBizType) => {
|
||||
return set((state: pubFacState) => {
|
||||
if (state.pbnst.pbnstMngRegData) {
|
||||
|
||||
@@ -96,7 +96,7 @@ const fcOrgwtSchema = z.object({
|
||||
|
||||
export const fcBizSchema = z.object({
|
||||
pbnstRuseFcltBizPk: z.number().default(1),
|
||||
pbnstRuseFcltFk: z.number().nullish(),
|
||||
pbnstRuseFcltFk: z.string().nullish(),
|
||||
superkey: z.string().default("").nullish(),
|
||||
cycl: z.number(),
|
||||
seCd: z.string(),
|
||||
@@ -167,7 +167,7 @@ export const fcBizSchema = z.object({
|
||||
});
|
||||
|
||||
export const pbnstRegZod = z.object({
|
||||
pbnstRuseFcltPk: z.number().default(1),
|
||||
pbnstRuseFcltPk: z.string().default(''),
|
||||
swtrmtFcltFk: z.string().default(""),
|
||||
superkey:z.string().default(""),
|
||||
ruseUtztnFcltNm: z.string().default(""),
|
||||
|
||||
@@ -33,22 +33,30 @@ export type FilesType = {
|
||||
file: File;
|
||||
};
|
||||
|
||||
export function PbnstMngForm({ data }: { data: customPbnst[] }) {
|
||||
const { pbnst, pbnstUpdate ,pbnstMngData, fileDelete,getBizCycle} = useWrStore((state) => state);
|
||||
|
||||
|
||||
export function PbnstMngForm({
|
||||
formType,
|
||||
firstFcltData,
|
||||
}: {
|
||||
formType: string;
|
||||
firstFcltData?: customPbnst;
|
||||
}) {
|
||||
const { pbnst, pbnstUpdate, pbnstMngData, fileDelete, getBizCycle,pbnstRegFormInit } =
|
||||
useWrStore((state) => state);
|
||||
|
||||
const [regFileList, setRegFileList] = useState<fcFileType[] | null>(null);
|
||||
const [planFiles, setPlanFiles] = useState<FilesType[] | null>(null);
|
||||
const [planFiles, setPlanFiles] = useState<FilesType[] | null>(null);
|
||||
const [relationfiles, setRelationFiles] = useState<FilesType[] | null>(null);
|
||||
const [fcltNm, setFcltNm] = useState<selectLabel[] | null>(null);
|
||||
const [fcltNm, setFcltNm] = useState<selectLabel[] | null>(null);
|
||||
|
||||
const [progress, setProgress] = useState(0);
|
||||
//const new File([] as BlobPart[], "") 파일 다운로드 활용
|
||||
|
||||
const ref = useRef<operType[] | null>( null);
|
||||
const ref = useRef<operType[] | null>(null);
|
||||
|
||||
|
||||
const form = useForm<z.infer<typeof pbnstRegZod>>({
|
||||
resolver: zodResolver(pbnstRegZod),
|
||||
defaultValues: pbnstRegZod.parse({}),
|
||||
defaultValues: formType === 'reg' && pbnst.pbnstMngRegData ? pbnst.pbnstMngRegData[0] : pbnstRegZod.parse({}),
|
||||
});
|
||||
const {
|
||||
fields: fcOpersField,
|
||||
@@ -59,20 +67,19 @@ export type FilesType = {
|
||||
name: "fcOpers",
|
||||
});
|
||||
|
||||
|
||||
|
||||
const handleProgress = (percentage: string) => {
|
||||
setProgress(Number(percentage));
|
||||
};
|
||||
|
||||
|
||||
const selectFclt = (val: number) => {
|
||||
if (pbnst.pbnstRes && pbnst.pbnstRes[val]) {
|
||||
getBizCycle(pbnst.pbnstRes[val])
|
||||
form.reset(pbnst.pbnstRes[val])
|
||||
//시설 선택시 데이터 초기화
|
||||
|
||||
getBizCycle(pbnst.pbnstRes[val]);
|
||||
ref.current = pbnst.pbnstRes[val].fcOpers;
|
||||
form.reset(pbnst.pbnstRes[val]);
|
||||
}
|
||||
};
|
||||
}
|
||||
const fileDownload = (index: number) => {};
|
||||
const plusHist = () => {
|
||||
const regData = {
|
||||
@@ -160,50 +167,58 @@ export type FilesType = {
|
||||
fileKnd: string,
|
||||
regFile: fcFileType[]
|
||||
) => {
|
||||
const planDatas = regFile?.filter((item) => item.fileKnd !== fileKnd) || [];
|
||||
const data = files.map((item) => ({
|
||||
const exFileDatas =
|
||||
regFile?.filter((item) => item.fileKnd !== fileKnd) || [];
|
||||
const currentdata = files.map((item) => ({
|
||||
fileTkn: item.atflCd,
|
||||
filePath: item.file.name,
|
||||
fileKnd: fileKnd,
|
||||
rgtr: TEST_UUID,
|
||||
mdfr: TEST_UUID,
|
||||
}));
|
||||
return [...planDatas, ...data];
|
||||
}
|
||||
return [...exFileDatas, ...currentdata];
|
||||
};
|
||||
|
||||
// 등록할때 신규 값을 계속 가지고 있으려고
|
||||
useEffect(() => {
|
||||
if (
|
||||
firstFcltData &&
|
||||
(form.getValues("swtrmtFcltFk") === "" ||
|
||||
form.getValues("swtrmtFcltFk") === undefined)
|
||||
) {
|
||||
|
||||
form.setValue("swtrmtFcltFk", firstFcltData.swtrmtFcltFk);
|
||||
form.setValue(
|
||||
"pbnstRuseFcltPk",
|
||||
String(firstFcltData.swtrmtFcltFk + "1")
|
||||
);
|
||||
}
|
||||
}, [firstFcltData]);
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
const formData = form.watch();
|
||||
|
||||
console.log('formData ', formData)
|
||||
formData.fcOpers = ref.current ? [...ref.current] : [];
|
||||
formData.fcFiles = regFileList ? [...regFileList] : [];
|
||||
|
||||
pbnstMngData([formData] as customPbnst[]);
|
||||
}, [form.formState, regFileList]);
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
pbnstMngData(pbnst.pbnstMngRegData);
|
||||
}, [pbnst.pbnstMngRegData]);
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
if (!data) return;
|
||||
//form.reset(data);
|
||||
ref.current = data[0]?.fcOpers ?? null;
|
||||
}, [data])
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
if (!pbnst.pbnstRes) return;
|
||||
const fcltNmList = pbnst.pbnstRes.map((item, index) => ({
|
||||
const fcltNmList = pbnst.pbnstRes.map((item, index) => ({
|
||||
text: item.ruseUtztnFcltNm,
|
||||
val: String(index)
|
||||
}))
|
||||
val: String(index),
|
||||
}));
|
||||
|
||||
console.log('fcltNmList ', fcltNmList)
|
||||
setFcltNm(fcltNmList)
|
||||
|
||||
}, [pbnst.pbnstRes])
|
||||
setFcltNm(fcltNmList);
|
||||
}, [pbnst.pbnstRes]);
|
||||
|
||||
// 2. Define a submit handler.
|
||||
function onSubmit(values: z.infer<typeof pbnstRegZod>) {
|
||||
@@ -213,8 +228,10 @@ export type FilesType = {
|
||||
pbnstUpdate(values);
|
||||
}
|
||||
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
console.log("form errors:", form.formState.errors);
|
||||
}, [form.formState.errors]);
|
||||
|
||||
useEffect(() => {
|
||||
if (relationfiles) {
|
||||
setRegFileList(regFileFilter(relationfiles, "계통도", regFileList || []));
|
||||
@@ -237,15 +254,40 @@ export type FilesType = {
|
||||
<form onSubmit={form.handleSubmit(onSubmit)}>
|
||||
<div className="flex justify-between items-center mx-3 mb-3">
|
||||
<div className="col-span-2 flex items-top">
|
||||
<Label className={formTableName + "pr-3 col-span-2 "}>재이용 시설명</Label>
|
||||
<SelectBox
|
||||
label=""
|
||||
className="mt-4 ml-2"
|
||||
selectClass={undefined}
|
||||
selectArray={fcltNm ?? []}
|
||||
onSelectValue={(val) => {selectFclt( Number(val))}}
|
||||
value={""}
|
||||
/>
|
||||
<Label className={formTableName + "pr-3 col-span-2 "}>
|
||||
재이용 시설명
|
||||
</Label>
|
||||
|
||||
{formType === "reg" ? (
|
||||
<FormField
|
||||
control={form.control}
|
||||
name="ruseUtztnFcltNm"
|
||||
render={({ field }) => (
|
||||
<FormUi label="">
|
||||
<Input
|
||||
className="!text-2xl"
|
||||
placeholder=""
|
||||
type="text"
|
||||
onChange={(e) => {
|
||||
field.onChange(String(e.target.value));
|
||||
}}
|
||||
value={field.value}
|
||||
/>
|
||||
</FormUi>
|
||||
)}
|
||||
/>
|
||||
) : (
|
||||
<SelectBox
|
||||
label=""
|
||||
className="mt-4 ml-2"
|
||||
selectClass={undefined}
|
||||
selectArray={fcltNm ?? []}
|
||||
onSelectValue={(val) => {
|
||||
selectFclt(Number(val));
|
||||
}}
|
||||
value={""}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<Button type="submit" size={commonButonSize}>
|
||||
|
||||
@@ -51,7 +51,6 @@ const pbnstRegTotal = ()=>{
|
||||
let regData = {
|
||||
swtrmtFcltFk: String(data.bscFctCd ),
|
||||
pbnstRuseFcltPk: String(data.bscFctCd + "1"),
|
||||
ruseUtztnFcltNm: data.bscFctNm,
|
||||
fcBizs: [{ pbnstRuseFcltFk: String(data.bscFctCd + "1") ,cycl:1 } as unknown as fcBizType],
|
||||
};
|
||||
|
||||
@@ -86,7 +85,7 @@ const pbnstRegTotal = ()=>{
|
||||
</Button>
|
||||
</TabsList>
|
||||
<TabsContent className="max-h-full" value="mng">
|
||||
<PbnstMngForm data={pbnstBdstForm} />
|
||||
<PbnstMngForm formType={'reg'} firstFcltData={pbnstBdstForm} />
|
||||
</TabsContent>
|
||||
<TabsContent className="max-h-full" value="buse">
|
||||
<PbnstBuseForm data={pbnstBdstForm.fcBizs} />
|
||||
|
||||
Reference in New Issue
Block a user