Compare commits

..

No commits in common. "b88299b78d6fb7ae24340a1d772bf0ac62ffde6e" and "7fcaaece538f6638b3be1e35798f02253a16dc55" have entirely different histories.

11 changed files with 22 additions and 78 deletions

View File

@ -24,7 +24,7 @@
"js-cookie": "^3.0.5",
"mathjs": "^13.0.2",
"mssql": "^11.0.1",
"next": "14.2.25",
"next": "14.2.21",
"next-international": "^1.2.4",
"react": "^18",
"react-chartjs-2": "^5.2.0",

View File

@ -1361,12 +1361,7 @@ export default function Estimate({}) {
</th>
<td colSpan={3}>
<div className="radio-wrap">
{/*pkgRank is null, empty 인 경우 : 사용불가, 이전에 등록된 경우 사용가능, style로 제어*/}
<div className="d-check-radio light mr10" style={{display:
(isNotEmptyArray(storePriceList) > 0
&& storePriceList[0].pkgRank !== null
&& storePriceList[0].pkgRank !== ''
|| estimateContextState?.estimateType === 'YJSS') ? "" : "none"}}>
<div className="d-check-radio light mr10">
<input
type="radio"
name="estimateType"

View File

@ -31,13 +31,11 @@ import { useCanvasMenu } from '@/hooks/common/useCanvasMenu'
import { useEvent } from '@/hooks/useEvent'
import { compasDegAtom } from '@/store/orientationAtom'
import { hotkeyStore } from '@/store/hotkeyAtom'
import { usePopup } from '@/hooks/usePopup'
export default function CanvasFrame() {
const canvasRef = useRef(null)
const { canvas } = useCanvas('canvas')
const { canvasLoadInit, gridInit } = useCanvasConfigInitialize()
const { closeAll } = usePopup()
const currentMenu = useRecoilValue(currentMenuState)
const { floorPlanState } = useContext(FloorPlanContext)
const { contextMenu, handleClick } = useContextMenu()
@ -95,8 +93,6 @@ export default function CanvasFrame() {
useEffect(() => {
setIsGlobalLoading(false)
// .
closeAll()
return () => {
canvas?.clear()

View File

@ -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,35 +1282,13 @@ 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 //멀티모듈이면 전체 합, 체크된 한개의 열
//
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' })
if (sumRowCount > maxRow || sumColCount > maxCol) {
swalFire({ text: getMessage('module.layout.setup.max.count', [maxRow, maxCol]) })
return
}

View File

@ -248,22 +248,16 @@ export function useRoofAllocationSetting(id) {
swalFire({ type: 'alert', icon: 'error', text: getMessage('roof.exceed.count') })
return
}
const originCurrentRoofList = currentRoofList.map((roof) => {
return {
...roof,
setCurrentRoofList([
...currentRoofList,
{
...currentRoofMaterial,
selected: false,
}
})
originCurrentRoofList.push({
...currentRoofMaterial,
selected: true,
id: currentRoofMaterial.roofMatlCd,
name: currentRoofMaterial.roofMatlNm,
index: currentRoofList.length,
})
setCurrentRoofList(originCurrentRoofList)
id: currentRoofMaterial.roofMatlCd,
name: currentRoofMaterial.roofMatlNm,
index: currentRoofList.length,
},
])
}
/**
@ -273,7 +267,7 @@ export function useRoofAllocationSetting(id) {
const roofs = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.ROOF)
for (let i = 0; i < roofs.length; i++) {
if (roofs[i].roofMaterial?.index === idx) {
if (roofs[i].roofMaterial.index === idx) {
swalFire({ type: 'alert', icon: 'error', text: getMessage('roof.material.can.not.delete') })
return
}

View File

@ -28,7 +28,7 @@ export function useRoofShapePassivitySetting(id) {
const { addCanvasMouseEventListener, initEvent } = useEvent()
// const { addCanvasMouseEventListener, initEvent } = useContext(EventContext)
const { drawRoofPolygon } = useMode()
const { addPolygonByLines, addLengthText } = usePolygon()
const { addPolygonByLines } = usePolygon()
const currentObject = useRecoilValue(currentObjectState)
const offsetRef = useRef(null)
const pitchRef = useRef(null)
@ -248,7 +248,6 @@ export function useRoofShapePassivitySetting(id) {
// 완료 한 경우에는 지붕까지 그려줌
addPitchTextsByOuterLines()
const roof = drawRoofPolygon(wall)
addLengthText(roof)
}
canvas.renderAll()

View File

@ -107,10 +107,6 @@ export function useEvent() {
const horizonLines = canvas.getObjects().filter((obj) => obj.name === 'lineGrid' && obj.direction === 'horizontal')
const verticalLines = canvas.getObjects().filter((obj) => obj.name === 'lineGrid' && obj.direction === 'vertical')
if (!horizonLines || !verticalLines) {
return
}
const closestHorizontalLine = horizonLines.reduce((prev, curr) => {
const prevDistance = calculateDistance(pointer, prev)
const currDistance = calculateDistance(pointer, curr)

View File

@ -20,7 +20,6 @@ import { compasDegAtom } from '@/store/orientationAtom'
import { moduleSelectionDataState, selectedModuleState } from '@/store/selectedModuleOptions'
import { useCanvasPopupStatusController } from './common/useCanvasPopupStatusController'
import { useCanvasMenu } from './common/useCanvasMenu'
import { QcastContext } from '@/app/QcastProvider'
/**
* 플랜 처리
@ -53,9 +52,6 @@ export function usePlan(params = {}) {
const { fetchBasicSettings, basicSettingCopySave } = useCanvasSetting()
const [canvasSetting, setCanvasSetting] = useRecoilState(canvasSettingState)
/** 전역 로딩바 컨텍스트 */
const { setIsGlobalLoading } = useContext(QcastContext)
/**
* 플랜 복사 모듈이 있을경우 모듈 데이터 복사하기 위한 처리
*/
@ -418,7 +414,7 @@ export function usePlan(params = {}) {
useEffect(() => {
setSelectedPlan(currentCanvasPlan)
handleCurrentPlanUrl()
// resetCurrentObject()
resetCurrentObject()
resetModuleSetupSurface()
}, [currentCanvasPlan])
@ -454,21 +450,13 @@ export function usePlan(params = {}) {
text: `Plan ${currentCanvasPlan.planNo} ` + getMessage('plan.message.confirm.copy'),
type: 'confirm',
confirmFn: async () => {
setIsGlobalLoading(true)
await postObjectPlan(userId, objectNo, true, false)
setIsGlobalLoading(false)
},
denyFn: async () => {
setIsGlobalLoading(true)
await postObjectPlan(userId, objectNo, false, false)
setIsGlobalLoading(false)
},
})
: async () => {
setIsGlobalLoading(true)
await postObjectPlan(userId, objectNo, false, false)
setIsGlobalLoading(false)
}
: await postObjectPlan(userId, objectNo, false, false)
}
/**

View File

@ -1043,6 +1043,5 @@
"roof.line.not.found": "屋根形状がありません",
"roof.material.can.not.delete": "割り当てられた配置面があります。",
"module.layout.setup.max.count": "모듈의 최대 단수는 {0}, 최대 열수는 {1} 입니다. (JA)",
"chidory.can.not.install": "千鳥配置できない工法です。",
"module.layout.setup.max.count.multiple": "모듈 {0}번의 최대 단수는 {1}, 최대 열수는 {2} 입니다. (JA)"
"chidory.can.not.install": "千鳥配置できない工法です。"
}

View File

@ -1043,6 +1043,5 @@
"roof.line.not.found": "지붕형상이 없습니다.",
"roof.material.can.not.delete": "할당된 배치면이 있습니다.",
"module.layout.setup.max.count": "모듈의 최대 단수는 {0}, 최대 열수는 {1} 입니다.",
"chidory.can.not.install": "치조 불가 공법입니다.",
"module.layout.setup.max.count.multiple": "모듈 {0}번의 최대 단수는 {1}, 최대 열수는 {2} 입니다."
"chidory.can.not.install": "치조 불가 공법입니다."
}

View File

@ -1,2 +1,2 @@
var exec = require('child_process').exec
exec('yarn dev', { windowsHide: true })
exec('yarn start', { windowsHide: true })