From 4e8cc409d481f3b1aa83b3735a142488a2ce1452 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Wed, 28 May 2025 10:26:38 +0900 Subject: [PATCH] =?UTF-8?q?#1068=20[=EC=98=A4=EB=A5=98]=20=EA=B2=AC?= =?UTF-8?q?=EC=A0=81=EC=84=9C=20=EC=83=9D=EC=84=B1=EB=90=9C=20=ED=94=8C?= =?UTF-8?q?=EB=9E=9C=EB=B3=B5=EC=82=AC=20-->=20=EB=B3=B5=EC=82=AC=EB=90=9C?= =?UTF-8?q?=20=ED=94=8C=EB=9E=9C=EC=97=90=EC=84=9C=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20-->=20=EA=B2=AC=EC=A0=81=EC=84=9C=20?= =?UTF-8?q?=EC=A7=84=EC=9E=85=EC=9D=B4=20=EB=90=A8..?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/floor-plan/CanvasMenu.jsx | 7 +++++++ .../modal/circuitTrestle/CircuitTrestleSetting.jsx | 4 ++++ src/hooks/module/useTrestle.js | 3 +++ 3 files changed, 14 insertions(+) diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx index d4cacee0..5d2d1030 100644 --- a/src/components/floor-plan/CanvasMenu.jsx +++ b/src/components/floor-plan/CanvasMenu.jsx @@ -50,6 +50,7 @@ import JA from '@/locales/ja.json' import { QcastContext } from '@/app/QcastProvider' import { useRoofFn } from '@/hooks/common/useRoofFn' import { usePolygon } from '@/hooks/usePolygon' +import { useTrestle } from '@/hooks/module/useTrestle' export default function CanvasMenu(props) { const { selectedMenu, setSelectedMenu } = props const pathname = usePathname() @@ -67,6 +68,7 @@ export default function CanvasMenu(props) { const globalLocale = useRecoilValue(globalLocaleStore) const canvas = useRecoilValue(canvasState) const { handleZoomClear, handleZoom } = useCanvasEvent() + const { setAllModuleSurfaceIsComplete, isAllComplete } = useTrestle() const { handleMenu } = useMenu() // const urlParams = useSearchParams() const { handleEstimateSubmit, fetchSetting, estimateContextState, setEstimateContextState } = useEstimateController() @@ -194,6 +196,7 @@ export default function CanvasMenu(props) { confirmFn: () => { //해당 메뉴 이동시 배치면 삭제 + setAllModuleSurfaceIsComplete(false) const moduleSurfacesArray = canvas .getObjects() .filter((obj) => [POLYGON_TYPE.MODULE_SETUP_SURFACE, POLYGON_TYPE.MODULE, POLYGON_TYPE.OBJECT_SURFACE].includes(obj.name)) @@ -233,6 +236,10 @@ export default function CanvasMenu(props) { await reloadCanvasStatus(objectNo, pid) break case 'estimate': + if (!isAllComplete()) { + swalFire({ text: getMessage('estimate.menu.move.valid1') }) + return + } setIsGlobalLoading(true) promiseGet({ url: `/api/estimate/${objectNo}/${selectedPlan.planNo}/detail` }).then((res) => { if (res.status === 200) { diff --git a/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx b/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx index 1118623e..da906a67 100644 --- a/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx @@ -154,6 +154,7 @@ export default function CircuitTrestleSetting({ id }) { getPcsVoltageChk(pcsVoltageChkParams).then((res) => { if (res.resultCode === 'S') { setTabNum(2) + setAllModuleSurfaceIsComplete(false) } else { swalFire({ title: res.resultMsg, @@ -187,6 +188,7 @@ export default function CircuitTrestleSetting({ id }) { }).then((res) => { if (res?.result.resultCode === 'S' && res?.data) { setTabNum(2) + setAllModuleSurfaceIsComplete(false) } else { swalFire({ text: getMessage('common.message.send.error') }) } @@ -286,6 +288,7 @@ export default function CircuitTrestleSetting({ id }) { setSelectedModels(pcsItemList) getPcsVoltageChk(pcsVoltageChkParams).then((res) => { setAllocationType(ALLOCATION_TYPE.PASSIVITY) + setAllModuleSurfaceIsComplete(false) }) } else { swalFire({ @@ -654,6 +657,7 @@ export default function CircuitTrestleSetting({ id }) { return } else { setTabNum(2) + setAllModuleSurfaceIsComplete(false) } }) } diff --git a/src/hooks/module/useTrestle.js b/src/hooks/module/useTrestle.js index 738a5289..8a41149d 100644 --- a/src/hooks/module/useTrestle.js +++ b/src/hooks/module/useTrestle.js @@ -3077,6 +3077,9 @@ export const useTrestle = () => { // 배치면 전체에 가대 설치 여부 const isAllComplete = () => { const surfaces = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) + if (surfaces.length === 0) { + return false + } return surfaces.every((surface) => surface.isComplete) }