diff --git a/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx b/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx index d7fb33b4c..70f41af7b 100644 --- a/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx +++ b/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx @@ -15,74 +15,75 @@ import { Tabs, TabsList, TabsTrigger, TabsContent } from "@common/components"; import { useEffect, useState } from "react"; import ListDiv from "@common/business_components/ui/list_div"; import { tableData } from "@/components/lib/func/commom"; -import type { customPbnst, fcBizSchema, fcBizType, pubHasuType, ruseFcltType } from "@/app/store/ruseFcltMng/fcltReg/pbnstReg/type"; +import type { + customPbnst, + fcBizSchema, + fcBizType, + pubHasuType, + ruseFcltType, +} from "@/app/store/ruseFcltMng/fcltReg/pbnstReg/type"; import { PbnstMngForm } from "@/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm"; import { PbnstBuseForm } from "@/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm"; import { z } from "zod"; import { PbnstRegModal } from "@/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal"; import { Toaster } from "react-hot-toast"; +import { ToastFormUi } from "@/components/ui/toast/toastFromUi"; export default function PublicReuseFaciltyInsert() { - const { code, pbnst, pubHasuInit,pbnstRegInit,pbnstMngData } = useWrStore((state) => state); - const { pubFacHeadList,pbnstHasuRes, pbnstRes } = pbnst; + const { + code, + pbnst, + searchFclts, + pubHasuInit, + pbnstRegInit, + getSwtrmtFcltNm, + pbnstMngData, + } = useWrStore((state) => state); + const { pubFacHeadList, pbnstHasuRes, pbnstRes } = pbnst; const [currentTab, setCurrentTab] = useState("mng"); - const [fcltMng, setFcltMng] = useState(); const [pbnstBiz, setPbnstBiz] = useState(); - const [issNewReg, setIsNewReg] = useState(false); + const [isRuseReg, setIsRuseReg] = useState<{ + isModal: boolean; + data: pubHasuType; + }>({ isModal: false, data: {} as pubHasuType }); const [searchTxt, setSearchTxt] = useState(); const [bdstTable, setbdstTable] = useState(); const [selectBdst, setSelectBdst] = useState(null); - const [selectedRow, setSelectedRow] = useState(null); -useEffect(() => { - if (!pbnst.isInit ) { - pubHasuInit('1','11'); - - ///pbnstRegInit( '41'); + useEffect(() => { + if (!pbnst.isInit) { + pubHasuInit("1", "11"); } }, [pbnst.isInit, pubHasuInit]); -useEffect(() => { - - - if (code.sggCd.length > 0 && pbnstHasuRes.length > 0) { - setbdstTable(tableData(pbnstHasuRes, { code })); + useEffect(() => { + if(code.sggCd.length){ + if(searchFclts){ + setbdstTable(tableData(searchFclts, { code })); + }else if (code.sggCd.length > 0 && pbnstHasuRes.length > 0) { + setbdstTable(tableData(pbnstHasuRes, { code })); + } } - }, [code, pbnstHasuRes]); + }, [code, pbnstHasuRes,searchFclts]); - const onSelectValue = (val: string) => { - console.log(val); - }; const cellClick = (val: number | undefined) => { if (val === undefined) return; const selectRow = pbnstHasuRes?.[val]; if (selectRow) { - setSelectedRow(selectRow); + setIsRuseReg({ ...isRuseReg, data: selectRow }); + pbnstRegInit(selectRow); } - - pbnstRegInit(selectRow) - - // setSelectBdst(pbnstRes); - // setPbnstBiz(pbnstRes?.fcBizs) - }; - const resetContents = () => { - setFcltMng([]); // 빈 배열로 설정하여 신규 모드로 전환 }; const handleTabChange = (value: string) => { setCurrentTab(value); }; - useEffect(() => { - - console.log("pbnstBiz", pbnstBiz); - },[pbnstBiz]) - return ( <> -
+
<SearchDiv> @@ -100,6 +101,9 @@ useEffect(() => { className="" size={"sm"} onClick={(e) => { + searchTxt && searchTxt?.length > 0 + ? getSwtrmtFcltNm(searchTxt) + : pubHasuInit("1", "11") }} > 조회 @@ -108,10 +112,14 @@ useEffect(() => { size={"sm"} className="" onClick={() => { - pbnstMngData([] as customPbnst[] ) - setIsNewReg(!issNewReg) - - } } + pbnstMngData([] as customPbnst[]); + isRuseReg.data.bscFctCd + ? setIsRuseReg({ ...isRuseReg, isModal: true }) + : ToastFormUi({ + body: "하수리시시설을 테이블을 선택하고 등록버튼을 눌러주세요", + title: "재이용시설 등록", + }); + }} > 신규등록 </Button> @@ -125,52 +133,57 @@ useEffect(() => { <div className="col-span-4 h-full min-h-0"> <ListDiv className="min-h-0"> <ScrollArea className="h-[60vh]"> - <UiTable + <UiTable tableData={bdstTable || []} headlist={pubFacHeadList} pageSize={100} total={10} headName={"공공 하수처리시설 등록"} cellClick={cellClick} - onPageChange={(page: number) => { } } children={undefined} /> - </ScrollArea> + onPageChange={(page: number) => {}} + children={undefined} + /> + </ScrollArea> </ListDiv> </div> <ListDiv className="col-span-2 pr-6 "> - - <ScrollArea className="h-[60vh]"> - - - <Tabs defaultValue="mng" onValueChange={handleTabChange}> - <TabsList className=""> - <TabsTrigger className="!text-xl" value="mng">시설정보</TabsTrigger> - <TabsTrigger className="!text-xl" value="buse">차수별정보</TabsTrigger> - <Button size={"sm"} className="!justify-end"> - 저장 + <ScrollArea className="h-[60vh]"> + <Tabs defaultValue="mng" onValueChange={handleTabChange}> + <TabsList className=""> + <TabsTrigger className="!text-xl" value="mng"> + 시설정보 + </TabsTrigger> + <TabsTrigger className="!text-xl" value="buse"> + 차수별정보 + </TabsTrigger> + <Button size={"sm"} className="!justify-end"> + 저장 </Button> </TabsList> - <TabsContent className="max-h-full" value="mng"> + <TabsContent className="max-h-full" value="mng"> <PbnstMngForm formType="update" /> - </TabsContent> - <TabsContent className="max-h-full" value="buse"> - <PbnstBuseForm data={pbnstBiz || []} /> - </TabsContent> - </Tabs> - </ScrollArea> + </TabsContent> + <TabsContent className="max-h-full" value="buse"> + <PbnstBuseForm formType="update" /> + </TabsContent> + </Tabs> + </ScrollArea> </ListDiv> <UiModal - body={<PbnstRegModal data={selectedRow || []}></PbnstRegModal>} + body={ + <PbnstRegModal + data={isRuseReg.data || ({} as customPbnst)} + ></PbnstRegModal> + } bodyClass="w-[68vw] max-w-none h-[90vh]" - open={issNewReg} + open={isRuseReg.isModal} onOpenChange={(open) => { - setIsNewReg(open); + setIsRuseReg({ data: {} as pubHasuType, isModal: open }); }} /> </div> - <Toaster position="top-center" /> + <Toaster position="top-center" /> </ContentsDiv> </> ); } - - diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/index.tsx index fb47d1f53..fde9fc79d 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/index.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/index.tsx @@ -12,6 +12,7 @@ import { fcBizSchema, type customPbnst, type fcBizType, + type PbnstUpdateIndex, type pubHasuType, } from "./type"; import type { SelectDataType } from "@common/business_components/ui"; @@ -37,7 +38,6 @@ const fcOrgwtsHeadList = fcOrgwtsHeadListExport; export type pubFacState = { pbnst: { isInit: boolean; - isReginit:boolean; pubFacHeadList: TableUpperProps[]; pbnstMngUpHeadList: TableUpperProps[]; pbnstMngNm: chHeadType[]; @@ -51,6 +51,8 @@ export type pubFacState = { pbnstDemandHeadList: TableUpperProps[]; fcOrgwtsHeadList: TableUpperProps[]; pbnstMngRegData: customPbnst[]; + pbnsUpdateIndex: PbnstUpdateIndex; + dmdComList:any[] }; }; type pubFacActions = { @@ -63,7 +65,8 @@ type pubFacActions = { pbnstMngData: (data: customPbnst[]) => void; pbnstBizData(data: fcBizType): void; getBizCycle: (pbnstObj: customPbnst) => void; - pbnstRegFormInit:()=>void + getDmdCompany:(txt :string)=>void; + getPbnstUpdateIndex: (data: PbnstUpdateIndex) => void; }; export type pubFacType = pubFacState & pubFacActions; @@ -71,7 +74,6 @@ export type pubFacType = pubFacState & pubFacActions; export const pubFacStateExport: pubFacState = { pbnst: { isInit: false, - isReginit:false, pubFacHeadList: pubFacHeadList, pbnstMngUpHeadList: pbnstMngUpHeadList, pbnstMngNm: pbnstMngNm, @@ -85,6 +87,8 @@ export const pubFacStateExport: pubFacState = { pbnstDemandHeadList: pbnstDemandHeadList, fcOrgwtsHeadList: fcOrgwtsHeadList, pbnstMngRegData: [], + pbnsUpdateIndex : {} as PbnstUpdateIndex, + dmdComList:[] }, }; @@ -229,7 +233,7 @@ export const pubFacActionsExport: (set: any) => pubFacActions = (set: any) => { try { const response = await getFetch( fetchType.CS, - `/api/v1/atflcd/download/${atflCd}` + `/attach-service/api/v1/atflcd/download/${atflCd}` ); if (!response.ok) { @@ -239,21 +243,24 @@ export const pubFacActionsExport: (set: any) => pubFacActions = (set: any) => { console.error("Error downloading file:", error); } }, + pbnstMngData: (data: customPbnst[]) => { + if(data.length > 0){ + + + } + return set((state: pubFacState) => { state.pbnst.pbnstMngRegData = data; + state.pbnst.pbnstBizCycle=data.length <=0 ? [{ text: "없음", val: "1" }] : state.pbnst.pbnstBizCycle return state; }); }, - pbnstRegFormInit:()=>{ - return set((state: pubFacState) => { - - return state.pbnst.pbnstMngRegData; - }); - - }, + pbnstBizData: (data: fcBizType) => { return set((state: pubFacState) => { + + if (state.pbnst.pbnstMngRegData) { const regData = state.pbnst.pbnstMngRegData.find( (item) => data.pbnstRuseFcltFk === item.pbnstRuseFcltPk @@ -262,6 +269,7 @@ export const pubFacActionsExport: (set: any) => pubFacActions = (set: any) => { const bizIdx = regData.fcBizs.findIndex( (item) => item.pbnstRuseFcltBizPk == data.pbnstRuseFcltBizPk ); + if (bizIdx >= 0) { regData.fcBizs[bizIdx] = data; } @@ -269,6 +277,25 @@ export const pubFacActionsExport: (set: any) => pubFacActions = (set: any) => { } return state; }); - }, - }; + },getDmdCompany: async (txt:string)=>{ + + const company = await getFetch( + fetchType.WR, + `/reuseFc/request/${txt}/3`) + + return set((state: pubFacState) => ({ + ...state, + pbnst: { + ...state.pbnst, + isInit: false, + }, + + })) + },getPbnstUpdateIndex:async(data : PbnstUpdateIndex)=>{ + return set((state: pubFacState) => { + state.pbnst.pbnsUpdateIndex = data + return state; + } + )} + }; }; diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/type.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/type.tsx index ae2749c84..be758c87c 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/type.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/type.tsx @@ -14,6 +14,11 @@ export type selectLabel = { val: string; }; +export type PbnstUpdateIndex ={ + mng:number, + biz:number +} + export type publicReuseFacilityType = { sido: string; sigungo: string; @@ -80,7 +85,7 @@ const fcOperSchema = z.object({ }); const fcOrgwtSchema = z.object({ - pbnstRuseFcltBizFk: z.number().nullish(), + pbnstRuseFcltBizFk: z.string().nullish(), swtrmtFcltFk: z.number().default(0), orgwtWtritQnt: z.number(), tmsYn: z.enum(["Y", "N"] ).default("N"), @@ -98,9 +103,9 @@ export const fcBizSchema = z.object({ pbnstRuseFcltBizPk: z.number().default(1), pbnstRuseFcltFk: z.string().nullish(), superkey: z.string().default("").nullish(), - cycl: z.number(), - seCd: z.string(), - bizMthdCd: z.string(), + cycl: z.number().default(1), + seCd: z.string().default(""), + bizMthdCd: z.string().default(""), instlAprvSncnDt: z.date().nullish(), bizCmcnDay: z.date().nullish(), gvsbs: z.number().default(0), @@ -108,31 +113,31 @@ export const fcBizSchema = z.object({ cusrAlotm: z.number().default(0), etc: z.string().default(''), totalMoney: z.number().default(0).nullish(), - rprcsFcltCpct: z.number(), - majorPrcsMsrcCd: z.string(), - addr: z.string(), - rprcsMthdCd: z.string(), - inoutYn: z.enum(["Y", "N"]), + rprcsFcltCpct: z.number().default(0), + majorPrcsMsrcCd: z.string().default(""), + addr: z.string().default(''), + rprcsMthdCd: z.string().default(""), + inoutYn: z.enum(["Y", "N"]).default("Y"), mainSplyPumpCpct: z.number().nullish(), erctWtrOcrnCpct: z.number().nullish(), erctUswtrLinkSpt: z.string().nullish(), erctUswtrFcltCpct: z.number().nullish(), erctUswtrPrcsMeth: z.string().nullish(), erctUswtrPrcsMsrcCd: z.string().nullish(), - wwtEmsnFcltPrmsnYn: z.enum(["Y", "N"]), - tmsInstlYn: z.enum(["Y", "N"]), - pbnstDrngInflwExclYn: z.enum(["Y", "N"]), - bod: z.number(), - grssClfg: z.number(), - combResdch: z.number(), - trbt: z.number(), - clIonQnt: z.number(), - smll: z.number(), - crmty: z.number(), - tph: z.number(), - tn: z.number(), - ph: z.number(), - cdtnv: z.number(), + wwtEmsnFcltPrmsnYn: z.enum(["Y", "N"]).default("Y"), + tmsInstlYn: z.enum(["Y", "N"]).default("Y"), + pbnstDrngInflwExclYn: z.enum(["Y", "N"]).default("Y"), + bod: z.number().default(0), + grssClfg: z.number().default(0), + combResdch: z.number().default(0), + trbt: z.number().default(0), + clIonQnt: z.number().default(0), + smll: z.number().default(0), + crmty: z.number().default(0), + tph: z.number().default(0), + tn: z.number().default(0), + ph: z.number().default(0), + cdtnv: z.number().default(0), designCst: z.number().nullish(), cstrnSpvsCst: z.number().nullish(), fcltSbsdCst: z.number().nullish(), @@ -150,26 +155,52 @@ export const fcBizSchema = z.object({ fcltSbsdCstClcln: z.number().nullish(), wstCstClcln: z.number().nullish(), cnstCmcnCstClcln: z.number().nullish(), - mntrgEqpmntInstlCstClcln: z.number(), + mntrgEqpmntInstlCstClcln: z.number().default(0), gisDbCstClcln: z.number().nullish(), elpwrMtrngCstClcln: z.number().nullish(), mchnCstClcln: z.number().nullish(), archCstClcln: z.number().nullish(), pplCstClcln: z.number().nullish(), ruseFcltCstClcln: z.number().nullish(), - fcOrgwts: z.array(fcOrgwtSchema), - pplInstls: z.array(pplInstlSchema), + fcOrgwts: z.array(fcOrgwtSchema).nullish(), + pplInstls: z.array(pplInstlSchema).nullish(), flg: z.string().nullish(), regDt: z.string().nullish(), - rgtr: z.string(), + rgtr: z.string().nullish(), mdfcnDt: z.string().nullish(), - mdfr: z.string(), + mdfr: z.string().nullish(), }); + +const pubHasuZod = z.object({ + choose: z.boolean().default(false), + bscFctCd: z.string(), + sido: z.string().default(""), + gugun: z.string().default(""), + bscFctNm: z.string().default(""), + efflWqltStndrdNm: z.string().default(""), + fctCpc: z.number().default(0), + addr:z.string().nullish() +}); + +export type pubHasuType = z.infer<typeof pubHasuZod>; + + + +const dmdColist = z.object({ + dmdCoNm: z.boolean().default(false), + daddr: z.string(), + useUsgCd: z.string().default(""), + splyBgngDay: z.string().default(""), + splyEndDay: z.string().default(""), + splyCpct: z.string().default(""), + splyFmYn: z.number().default(0), +}); + + export const pbnstRegZod = z.object({ pbnstRuseFcltPk: z.string().default(''), swtrmtFcltFk: z.string().default(""), - superkey:z.string().default(""), ruseUtztnFcltNm: z.string().default(""), fcltCpct: z.number().default(0), ruseCpct: z.number().default(0), @@ -181,21 +212,10 @@ export const pbnstRegZod = z.object({ fcFiles: z.array(fcFileSchema).default([]), fcBizs: z.array(fcBizSchema).default([]), fcOpers: z.array(fcOperSchema).default([]), + fcDemands: z.array(dmdColist).default([]).nullish(), hasuhasu: z.number().default(0), }); -const pubHasuZod = z.object({ - choose: z.boolean().default(false), - bscFctCd: z.string(), - sido: z.string().default(""), - gugun: z.string().default(""), - bscFctNm: z.string().default(""), - efflWqltStndrdNm: z.string().default(""), - fctCpc: z.number().default(0), -}); - -export type pubHasuType = z.infer<typeof pubHasuZod>; - //관경 제외 export const exampleData = [ { diff --git a/apps/wr/components/lib/api/index.ts b/apps/wr/components/lib/api/index.ts index 7b8507910..c2529c8a2 100644 --- a/apps/wr/components/lib/api/index.ts +++ b/apps/wr/components/lib/api/index.ts @@ -24,8 +24,30 @@ export const getFetch = async (type: string, url: string) => { if (!response.ok) { throw new Error(`오류 발생: ${response.status}`); } - const res = await response.json(); - return res.data; + const contentType = response.headers.get("content-type") ?? ""; + + if (contentType.includes("application/json")) { + // JSON 응답 처리 + const res = await response.json(); + return res.data; + } else { + // 파일 응답 처리 (ex. PDF, Excel 등) + const blob = await response.blob(); + const blobUrl = window.URL.createObjectURL(blob); + const a = document.createElement("a"); + + // 파일명 추출 (서버에서 header에 Content-Disposition을 보낼 경우 활용) + const disposition = response.headers.get("Content-Disposition"); + const match = disposition?.match(/filename="?(.+)"?/); + const filename = match?.[1] || "downloaded_file"; + + a.href = blobUrl; + a.download = filename; + a.click(); + window.URL.revokeObjectURL(blobUrl); + + return null; // 다운로드이므로 반환값 없음 + } }; export const postFectch = async (url: string, params: any, type?: string) => { diff --git a/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm.tsx b/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm.tsx index 4e704c21c..620f93803 100644 --- a/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm.tsx @@ -13,7 +13,6 @@ import { import { fcBizSchema, type fcBizType, - type fcOrgwtType, type ppInstlType, } from "@/app/store/ruseFcltMng/fcltReg/pbnstReg/type"; import { selectClass } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; @@ -33,21 +32,36 @@ import { useEffect, useRef, useState } from "react"; import { useFieldArray, useForm } from "react-hook-form"; import MngRegFormDetail from "../mngReg/mngRegFormDetail/mngRegFormDetail"; -export function PbnstBuseForm({ data }: { data: fcBizType[] }) { - // const ref = useRef<ppInstlType[] | null>(data[0]?.pplInstls ?? null); +export function PbnstBuseForm({ + formType, + firstBizData, +}: { + formType: string; + firstBizData?: fcBizType[]; +}) { const ref = useRef<ppInstlType[] | null>(null); - const { code, pbnst, pbnstBizData } = useWrStore((state) => state); + const { code, pbnst, pbnstBizData ,getPbnstUpdateIndex} = useWrStore((state) => state); const { pbnstBizCycle, pbnstRes } = pbnst; const [getBizCycle, setBizCycle] = useState("1"); const [ppiSelectList, setPpiSelectList] = useState<[{ name: string; val: SelectDataType[] }]>(); const [ppiYn, setPpiYn] = useState("Y"); const [isFcOrgwts, setIsFcOrgwts] = useState<boolean>(false); - const [modalData, setModalData] = useState<fcOrgwtType | null>(null); const [sumCpct, setSumCpct] = useState<number>(0); const form = useForm<fcBizType>({ resolver: zodResolver(fcBizSchema), + defaultValues: + formType === "reg" && + pbnst.pbnstMngRegData && + pbnst.pbnstMngRegData[0]?.fcBizs + ? (pbnst.pbnstMngRegData[0].fcBizs[0] ?? {}) + : formType === "update" && + typeof pbnst.pbnsUpdateIndex.biz === "number" && + pbnst.pbnsUpdateIndex.biz >= 0 && + pbnst.pbnstRes + ? pbnst.pbnstRes[pbnst.pbnsUpdateIndex.mng]?.fcBizs[pbnst.pbnsUpdateIndex.biz] + : fcBizSchema.parse({}), }); // 2. Define a submit handler. @@ -69,54 +83,56 @@ export function PbnstBuseForm({ data }: { data: fcBizType[] }) { name: "pplInstls", }); + // 등록할때 신규 값을 계속 가지고 있으려고 useEffect(() => { - - const formData = form.watch() - - formData.pplInstls = ref.current ? [...ref.current] : [] // ← form 내부 상태 기준으로 복사 - console.log("formData pplReg", formData) - - pbnstBizData(formData as fcBizType); - }, [form.formState]); - - useEffect(() => { - - if (ppiYn === "N") { - form.setValue('pplInstls', []) + if (formType === "reg") { + if ( + firstBizData && + firstBizData[0] && + (form.getValues("pbnstRuseFcltFk") === "" || + form.getValues("pbnstRuseFcltFk") === undefined) + ) { + form.setValue( + "pbnstRuseFcltFk", + String(firstBizData[0].pbnstRuseFcltFk) + ); + form.setValue("cycl", firstBizData[0].cycl); + } + const formData = form.watch(); + formData.pplInstls = ref.current ? [...ref.current] : []; // ← form 내부 상태 기준으로 복사 + pbnstBizData(formData as fcBizType); } - }, [ppiYn, pbnst.pplInstlsHeadLisat]) + }, [firstBizData, form.formState, formType]); useEffect(() => { - console.log("pbnst.pbnstMngRegData ", pbnst.pbnstMngRegData); - }, [pbnst.pbnstMngRegData]); + if (ppiYn === "N") { + form.setValue("pplInstls", []); + } + }, [ppiYn]); - const buttonClick = () => { - setIsFcOrgwts(true); - const moData = data[0]?.fcOrgwts?.[0] ?? null; - setModalData(moData); - }; + useEffect(() => { + console.log("pbnst. bug pbnstMngRegData ", pbnst.pbnstMngRegData); + }, [pbnst.pbnstMngRegData]); const plusHist = () => { const regData = { ruseFcltBizFk: ref.current?.[0]?.ruseFcltBizFk ?? "", choose: false, ppMqlt: "", - pdmt: '', + pdmt: "", cpct: 0, - } + }; const currentTableDataFromRef = ref.current ? [...ref.current] : []; const newDataForRHF = [...currentTableDataFromRef, regData]; form.setValue("pplInstls", newDataForRHF, { shouldValidate: true, // 필요하다면 유효성 검사 실행 - shouldDirty: true, // 폼 상태를 dirty로 변경 + shouldDirty: true, // 폼 상태를 dirty로 변경 }); const latestOpers = form.getValues("pplInstls"); ref.current = [...latestOpers]; }; - const plusArray = () => { - - } + const plusArray = () => {}; const removeSelected = () => { if (!ref.current) return; @@ -127,19 +143,15 @@ export function PbnstBuseForm({ data }: { data: fcBizType[] }) { }; useEffect(() => { - - - if (getBizCycle) { - + if (getBizCycle&&formType !== "reg") { const index = Number(getBizCycle) - 1; form.reset(pbnst.pbnstResObj?.fcBizs[index]); ref.current = pbnst.pbnstResObj?.fcBizs[index]?.pplInstls ?? []; } - - }, [getBizCycle, pbnst.pbnstResObj]); + }, [getBizCycle, pbnst.pbnstResObj , formType]); useEffect(() => { - const ppl = []; + const ppl = [] as { name: string; val: SelectDataType[] }[]; if (code.pplLenght) { ppl.push({ name: "pplLenght", val: code.pplLenght }); } @@ -148,12 +160,11 @@ export function PbnstBuseForm({ data }: { data: fcBizType[] }) { } if (ppl.length > 0) { setPpiSelectList(ppl); + } else { + setPpiSelectList(undefined); } }, [code]); - useEffect(() => { - }, [ppiSelectList]); - useEffect(() => { console.log("form errors:", form.formState.errors); }, [form.formState.errors]); @@ -172,7 +183,6 @@ export function PbnstBuseForm({ data }: { data: fcBizType[] }) { <h1 className=" text-xl"></h1> <div className="flex items-center gap-2 mx-3"> <h1 className={formTableName}>등록차수</h1> - <SelectBox label="" selectArray={pbnstBizCycle} @@ -181,6 +191,7 @@ export function PbnstBuseForm({ data }: { data: fcBizType[] }) { selectClass={selectClass} onSelectValue={(val) => { setBizCycle(String(val)); + getPbnstUpdateIndex({...pbnst.pbnsUpdateIndex, biz: Number(val)}) }} ></SelectBox> @@ -196,7 +207,6 @@ export function PbnstBuseForm({ data }: { data: fcBizType[] }) { moClass="grid grid-cols-12 gap-4" sonClass="col-span-4" /> - <MngRegFormDetail formList={businessMoneyInfo} h1Title={"사업비"} @@ -231,22 +241,18 @@ export function PbnstBuseForm({ data }: { data: fcBizType[] }) { <div className="text-right mb-3"> <Button type="button" - onClick={ - // () => { - // setIsFcOrgwts(true) - // setModalData(modalData) - // } - buttonClick - } + onClick={() => setIsFcOrgwts(true)} size={commonButonSize} - className=""> + className="" + > 추가등록 </Button> </div> <RuseMngTable tableData={fcOrgwtFiled} headList={pbnst.pbnstOrgwtHeadList} - upHeadList={[]} /> + upHeadList={[]} + /> </div> <h1 className={formH1Class}>재이용 공급관로 설치 현황</h1> <div className="flex items-center gap-4 mx-3 mb-3"> @@ -266,26 +272,28 @@ export function PbnstBuseForm({ data }: { data: fcBizType[] }) { readOnly={true} className="w-32 border-gray-300 rounded pr-8 " /> - {ppiYn === 'Y' ? <> - <Button - type="button" - size={commonButonSize} - className="!text-xl" - onClick={plusHist} - > - 추가등록 - </Button> - <Button - type="button" - size={commonButonSize} - className="!text-xl !bg-red-500 !text-white ml-1" - onClick={removeSelected} - > - 삭제 - </Button> - </> : <> + {ppiYn === "Y" ? ( + <> + <Button + type="button" + size={commonButonSize} + className="!text-xl" + onClick={plusHist} + > + 추가등록 + </Button> + <Button + type="button" + size={commonButonSize} + className="!text-xl !bg-red-500 !text-white ml-1" + onClick={removeSelected} + > + 삭제 + </Button> </> - } + ) : ( + <></> + )} </div> <div> <RuseMngTable @@ -297,7 +305,7 @@ export function PbnstBuseForm({ data }: { data: fcBizType[] }) { onTableSet={(val) => { if (!ref.current) return; let sum = 0; - ref.current.forEach(item => { + ref.current.forEach((item) => { sum += Number(item.cpct) || 0; }); setSumCpct(sum); @@ -313,29 +321,25 @@ export function PbnstBuseForm({ data }: { data: fcBizType[] }) { sonClass="col-span-4" /> - {/* <h1 className={formH1Class}>하수처리수 재이용수 수요처</h1> */} <div> <div className="text-right mb-3"> <Button type="button" onClick={() => {}} size={commonButonSize} - className=""> + className="" + > 수요처 추가 </Button> </div> <MngRegFormDetail - formList={dmdCoList} - h1Title={"하수처리수 재이용수 수요처"} - form={form} - moClass="grid grid-cols-12 gap-4 mt-3" - sonClass="col-span-4" - /> - {/* <RuseMngTable - tableData={[]} - headList={pbnst.pbnstDemandHeadList} - /> */} - </div> + formList={dmdCoList} + h1Title={"하수처리수 재이용수 수요처"} + form={form} + moClass="grid grid-cols-12 gap-4 mt-3" + sonClass="col-span-4" + /> + </div> </form> </Form> </div> @@ -344,7 +348,16 @@ export function PbnstBuseForm({ data }: { data: fcBizType[] }) { open={isFcOrgwts} onOpenChange={(open: boolean) => setIsFcOrgwts(open)} bodyClass={"w-[50vw] max-w-none h-[60vh]"} - body={<FcOrgwtsRegModal data={modalData ? [modalData] : []} onRightSet={(val) => { console.log("val", val); return {}; }} ></FcOrgwtsRegModal>} + body={ + <FcOrgwtsRegModal + closeModal={() => { + setIsFcOrgwts(false); + }} + onRightSet={(val) => { + form.setValue("fcOrgwts", val); + }} + ></FcOrgwtsRegModal> + } ></UiModal> </div> </> diff --git a/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx b/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx index 865f7cbb1..863b887b6 100644 --- a/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx @@ -5,11 +5,9 @@ import { FileUpload, FormUi, SelectBox } from "@common/business_components/ui"; import { Form, FormField } from "@common/business_components/ui/form"; import { Button, Input } from "@common/components"; import { zodResolver } from "@hookform/resolvers/zod"; -import { use, useEffect, useRef, useState } from "react"; +import { useEffect, useRef, useState } from "react"; import { useFieldArray, useForm } from "react-hook-form"; import { z } from "zod"; -import moment from "moment"; - import { commonButonSize, formH1Class, @@ -22,7 +20,6 @@ import { type customPbnst, type fcFileType, type operType, - type ruseFcltType, type selectLabel, } from "@/app/store/ruseFcltMng/fcltReg/pbnstReg/type"; import { TEST_UUID } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; @@ -40,23 +37,37 @@ export function PbnstMngForm({ formType: string; firstFcltData?: customPbnst; }) { - const { pbnst, pbnstUpdate, pbnstMngData, fileDelete, getBizCycle,pbnstRegFormInit } = - useWrStore((state) => state); + const { + pbnst, + pbnstUpdate, + pbnstMngData, + fileDelete, + fileDownLoad, + getBizCycle, + getPbnstUpdateIndex, + } = useWrStore((state) => state); const [regFileList, setRegFileList] = useState<fcFileType[] | null>(null); const [planFiles, setPlanFiles] = useState<FilesType[] | null>(null); const [relationfiles, setRelationFiles] = useState<FilesType[] | null>(null); const [fcltNm, setFcltNm] = useState<selectLabel[] | null>(null); + const [fcOpresData, setFcOpresData] = useState<operType[] | null>(null); const [progress, setProgress] = useState(0); //const new File([] as BlobPart[], "") 파일 다운로드 활용 - const ref = useRef<operType[] | null>(null); - const form = useForm<z.infer<typeof pbnstRegZod>>({ resolver: zodResolver(pbnstRegZod), - defaultValues: formType === 'reg' && pbnst.pbnstMngRegData ? pbnst.pbnstMngRegData[0] : pbnstRegZod.parse({}), + defaultValues: + formType === "reg" && pbnst.pbnstMngRegData + ? pbnst.pbnstMngRegData[0] + : formType === "update" && + typeof pbnst.pbnsUpdateIndex.mng === "number" && + pbnst.pbnsUpdateIndex.mng >= 0 && + pbnst.pbnstRes + ? pbnst.pbnstRes[pbnst.pbnsUpdateIndex.mng] + : pbnstRegZod.parse({}), }); const { fields: fcOpersField, @@ -73,11 +84,9 @@ export function PbnstMngForm({ const selectFclt = (val: number) => { if (pbnst.pbnstRes && pbnst.pbnstRes[val]) { - //시설 선택시 데이터 초기화 - getBizCycle(pbnst.pbnstRes[val]); - ref.current = pbnst.pbnstRes[val].fcOpers; form.reset(pbnst.pbnstRes[val]); + getPbnstUpdateIndex({ ...pbnst.pbnsUpdateIndex, mng: val }); } }; const fileDownload = (index: number) => {}; @@ -97,8 +106,6 @@ export function PbnstMngForm({ shouldValidate: true, // 필요하다면 유효성 검사 실행 shouldDirty: true, // 폼 상태를 dirty로 변경 }); - const latestOpers = form.getValues("fcOpers"); - ref.current = [...latestOpers]; }; const removeSelected = () => { @@ -186,25 +193,68 @@ export function PbnstMngForm({ (form.getValues("swtrmtFcltFk") === "" || form.getValues("swtrmtFcltFk") === undefined) ) { - form.setValue("swtrmtFcltFk", firstFcltData.swtrmtFcltFk); form.setValue( "pbnstRuseFcltPk", String(firstFcltData.swtrmtFcltFk + "1") ); + form.setValue("fcBizs", firstFcltData.fcBizs); } }, [firstFcltData]); - useEffect(() => { - const formData = form.watch(); + const defaultFiles = form.getValues("fcFiles"); - console.log('formData ', formData) - formData.fcOpers = ref.current ? [...ref.current] : []; - formData.fcFiles = regFileList ? [...regFileList] : []; - pbnstMngData([formData] as customPbnst[]); - }, [form.formState, regFileList]); + console.log("defaultFiles : ", defaultFiles); + if (defaultFiles && defaultFiles.length > 0) { + const relationFileList = defaultFiles.filter( + (item) => item.fileKnd === "계통도" + ); + const planFileList = defaultFiles.filter( + (item) => item.fileKnd === "평면도" + ); + if (relationFileList.length > 0) + setRelationFiles( + relationFileList.map((item) => ({ + atflCd: item.fileTkn, + file: new File([] as BlobPart[], item.filePath), + })) + ); // 또는 파일 형식 변환 로직이 있다면 여기에 추가 + + if (planFileList.length > 0) + setPlanFiles( + planFileList.map((item) => ({ + atflCd: item.fileTkn, + file: new File([] as BlobPart[], item.filePath), + })) + ); + } + }, [form.formState.defaultValues]); // 초기화 이후 1회 실행 + + // 등록할때 신규 값을 계속 가지고 있으려고 + useEffect(() => { + if ( + formType === "update" && + pbnst.pbnsUpdateIndex.biz >= 0 && + pbnst.pbnstRes + ) { + const bizData = pbnst.pbnstRes[pbnst.pbnsUpdateIndex.biz]; + + console.log(" bizData : ", bizData); + if (bizData) { + getBizCycle(bizData); + } + } + }, [pbnst.pbnsUpdateIndex, pbnst.pbnstRes, formType, getBizCycle]); + useEffect(() => { + if (formType === "reg") { + const formData = form.watch(); + formData.fcOpers = ref.current ? [...ref.current] : []; + formData.fcFiles = regFileList ? [...regFileList] : []; + pbnstMngData([formData] as customPbnst[]); + } + }, [form.formState, regFileList, formType]); useEffect(() => { pbnstMngData(pbnst.pbnstMngRegData); @@ -222,16 +272,11 @@ export function PbnstMngForm({ // 2. Define a submit handler. function onSubmit(values: z.infer<typeof pbnstRegZod>) { - values.fcOpers = ref.current || []; + values.fcOpers = fcOpresData || []; values.fcFiles = regFileList || []; - console.log("form values:", values); pbnstUpdate(values); } - useEffect(() => { - console.log("form errors:", form.formState.errors); - }, [form.formState.errors]); - useEffect(() => { if (relationfiles) { setRegFileList(regFileFilter(relationfiles, "계통도", regFileList || [])); @@ -271,7 +316,7 @@ export function PbnstMngForm({ onChange={(e) => { field.onChange(String(e.target.value)); }} - value={field.value} + value={field.value ?? ""} /> </FormUi> )} @@ -322,6 +367,9 @@ export function PbnstMngForm({ tableData={fcOpersField} headList={pbnst.pbnstMngUpHeadList} upHeadList={pbnst.pbnstMngNm} + onTableSet={(val) => { + setFcOpresData(val); + }} ref={ref} ></RuseMngTable> </div> @@ -341,7 +389,7 @@ export function PbnstMngForm({ onChange={(e) => { field.onChange(Number(e.target.value)); }} - value={field.value} + value={field.value ?? 0} /> </FormUi> )} @@ -359,7 +407,7 @@ export function PbnstMngForm({ onChange={(e) => { field.onChange(Number(e.target.value)); }} - value={field.value} + value={field.value ?? 0} /> </FormUi> )} @@ -377,7 +425,7 @@ export function PbnstMngForm({ onChange={(e) => { field.onChange(Number(e.target.value)); }} - value={field.value} + value={field.value ?? 0} /> </FormUi> )} @@ -395,7 +443,7 @@ export function PbnstMngForm({ onChange={(e) => { field.onChange(Number(e.target.value)); }} - value={field.value} + value={field.value ?? 0} /> </FormUi> )} @@ -414,7 +462,13 @@ export function PbnstMngForm({ if (files) fileHandler(files, "relation"); }} fileTypes="PDF" - onFileClick={(index) => {}} + onFileClick={(index) => { + fileDownLoad( + relationfiles?.find( + (item, fileIndex) => fileIndex === index + )?.atflCd as string + ); + }} ></FileUpload> </FormUi> </div> @@ -426,6 +480,13 @@ export function PbnstMngForm({ if (files) fileHandler(files, "plan"); }} fileTypes="PDF" + onFileClick={(index) => { + fileDownLoad( + planFiles?.find( + (item, fileIndex) => fileIndex === index + )?.atflCd as string + ); + }} ></FileUpload> </FormUi> </div> diff --git a/apps/wr/components/ui/modal/fcltReg/fcOrgwtsRegModal/fcOrgwtsRegModal.tsx b/apps/wr/components/ui/modal/fcltReg/fcOrgwtsRegModal/fcOrgwtsRegModal.tsx index d904854f7..b04386752 100644 --- a/apps/wr/components/ui/modal/fcltReg/fcOrgwtsRegModal/fcOrgwtsRegModal.tsx +++ b/apps/wr/components/ui/modal/fcltReg/fcOrgwtsRegModal/fcOrgwtsRegModal.tsx @@ -12,7 +12,7 @@ import { ArrowLeft, ArrowRight } from "lucide-react"; import { useEffect, useRef, useState } from "react"; import { useFieldArray } from "react-hook-form"; -export default function FcOrgwtsRegModal({ data, onRightSet }: { data: fcOrgwtType[], onRightSet?: (rightData:fcOrgwtType[]) => {}}) { +export default function FcOrgwtsRegModal({ onRightSet, closeModal }: { onRightSet?: (rightData:fcOrgwtType[]) => void,closeModal?:(val:boolean) =>void }) { const { code, pbnst, getSwtrmtFcltNm, searchFclts } = useWrStore((state) => state); const { fcOrgwtsHeadList, pbnstHasuRes } = pbnst; const [bdstTable, setbdstTable] = useState<pubHasuType[]>(); @@ -36,28 +36,26 @@ export default function FcOrgwtsRegModal({ data, onRightSet }: { data: fcOrgwtTy }, [searchFclts]) useEffect(() => { - // console.log("머지", pbnstHasuRes); if (code.sggCd.length > 0 && pbnstHasuRes.length > 0) { setbdstTable(tableData(pbnstHasuRes, { code })); + + console.log('bdstTable ', bdstTable) } }, [code, pbnstHasuRes]); useEffect(() => { - if(onRightSet) + console.log('rightData ', rightData) + if(onRightSet) onRightSet( - rightData?.map(item => ({ - pbnstRuseFcltBizFk: data[0]?.pbnstRuseFcltBizFk ?? 0, - swtrmtFcltFk: item.bscFctCd, - orgwtWtritQnt: "0", - tmsYn: "N", - dschgFmYn: "N", - dtlPstnExpln: "", - rgtr: "", - mdfr: "", - regDt: undefined, - mdfcnDt: undefined, - useYn: undefined, - })) ?? [] + (rightData as pubHasuType[])?.map(item => ({ + swtrmtFcltFk: item.bscFctCd, // 임시값, 실제 데이터에 맞게 수정 + orgwtWtritQnt: Number(item.fctCpc), // 임시값, 실제 데이터에 맞게 수정 + tmsYn: "N", // 임시값, 실제 데이터에 맞게 수정 + dschgFmYn: "N", // 임시값, 실제 데이터에 맞게 수정 + dtlPstnExpln: item.addr, // 임시값, 실제 데이터에 맞게 수정 + choose: false, // 임시값, 실제 데이터에 맞게 수정 + // 필요한 경우 다른 속성들도 추가 + })) as unknown as fcOrgwtType[] ); }, [rightData]) @@ -67,7 +65,7 @@ export default function FcOrgwtsRegModal({ data, onRightSet }: { data: fcOrgwtTy <div className="flex items-center justify-between"> <Title title={"취수하수처리장 추가"} /> <Button className="m-2" size={"sm"} - onClick={() => { }}>저장</Button> + onClick={() => {closeModal && closeModal(false) }}>저장</Button> </div> <div className="flex flex-row flex-grow gap-4 mt-4"> diff --git a/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx b/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx index 3841a7fd8..6e13c6ea4 100644 --- a/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx +++ b/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx @@ -1,17 +1,12 @@ "use client"; - import { useWrStore } from "@/app/store"; import type { customPbnst, fcBizType, pubHasuType, } from "@/app/store/ruseFcltMng/fcltReg/pbnstReg/type"; -import { selectClass } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; -import { getCity } from "@/components/lib/func/commom"; import { PbnstMngForm } from "@/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm"; -import { - ScrollArea, -} from "@common/business_components"; +import { ScrollArea } from "@common/business_components"; import { Button, Tabs, @@ -23,7 +18,7 @@ import { useEffect, useState } from "react"; import { PbnstBuseForm } from "@/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm"; export function PbnstRegModal({ data }: { data: pubHasuType }) { - const { pbnst ,pbnstUpdate} = useWrStore((state) => { + const { pbnst, pbnstUpdate } = useWrStore((state) => { return state; }); const [pbnstBdstForm, setPbnstBdstForm] = useState<customPbnst>( @@ -31,39 +26,33 @@ export function PbnstRegModal({ data }: { data: pubHasuType }) { ); const [currentTab, setCurrentTab] = useState<string>("mng"); -const pbnstRegTotal = ()=>{ - console.log(" pbnst.pbnstMngRegData ", pbnst.pbnstMngRegData) - - if(pbnst.pbnstMngRegData[0]) - pbnstUpdate(pbnst.pbnstMngRegData[0]) -} - + const pbnstRegTotal = () => { + if (pbnst.pbnstMngRegData[0]) pbnstUpdate(pbnst.pbnstMngRegData[0]); + }; const handleTabChange = (value: string) => { setCurrentTab(value); }; useEffect(() => { - - - if(data ){ - + if (data) { let regData = { - swtrmtFcltFk: String(data.bscFctCd ), - pbnstRuseFcltPk: String(data.bscFctCd + "1"), - fcBizs: [{ pbnstRuseFcltFk: String(data.bscFctCd + "1") ,cycl:1 } as unknown as fcBizType], + swtrmtFcltFk: String(data.bscFctCd), + pbnstRuseFcltPk: String(data.bscFctCd + "1"), + fcBizs: [ + { + pbnstRuseFcltFk: String(data.bscFctCd + "1"), + cycl: 1, + } as unknown as fcBizType, + ], }; - + setPbnstBdstForm(regData as unknown as customPbnst); } - }, [data]); - - useEffect(() =>{ - - console.log('pbnst.pbnstMngRegData ', pbnst.pbnstMngRegData) - },[pbnst.pbnstMngRegData]) + useEffect(() => {}, [pbnstBdstForm]); + useEffect(() => {}, [pbnst.pbnstMngRegData]); return ( <> <h1 className="text-2xl font-medium text-label pl-8"> @@ -80,15 +69,19 @@ const pbnstRegTotal = ()=>{ <TabsTrigger className="!text-xl" value="buse"> 차수별정보 </TabsTrigger> - <Button onClick={pbnstRegTotal} size={"sm"} className="!justify-end"> + <Button + onClick={pbnstRegTotal} + size={"sm"} + className="!justify-end" + > 저장 </Button> </TabsList> <TabsContent className="max-h-full" value="mng"> - <PbnstMngForm formType={'reg'} firstFcltData={pbnstBdstForm} /> + <PbnstMngForm formType={"reg"} firstFcltData={pbnstBdstForm} /> </TabsContent> <TabsContent className="max-h-full" value="buse"> - <PbnstBuseForm data={pbnstBdstForm.fcBizs} /> + <PbnstBuseForm formType={"reg"} firstBizData={pbnstBdstForm.fcBizs} /> </TabsContent> </Tabs> </ScrollArea> diff --git a/apps/wr/middleware.ts b/apps/wr/middleware.ts index 080ed30c9..b33f446d6 100644 --- a/apps/wr/middleware.ts +++ b/apps/wr/middleware.ts @@ -2,10 +2,9 @@ import { NextRequest, NextResponse } from "next/server"; import { CS_URL } from "./components/lib/config"; //import { CLAIM_NAME, AUTH_USER_ID } from "./src/shared/config"; -const CLAIM_NAME = "Authorization" -const AUTH_USER_ID = "token-id" -const serverApiUrl = - CS_URL; +const CLAIM_NAME = "Authorization"; +const AUTH_USER_ID = "token-id"; +const serverApiUrl = CS_URL; export function middleware(req: NextRequest) { const pathname = req.nextUrl.pathname; console.log(`[Middleware] Request URL: ${req.url}`); @@ -13,16 +12,18 @@ export function middleware(req: NextRequest) { if (pathname.startsWith("/server")) { const queryParams = searchParams.toString(); - const newUrl = `${serverApiUrl}${pathname.replace("/server", "")}${queryParams ? `?${queryParams}` : "" - }`; + const newUrl = `${serverApiUrl}${pathname.replace("/server", "")}${ + queryParams ? `?${queryParams}` : "" + }`; console.log(`[Middleware] Rewriting from '/server' path to: ${newUrl}`); return NextResponse.rewrite(new URL(newUrl)); } if (pathname.startsWith("/attach-service")) { const requestHeaders = new Headers(req.headers); - const token = "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhMGVjN2EwNy03NTJhLTRmN2YtODlhNi04NTRlNjNkMmUzYTAiLCJhdXRob3JpdGllcyI6IlJPTEVfQURNSU4sUk9MRV9BTk9OWU1PVVMiLCJleHAiOjE3NDg0Mzc0OTF9.JM2NHEwTpgDW9nonZY3186IK_frIh667SyxMQfPwqa_lc-5mcTFNtrWXH5b72_ng39qiPSi504iF1roFEJ0c6w" - const userId = 'a0ec7a07-752a-4f7f-89a6-854e63d2e3a0' + const token = + "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhMGVjN2EwNy03NTJhLTRmN2YtODlhNi04NTRlNjNkMmUzYTAiLCJhdXRob3JpdGllcyI6IlJPTEVfQURNSU4sUk9MRV9BTk9OWU1PVVMiLCJtbmdyWW4iOiJZIiwiZXhwIjoxNzQ4NzkzNzAwfQ.BK1F_t9ou3R26aLc02lsyOsr2tMvqQjOdKrLz5rViUEFq_AURtvnbAxfhVCdJVgFXgUyesPln1Ydl6to-KMKbw"; + const userId = "a0ec7a07-752a-4f7f-89a6-854e63d2e3a0"; //const token = req.cookies.get(CLAIM_NAME)?.value; //const userId = req.cookies.get(AUTH_USER_ID)?.value; const newUrl = `${serverApiUrl}${pathname}`; @@ -31,13 +32,12 @@ export function middleware(req: NextRequest) { console.log("pathname ", pathname); //wr:dev: pathname /attach-service/api/v1/tus/upload/5e60b70a-956e-40c3-be5a-cdd3100bf8ad - //http://dev.onasys.co.kr:8000/attach-service/api/v1/tus/upload/5e60b70a-956e-40c3-be5a-cdd3100bf8ad if (token) requestHeaders.set(CLAIM_NAME, token); if (userId) requestHeaders.set(AUTH_USER_ID, userId); console.log( - `[Middleware] Rewriting from '/attach-service' path to: ${newUrl}`, + `[Middleware] Rewriting from '/attach-service' path to: ${newUrl}` ); return NextResponse.rewrite(new URL(newUrl), { headers: requestHeaders, @@ -50,4 +50,3 @@ export function middleware(req: NextRequest) { export const config = { matcher: ["/server/:path*", "/attach-service/:path*"], }; -