From 63d8ae092c5e43d7083b60805441c3c6d327d4c5 Mon Sep 17 00:00:00 2001 From: yjnoh Date: Thu, 27 Mar 2025 14:11:23 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=20=EC=84=A4=EC=B9=98=20validate=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/module/useModuleBasicSetting.js | 30 ++++++++++++++++++++--- src/locales/ja.json | 3 ++- src/locales/ko.json | 3 ++- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/hooks/module/useModuleBasicSetting.js b/src/hooks/module/useModuleBasicSetting.js index 277ec492..646c743f 100644 --- a/src/hooks/module/useModuleBasicSetting.js +++ b/src/hooks/module/useModuleBasicSetting.js @@ -81,7 +81,7 @@ export function useModuleBasicSetting(tabNum) { removeMouseEvent('mouse:up') removeMouseEvent('mouse:move') canvas?.remove(...canvas?.getObjects().filter((obj) => obj.name === 'tempModule')) //움직일때 일단 지워가면서 움직임 - canvas.getObjects().forEach((obj) => { + canvas?.getObjects().forEach((obj) => { if (obj.name === POLYGON_TYPE.ROOF) { obj.set({ stroke: 'black', @@ -1282,13 +1282,35 @@ export function useModuleBasicSetting(tabNum) { ? trestlePolygon.trestleDetail.moduleMaxRows : trestlePolygon.trestleDetail.module.find((item) => item.moduleTpCd === checkedModule[0].moduleTpCd).moduleMaxRows //멀티모듈이면 밖에 maxRows로 판단 아니면 module->itemmList를 가지고 판단 - const sumColCount = layoutSetupRef.reduce((acc, cur) => acc + cur.col, 0) //입력한 행의 합 + //단수 합단수 const sumRowCount = isMultipleModules ? layoutSetupRef.reduce((acc, cur) => acc + cur.row, 0) : layoutSetupRef.find((item) => item.moduleId === checkedModule[0].itemId).row //멀티모듈이면 전체 합, 체크된 한개의 열 - if (sumRowCount > maxRow || sumColCount > maxCol) { - swalFire({ text: getMessage('module.layout.setup.max.count', [maxRow, maxCol]) }) + // + const sumColCount = layoutSetupRef.filter((item) => item.col).some((item) => item.col > maxCol) + + if (sumRowCount > maxRow || sumColCount) { + swalFire({ text: getMessage('module.layout.setup.max.count', [maxRow, maxCol]), icon: 'warning' }) + return + } + + let alertMessage = '' + let isPassed = true + if (isMultipleModules) { + layoutSetupRef.forEach((item, index) => { + const moduleInfo = trestlePolygon.trestleDetail.module[index] + if (item.row > moduleInfo.mixModuleMaxRows) { + alertMessage = getMessage('module.layout.setup.max.count.multiple', [index + 1, moduleInfo.mixModuleMaxRows, maxCol]) + isPassed = false + } + }) + } + + console.log(alertMessage) + + if (!isPassed) { + swalFire({ text: alertMessage, icon: 'warning' }) return } diff --git a/src/locales/ja.json b/src/locales/ja.json index 9ca0466a..c8d080de 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -1043,5 +1043,6 @@ "roof.line.not.found": "屋根形状がありません", "roof.material.can.not.delete": "割り当てられた配置面があります。", "module.layout.setup.max.count": "모듈의 최대 단수는 {0}, 최대 열수는 {1} 입니다. (JA)", - "chidory.can.not.install": "千鳥配置できない工法です。" + "chidory.can.not.install": "千鳥配置できない工法です。", + "module.layout.setup.max.count.multiple": "모듈 {0}번의 최대 단수는 {1}, 최대 열수는 {2} 입니다. (JA)" } diff --git a/src/locales/ko.json b/src/locales/ko.json index f61ea784..6cd3cfb6 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -1043,5 +1043,6 @@ "roof.line.not.found": "지붕형상이 없습니다.", "roof.material.can.not.delete": "할당된 배치면이 있습니다.", "module.layout.setup.max.count": "모듈의 최대 단수는 {0}, 최대 열수는 {1} 입니다.", - "chidory.can.not.install": "치조 불가 공법입니다." + "chidory.can.not.install": "치조 불가 공법입니다.", + "module.layout.setup.max.count.multiple": "모듈 {0}번의 최대 단수는 {1}, 최대 열수는 {2} 입니다." }