Merge remote-tracking branch 'origin/dev' into dev
# Conflicts: # src/hooks/module/useModule.js
This commit is contained in:
commit
391a8220dc
@ -18,7 +18,7 @@ export default function DocDownOptionPop({ planNo, setEstimatePopupOpen, docDown
|
|||||||
//다운로드 파일 EXCEL
|
//다운로드 파일 EXCEL
|
||||||
const [schUnitPriceFlg, setSchUnitPriceFlg] = useState('0')
|
const [schUnitPriceFlg, setSchUnitPriceFlg] = useState('0')
|
||||||
//견적제출서 표시명
|
//견적제출서 표시명
|
||||||
const [schDisplayFlg, setSchSchDisplayFlg] = useState('0')
|
const [schDisplayFlg, setSchDisplayFlg] = useState('0')
|
||||||
//가대 중량표 포함(포함:1 미포함 : 0)
|
//가대 중량표 포함(포함:1 미포함 : 0)
|
||||||
const [schWeightFlg, setSchWeightFlg] = useState('1')
|
const [schWeightFlg, setSchWeightFlg] = useState('1')
|
||||||
//도면/시뮬레이션 파일 포함
|
//도면/시뮬레이션 파일 포함
|
||||||
@ -208,7 +208,7 @@ export default function DocDownOptionPop({ planNo, setEstimatePopupOpen, docDown
|
|||||||
value={'0'}
|
value={'0'}
|
||||||
checked={schDisplayFlg === '0'}
|
checked={schDisplayFlg === '0'}
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
setSchSchDisplayFlg(e.target.value)
|
setSchDisplayFlg(e.target.value)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<label htmlFor="schDisplayFlg0">{getMessage('estimate.detail.docPopup.schDisplayFlg.schDisplayFlg0')}</label>
|
<label htmlFor="schDisplayFlg0">{getMessage('estimate.detail.docPopup.schDisplayFlg.schDisplayFlg0')}</label>
|
||||||
@ -221,7 +221,7 @@ export default function DocDownOptionPop({ planNo, setEstimatePopupOpen, docDown
|
|||||||
value={'1'}
|
value={'1'}
|
||||||
checked={schDisplayFlg === '1'}
|
checked={schDisplayFlg === '1'}
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
setSchSchDisplayFlg(e.target.value)
|
setSchDisplayFlg(e.target.value)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<label htmlFor="schDisplayFlg1">{getMessage('estimate.detail.docPopup.schDisplayFlg.schDisplayFlg1')}</label>
|
<label htmlFor="schDisplayFlg1">{getMessage('estimate.detail.docPopup.schDisplayFlg.schDisplayFlg1')}</label>
|
||||||
|
|||||||
@ -69,7 +69,7 @@ export default function EstimateCopyPop({ planNo, setEstimateCopyPopupOpen }) {
|
|||||||
get({ url: url }).then((res) => {
|
get({ url: url }).then((res) => {
|
||||||
if (!isEmptyArray(res)) {
|
if (!isEmptyArray(res)) {
|
||||||
res.map((row) => {
|
res.map((row) => {
|
||||||
row.value == row.saleStoreId
|
row.value = row.saleStoreId
|
||||||
row.label = row.saleStoreName
|
row.label = row.saleStoreName
|
||||||
})
|
})
|
||||||
otherList = res
|
otherList = res
|
||||||
|
|||||||
@ -7,16 +7,16 @@ export default function ProductFeaturesPop({ popShowSpecialNoteList, showProduct
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let pushData = []
|
let pushData = []
|
||||||
popShowSpecialNoteList.map((row) => {
|
popShowSpecialNoteList.forEach((row) => {
|
||||||
let option = showProductFeatureData.split('、')
|
let option = showProductFeatureData.split('、')
|
||||||
option.map((row2) => {
|
option.forEach((row2) => {
|
||||||
if (row.code === row2) {
|
if (row.code === row2) {
|
||||||
pushData.push(row)
|
pushData.push(row)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
setShowSpecialNoteList(pushData)
|
setShowSpecialNoteList(pushData)
|
||||||
}, [popShowSpecialNoteList])
|
}, [popShowSpecialNoteList, showProductFeatureData])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="modal-popup">
|
<div className="modal-popup">
|
||||||
|
|||||||
@ -57,13 +57,13 @@ export default function PanelEdit(props) {
|
|||||||
moduleMove(length, direction)
|
moduleMove(length, direction)
|
||||||
break
|
break
|
||||||
case PANEL_EDIT_TYPE.MOVE_ALL:
|
case PANEL_EDIT_TYPE.MOVE_ALL:
|
||||||
moduleMoveAll(length, direction)
|
moduleMoveAll(length, direction, props.arrayData)
|
||||||
break
|
break
|
||||||
case PANEL_EDIT_TYPE.COPY:
|
case PANEL_EDIT_TYPE.COPY:
|
||||||
moduleCopy(length, direction)
|
moduleCopy(length, direction)
|
||||||
break
|
break
|
||||||
case PANEL_EDIT_TYPE.COPY_ALL:
|
case PANEL_EDIT_TYPE.COPY_ALL:
|
||||||
moduleCopyAll(length, direction)
|
moduleCopyAll(length, direction, props.arrayData)
|
||||||
break
|
break
|
||||||
case PANEL_EDIT_TYPE.COLUMN_MOVE:
|
case PANEL_EDIT_TYPE.COLUMN_MOVE:
|
||||||
moduleMultiMove('column', length, direction)
|
moduleMultiMove('column', length, direction)
|
||||||
|
|||||||
@ -145,105 +145,113 @@ export function useModule() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const moduleMoveAll = (length, direction) => {
|
const moduleMoveAll = (length, direction, surfaceArray) => {
|
||||||
const moduleSetupSurface = canvas.getObjects().filter((obj) => canvas.getActiveObjects()[0].id === obj.id)[0]
|
surfaceArray.forEach((surface) => {
|
||||||
const modules = canvas.getObjects().filter((obj) => obj.surfaceId === moduleSetupSurface.id && obj.name === POLYGON_TYPE.MODULE)
|
const modules = canvas
|
||||||
const objects = getObjects()
|
.getObjects()
|
||||||
|
.filter((module) => module.name === POLYGON_TYPE.MODULE)
|
||||||
|
.filter((module) => module.surfaceId === surface.id)
|
||||||
|
const objects = getObjects()
|
||||||
|
|
||||||
let isWarning = false
|
let isWarning = false
|
||||||
|
|
||||||
modules.forEach((module) => {
|
modules.forEach((module) => {
|
||||||
const { top, left } = getPosotion(module, direction, length, false)
|
const { top, left } = getPosotion(module, direction, length, false)
|
||||||
module.originPos = {
|
module.originPos = {
|
||||||
top: module.top,
|
top: module.top,
|
||||||
left: module.left,
|
left: module.left,
|
||||||
fill: module.fill,
|
fill: module.fill,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module.set({ top, left })
|
||||||
|
module.setCoords()
|
||||||
|
canvas.renderAll()
|
||||||
|
|
||||||
|
if (isOverlapObjects(module, objects) || isOutsideSurface(module, surface)) {
|
||||||
|
isWarning = true
|
||||||
|
module.set({ fill: 'red' })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
module.set({ top, left })
|
|
||||||
module.setCoords()
|
|
||||||
canvas.renderAll()
|
canvas.renderAll()
|
||||||
|
if (isWarning) {
|
||||||
if (isOverlapObjects(module, objects) || isOutsideSurface(module, moduleSetupSurface)) {
|
swalFire({
|
||||||
isWarning = true
|
title: getMessage('can.not.move.module'),
|
||||||
module.set({ fill: 'red' })
|
icon: 'error',
|
||||||
|
type: 'alert',
|
||||||
|
confirmFn: () => {
|
||||||
|
modules.forEach((module) => {
|
||||||
|
module.set({ top: module.originPos.top, left: module.originPos.left, fill: module.originPos.fill })
|
||||||
|
module.setCoords()
|
||||||
|
})
|
||||||
|
canvas.renderAll()
|
||||||
|
},
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
canvas.renderAll()
|
|
||||||
if (isWarning) {
|
|
||||||
swalFire({
|
|
||||||
title: getMessage('can.not.move.module'),
|
|
||||||
icon: 'error',
|
|
||||||
type: 'alert',
|
|
||||||
confirmFn: () => {
|
|
||||||
modules.forEach((module) => {
|
|
||||||
module.set({ top: module.originPos.top, left: module.originPos.left, fill: module.originPos.fill })
|
|
||||||
module.setCoords()
|
|
||||||
})
|
|
||||||
canvas.renderAll()
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const moduleCopyAll = (length, direction) => {
|
const moduleCopyAll = (length, direction, surfaceArray) => {
|
||||||
const moduleSetupSurface = canvas.getObjects().filter((obj) => canvas.getActiveObjects()[0].id === obj.id)[0]
|
surfaceArray.forEach((surface) => {
|
||||||
const modules = canvas.getObjects().filter((obj) => obj.surfaceId === moduleSetupSurface.id && obj.name === POLYGON_TYPE.MODULE)
|
const modules = canvas
|
||||||
const objects = getObjects()
|
.getObjects()
|
||||||
const copyModules = []
|
.filter((module) => module.name === POLYGON_TYPE.MODULE)
|
||||||
let copyModule = null
|
.filter((module) => module.surfaceId === surface.id)
|
||||||
let isWarning = false
|
const objects = getObjects()
|
||||||
let moduleLength = 0
|
const copyModules = []
|
||||||
if (['up', 'down'].includes(direction)) {
|
|
||||||
modules.sort((a, b) => a.top - b.top)
|
|
||||||
moduleLength = Number(modules[modules.length - 1].top) + Number(modules[modules.length - 1].height) - Number(modules[0].top)
|
|
||||||
} else if (['left', 'right'].includes(direction)) {
|
|
||||||
modules.sort((a, b) => a.left - b.left)
|
|
||||||
moduleLength = Number(modules[modules.length - 1].left) + Number(modules[modules.length - 1].width) - Number(modules[0].left)
|
|
||||||
}
|
|
||||||
|
|
||||||
modules.forEach((module) => {
|
let copyModule = null
|
||||||
const { top, left } = getPosotion(module, direction, Number(length) + Number(moduleLength), false)
|
let isWarning = false
|
||||||
module.clone((obj) => {
|
let moduleLength = 0
|
||||||
obj.set({
|
if (['up', 'down'].includes(direction)) {
|
||||||
parentId: module.parentId,
|
modules.sort((a, b) => a.top - b.top)
|
||||||
initOptions: module.initOptions,
|
moduleLength = Number(modules[modules.length - 1].top) + Number(modules[modules.length - 1].height) - Number(modules[0].top)
|
||||||
direction: module.direction,
|
} else if (['left', 'right'].includes(direction)) {
|
||||||
arrow: module.arrow,
|
modules.sort((a, b) => a.left - b.left)
|
||||||
name: module.name,
|
moduleLength = Number(modules[modules.length - 1].left) + Number(modules[modules.length - 1].width) - Number(modules[0].left)
|
||||||
type: module.type,
|
|
||||||
length: module.length,
|
|
||||||
points: module.points,
|
|
||||||
surfaceId: module.surfaceId,
|
|
||||||
left,
|
|
||||||
top,
|
|
||||||
id: uuidv4(),
|
|
||||||
})
|
|
||||||
copyModule = obj
|
|
||||||
canvas.add(obj)
|
|
||||||
copyModules.push(obj)
|
|
||||||
obj.setCoords()
|
|
||||||
})
|
|
||||||
if (isOverlapObjects(copyModule, objects) || isOutsideSurface(copyModule, moduleSetupSurface)) {
|
|
||||||
isWarning = true
|
|
||||||
copyModule.set({ fill: 'red' })
|
|
||||||
}
|
}
|
||||||
canvas.renderAll()
|
|
||||||
})
|
|
||||||
|
|
||||||
if (isWarning) {
|
modules.forEach((module) => {
|
||||||
swalFire({
|
const { top, left } = getPosotion(module, direction, Number(length) + Number(moduleLength), false)
|
||||||
title: getMessage('can.not.copy.module'),
|
module.clone((obj) => {
|
||||||
icon: 'error',
|
obj.set({
|
||||||
type: 'alert',
|
parentId: module.parentId,
|
||||||
confirmFn: () => {
|
initOptions: module.initOptions,
|
||||||
canvas.remove(...copyModules)
|
direction: module.direction,
|
||||||
canvas.renderAll()
|
arrow: module.arrow,
|
||||||
},
|
name: module.name,
|
||||||
|
type: module.type,
|
||||||
|
length: module.length,
|
||||||
|
points: module.points,
|
||||||
|
surfaceId: module.surfaceId,
|
||||||
|
left,
|
||||||
|
top,
|
||||||
|
id: uuidv4(),
|
||||||
|
})
|
||||||
|
copyModule = obj
|
||||||
|
canvas.add(obj)
|
||||||
|
copyModules.push(obj)
|
||||||
|
obj.setCoords()
|
||||||
|
})
|
||||||
|
if (isOverlapObjects(copyModule, objects) || isOutsideSurface(copyModule, surface)) {
|
||||||
|
isWarning = true
|
||||||
|
copyModule.set({ fill: 'red' })
|
||||||
|
}
|
||||||
|
canvas.renderAll()
|
||||||
})
|
})
|
||||||
}
|
|
||||||
setModuleStatisticsData()
|
if (isWarning) {
|
||||||
|
swalFire({
|
||||||
|
title: getMessage('can.not.copy.module'),
|
||||||
|
icon: 'error',
|
||||||
|
type: 'alert',
|
||||||
|
confirmFn: () => {
|
||||||
|
canvas.remove(...copyModules)
|
||||||
|
canvas.renderAll()
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const moduleCopy = (length, direction) => {
|
const moduleCopy = (length, direction) => {
|
||||||
@ -304,7 +312,6 @@ export function useModule() {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
setModuleStatisticsData()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const moduleMultiCopy = (type, length, direction) => {
|
const moduleMultiCopy = (type, length, direction) => {
|
||||||
@ -379,7 +386,6 @@ export function useModule() {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
setModuleStatisticsData()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const moduleColumnRemove = (type) => {
|
const moduleColumnRemove = (type) => {
|
||||||
@ -494,7 +500,6 @@ export function useModule() {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
setModuleStatisticsData()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const moduleRowRemove = (type) => {
|
const moduleRowRemove = (type) => {
|
||||||
@ -610,7 +615,6 @@ export function useModule() {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
setModuleStatisticsData()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const moduleColumnInsert = (type) => {
|
const moduleColumnInsert = (type) => {
|
||||||
@ -706,8 +710,6 @@ export function useModule() {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
moduleSetupSurface.set({ modules: [...moduleSetupSurface.modules, ...copyModules] })
|
|
||||||
setModuleStatisticsData()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const muduleRowInsert = (type) => {
|
const muduleRowInsert = (type) => {
|
||||||
@ -805,9 +807,6 @@ export function useModule() {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
moduleSetupSurface.set({ modules: [...moduleSetupSurface.modules, ...copyModules] })
|
|
||||||
setModuleStatisticsData()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const alignModule = (type, surfaceArray) => {
|
const alignModule = (type, surfaceArray) => {
|
||||||
@ -880,7 +879,6 @@ export function useModule() {
|
|||||||
surface.set({ modules: modules })
|
surface.set({ modules: modules })
|
||||||
canvas.remove(activeModule)
|
canvas.remove(activeModule)
|
||||||
canvas.renderAll()
|
canvas.renderAll()
|
||||||
setModuleStatisticsData()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const moduleRoofRemove = (surfaceArray) => {
|
const moduleRoofRemove = (surfaceArray) => {
|
||||||
@ -976,7 +974,7 @@ export function useModule() {
|
|||||||
]
|
]
|
||||||
const surfaceObjects = {}
|
const surfaceObjects = {}
|
||||||
const surfaces = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)
|
const surfaces = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)
|
||||||
surfaces.forEach((surface) => {
|
const rows = surfaces.map((surface) => {
|
||||||
surfaceObjects[surface.id] = {
|
surfaceObjects[surface.id] = {
|
||||||
roofSurface: canvas.getObjects().filter((obj) => obj.id === surface.parentId)[0].directionText,
|
roofSurface: canvas.getObjects().filter((obj) => obj.id === surface.parentId)[0].directionText,
|
||||||
circuit: '-',
|
circuit: '-',
|
||||||
@ -1013,12 +1011,11 @@ export function useModule() {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
let tempRows = []
|
let tempRows = []
|
||||||
console.log('surfaceObjects', surfaceObjects)
|
|
||||||
Object.keys(surfaceObjects).forEach((key) => {
|
Object.keys(surfaceObjects).forEach((key) => {
|
||||||
let tempRow = {
|
let tempRow = {
|
||||||
name: surfaceObjects[key].roofSurface,
|
name: surfaceObjects[key].roofSurface,
|
||||||
circuit: surfaceObjects[key].circuit,
|
circuit: surfaceObjects[key].circuit,
|
||||||
wpOut: parseFloat(surfaceObjects[key].wpOut / 1000),
|
wpOut: parseInt((surfaceObjects[key].wpOut / 1000).toFixed(3)),
|
||||||
}
|
}
|
||||||
selectedModules.itemList.forEach((module) => {
|
selectedModules.itemList.forEach((module) => {
|
||||||
tempRow[module.itemId] = surfaceObjects[key][module.itemId]
|
tempRow[module.itemId] = surfaceObjects[key][module.itemId]
|
||||||
@ -1029,7 +1026,7 @@ export function useModule() {
|
|||||||
let row = {
|
let row = {
|
||||||
name: surfaceObjects[key].roofSurface,
|
name: surfaceObjects[key].roofSurface,
|
||||||
circuit: surfaceObjects[key].circuits[circuit].circuit,
|
circuit: surfaceObjects[key].circuits[circuit].circuit,
|
||||||
wpOut: parseFloat(surfaceObjects[key].circuits[circuit].circuits.wpOut / 1000),
|
wpOut: parseInt((surfaceObjects[key].circuits[circuit].circuits.wpOut / 1000).toFixed(3)),
|
||||||
}
|
}
|
||||||
selectedModules.itemList.forEach((module) => {
|
selectedModules.itemList.forEach((module) => {
|
||||||
row[module.itemId] = surfaceObjects[key].circuits[circuit].circuits[module.itemId]
|
row[module.itemId] = surfaceObjects[key].circuits[circuit].circuits[module.itemId]
|
||||||
@ -1037,14 +1034,14 @@ export function useModule() {
|
|||||||
tempRows.push(row)
|
tempRows.push(row)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
console.log('tempRows', tempRows)
|
|
||||||
const tempFooter = {
|
const tempFooter = {
|
||||||
name: getMessage('modal.panel.batch.statistic.total'),
|
name: getMessage('modal.panel.batch.statistic.total'),
|
||||||
circuit: '-',
|
circuit: '-',
|
||||||
wpOut: tempRows.reduce((acc, row) => acc + row.wpOut, 0),
|
wpOut: tempRows.reduce((acc, row) => acc + row.wpOut, 0),
|
||||||
}
|
}
|
||||||
selectedModules.itemList.forEach((module) => {
|
selectedModules.itemList.forEach((module) => {
|
||||||
tempFooter[module.itemId] = tempRows.reduce((acc, row) => acc + (row[module.itemId] ? parseFloat(row[module.itemId]) : 0), 0)
|
tempFooter[module.itemId] = tempRows.reduce((acc, row) => acc + row[module.itemId], 0)
|
||||||
})
|
})
|
||||||
setModuleStatistics({ header: tempHeader, rows: tempRows.filter((row) => row.wpOut !== 0), footer: tempFooter })
|
setModuleStatistics({ header: tempHeader, rows: tempRows.filter((row) => row.wpOut !== 0), footer: tempFooter })
|
||||||
}
|
}
|
||||||
|
|||||||
@ -123,7 +123,7 @@ export function useModuleBasicSetting(tabNum) {
|
|||||||
makeModuleInstArea(roof, detail.data)
|
makeModuleInstArea(roof, detail.data)
|
||||||
//surface에 상세 데이터 추가
|
//surface에 상세 데이터 추가
|
||||||
} else {
|
} else {
|
||||||
console.log('가대 데이터가 없네요...')
|
swalFire({ text: getMessage('module.roof.not.exist'), icon: 'warning' })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@ -747,18 +747,18 @@ export function useContextMenu() {
|
|||||||
{
|
{
|
||||||
id: 'moduleMove',
|
id: 'moduleMove',
|
||||||
name: getMessage('contextmenu.module.move'),
|
name: getMessage('contextmenu.module.move'),
|
||||||
component: <PanelEdit id={popupId} type={PANEL_EDIT_TYPE.MOVE_ALL} />,
|
component: <PanelEdit id={popupId} type={PANEL_EDIT_TYPE.MOVE_ALL} arrayData={currentObject.arrayData} />,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'moduleCopy',
|
id: 'moduleCopy',
|
||||||
name: getMessage('contextmenu.module.copy'),
|
name: getMessage('contextmenu.module.copy'),
|
||||||
component: <PanelEdit id={popupId} type={PANEL_EDIT_TYPE.COPY_ALL} />,
|
component: <PanelEdit id={popupId} type={PANEL_EDIT_TYPE.COPY_ALL} arrayData={currentObject.arrayData} />,
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'moduleCircuitNumberEdit',
|
|
||||||
name: getMessage('contextmenu.module.circuit.number.edit'),
|
|
||||||
component: <CircuitNumberEdit id={popupId} />,
|
|
||||||
},
|
},
|
||||||
|
// {
|
||||||
|
// id: 'moduleCircuitNumberEdit',
|
||||||
|
// name: getMessage('contextmenu.module.circuit.number.edit'),
|
||||||
|
// component: <CircuitNumberEdit id={popupId} />,
|
||||||
|
// },
|
||||||
],
|
],
|
||||||
])
|
])
|
||||||
break
|
break
|
||||||
|
|||||||
@ -998,5 +998,6 @@
|
|||||||
"menu.validation.canvas.roof": "패널을 배치하려면 지붕면을 입력해야 합니다.",
|
"menu.validation.canvas.roof": "패널을 배치하려면 지붕면을 입력해야 합니다.",
|
||||||
"batch.object.outside.roof": "오브젝트는 지붕내에 설치해야 합니다.",
|
"batch.object.outside.roof": "오브젝트는 지붕내에 설치해야 합니다.",
|
||||||
"batch.object.notinstall.cross": "오브젝트는 겹쳐서 설치 할 수 없습니다.",
|
"batch.object.notinstall.cross": "오브젝트는 겹쳐서 설치 할 수 없습니다.",
|
||||||
"module.not.batch.north": "북쪽에는 모듈을 배치할 수 없습니다."
|
"module.not.batch.north": "북쪽에는 모듈을 배치할 수 없습니다.",
|
||||||
|
"module.trestleDetail.not.exist": "가대 상세 정보가 없습니다."
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user