diff --git a/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx b/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx index ec5f554f..804a2770 100644 --- a/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx @@ -12,6 +12,7 @@ import { useMasterController } from '@/hooks/common/useMasterController' import { v4 as uuidv4 } from 'uuid' import { globalLocaleStore } from '@/store/localeAtom' import { POLYGON_TYPE } from '@/common/common' +import { useSwal } from '@/hooks/useSwal' import { circuitNumDisplaySelector } from '@/store/settingAtom' export default function StepUp(props) { @@ -28,6 +29,7 @@ export default function StepUp(props) { getModuleList, } = props const { getMessage } = useMessage() + const { swalFire } = useSwal() const globalLocale = useRecoilValue(globalLocaleStore) const [moduleTab, setModuleTab] = useState(1) const [moduleTabs, setModuleTabs] = useState({}) @@ -70,35 +72,73 @@ export default function StepUp(props) { ...props.getOptYn(), // 옵션 Y/N useModuleItemList: props.getUseModuleItemList(), // 사용된 모듈아이템 List roofSurfaceList: props.getRoofSurfaceList(), // 지붕면 목록 - pcsItemList: selectedModels.length === 0 ? props.getPcsItemList() : getSelectedPcsItemList(), // PCS 아이템 목록 + pcsItemList: props.getSelectedPcsItemList(), // PCS 아이템 목록 } - // 회로 구성 가능 여부 체크 - getPcsVoltageChk({ ...params, pcsItemList: getSelectedPcsItemList() }).then((res) => { - if (res.resultCode === 'S') { - // 회로 구성 가능 여부 체크 통과 시 승압설정 정보 조회 - getPcsVoltageStepUpList(params).then((res) => { - if (res?.result.code === 200 && res?.data) { - if (selectedModels.length === 0) { - setSelectedModels(res.data.pcsItemList) + // 회로 구성 가능 여부 체크 통과 시 승압설정 정보 조회 + getPcsVoltageStepUpList(params).then((res) => { + if (res.result.resultCode === 'S') { + if (res?.result.code === 200 && res?.data) { + const dataArray = Array.isArray(res.data) ? res.data : [res.data] + const stepUpListData = formatStepUpListData(dataArray) + + // PCS 승압설정 정보 SET + setStepUpListData(stepUpListData) + + // PCS 옵션 조회 + const formattedOptCodes = formatOptionCodes(res.data.optionList) + setOptCodes(formattedOptCodes) + setSeletedOption(formattedOptCodes[0]) + + // 캔버스에 회로 정보 적용 + //stepUpListData[0].pcsItemList.forEach((pcsItem) => { + stepUpListData[0].pcsItemList.forEach((pcsItem) => { + const selectedSerQty = pcsItem.serQtyList.find((serQty) => serQty.selected) + if (selectedSerQty) { + selectedSerQty.roofSurfaceList.forEach((roofSurface) => { + const targetSurface = canvas.getObjects().filter((obj) => obj.id === roofSurface.roofSurfaceId)[0] + const moduleIds = targetSurface.modules.map((module) => module.id) + + // 기존 모듈 텍스트 삭제 + canvas + .getObjects() + .filter((obj) => moduleIds.includes(obj.parentId)) + .forEach((text) => canvas.remove(text)) + + // 새로운 모듈 회로 정보 추가 + roofSurface.moduleList.forEach((module) => { + const targetModule = canvas.getObjects().filter((obj) => obj.id === module.uniqueId)[0] + const moduleCircuitText = new fabric.Text(module.circuit, { + left: targetModule.left + targetModule.width / 2, + top: targetModule.top + targetModule.height / 2, + fill: 'black', + fontSize: 20, + width: targetModule.width, + height: targetModule.height, + textAlign: 'center', + originX: 'center', + originY: 'center', + name: 'circuitNumber', + parentId: targetModule.id, + circuitInfo: module.pcsItemId, + visible: isDisplayCircuitNumber, + }) + targetModule.circuit = moduleCircuitText + targetModule.pcsItemId = module.pcsItemId + targetModule.circuitNumber = module.circuit + canvas.add(moduleCircuitText) + }) + }) } - const dataArray = Array.isArray(res.data) ? res.data : [res.data] - const stepUpListData = formatStepUpListData(dataArray) + }) - // PCS 승압설정 정보 SET - setStepUpListData(stepUpListData) - - // PCS 옵션 조회 - const formattedOptCodes = formatOptionCodes(res.data.optionList) - setOptCodes(formattedOptCodes) - setSeletedOption(formattedOptCodes[0]) - } - }) - } else { - swalFire({ - title: res.resultMsg, - type: 'alert', - }) + canvas.renderAll() + } else { + swalFire({ + title: res.result.resultMsg, + type: 'alert', + }) + } } }) } catch (error) { @@ -170,7 +210,6 @@ export default function StepUp(props) { // Update res.data with modified pcsItemList res.data.pcsItemList = pcsItemListWithSerQty - setSelectedModels(pcsItemListWithSerQty) const dataArray = Array.isArray(res.data) ? res.data : [res.data] const stepUpListData = formatStepUpListData(dataArray) @@ -303,8 +342,8 @@ export default function StepUp(props) { // 선택된 행 정보 저장 setStepUpListData(tempStepUpListData) - console.log('🚀 ~ handleRowClick ~ tempStepUpListData:', tempStepUpListData) - console.log('🚀 ~ handleRowClick ~ selectedData:', selectedData) + // console.log('🚀 ~ handleRowClick ~ tempStepUpListData:', tempStepUpListData) + // console.log('🚀 ~ handleRowClick ~ selectedData:', selectedData) // 파워컨디셔너 옵션 조회 요청 파라미터 const params = {