fix: 견적서 저장 이후 캔버스로 돌아왔을 때 캔버스 사라지는 현상 수정

resolves: #656, #677
This commit is contained in:
Daseul Kim 2025-02-08 21:44:22 +09:00
parent bd07a4aff2
commit 520c96eabf
2 changed files with 27 additions and 8 deletions

View File

@ -74,7 +74,7 @@ export default function CanvasMenu(props) {
const [estimateCopyPopupOpen, setEstimateCopyPopupOpen] = useState(false)
const { getMessage } = useMessage()
const { saveCanvas } = usePlan()
const { saveCanvas, reloadCanvasStatus } = usePlan()
const { swalFire } = useSwal()
const { initEvent, addCanvasMouseEventListener, addDocumentEventListener } = useEvent()
// const { initEvent, addCanvasMouseEventListener, addDocumentEventListener } = useContext(EventContext)
@ -149,7 +149,7 @@ export default function CanvasMenu(props) {
setIsGlobalLoading(false)
}
const onClickNav = (menu) => {
const onClickNav = async (menu) => {
switch (menu.index) {
case 0:
swalFire({
@ -164,10 +164,11 @@ export default function CanvasMenu(props) {
case 1:
setType('placementShape')
onClickPlacementInitialMenu()
await reloadCanvasStatus(objectNo, pid)
break
case 2:
setType('outline')
await reloadCanvasStatus(objectNo, pid)
break
case 3:
console.log('🚀 ~ onClickNav ~ menu:', menu)
@ -199,6 +200,7 @@ export default function CanvasMenu(props) {
} else {
setType('surface')
}
await reloadCanvasStatus(objectNo, pid)
break
case 4:
if (menuNumber < menu.index) {
@ -211,7 +213,7 @@ export default function CanvasMenu(props) {
} else {
router.push(`/floor-plan?pid=${pid}&objectNo=${objectNo}`)
}
await reloadCanvasStatus(objectNo, pid)
break
case 5:
setIsGlobalLoading(true)
@ -617,10 +619,10 @@ export default function CanvasMenu(props) {
<li
key={`canvas-menu-${menu.index}`}
className={`canvas-menu-item ${menuNumber === menu.index ? 'active' : ''}`}
onClick={() => {
onClick={async () => {
if (['2', '3'].includes(canvasSetting?.roofSizeSet) && menu.index === 2) return
if (menuNumber === 4 && [1, 2].includes(menu.index)) return
onClickNav(menu)
await onClickNav(menu)
}}
>
<button className={checkMenuState(menu) ? 'no-click' : ''}>

View File

@ -134,7 +134,7 @@ export function usePlan(params = {}) {
/**
* objectNo에 해당하는 canvas 목록을 조회
*/
const getCanvasByObjectNo = async (userId, objectNo, planNo) => {
const getCanvasByObjectNo = async (objectNo, planNo) => {
return await get({ url: `/api/canvas-management/canvas-statuses/by-object/${objectNo}` }).then((res) =>
res.map((item) => ({
id: item.id,
@ -397,7 +397,7 @@ export function usePlan(params = {}) {
*/
const loadCanvasPlanData = async (userId, objectNo, planNo) => {
console.log('🚀 ~ loadCanvasPlanData ~ userId, objectNo, planNo:', userId, objectNo, planNo)
await getCanvasByObjectNo(userId, objectNo, planNo).then(async (res) => {
await getCanvasByObjectNo(objectNo, planNo).then(async (res) => {
if (res.length > 0) {
setCurrentCanvasPlan(res.find((plan) => plan.planNo === planNo))
setPlans(res)
@ -415,6 +415,22 @@ export function usePlan(params = {}) {
setPlans((plans) => plans.map((plan) => ({ ...plan, canvasStatus: null })))
}
/**
* plan canvasStatus 불러오기
*
* 견적서/발전시뮬레이션에서 플랜 이동 현재 플랜의 canvasStatus를 불러오기 위해 사용
*/
const reloadCanvasStatus = async (objectNo, planNo) => {
if (pathname === '/floor-plan/estimate/5' || pathname === '/floor-plan/simulator/6') {
await getCanvasByObjectNo(objectNo, planNo).then((res) => {
if (res.length > 0) {
setCurrentCanvasPlan((prev) => ({ ...prev, canvasStatus: res.find((plan) => plan.planNo === planNo).canvasStatus }))
setPlans((plans) => plans.map((plan) => ({ ...plan, canvasStatus: res.find((plan) => plan.planNo === planNo).canvasStatus })))
}
})
}
}
/**
* 현재 plan 이동 -> 새로운 링크로 이동
*/
@ -434,5 +450,6 @@ export function usePlan(params = {}) {
handleDeletePlan,
loadCanvasPlanData,
resetCanvasStatus,
reloadCanvasStatus,
}
}