diff --git a/src/components/floor-plan/modal/basic/step/Placement.jsx b/src/components/floor-plan/modal/basic/step/Placement.jsx index 16c06ab2..b7ba409e 100644 --- a/src/components/floor-plan/modal/basic/step/Placement.jsx +++ b/src/components/floor-plan/modal/basic/step/Placement.jsx @@ -64,8 +64,6 @@ const Placement = forwardRef((props, refs) => { //최초 지입시 체크 useEffect(() => { - console.log('moduleSelectionData', moduleSelectionData) - if (isObjectNotEmpty(moduleSelectionData)) { //두번째 선택한 데이터가를 기반으로 세번째 선택을 체크한다 if (moduleSelectionData.roofConstructions.length > 0 && moduleSelectionData.module.itemList.length > 0) { @@ -77,9 +75,10 @@ const Placement = forwardRef((props, refs) => { initCheckedModule = { ...initCheckedModule, [obj.itemId]: true } } }) + setSelectedItems(initCheckedModule) setSelectedModules(moduleSelectionData.module) - props.setLayoutSetup(moduleSelectionData.module.itemList.map((item) => ({ moduleId: item.itemId, col: 0, row: 0 }))) + props.setLayoutSetup(moduleSelectionData.module.itemList.map((item) => ({ moduleId: item.itemId, col: 0, row: 0, checked: true }))) } //모듈 배치면 생성 @@ -131,13 +130,25 @@ const Placement = forwardRef((props, refs) => { } //체크된 모듈 아이디 추출 - const handleSelectedItem = (e) => { + const handleSelectedItem = (e, itemId) => { setSelectedItems({ ...selectedItems, [e.target.name]: e.target.checked }) + + const newLayoutSetup = [...props.layoutSetup] + props.layoutSetup.forEach((item, index) => { + if (item.moduleId === itemId) { + newLayoutSetup[index] = { ...props.layoutSetup[index], checked: e.target.checked } + } + }) + props.setLayoutSetup(newLayoutSetup) } const handleLayoutSetup = (e, itemId, index) => { const newLayoutSetup = [...props.layoutSetup] - newLayoutSetup[index] = { ...newLayoutSetup[index], moduleId: itemId, [e.target.name]: Number(e.target.value) } + newLayoutSetup[index] = { + ...newLayoutSetup[index], + moduleId: itemId, + [e.target.name]: Number(e.target.value), + } props.setLayoutSetup(newLayoutSetup) } @@ -173,7 +184,7 @@ const Placement = forwardRef((props, refs) => { id={item.itemId} name={item.itemId} checked={selectedItems[item.itemId]} - onChange={handleSelectedItem} + onChange={(e) => handleSelectedItem(e, item.itemId)} /> diff --git a/src/hooks/module/useModuleBasicSetting.js b/src/hooks/module/useModuleBasicSetting.js index 417fdeea..bb966f4e 100644 --- a/src/hooks/module/useModuleBasicSetting.js +++ b/src/hooks/module/useModuleBasicSetting.js @@ -892,8 +892,11 @@ export function useModuleBasicSetting(tabNum) { return } + //숫자 0이 하나라도 있으면 설치 불가 const hasZeroLength = checkedModule.some((item) => - layoutSetupRef.some((layoutItem) => item.itemId === layoutItem.moduleId && (layoutItem.row === 0 || layoutItem.col === 0)), + layoutSetupRef.some( + (layoutItem) => layoutItem.checked && item.itemId === layoutItem.moduleId && (layoutItem.row === 0 || layoutItem.col === 0), + ), ) if (hasZeroLength) { @@ -903,6 +906,16 @@ export function useModuleBasicSetting(tabNum) { return } + //혼합 가능 모듈과 혼합 불가능 모듈을 선택했을때 카운트를 해서 확인 + const mixAsgY = checkedModule.filter((obj) => obj.mixAsgYn === 'Y') + const mixAsgN = checkedModule.filter((obj) => obj.mixAsgYn === 'N') + + //Y인 모듈과 N인 모듈이 둘다 존재하면 설치 불가 + if (mixAsgY.length > 0 && mixAsgN.length > 0) { + swalFire({ text: getMessage('modal.module.basic.setting.module.placement.mix.asg.yn.error') }) + return + } + const batchObjects = canvas?.getObjects().filter((obj) => obj.name === POLYGON_TYPE.OBJECT_SURFACE) //도머s 객체 //수동모드 모듈 설치면 선택 잠금 moduleSetupSurfaces.forEach((obj) => { @@ -1260,7 +1273,7 @@ export function useModuleBasicSetting(tabNum) { //단수 합단수 const sumRowCount = isMultipleModules - ? layoutSetupRef.reduce((acc, cur) => acc + cur.row, 0) + ? layoutSetupRef.filter((item) => item.checked).reduce((acc, cur) => acc + cur.row, 0) : layoutSetupRef.find((item) => item.moduleId === checkedModule[0].itemId).row //멀티모듈이면 전체 합, 체크된 한개의 열 // @@ -1273,7 +1286,8 @@ export function useModuleBasicSetting(tabNum) { // 혼합일때 모듈 개별의 row를 체크함 const isPassedObject = - isMultipleModules && layoutSetupRef.find((item, index) => item.row > trestlePolygon.trestleDetail.module[index].mixModuleMaxRows) + isMultipleModules && + layoutSetupRef.find((item, index) => item.checked && item.row > trestlePolygon.trestleDetail.module[index].mixModuleMaxRows) if (isPassedObject) { swalFire({ diff --git a/src/locales/ja.json b/src/locales/ja.json index 96dc0dde..509e0d62 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -130,7 +130,6 @@ "modal.module.basic.setting.pitch.module.column.margin": "左右間隔", "modal.module.basic.setting.prev": "前に戻る", "modal.module.basic.setting.passivity.placement": "手動配置", - "modal.module.basic.setting.layoutpassivity.placement": "layout配置", "modal.module.basic.setting.auto.placement": "設定値に自動配置", "plan.menu.module.circuit.setting.circuit.trestle.setting": "回路設定", "modal.circuit.trestle.setting": "回路設定", @@ -1051,5 +1050,6 @@ "modal.module.basic.setting.module.placement.max.row": "최대 단수 (JA)", "modal.module.basic.setting.module.placement.max.rows.multiple": "혼합 단수 (JA)", "modal.module.basic.setting.module.placement.mix.asg.yn.error": "혼합 설치 불가능한 모듈입니다. (JA)", - "modal.module.basic.setting.module.placement.mix.asg.yn": "ミックス. (JA)" + "modal.module.basic.setting.module.placement.mix.asg.yn": "ミックス. (JA)", + "modal.module.basic.setting.layoutpassivity.placement": "layout配置 (JA)" } diff --git a/src/locales/ko.json b/src/locales/ko.json index 4df83b2b..127da1bc 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -130,7 +130,6 @@ "modal.module.basic.setting.pitch.module.column.margin": "좌우간격", "modal.module.basic.setting.prev": "이전", "modal.module.basic.setting.passivity.placement": "수동 배치", - "modal.module.basic.setting.layoutpassivity.placement": "레이아웃 배치", "modal.module.basic.setting.auto.placement": "설정값으로 자동 배치", "plan.menu.module.circuit.setting.circuit.trestle.setting": "회로설정", "modal.circuit.trestle.setting": "회로설정", @@ -1051,5 +1050,6 @@ "modal.module.basic.setting.module.placement.max.row": "최대 단수", "modal.module.basic.setting.module.placement.max.rows.multiple": "혼합 단수", "modal.module.basic.setting.module.placement.mix.asg.yn.error": "혼합 설치 불가능한 모듈입니다.", - "modal.module.basic.setting.module.placement.mix.asg.yn": "혼합" + "modal.module.basic.setting.module.placement.mix.asg.yn": "혼합", + "modal.module.basic.setting.layoutpassivity.placement": "레이아웃 배치" }