From d9e5196bc5d01e11548a5a590f009e262cf2360e Mon Sep 17 00:00:00 2001 From: basssy Date: Fri, 10 Jan 2025 09:16:17 +0900 Subject: [PATCH 1/7] =?UTF-8?q?=EC=84=A4=EA=B1=94=EC=9D=98=EB=A2=B0=20?= =?UTF-8?q?=EA=B2=80=EC=83=89=20=ED=8C=9D=EC=97=85=20=EA=B2=80=EC=83=89?= =?UTF-8?q?=EC=A1=B0=EA=B1=B4=20=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=20=ED=95=84?= =?UTF-8?q?=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/management/StuffDetail.jsx | 2 +- .../management/popup/PlanRequestPop.jsx | 32 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/components/management/StuffDetail.jsx b/src/components/management/StuffDetail.jsx index 9912a180..506df945 100644 --- a/src/components/management/StuffDetail.jsx +++ b/src/components/management/StuffDetail.jsx @@ -331,7 +331,7 @@ export default function StuffDetail() { //createUser가 T01인데 로그인사용자가 T01이 아니면 버튼숨기기 setShowButton('none') } - console.log('상세::', res.data) + // console.log('상세::', res.data) if (isObjectNotEmpty(res.data)) { let surfaceTypeValue if (res.data.surfaceType === 'Ⅲ・Ⅳ') { diff --git a/src/components/management/popup/PlanRequestPop.jsx b/src/components/management/popup/PlanRequestPop.jsx index 228a5b20..2dafe914 100644 --- a/src/components/management/popup/PlanRequestPop.jsx +++ b/src/components/management/popup/PlanRequestPop.jsx @@ -19,7 +19,7 @@ export default function PlanRequestPop(props) { //공통코드 const { commonCode, findCommonCode } = useCommonCode() - const [planStatCdList, setPlanStatCdList] = useState([]) + // const [planStatCdList, setPlanStatCdList] = useState([]) const globalLocaleState = useRecoilValue(globalLocaleStore) @@ -169,13 +169,13 @@ export default function PlanRequestPop(props) { gridData: [], isPageable: false, gridColumns: [ - { - field: 'planStatName', - headerName: getMessage('stuff.planReqPopup.gridHeader.planStatName'), - minWidth: 150, - checkboxSelection: true, - showDisabledCheckboxes: true, - }, + // { + // field: 'planStatName', + // headerName: getMessage('stuff.planReqPopup.gridHeader.planStatName'), + // minWidth: 150, + // checkboxSelection: true, + // showDisabledCheckboxes: true, + // }, { field: 'planReqNo', headerName: getMessage('stuff.planReqPopup.gridHeader.planReqNo'), @@ -234,12 +234,12 @@ export default function PlanRequestPop(props) { } } - useEffect(() => { - const code1 = findCommonCode(115800) //상태 - if (code1 != null) { - setPlanStatCdList(code1) - } - }, [commonCode]) + // useEffect(() => { + // const code1 = findCommonCode(115800) //상태 + // if (code1 != null) { + // setPlanStatCdList(code1) + // } + // }, [commonCode]) useEffect(() => { onSubmit(pageNo, 'S') @@ -380,7 +380,7 @@ export default function PlanRequestPop(props) { /> - {getMessage('stuff.planReqPopup.search.planStatName')} + {/* {getMessage('stuff.planReqPopup.search.planStatName')}
+ { + handleChangeInput(e, 'pitch', index) + }} + defaultValue={currentAngleType === 'slope' ? roof.pitch : getDegreeByChon(roof.pitch)} + />
{pitchText} @@ -121,7 +133,13 @@ export default function RoofAllocationSetting(props) {
W
- + handleChangeInput(e, 'width', index)} + readOnly={roof.widAuth === 'R'} + />
)} @@ -129,7 +147,13 @@ export default function RoofAllocationSetting(props) {
L
- + handleChangeInput(e, 'length', index)} + readOnly={roof.lenAuth === 'R'} + />
)} @@ -164,6 +188,7 @@ export default function RoofAllocationSetting(props) { handleChangeInput(e, 'hajebichi', index)} value={parseInt(roof.hajebichi)} readOnly={roof.roofPchAuth === 'R'} /> diff --git a/src/hooks/roofcover/useRoofAllocationSetting.js b/src/hooks/roofcover/useRoofAllocationSetting.js index 70c421b9..638da76a 100644 --- a/src/hooks/roofcover/useRoofAllocationSetting.js +++ b/src/hooks/roofcover/useRoofAllocationSetting.js @@ -1,10 +1,17 @@ import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil' -import { canvasState, currentMenuState, currentObjectState } from '@/store/canvasAtom' +import { canvasState, currentAngleTypeSelector, currentMenuState, currentObjectState } from '@/store/canvasAtom' import { useEffect, useRef, useState } from 'react' import { useAxios } from '@/hooks/useAxios' import { useSwal } from '@/hooks/useSwal' import { usePolygon } from '@/hooks/usePolygon' -import { correntObjectNoState, addedRoofsState, basicSettingState, roofDisplaySelector, roofMaterialsSelector, selectedRoofMaterialSelector } from '@/store/settingAtom' +import { + correntObjectNoState, + addedRoofsState, + basicSettingState, + roofDisplaySelector, + roofMaterialsSelector, + selectedRoofMaterialSelector, +} from '@/store/settingAtom' import { usePopup } from '@/hooks/usePopup' import { POLYGON_TYPE } from '@/common/common' import { v4 as uuidv4 } from 'uuid' @@ -16,6 +23,7 @@ import { menuTypeState } from '@/store/menuAtom' import { useRoofFn } from '@/hooks/common/useRoofFn' import { ROOF_MATERIAL_LAYOUT } from '@/components/floor-plan/modal/placementShape/PlacementShapeSetting' import { globalLocaleStore } from '@/store/localeAtom' +import { getChonByDegree } from '@/util/canvas-util' // 지붕면 할당 export function useRoofAllocationSetting(id) { @@ -37,6 +45,7 @@ export function useRoofAllocationSetting(id) { const [roofList, setRoofList] = useRecoilState(addedRoofsState) // 배치면 초기설정에서 선택한 지붕재 배열 const [editingLines, setEditingLines] = useState([]) const [currentRoofList, setCurrentRoofList] = useState(roofList) + const currentAngleType = useRecoilValue(currentAngleTypeSelector) const globalLocaleState = useRecoilValue(globalLocaleStore) const { get, post } = useAxios(globalLocaleState) @@ -110,7 +119,6 @@ export function useRoofAllocationSetting(id) { } }) } else { - roofsArray = [ { roofApply: true, @@ -131,27 +139,28 @@ export function useRoofAllocationSetting(id) { } console.log('fetchBasicSettings roofsArray', roofsArray) - + // 데이터 설정 const selectRoofs = [] - for (let i = 0; i < roofsArray.length; i++) { - roofMaterials?.map((material) => { + for (let i = 0; i < roofsArray.length; i++) { + roofMaterials?.map((material) => { if (material.roofMatlCd === roofsArray[i].roofMatlCd) { - selectRoofs.push({ ...material - , selected: roofsArray[i].roofApply - , index: roofsArray[i].roofSeq - , id: roofsArray[i].roofMatlCd - , width: roofsArray[i].roofWidth - , length: roofsArray[i].roofHeight - , hajebichi: roofsArray[i].roofHajebichi - , raft: roofsArray[i].roofGap - , layout: roofsArray[i].roofLayout - }) + selectRoofs.push({ + ...material, + selected: roofsArray[i].roofApply, + index: roofsArray[i].roofSeq, + id: roofsArray[i].roofMatlCd, + width: roofsArray[i].roofWidth, + length: roofsArray[i].roofHeight, + hajebichi: roofsArray[i].roofHajebichi, + raft: roofsArray[i].roofGap, + layout: roofsArray[i].roofLayout, + }) setCurrentRoofList(selectRoofs) } }) } - setBasicSetting({ ...basicSetting, roofsData: roofsArray}) + setBasicSetting({ ...basicSetting, roofsData: roofsArray }) }) } catch (error) { console.error('Data fetching error:', error) @@ -160,11 +169,10 @@ export function useRoofAllocationSetting(id) { // 저장 const basicSettingSave = async () => { - const patternData = { objectNo: correntObjectNo, roofSizeSet: basicSetting.roofSizeSet, - roofAngleSet: basicSetting.roofAngleSet, + roofAngleSet: basicSetting.roofAngleSet, roofMaterialsAddList: currentRoofList.map((item) => ({ roofApply: item.selected === null || item.selected === undefined ? 'true' : item.selected, roofSeq: item.index === null || item.index === undefined ? 0 : item.index, @@ -174,24 +182,23 @@ export function useRoofAllocationSetting(id) { roofHajebichi: item.hajebichi === null || item.hajebichi === undefined ? 0 : item.hajebichi, roofGap: item.raft === null || item.raft === undefined ? 'HEI_455' : item.raft, roofLayout: item.layout === null || item.layout === undefined ? 'P' : item.layout, + })), + } + + console.log('🚀 ~ basicSettingSave ~ patternData >>>>>>>>>>>>> :', patternData) + + // HTTP POST 요청 보내기 + await post({ url: `/api/canvas-management/canvas-basic-settings`, data: patternData }) + .then((res) => { + swalFire({ text: getMessage(res.returnMessage) }) + + //Recoil 설정 + // setCanvasSetting({ ...basicSetting }) + fetchBasicSettings() + }) + .catch((error) => { + swalFire({ text: error.message, icon: 'error' }) }) - ), - } - - console.log('🚀 ~ basicSettingSave ~ patternData >>>>>>>>>>>>> :', patternData) - - // HTTP POST 요청 보내기 - await post({ url: `/api/canvas-management/canvas-basic-settings`, data: patternData }) - .then((res) => { - swalFire({ text: getMessage(res.returnMessage) }) - - //Recoil 설정 - // setCanvasSetting({ ...basicSetting }) - fetchBasicSettings() - }) - .catch((error) => { - swalFire({ text: error.message, icon: 'error' }) - }) } const onAddRoofMaterial = () => { @@ -221,17 +228,15 @@ export function useRoofAllocationSetting(id) { } // 선택한 지붕재로 할당 - const handleSave = () => { - + const handleSave = () => { basicSettingSave() // 모두 actualSize 있으면 바로 적용 없으면 actualSize 설정 - if (checkInnerLines()) { + if (checkInnerLines()) { addPopup(popupId, 1, ) } else { apply() } - } // 지붕재 오른쪽 마우스 클릭 후 단일로 지붕재 변경 필요한 경우 @@ -417,6 +422,65 @@ export function useRoofAllocationSetting(id) { setCurrentRoofList(newRoofList) } + const handleChangeInput = (e, type, index) => { + const value = e.target.value + if (type === 'pitch') { + // type이 pitch인 경우 소수점 1자리까지만 입력 가능 + const reg = /^[0-9]+(\.[0-9]{0,1})?$/ + + if (!reg.test(value)) { + e.target.value = value.substring(0, value.length - 1) + const newRoofList = currentRoofList.map((roof, idx) => { + if (idx === index) { + return { + ...roof, + [type]: currentAngleType === 'slope' ? value.substring(0, value.length - 1) : getChonByDegree(value.substring(0, value.length - 1)), + } + } + return roof + }) + + setCurrentRoofList(newRoofList) + + return + } else { + const newRoofList = currentRoofList.map((roof, idx) => { + if (idx === index) { + return { + ...roof, + [type]: currentAngleType === 'slope' ? value : getChonByDegree(value), + } + } + return roof + }) + + setCurrentRoofList(newRoofList) + } + + return + } + const newRoofList = currentRoofList.map((roof, idx) => { + if (idx === index) { + return { ...roof, [type]: value } + } + return roof + }) + + setCurrentRoofList(newRoofList) + } + + const handleChangePitch = (e, index) => { + const value = e.target.value + const newRoofList = currentRoofList.map((roof, idx) => { + if (idx === index) { + return { ...roof, pitch: value } + } + return roof + }) + + setCurrentRoofList(newRoofList) + } + return { handleSave, onAddRoofMaterial, @@ -435,5 +499,7 @@ export function useRoofAllocationSetting(id) { handleChangeLayout, handleSaveContext, currentRoofList, + handleChangeInput, + handleChangePitch, } } diff --git a/src/hooks/usePolygon.js b/src/hooks/usePolygon.js index a844dd6b..3a5c88f5 100644 --- a/src/hooks/usePolygon.js +++ b/src/hooks/usePolygon.js @@ -268,7 +268,7 @@ export const usePolygon = () => { surfaceCompass: polygon.surfaceCompass, moduleCompass: polygon.moduleCompass, visible: isFlowDisplay, - pitch: polygon.pitch, + pitch: polygon.roofMaterial.pitch ?? 4, parentId: polygon.id, }) From 65a7126a591ceba1c75d1a99f553e450cd46cb51 Mon Sep 17 00:00:00 2001 From: basssy Date: Fri, 10 Jan 2025 10:48:35 +0900 Subject: [PATCH 5/7] =?UTF-8?q?=EC=BA=94=EB=B2=84=EC=8A=A4=20=EB=A9=94?= =?UTF-8?q?=EB=89=B4=20=ED=83=AD=EC=97=90=20=EB=AC=BC=EA=B1=B4=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20&=20=EA=B2=AC=EC=A0=81=EC=84=9C=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=9D=B4=EB=8F=99=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/floor-plan/CanvasMenu.jsx | 21 +++++++++++++++++++-- src/locales/ja.json | 1 + src/locales/ko.json | 1 + 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx index d61c29c6..91173b89 100644 --- a/src/components/floor-plan/CanvasMenu.jsx +++ b/src/components/floor-plan/CanvasMenu.jsx @@ -135,6 +135,15 @@ export default function CanvasMenu(props) { const onClickNav = (menu) => { switch (menu.index) { + case 0: + swalFire({ + text: getMessage('stuff.detail.move.confirmMsg'), + type: 'confirm', + confirmFn: () => { + router.push(`/management/stuff/detail?objectNo=${objectNo}`) + }, + }) + break case 1: setType('placementShape') onClickPlacementInitialMenu() @@ -153,6 +162,11 @@ export default function CanvasMenu(props) { case 4: setType('module') break + case 5: + setMenuNumber(menu.index) + setCurrentMenu(menu.title) + router.push(`/floor-plan/estimate/5?pid=${pid}&objectNo=${objectNo}`) + break case 6: promiseGet({ url: `/api/estimate/${objectNo}/${pid}/detail` }).then((res) => { if (res.status === 200) { @@ -169,12 +183,14 @@ export default function CanvasMenu(props) { break } - if (menu.index !== 6) { + if (menu.index !== 6 && menu.index !== 0) { setMenuNumber(menu.index) setCurrentMenu(menu.title) } - if (pathname !== '/floor-plan') router.push(`/floor-plan?pid=${pid}&objectNo=${objectNo}`) + if (pathname !== '/floor-plan' && pathname !== '/floor-plan/estimate/5') { + router.push(`/floor-plan?pid=${pid}&objectNo=${objectNo}`) + } } const changeSelectedRoofMaterial = (e) => { @@ -236,6 +252,7 @@ export default function CanvasMenu(props) { // 견적서 초기화 버튼 const handleEstimateReset = () => { + return alert('개발전입니다;;;') // console.log('estimateRecoilState::', estimateRecoilState) //objectNo, planNo swalFire({ diff --git a/src/locales/ja.json b/src/locales/ja.json index b589de1d..829c5e61 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -687,6 +687,7 @@ "stuff.detail.save.valierror2": "設置高さ0より大きい値を入力してください", "stuff.detail.save.valierror3": "{0} 必須入力項目です.", "stuff.detail.save.valierror4": "二次販売店名は必須オプションです.", + "stuff.detail.move.confirmMsg": "商品情報画面に移動します。 [保存]していない図面情報は削除されます。商品情報画面に移動しますか?", "stuff.planReqPopup.popTitle": "設計依頼検索", "stuff.planReqPopup.btn1": "検索", "stuff.planReqPopup.btn2": "初期化", diff --git a/src/locales/ko.json b/src/locales/ko.json index b85beaa0..2f7b3df6 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -697,6 +697,7 @@ "stuff.detail.save.valierror2": "설치높이는 0보다 큰 값을 입력하세요", "stuff.detail.save.valierror3": "{0} 필수 입력 항목입니다.", "stuff.detail.save.valierror4": "2차 판매점명은 필수 선택사항입니다.", + "stuff.detail.move.confirmMsg": "물건정보 화면으로 이동합니다. [저장]하지 않은 도면정보는 삭제됩니다. 물건정보 화면으로 이동하시겠습니까?", "stuff.planReqPopup.popTitle": "설계 의뢰 검색", "stuff.planReqPopup.btn1": "검색", "stuff.planReqPopup.btn2": "초기화", From 757002b0b1791fb3970fe949e0c594bca5f9e101 Mon Sep 17 00:00:00 2001 From: leeyongjae Date: Fri, 10 Jan 2025 11:10:50 +0900 Subject: [PATCH 6/7] =?UTF-8?q?=EB=B0=9C=EC=A0=84=20=EC=8B=9C=EB=AE=AC?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=85=98=20=EC=B4=88=EA=B8=B0=ED=99=94=20?= =?UTF-8?q?=EC=85=8B=ED=8C=85=20=EA=B0=92=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/simulator/Simulator.jsx | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/components/simulator/Simulator.jsx b/src/components/simulator/Simulator.jsx index 54d2c808..603a5fde 100644 --- a/src/components/simulator/Simulator.jsx +++ b/src/components/simulator/Simulator.jsx @@ -3,6 +3,7 @@ import 'chart.js/auto' import { Bar } from 'react-chartjs-2' import dayjs from 'dayjs' +import { v4 as uuidv4 } from 'uuid' import { useEffect, useState, useRef, useContext } from 'react' import { useRecoilState } from 'recoil' @@ -14,11 +15,16 @@ import { useMessage } from '@/hooks/useMessage' import { useCanvasMenu } from '@/hooks/common/useCanvasMenu' import { convertNumberToPriceDecimal } from '@/util/common-utils' +// import { useSearchParams } from 'next/navigation' export default function Simulator() { const { floorPlanState } = useContext(FloorPlanContext) const { objectNo, pid } = floorPlanState + // const searchParams = useSearchParams() + // const objectNo = searchParams.get('objectNo') + // const pid = searchParams.get('pid') + const chartRef = useRef(null) // 캔버스 메뉴 넘버 셋팅 @@ -96,6 +102,16 @@ export default function Simulator() { } useEffect(() => { + /* 초기화 작업 */ + setChartData([]) + setObjectDetail({}) + setModuleInfoList([]) + setPcsInfoList([]) + setHatsudenryouAll([]) + setHatsudenryouAllSnow([]) + setHatsudenryouPeakcutAll([]) + setHatsudenryouPeakcutAllSnow([]) + if (objectNo) { fetchObjectDetail(objectNo) fetchSimulatorNotice() @@ -192,7 +208,8 @@ export default function Simulator() {
{getMessage('simulator.title.sub1')}
- {objectDetail.objectNo} (Plan No: {pid}) + {objectDetail.objectNo} + {`${objectDetail.planNo ? `(Plan No: ${objectDetail.planNo})` : ''}`}
{/* 작성일 */} @@ -291,7 +308,7 @@ export default function Simulator() { {chartData.length > 0 ? ( {chartData.map((data) => ( - {data} + {data} ))} ) : ( From 5c0d5bb884741347db128760d850ed2cccb30fb7 Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Fri, 10 Jan 2025 11:12:28 +0900 Subject: [PATCH 7/7] =?UTF-8?q?=F0=9F=93=8C=EB=AC=BC=EA=B1=B4=20=EB=B0=8F?= =?UTF-8?q?=20=EB=8F=84=EB=A9=B4=EA=B4=80=EB=A6=AC=20=EB=A9=94=EB=89=B4=20?= =?UTF-8?q?url=20=EC=B2=98=EB=A6=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - pid 파라미터에 따른 url 이동 수정 --- src/app/floor-plan/FloorPlanProvider.js | 17 ++++++++++++++++- src/app/floor-plan/layout.js | 2 +- src/hooks/usePlan.js | 25 ++++++++++++++++--------- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/app/floor-plan/FloorPlanProvider.js b/src/app/floor-plan/FloorPlanProvider.js index 37399ddd..649deb78 100644 --- a/src/app/floor-plan/FloorPlanProvider.js +++ b/src/app/floor-plan/FloorPlanProvider.js @@ -23,6 +23,17 @@ const defaultEstimateData = { priceCd: '', } +/** + * 모듈,회로 구성 상태 데이터 + * 각 설정 팝업 상태를 저장하는 데이터 + */ +const defaultProcessStep = { + gnbStep: 0, + processStep: 0, + moduleCofigureData: {}, + pcsConfigureData: {}, +} + export const FloorPlanContext = createContext({ floorPlanState: {}, setFloorPlanState: () => {}, @@ -57,8 +68,12 @@ const FloorPlanProvider = ({ children }) => { const [estimateContextState, setEstimateContextState] = useReducer(reducer, defaultEstimateData) + const [processStepState, setProcessStepState] = useReducer(reducer, defaultProcessStep) + return ( - + {children} ) diff --git a/src/app/floor-plan/layout.js b/src/app/floor-plan/layout.js index e87ca2e8..5ea3b08c 100644 --- a/src/app/floor-plan/layout.js +++ b/src/app/floor-plan/layout.js @@ -1,9 +1,9 @@ 'use client' +import { usePathname } from 'next/navigation' import FloorPlanProvider from './FloorPlanProvider' import FloorPlan from '@/components/floor-plan/FloorPlan' import CanvasLayout from '@/components/floor-plan/CanvasLayout' -import { usePathname } from 'next/navigation' export default function FloorPlanLayout({ children }) { console.log('🚀 ~ FloorPlanLayout ~ FloorPlanLayout:') diff --git a/src/hooks/usePlan.js b/src/hooks/usePlan.js index 0f185d3f..d979ab56 100644 --- a/src/hooks/usePlan.js +++ b/src/hooks/usePlan.js @@ -1,7 +1,7 @@ 'use client' -import { useEffect, useState } from 'react' -import { useRouter } from 'next/navigation' +import { useContext, useEffect, useState } from 'react' +import { usePathname, useRouter } from 'next/navigation' import { useRecoilState } from 'recoil' import { v4 as uuidv4 } from 'uuid' @@ -13,8 +13,12 @@ import { useSwal } from '@/hooks/useSwal' import { useCanvas } from '@/hooks/useCanvas' import { SAVE_KEY } from '@/common/common' import { readImage, removeImage } from '@/lib/fileAction' +import { FloorPlanContext } from '@/app/floor-plan/FloorPlanProvider' export function usePlan(params = {}) { + const pObjectNo = params.objectNo + const { floorPlanState } = useContext(FloorPlanContext) + const [planNum, setPlanNum] = useState(0) const [selectedPlan, setSelectedPlan] = useState(null) @@ -24,6 +28,7 @@ export function usePlan(params = {}) { const [plans, setPlans] = useRecoilState(plansState) // 전체 plan const router = useRouter() + const pathname = usePathname() const { swalFire } = useSwal() const { getMessage } = useMessage() @@ -199,10 +204,12 @@ export function usePlan(params = {}) { * 현재 plan의 작업상태를 저장 후 이동 */ const handleCurrentPlan = async (newCurrentId) => { - if (!currentCanvasPlan || currentCanvasPlan.id !== newCurrentId) { - await saveCanvas() - updateCurrentPlan(newCurrentId) + if (pathname === '/floor-plan') { + if (!currentCanvasPlan || currentCanvasPlan.id !== newCurrentId) { + await saveCanvas() + } } + updateCurrentPlan(newCurrentId) } const updateCurrentPlan = (newCurrentId) => { @@ -219,9 +226,9 @@ export function usePlan(params = {}) { }, [plans]) // 현재 plan이 변경될 때 마다 현재 plan의 링크로 이동 - // useEffect(() => { - // handlePlanMove() - // }, [currentCanvasPlan]) + useEffect(() => { + handlePlanMove() + }, [currentCanvasPlan]) const setBgImage = () => { // readImage(selectedPlan?.id) @@ -312,7 +319,7 @@ export function usePlan(params = {}) { * 현재 plan 이동 -> 새로운 링크로 이동 */ const handlePlanMove = () => { - router.push(`/floor-plan?objectNo=${params?.objectNo}&pid=${currentCanvasPlan?.ordering}`) + router.push(`${pathname}?objectNo=${floorPlanState.objectNo}&pid=${currentCanvasPlan?.ordering}`) } return {