Compare commits

...

5 Commits

Author SHA1 Message Date
f5c098546c Merge branch 'dev' into feature/dev-yj-layout 2025-05-02 15:50:37 +09:00
08722e8b51 모듈 레이아웃 설치 작업중 2025-05-02 15:50:27 +09:00
김민식
7f1ef1ace4 Merge remote-tracking branch 'origin/qcast-pub' into dev 2025-05-02 10:01:59 +09:00
김민식
f52fe72d2a 시공법 버튼명 api 데이터로 수정 2025-05-02 10:01:26 +09:00
d5bba49ca9 console.log 삭제 2025-05-02 09:23:59 +09:00
2 changed files with 64 additions and 28 deletions

View File

@ -124,6 +124,7 @@ const Trestle = forwardRef((props, ref) => {
useEffect(() => {
if (constructionList.length > 0) {
console.log(constructionList)
setSelectedConstruction(constructionList.find((construction) => construction.constTp === trestleState?.construction?.constTp) ?? null)
} else {
setSelectedConstruction(null)
@ -624,19 +625,19 @@ const Trestle = forwardRef((props, ref) => {
<div className="module-flex-item non-flex">
<div className="flex-item-btn-wrap">
<button className={`btn-frame roof ${getConstructionState(0)}`} onClick={() => handleConstruction(0)}>
{getMessage('modal.module.basic.setting.module.standard.construction')}(I)
{constructionList.length > 0 && constructionList[0].constTpJp}
</button>
<button className={`btn-frame roof ${getConstructionState(3)}`} onClick={() => handleConstruction(3)}>
{getMessage('modal.module.basic.setting.module.multiple.construction')}
{constructionList.length > 0 && constructionList[3].constTpJp}
</button>
<button className={`btn-frame roof ${getConstructionState(1)}`} onClick={() => handleConstruction(1)}>
{getMessage('modal.module.basic.setting.module.standard.construction')}
{constructionList.length > 0 && constructionList[1].constTpJp}
</button>
<button className={`btn-frame roof ${getConstructionState(4)}`} onClick={() => handleConstruction(4)}>
{getMessage('modal.module.basic.setting.module.multiple.construction')}(II)
{constructionList.length > 0 && constructionList[4].constTpJp}
</button>
<button className={`btn-frame roof ${getConstructionState(2)}`} onClick={() => handleConstruction(2)}>
{getMessage('modal.module.basic.setting.module.enforce.construction')}
{constructionList.length > 0 && constructionList[2].constTpJp}
</button>
</div>
<div className="grid-check-form-flex">

View File

@ -1772,8 +1772,6 @@ export function useModuleBasicSetting(tabNum) {
const autoModuleSetup = (type, layoutSetupRef) => {
initEvent() //마우스 이벤트 초기화
console.log('checkedModule', checkedModule)
//실패한 지붕재 배열
let failAutoSetupRoof = []
@ -1824,20 +1822,35 @@ export function useModuleBasicSetting(tabNum) {
}
//어짜피 자동으로 누르면 선택안된데도 다 날아간다
canvas.getObjects().forEach((obj) => {
if (obj.name === POLYGON_TYPE.MODULE) {
canvas.remove(obj)
}
})
// canvas.getObjects().forEach((obj) => {
// if (obj.name === POLYGON_TYPE.MODULE) {
// canvas.remove(obj)
// }
// })
notSelectedTrestlePolygons.forEach((obj) => {
if (obj.modules) {
obj.modules.forEach((module) => {
canvas?.remove(module)
})
obj.modules = []
}
})
//자동일때만 선택 안된 모듈 삭제
if (type === MODULE_SETUP_TYPE.AUTO) {
notSelectedTrestlePolygons.forEach((obj) => {
if (obj.modules) {
obj.modules.forEach((module) => {
canvas?.remove(module)
canvas?.renderAll()
})
obj.modules = []
}
})
} else {
//레이아웃일때는 기존에 깔린 모듈은 삭제 하지 않음 선택된 영역만 모듈 삭제
moduleSetupSurfaces.forEach((obj) => {
if (obj.modules) {
obj.modules.forEach((module) => {
canvas?.remove(module)
canvas?.renderAll()
})
obj.modules = []
}
})
}
let moduleOptions = {
stroke: 'black',
@ -1938,23 +1951,25 @@ export function useModuleBasicSetting(tabNum) {
} else {
const normalModule = checkedModule.filter((item) => item.northModuleYn === 'N')
const northModule = checkedModule.filter((item) => item.northModuleYn === 'Y')
const northModuleIds = northModule.map((item) => item.itemId)
//만약 북면 모듈이 2개면 이 하위 로직 가져다가 쓰면됨 northModule === 만 바꾸면 될듯
// northModule을 배열로 만들고 include로 해서 체크 해야됨
if (normalModule.length > 0 && !moduleSetupSurface.isNorth) {
//C1C2 모듈일 경우ㅁㅁ
const isMultipleModules = normalModule.length > 1 //모듈이 여러개면
const maxCol = trestleDetailData.moduleMaxCols //최대 열수 -> 얘는 멀티랑 관계없음
const maxRow = isMultipleModules
? trestleDetailData.moduleMaxRows
: trestleDetailData.module.find((item) => item.moduleTpCd === normalModule[0].moduleTpCd).moduleMaxRows //멀티모듈이면 밖에 maxRows로 판단 아니면 module->itemmList를 가지고 판단
//단수 합단수
//북면 모듈 id를 제외한 모듈의 단 체크
const sumRowCount = isMultipleModules
? layoutSetupRef.filter((item) => item.checked && item.moduleId !== northModule[0].itemId).reduce((acc, cur) => acc + cur.row, 0)
? layoutSetupRef.filter((item) => item.checked && !northModuleIds.includes(item.moduleId)).reduce((acc, cur) => acc + cur.row, 0)
: layoutSetupRef.find((item) => item.moduleId === normalModule[0].itemId).row //멀티모듈이면 전체 합, 체크된 한개의 열
//
const sumColCount = layoutSetupRef.filter((item) => item.col && item.moduleId !== northModule[0].itemId).some((item) => item.col > maxCol)
//북면 모듈 id를 제외한 모듈의 열 체크
const sumColCount = layoutSetupRef.filter((item) => item.col && !northModuleIds.includes(item.moduleId)).some((item) => item.col > maxCol)
if (sumRowCount > maxRow || sumColCount) {
failAutoSetupRoof.push(moduleSetupSurface)
@ -1966,7 +1981,7 @@ export function useModuleBasicSetting(tabNum) {
isMultipleModules &&
layoutSetupRef.find(
(item, index) =>
item.checked && item.moduleId !== northModule[0].itemId && item.row > trestleDetailData.module[index].mixModuleMaxRows,
item.checked && !item.moduleId.includes(northModuleIds) && item.row > trestleDetailData.module[index].mixModuleMaxRows,
)
if (isPassedObject) {
@ -1976,16 +1991,36 @@ export function useModuleBasicSetting(tabNum) {
}
if (northModule.length > 0 && moduleSetupSurface.isNorth) {
const isMultipleModules = northModule.length > 1 //모듈이 여러개면
const maxCol = trestleDetailData.moduleMaxCols //최대 열수 -> 얘는 멀티랑 관계없음
const maxRow = trestleDetailData.module.find((item) => item.moduleTpCd === checkedModule[0].moduleTpCd).moduleMaxRows //멀티모듈이면 밖에 maxRows로 판단 아니면 module->itemmList를 가지고 판단
const sumRowCount = layoutSetupRef.find((item) => item.moduleId === northModule[0].itemId).row
const sumColCount = layoutSetupRef.filter((item) => item.col && item.moduleId !== northModule[0].itemId).some((item) => item.col > maxCol)
const maxRow = isMultipleModules
? trestleDetailData.moduleMaxRows
: trestleDetailData.module.find((item) => item.moduleTpCd === northModule[0].moduleTpCd).moduleMaxRows //멀티모듈이면 밖에 maxRows로 판단 아니면 module->itemmList를 가지고 판단
const sumRowCount = isMultipleModules
? layoutSetupRef.filter((item) => northModuleIds.includes(item.moduleId)).reduce((acc, cur) => acc + cur.row, 0)
: layoutSetupRef.find((item) => item.moduleId === northModule[0].itemId).row //멀티모듈이면 전체 합, 체크된 한개의 열
const sumColCount = layoutSetupRef.filter((item) => item.col && northModuleIds.includes(item.moduleId)).some((item) => item.col > maxCol)
if (sumRowCount > maxRow || sumColCount) {
failAutoSetupRoof.push(moduleSetupSurface)
return false
}
// 혼합일때 모듈 개별의 row를 체크함
const isPassedObject =
isMultipleModules &&
layoutSetupRef.find(
(item, index) =>
item.checked && northModuleIds.includes(item.moduleId) && item.row > trestleDetailData.module[index].mixModuleMaxRows,
)
if (isPassedObject) {
failAutoSetupRoof.push(moduleSetupSurface)
return false
}
}
}
}