dev #742
@ -359,6 +359,10 @@ export function useMasterController() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const quotationErrSave = async (params) => {
|
||||||
|
return await post({ url: '/api/v1/master/quotationErrSave', data: params })
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
getRoofMaterialList,
|
getRoofMaterialList,
|
||||||
getModuleTypeItemList,
|
getModuleTypeItemList,
|
||||||
@ -374,5 +378,6 @@ export function useMasterController() {
|
|||||||
updateObjectDate,
|
updateObjectDate,
|
||||||
getQuotationItem,
|
getQuotationItem,
|
||||||
getPcsConnOptionItemList,
|
getPcsConnOptionItemList,
|
||||||
|
quotationErrSave,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import { useRecoilValue } from 'recoil'
|
import { useRecoilValue } from 'recoil'
|
||||||
import { canvasState, currentAngleTypeSelector } from '@/store/canvasAtom'
|
import { canvasState, currentAngleTypeSelector, currentCanvasPlanState } from '@/store/canvasAtom'
|
||||||
import { POLYGON_TYPE, TRESTLE_MATERIAL } from '@/common/common'
|
import { POLYGON_TYPE, TRESTLE_MATERIAL } from '@/common/common'
|
||||||
import { moduleSelectionDataState } from '@/store/selectedModuleOptions'
|
import { moduleSelectionDataState } from '@/store/selectedModuleOptions'
|
||||||
import { getDegreeByChon } from '@/util/canvas-util'
|
import { getDegreeByChon } from '@/util/canvas-util'
|
||||||
@ -11,6 +11,7 @@ import { useContext } from 'react'
|
|||||||
import { QcastContext } from '@/app/QcastProvider'
|
import { QcastContext } from '@/app/QcastProvider'
|
||||||
import { useCircuitTrestle } from '@/hooks/useCirCuitTrestle'
|
import { useCircuitTrestle } from '@/hooks/useCirCuitTrestle'
|
||||||
import { useMessage } from '@/hooks/useMessage'
|
import { useMessage } from '@/hooks/useMessage'
|
||||||
|
import { loginUserStore } from '@/store/commonAtom'
|
||||||
|
|
||||||
// 모듈간 같은 행, 열의 마진이 10 이하인 경우는 같은 행, 열로 간주
|
// 모듈간 같은 행, 열의 마진이 10 이하인 경우는 같은 행, 열로 간주
|
||||||
const MODULE_MARGIN = 10
|
const MODULE_MARGIN = 10
|
||||||
@ -18,7 +19,9 @@ const MODULE_MARGIN = 10
|
|||||||
export const useTrestle = () => {
|
export const useTrestle = () => {
|
||||||
const canvas = useRecoilValue(canvasState)
|
const canvas = useRecoilValue(canvasState)
|
||||||
const moduleSelectionData = useRecoilValue(moduleSelectionDataState) //다음으로 넘어가는 최종 데이터
|
const moduleSelectionData = useRecoilValue(moduleSelectionDataState) //다음으로 넘어가는 최종 데이터
|
||||||
const { getQuotationItem } = useMasterController()
|
const { getQuotationItem, quotationErrSave } = useMasterController()
|
||||||
|
const currentCanvasPlan = useRecoilValue(currentCanvasPlanState)
|
||||||
|
const loginUserState = useRecoilValue(loginUserStore)
|
||||||
const currentAngleType = useRecoilValue(currentAngleTypeSelector)
|
const currentAngleType = useRecoilValue(currentAngleTypeSelector)
|
||||||
const roofSizeSet = useRecoilValue(basicSettingState).roofSizeSet
|
const roofSizeSet = useRecoilValue(basicSettingState).roofSizeSet
|
||||||
const isTrestleDisplay = useRecoilValue(trestleDisplaySelector)
|
const isTrestleDisplay = useRecoilValue(trestleDisplaySelector)
|
||||||
@ -757,6 +760,12 @@ export const useTrestle = () => {
|
|||||||
text: result.resultMsg || getMessage('common.message.noData'),
|
text: result.resultMsg || getMessage('common.message.noData'),
|
||||||
icon: 'error'
|
icon: 'error'
|
||||||
})
|
})
|
||||||
|
quotationErrSave({
|
||||||
|
objectNo: currentCanvasPlan.objectNo,
|
||||||
|
planNo: currentCanvasPlan.planNo,
|
||||||
|
rejectRsn: result.resultMsg,
|
||||||
|
regId: loginUserState.userId,
|
||||||
|
})
|
||||||
clear()
|
clear()
|
||||||
setViewCircuitNumberTexts(true)
|
setViewCircuitNumberTexts(true)
|
||||||
setIsGlobalLoading(false)
|
setIsGlobalLoading(false)
|
||||||
|
|||||||
@ -489,6 +489,34 @@ export function useCanvasEvent() {
|
|||||||
viewportTransform[5] += deltaY
|
viewportTransform[5] += deltaY
|
||||||
|
|
||||||
canvas.setViewportTransform(viewportTransform)
|
canvas.setViewportTransform(viewportTransform)
|
||||||
|
|
||||||
|
// 브라우저 스크롤을 중앙으로 조정하여 전체 canvas를 모니터 중앙에 위치
|
||||||
|
const canvasElement = canvas.getElement()
|
||||||
|
const canvasRect = canvasElement.getBoundingClientRect()
|
||||||
|
|
||||||
|
// 현재 스크롤 위치
|
||||||
|
const currentScrollTop = window.pageYOffset || document.documentElement.scrollTop
|
||||||
|
const currentScrollLeft = window.pageXOffset || document.documentElement.scrollLeft
|
||||||
|
|
||||||
|
// canvas의 현재 화면 위치
|
||||||
|
const canvasScreenTop = canvasRect.top + currentScrollTop
|
||||||
|
const canvasScreenLeft = canvasRect.left + currentScrollLeft
|
||||||
|
|
||||||
|
// 모니터 중앙
|
||||||
|
const monitorCenterX = window.innerWidth / 2
|
||||||
|
const monitorCenterY = window.innerHeight / 2
|
||||||
|
|
||||||
|
// canvas가 모니터 중앙에 오도록 스크롤 위치 계산
|
||||||
|
const targetScrollLeft = canvasScreenLeft + (canvasRect.width / 2) - monitorCenterX
|
||||||
|
const targetScrollTop = canvasScreenTop + (canvasRect.height / 2) - monitorCenterY + menuHeightOffset
|
||||||
|
|
||||||
|
// 스크롤을 중앙으로 이동
|
||||||
|
window.scrollTo({
|
||||||
|
top: targetScrollTop,
|
||||||
|
left: targetScrollLeft,
|
||||||
|
behavior: 'smooth' // 부드러운 스크롤
|
||||||
|
})
|
||||||
|
|
||||||
canvas.renderAll()
|
canvas.renderAll()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user