diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx index 0f32da9b..bdb612a8 100644 --- a/src/components/floor-plan/CanvasMenu.jsx +++ b/src/components/floor-plan/CanvasMenu.jsx @@ -41,7 +41,7 @@ import { isObjectNotEmpty } from '@/util/common-utils' import KO from '@/locales/ko.json' import JA from '@/locales/ja.json' -import { MENU } from '@/common/common' +import { MENU, POLYGON_TYPE } from '@/common/common' import { QcastContext } from '@/app/QcastProvider' @@ -167,7 +167,12 @@ export default function CanvasMenu(props) { setType('surface') break case 4: - setType('module') + if (!checkMenuAndCanvasState()) { + swalFire({ text: getMessage('estimate.menu.move.valid1') }) + return + } else { + setType('module') + } break case 5: // let pid = urlParams.get('pid') @@ -328,6 +333,14 @@ export default function CanvasMenu(props) { return (['2', '3'].includes(canvasSetting?.roofSizeSet) && menu.index === 2) || (menuNumber === 4 && menu.index === 2) } + const checkMenuAndCanvasState = () => { + const roofs = canvas?.getObjects().filter((obj) => obj.name === POLYGON_TYPE.ROOF) + // 지붕면 할당이 끝난 지붕이 하나라도 있는지 체크 + const isExist = roofs?.some((roof) => roof.roofMaterial) + console.log('🚀 ~ checkMenuAndCanvasState ~ isExist:', isExist) + return isExist + } + useEffect(() => { if (isObjectNotEmpty(estimateRecoilState)) { if (estimateRecoilState?.createUser === 'T01') { diff --git a/src/hooks/common/useCanvasPopupStatusController.js b/src/hooks/common/useCanvasPopupStatusController.js index feddf30d..78cd4e9d 100644 --- a/src/hooks/common/useCanvasPopupStatusController.js +++ b/src/hooks/common/useCanvasPopupStatusController.js @@ -11,7 +11,7 @@ import { compasDegAtom } from '@/store/orientationAtom' import { currentCanvasPlanState } from '@/store/canvasAtom' export function useCanvasPopupStatusController(param = 1) { - const popupType = param + const popupType = parseInt(param) const [compasDeg, setCompasDeg] = useRecoilState(compasDegAtom) const [moduleSelectionDataStore, setModuleSelectionDataStore] = useRecoilState(moduleSelectionDataState) @@ -67,7 +67,7 @@ export function useCanvasPopupStatusController(param = 1) { objectNo: currentCanvasPlan.objectNo, planNo: parseInt(currentCanvasPlan.planNo), popupType: popupType.toString(), - popupStatus: JSON.stringify(arg).replace(/"/g, '\"'), + popupStatus: popupType === 1 ? arg : JSON.stringify(arg).replace(/"/g, '\"'), } postFetcher(`/api/v1/canvas-popup-status`, params) }, diff --git a/src/hooks/option/useCanvasSetting.js b/src/hooks/option/useCanvasSetting.js index 11d5d207..cad8c57a 100644 --- a/src/hooks/option/useCanvasSetting.js +++ b/src/hooks/option/useCanvasSetting.js @@ -194,6 +194,9 @@ export function useCanvasSetting() { } const { column } = corridorDimension const lengthTexts = canvas.getObjects().filter((obj) => obj.name === 'lengthText') + lengthTexts.forEach((obj) => { + obj.set({ text: '' }) + }) switch (column) { case 'corridorDimension': lengthTexts.forEach((obj) => {