From 175964b652966c488b419a1eb5c88eb4bf8eb978 Mon Sep 17 00:00:00 2001 From: jangwoong Date: Thu, 22 Oct 2026 11:54:59 +0900 Subject: [PATCH] =?UTF-8?q?[as=20fr]=20=20=EA=B4=91=EC=97=AD=EC=A7=80?= =?UTF-8?q?=EC=9E=90=EC=B2=B4=20=EC=84=A4=EC=B9=98=EC=9D=B8=EA=B0=80,=20?= =?UTF-8?q?=EC=9E=AC=EC=9B=90=ED=98=91=EC=9D=98=20=EB=B0=98=EB=A0=A4=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20restapi=20=EC=B6=94=EA=B0=80=EB=B0=8F=20?= =?UTF-8?q?=EC=95=8C=EB=A6=BC=EC=B2=98=EB=A6=AC=20*=EC=95=A1=EC=85=98=20?= =?UTF-8?q?=EB=94=94=EC=8A=A4=ED=8C=A8=EC=B2=98(executeAction)**=EC=99=80?= =?UTF-8?q?=C2=A0**=EB=A3=A9=EC=97=85=20=ED=85=8C=EC=9D=B4=EB=B8=94(button?= =?UTF-8?q?ActionHandlers)**=C2=A0=ED=8C=A8=ED=84=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fnrs-cnsltn/api/fnrs-cnsltn-service.ts | 5 +++++ .../model/fnrs-cnsltn-interface.ts | 1 + .../instl-sncn/api/instl-sncn-service.ts | 5 +++++ .../instl-sncn/model/instl-sncn-interface.ts | 1 + .../ui/components/floating-action-buttons.tsx | 19 ++++++++++++++++++- .../ui/components/floating-action-buttons.tsx | 16 +++++++++++++++- apps/as/src/shared/model/pbadms-sprt.ts | 2 ++ 7 files changed, 47 insertions(+), 2 deletions(-) diff --git a/apps/as/src/entities/fnrs-cnsltn/api/fnrs-cnsltn-service.ts b/apps/as/src/entities/fnrs-cnsltn/api/fnrs-cnsltn-service.ts index ffac5eb4a..a74838d49 100644 --- a/apps/as/src/entities/fnrs-cnsltn/api/fnrs-cnsltn-service.ts +++ b/apps/as/src/entities/fnrs-cnsltn/api/fnrs-cnsltn-service.ts @@ -98,6 +98,10 @@ async function changePrgrsSttsComCd(body: DocPrgrsUpdateRequestDto): Promise(`${BASE}/doc/updatePrgrsStts`, body); } +async function rejectPrgrsStts(body: DocPrgrsUpdateRequestDto): Promise { + await client.post(`${BASE}/doc/rejectPrgrsStts`, body); +} + export const fnrsCnsltnMngService = { findPage, findById, @@ -112,4 +116,5 @@ export const fnrsCnsltnMngService = { remove, findFileVrfcResults, changePrgrsSttsComCd, + rejectPrgrsStts, } satisfies FnrsCnsltnMngService; diff --git a/apps/as/src/entities/fnrs-cnsltn/model/fnrs-cnsltn-interface.ts b/apps/as/src/entities/fnrs-cnsltn/model/fnrs-cnsltn-interface.ts index 07d3983e9..adfd40338 100644 --- a/apps/as/src/entities/fnrs-cnsltn/model/fnrs-cnsltn-interface.ts +++ b/apps/as/src/entities/fnrs-cnsltn/model/fnrs-cnsltn-interface.ts @@ -145,4 +145,5 @@ export interface FnrsCnsltnMngService { remove(fnrsCnsltnDocNo: string): Promise; findFileVrfcResults(fnrsCnsltnDocNo: string): Promise; changePrgrsSttsComCd(body: DocPrgrsUpdateRequestDto): Promise; + rejectPrgrsStts(body: DocPrgrsUpdateRequestDto): Promise; } diff --git a/apps/as/src/entities/instl-sncn/api/instl-sncn-service.ts b/apps/as/src/entities/instl-sncn/api/instl-sncn-service.ts index 4c442a3da..4804f22fb 100644 --- a/apps/as/src/entities/instl-sncn/api/instl-sncn-service.ts +++ b/apps/as/src/entities/instl-sncn/api/instl-sncn-service.ts @@ -91,6 +91,10 @@ async function changePrgrsSttsComCd(payload: DocPrgrsUpdateRequestDto): Promise< await client.post(`${BASE}/doc/updatePrgrsStts`, payload); } +async function rejectPrgrsStts(payload: DocPrgrsUpdateRequestDto): Promise { + await client.post(`${BASE}/doc/rejectPrgrsStts`, payload); +} + export const instlSncnService = { getPage, getById, @@ -102,6 +106,7 @@ export const instlSncnService = { submitReqSupplement, remove, changePrgrsSttsComCd, + rejectPrgrsStts, } satisfies InstlSncnMngService; // TODO: st-anls-mst service 로 분리 diff --git a/apps/as/src/entities/instl-sncn/model/instl-sncn-interface.ts b/apps/as/src/entities/instl-sncn/model/instl-sncn-interface.ts index 1eea8c4c9..aebbc5c6f 100644 --- a/apps/as/src/entities/instl-sncn/model/instl-sncn-interface.ts +++ b/apps/as/src/entities/instl-sncn/model/instl-sncn-interface.ts @@ -131,4 +131,5 @@ export interface InstlSncnMngService { submitReqSupplement: (id: string, payload: InstlSncnApplySaveRequestDto) => Promise; remove: (id: string) => Promise; changePrgrsSttsComCd: (payload: DocPrgrsUpdateRequestDto) => Promise; + rejectPrgrsStts: (payload: DocPrgrsUpdateRequestDto) => Promise; } diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/components/floating-action-buttons.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/components/floating-action-buttons.tsx index 6d865fb68..2cf9267a4 100644 --- a/apps/as/src/pages/fnrs-cnsltn/ui/components/floating-action-buttons.tsx +++ b/apps/as/src/pages/fnrs-cnsltn/ui/components/floating-action-buttons.tsx @@ -462,6 +462,7 @@ function FloatingActionButtons({ docNo, docSeComCd, prgrsSttsComCd: "LE", + rgtrUuid: userInfo?.userUnqId, }; await executeAction({ action: FNRS_CNSLTN_VIEW_BUTTON_ACTION.envoSbmsn, @@ -471,10 +472,14 @@ function FloatingActionButtons({ } async function handleRjctClick() { + if (!(await confirm("해당 신청 건을 반려하시겠습니까?"))) { + return; + } const payload: DocPrgrsUpdateRequestDto = { docNo, docSeComCd, prgrsSttsComCd: "SV", + rgtrUuid: userInfo?.userUnqId, }; await executeAction({ action: FNRS_CNSLTN_VIEW_BUTTON_ACTION.rjct, @@ -488,6 +493,7 @@ function FloatingActionButtons({ docNo, docSeComCd, prgrsSttsComCd: "TA", + rgtrUuid: userInfo?.userUnqId, }; await executeAction({ action: FNRS_CNSLTN_VIEW_BUTTON_ACTION.sncnAprv, @@ -1114,6 +1120,17 @@ async function handleChangePrgrsSttsComCd( } } +async function handleRejectPrgrsStts( + context: ActionHandlerContext, +): Promise { + try { + await fnrsCnsltnMngService.rejectPrgrsStts(context.request); + context.onSuccess?.(); + } catch (error) { + context.onError?.(error as Error); + } +} + async function handleTechReview( context: ActionHandlerContext, ): Promise { @@ -1200,7 +1217,7 @@ const buttonActionHandlers: Record = aply: handleSaveApply, del: handleDel, envoSbmsn: handleChangePrgrsSttsComCd, - rjct: handleChangePrgrsSttsComCd, + rjct: handleRejectPrgrsStts, sncnAprv: handleChangePrgrsSttsComCd, rvwRply: handleTechReview, rvwOpnnRply: handleTechReview, diff --git a/apps/as/src/pages/instl-sncn/ui/components/floating-action-buttons.tsx b/apps/as/src/pages/instl-sncn/ui/components/floating-action-buttons.tsx index a34c23292..3fe70d66c 100644 --- a/apps/as/src/pages/instl-sncn/ui/components/floating-action-buttons.tsx +++ b/apps/as/src/pages/instl-sncn/ui/components/floating-action-buttons.tsx @@ -221,10 +221,13 @@ function FloatingActionButtons({ } async function handleRjctClick() { + if (!(await confirm("해당 신청 건을 반려하시겠습니까?"))) return; + const payload: DocPrgrsUpdateRequestDto = { docNo, docSeComCd, prgrsSttsComCd: "SV", + rgtrUuid: userInfo?.userUnqId, }; await executeAction({ action: INSTL_SNCN_VIEW_BUTTON_ACTION.rjct, @@ -516,6 +519,17 @@ async function handleChangePrgrsSttsComCd( } } +async function handleRejectPrgrsStts( + context: ActionHandlerContext, +): Promise { + try { + await instlSncnService.rejectPrgrsStts(context.request); + context.onSuccess?.(); + } catch (error) { + context.onError?.(error as Error); + } +} + async function handleTechReview( context: ActionHandlerContext, ): Promise { @@ -566,7 +580,7 @@ const buttonActionHandlers: Record = { aply: handleSaveApply, del: handleDel, instlSncnAncmnt: handleChangePrgrsSttsComCd, - rjct: handleChangePrgrsSttsComCd, + rjct: handleRejectPrgrsStts, sncnAprv: handleChangePrgrsSttsComCd, rvwRply: handleTechReview, rqstTechRvw: handleChangePrgrsSttsComCd, diff --git a/apps/as/src/shared/model/pbadms-sprt.ts b/apps/as/src/shared/model/pbadms-sprt.ts index 32070e7e6..c0b605685 100644 --- a/apps/as/src/shared/model/pbadms-sprt.ts +++ b/apps/as/src/shared/model/pbadms-sprt.ts @@ -6,6 +6,8 @@ export interface DocPrgrsUpdateRequestDto { docSeComCd: string; /** 진행상태공통코드 */ prgrsSttsComCd: string; + /** 작성자 UUID */ + rgtrUuid?: string; } /** 공종 트리와 사업규모(수량) 조합 DTO */