From ed1d419d0c91ae5fc14429c9c9af4127953966ef Mon Sep 17 00:00:00 2001 From: Daseul Kim Date: Sat, 8 Feb 2025 15:46:58 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EA=B2=AC=EC=A0=81=EC=84=9C=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=20=EC=9D=B4=ED=9B=84=20=EC=BA=94=EB=B2=84=EC=8A=A4?= =?UTF-8?q?=EB=A1=9C=20=EB=8F=8C=EC=95=84=EC=99=94=EC=9D=84=20=EB=95=8C=20?= =?UTF-8?q?=EC=BA=94=EB=B2=84=EC=8A=A4=20=EC=82=AC=EB=9D=BC=EC=A7=80?= =?UTF-8?q?=EB=8A=94=20=ED=98=84=EC=83=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit resolves: #656 --- src/components/floor-plan/CanvasFrame.jsx | 15 +++++++++------ .../circuitTrestle/CircuitTrestleSetting.jsx | 5 +++++ src/hooks/useEstimate.js | 5 +---- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/components/floor-plan/CanvasFrame.jsx b/src/components/floor-plan/CanvasFrame.jsx index bc0b403b..4a262bd2 100644 --- a/src/components/floor-plan/CanvasFrame.jsx +++ b/src/components/floor-plan/CanvasFrame.jsx @@ -33,7 +33,7 @@ export default function CanvasFrame() { const currentMenu = useRecoilValue(currentMenuState) const { floorPlanState } = useContext(FloorPlanContext) const { contextMenu, handleClick } = useContextMenu() - const { currentCanvasPlan } = usePlan() + const { plans, currentCanvasPlan } = usePlan() const totalDisplay = useRecoilValue(totalDisplaySelector) // 집계표 표시 여부 const { setIsGlobalLoading } = useContext(QcastContext) const resetModuleStatisticsState = useResetRecoilState(moduleStatisticsState) @@ -46,11 +46,14 @@ export default function CanvasFrame() { const loadCanvas = () => { if (canvas) { canvas?.clear() // 캔버스를 초기화합니다. - if (currentCanvasPlan?.canvasStatus && floorPlanState.objectNo === currentCanvasPlan.objectNo) { - canvas?.loadFromJSON(JSON.parse(currentCanvasPlan.canvasStatus), function () { - canvasLoadInit() //config된 상태로 캔버스 객체를 그린다 - canvas?.renderAll() // 캔버스를 다시 그립니다. - }) + if (currentCanvasPlan) { + const plan = plans.find((plan) => plan.id === currentCanvasPlan.id) + if (plan?.canvasStatus && floorPlanState.objectNo === currentCanvasPlan.objectNo) { + canvas?.loadFromJSON(JSON.parse(plan.canvasStatus), function () { + canvasLoadInit() //config된 상태로 캔버스 객체를 그린다 + canvas?.renderAll() // 캔버스를 다시 그립니다. + }) + } } gridInit() } diff --git a/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx b/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx index 60c2e168..84608186 100644 --- a/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx @@ -24,6 +24,7 @@ import { useEstimate } from '@/hooks/useEstimate' import { useCircuitTrestle } from '@/hooks/useCirCuitTrestle' import { useCanvasPopupStatusController } from '@/hooks/common/useCanvasPopupStatusController' import { useImgLoader } from '@/hooks/floorPlan/useImgLoader' +import { usePlan } from '@/hooks/usePlan' const ALLOCATION_TYPE = { AUTO: 'auto', @@ -53,6 +54,7 @@ export default function CircuitTrestleSetting({ id }) { const [seletedOption, setSeletedOption] = useState(null) const { handleCanvasToPng } = useImgLoader() + const { saveCanvas } = usePlan() const { makers, @@ -345,6 +347,9 @@ export default function CircuitTrestleSetting({ id }) { if (result) { handleCanvasToPng(2) setViewCircuitNumberTexts(true) + // 캔버스 저장 + await saveCanvas(false) + // 견적서 저장 await saveEstimate(result) } // removeNotAllocationModules() diff --git a/src/hooks/useEstimate.js b/src/hooks/useEstimate.js index e2ed851d..7abe27b1 100644 --- a/src/hooks/useEstimate.js +++ b/src/hooks/useEstimate.js @@ -5,7 +5,6 @@ import { useRecoilValue } from 'recoil' import { useAxios } from '@/hooks/useAxios' import { useSwal } from '@/hooks/useSwal' -import { usePlan } from '@/hooks/usePlan' import { GlobalDataContext } from '@/app/GlobalDataProvider' import { QcastContext } from '@/app/QcastProvider' import { currentCanvasPlanState } from '@/store/canvasAtom' @@ -20,7 +19,6 @@ export function useEstimate() { const { promisePost } = useAxios() const { swalFire } = useSwal() - const { saveCanvas } = usePlan() /** * 도면 견적서 저장 @@ -58,8 +56,7 @@ export function useEstimate() { await promisePost({ url: '/api/estimate/save-estimate', data: saveEstimateData }) .then(async () => { - // 견적서 저장이 완료되면 캔버스 저장 후 견적서 페이지로 이동 - await saveCanvas(false) + // 견적서 저장이 완료되면 견적서 페이지로 이동 moveEstimate(planNo, objectNo) }) .catch((error) => {