From 7c355d6cc43b0ed537ac53a15ca20496e63e7e5b Mon Sep 17 00:00:00 2001 From: basssy Date: Thu, 16 Jan 2025 17:54:56 +0900 Subject: [PATCH 1/8] =?UTF-8?q?=EA=B2=AC=EC=A0=81=EC=84=9C=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EC=83=81=EB=8B=A8=20=EB=A9=94=EB=89=B4=EC=9D=B4?= =?UTF-8?q?=EB=8F=99=20=EA=B4=80=EB=A0=A8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/floor-plan/CanvasMenu.jsx | 6 +++- src/components/management/StuffDetail.jsx | 1 + src/components/management/StuffSubHeader.jsx | 4 +-- .../management/popup/PlanRequestPop.jsx | 35 ++++--------------- .../management/popup/PlanRequestPopQGrid.jsx | 5 +-- .../estimate/useEstimateController.js | 1 + 6 files changed, 19 insertions(+), 33 deletions(-) diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx index 6d33d474..c5fb9194 100644 --- a/src/components/floor-plan/CanvasMenu.jsx +++ b/src/components/floor-plan/CanvasMenu.jsx @@ -203,7 +203,11 @@ export default function CanvasMenu(props) { setCurrentMenu(menu.title) } - if (pathname !== '/floor-plan') router.push(`/floor-plan?pid=${pid}&objectNo=${objectNo}`) + if (pathname !== '/floor-plan') { + if (menu.index !== 0) { + router.push(`/floor-plan?pid=${pid}&objectNo=${objectNo}`) + } + } } const changeSelectedRoofMaterial = (e) => { diff --git a/src/components/management/StuffDetail.jsx b/src/components/management/StuffDetail.jsx index 15ea41fc..7741b59c 100644 --- a/src/components/management/StuffDetail.jsx +++ b/src/components/management/StuffDetail.jsx @@ -304,6 +304,7 @@ export default function StuffDetail() { //mid:5(견적서), /pid:플랜번호 setFloorPlanObjectNo({ floorPlanObjectNo: params.data.objectNo }) setIsGlobalLoading(true) + setMenuNumber(5) router.push(`/floor-plan/estimate/5?pid=${params.data.planNo}&objectNo=${params.data.objectNo}`) }} > diff --git a/src/components/management/StuffSubHeader.jsx b/src/components/management/StuffSubHeader.jsx index 6dc316cb..18bd5969 100644 --- a/src/components/management/StuffSubHeader.jsx +++ b/src/components/management/StuffSubHeader.jsx @@ -40,8 +40,8 @@ export default function StuffSubHeader({ type }) { if (isObjectNotEmpty(managementState)) { if (managementState.createUser === 'T01') { if (session.userId !== 'T01') { - //도면 작성은 이동 할 수 있도록 변경 #457 - // setButtonStyle('none') + //도면 작성은 이동 할 수 있도록 변경 #457 다시 못하도록 변경#474 + setButtonStyle('none') } } } diff --git a/src/components/management/popup/PlanRequestPop.jsx b/src/components/management/popup/PlanRequestPop.jsx index 23a041be..38df870f 100644 --- a/src/components/management/popup/PlanRequestPop.jsx +++ b/src/components/management/popup/PlanRequestPop.jsx @@ -8,19 +8,12 @@ import SingleDatePicker from '@/components/common/datepicker/SingleDatePicker' import dayjs from 'dayjs' import PlanRequestPopQGrid from './PlanRequestPopQGrid' import { isObjectNotEmpty, queryStringFormatter } from '@/util/common-utils' -import { useCommonCode } from '@/hooks/common/useCommonCode' -import Select from 'react-select' import QPagination from '@/components/common/pagination/QPagination' export default function PlanRequestPop(props) { const [pageNo, setPageNo] = useState(1) //현재 페이지 번호 const [pageSize, setPageSize] = useState(20) //페이지 당 게시물 개수 const [totalCount, setTotalCount] = useState(0) //총 갯수 - //공통코드 - const { commonCode, findCommonCode } = useCommonCode() - - // const [planStatCdList, setPlanStatCdList] = useState([]) - const globalLocaleState = useRecoilValue(globalLocaleStore) const [planReqObject, setPlanReqObject] = useState({}) @@ -71,16 +64,6 @@ export default function PlanRequestPop(props) { } } - // 상태 검색조건 변경 - const onSelectionChange = (key) => { - if (isObjectNotEmpty(key)) { - setSchPlanStatCd(key.clCode) - } else { - //X누름 - setSchPlanStatCd('') - } - } - // 조회 const onSubmit = (page, type) => { const params = { @@ -194,7 +177,8 @@ export default function PlanRequestPop(props) { { field: 'title', headerName: getMessage('stuff.planReqPopup.gridHeader.title'), - minWidth: 150, + minWidth: 250, + cellStyle: { textAlign: 'left' }, }, { field: 'address1', @@ -234,13 +218,6 @@ export default function PlanRequestPop(props) { } } - // useEffect(() => { - // const code1 = findCommonCode(115800) //상태 - // if (code1 != null) { - // setPlanStatCdList(code1) - // } - // }, [commonCode]) - useEffect(() => { onSubmit(pageNo, 'S') }, []) @@ -431,9 +408,11 @@ export default function PlanRequestPop(props) { - -
- +
+ +
+ +
diff --git a/src/components/management/popup/PlanRequestPopQGrid.jsx b/src/components/management/popup/PlanRequestPopQGrid.jsx index f7dbba0f..0e5117e3 100644 --- a/src/components/management/popup/PlanRequestPopQGrid.jsx +++ b/src/components/management/popup/PlanRequestPopQGrid.jsx @@ -22,8 +22,8 @@ export default function PlanRequestPopQGrid(props) { flex: 1, minWidth: 100, sortable: false, - suppressMovable: false, - resizable: false, + suppressMovable: true, + resizable: true, suppressSizeToFit: false, } }, []) @@ -58,6 +58,7 @@ export default function PlanRequestPopQGrid(props) { defaultColDef={defaultColDef} pagination={isPageable} onSelectionChanged={onSelectionChanged} + autoSizeAllColumns={true} overlayNoRowsTemplate={`${getMessage('stuff.grid.noData')}`} /> diff --git a/src/hooks/floorPlan/estimate/useEstimateController.js b/src/hooks/floorPlan/estimate/useEstimateController.js index 66b0974c..066393cf 100644 --- a/src/hooks/floorPlan/estimate/useEstimateController.js +++ b/src/hooks/floorPlan/estimate/useEstimateController.js @@ -80,6 +80,7 @@ export const useEstimateController = (planNo) => { res.data.pkgAsp = roundedNumber.toString() } + setEstimateContextState(res.data) } } From e8078177f4ecf3e5b777f15201ad9199385ccb4e Mon Sep 17 00:00:00 2001 From: basssy Date: Thu, 16 Jan 2025 17:57:23 +0900 Subject: [PATCH 2/8] =?UTF-8?q?=EA=B2=AC=EC=A0=81=EC=84=9C=20objectNo=20,?= =?UTF-8?q?=20=ED=8C=9D=EC=97=85=EC=B0=BD=20=EB=8B=AB=EB=8A=94=20=EC=88=9C?= =?UTF-8?q?=EC=84=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/estimate/Estimate.jsx | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/components/estimate/Estimate.jsx b/src/components/estimate/Estimate.jsx index 5ef2c9da..d0512fd7 100644 --- a/src/components/estimate/Estimate.jsx +++ b/src/components/estimate/Estimate.jsx @@ -99,7 +99,9 @@ export default function Estimate({}) { const initEstimate = (currPid = currentPid) => { console.log('🚀 ~ initEstimate ~ currPid:', currPid) + closeAll() setMenuNumber(5) + setObjectNo(objectRecoil.floorPlanObjectNo) setPlanNo(currPid) @@ -137,7 +139,6 @@ export default function Estimate({}) { }, [selectedPlan]) useEffect(() => { - closeAll() initEstimate() }, []) @@ -619,7 +620,7 @@ export default function Estimate({}) { updates.partAdd = '0' updates.saleTotPrice = (Number(amount.replaceAll(',', '')) * estimateContextState.itemList[index].salePrice.replaceAll(',', '')).toLocaleString() updates.showSaleTotPrice = ( - Number(amount.replaceAll(',', '')) * estimateContextState.itemList[index].showSalePrice?.replaceAll(',', '') + Number(amount.replaceAll(',', '')) * estimateContextState.itemList[index].salePrice?.replaceAll(',', '') ).toLocaleString() updateList = estimateContextState.itemList.map((item) => { @@ -681,7 +682,6 @@ export default function Estimate({}) { let updateList = [] let updates = {} get({ url: apiUrl }).then((res) => { - // console.log('아이템디테일::::::::', res) updates.objectNo = objectNo updates.planNo = planNo updates.itemId = res.itemId @@ -706,7 +706,6 @@ export default function Estimate({}) { updates.openFlg = res.openFlg if (estimateContextState.estimateType === 'YJSS') { - // console.log('YJSS:::,', res.pkgMaterialFlg) if (res.pkgMaterialFlg === '0') { updates.showSalePrice = '0' updates.showSaleTotPrice = '0' @@ -721,7 +720,6 @@ export default function Estimate({}) { //104671 let bomList = res.itemBomList - // console.log('updates::', updates) updateList = estimateContextState.itemList.map((item) => { if (item.dispOrder === dispOrder) { if (item?.addFlg) { @@ -729,6 +727,12 @@ export default function Estimate({}) { } else { if (estimateContextState.estimateType === 'YJSS') { return { ...item, ...updates, salePrice: '', saleTotPrice: '' } + //확인 + // if (updates.pkgMaterialFlg === '1') { + // return { ...item, ...updates, showSalePrice: updates.salePrice } + // } else { + // return { ...item, ...updates, salePrice: '', saleTotPrice: '' } + // } } else { return { ...item, ...updates } } @@ -739,7 +743,6 @@ export default function Estimate({}) { return item } }) - //paDispOrder if (bomList) { bomList.map((bomItem, index) => { @@ -879,7 +882,6 @@ export default function Estimate({}) { } const calculateYJSSTotals = (itemList) => { - // console.log(':::itemList::', itemList) itemList.sort((a, b) => a.dispOrder - b.dispOrder) makeUniqueSpecialNoteCd(itemList) itemList.forEach((item) => { @@ -918,7 +920,6 @@ export default function Estimate({}) { } } }) - // console.log('itemList::', itemList) let pkgAsp = estimateContextState.pkgAsp ? Number(estimateContextState.pkgAsp.replaceAll(',', '')) : 0 totals.pkgTotPrice = pkgAsp * totals.totVolKw * 1000 @@ -1006,7 +1007,7 @@ export default function Estimate({}) {
{getMessage('estimate.detail.objectNo')}
{/* {objectNo} (Plan No: {estimateContextState.planNo}) */} - {objectNo} (Plan No: {planNo}) + {currentObjectNo} (Plan No: {planNo})
From d73daf10246c84df2c439c668c8faf5af785911b Mon Sep 17 00:00:00 2001 From: changkyu choi Date: Thu, 16 Jan 2025 18:14:52 +0900 Subject: [PATCH 3/8] =?UTF-8?q?=EB=B0=B0=EC=B9=98=EB=A9=B4=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=EC=84=A4=EC=A0=95=20=EC=84=9C=EA=B9=8C=EB=9E=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../placementShape/PlacementShapeSetting.jsx | 59 ++++++++++--------- src/hooks/option/useCanvasSetting.js | 15 +++-- 2 files changed, 41 insertions(+), 33 deletions(-) diff --git a/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx b/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx index a9619c2f..66fa021e 100644 --- a/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx +++ b/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx @@ -56,20 +56,25 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, set ] // 데이터를 최초 한 번만 조회 - useEffect(() => { - if (!basicSetting || !currentRoof || Object.keys(currentRoof).length === 0 || Object.keys(basicSetting).length === 0) return - const raftCodeList = findCommonCode('203800') - setRaftCodes(raftCodeList) - - if (addedRoofs[0].roofAngleSet && addedRoofs[0].roofAngleSet?.length > 0) { - setCurrentRoof({ ...currentRoof, roofSizeSet: String(addedRoofs[0].roofSizeSet), roofAngleSet: addedRoofs[0].roofAngleSet }) - } else if (basicSetting.roofAngleSet && basicSetting.roofAngleSet?.length > 0) { - setCurrentRoof({ ...currentRoof, roofSizeSet: String(basicSetting.roofSizeSet), roofAngleSet: basicSetting.roofAngleSet }) - } - }, []) + // useEffect(() => { + // if (!basicSetting || !currentRoof || Object.keys(currentRoof).length === 0 || Object.keys(basicSetting).length === 0) return + // const raftCodeList = findCommonCode('203800') + // setRaftCodes(raftCodeList) + // console.log('🚀 ~ useEffect ~ >>>>>>>>>>>>> raftCodeList 11 :', raftCodeList) + + + // if (addedRoofs[0].roofAngleSet && addedRoofs[0].roofAngleSet?.length > 0) { + // setCurrentRoof({ ...currentRoof, roofSizeSet: String(addedRoofs[0].roofSizeSet), roofAngleSet: addedRoofs[0].roofAngleSet }) + // } else if (basicSetting.roofAngleSet && basicSetting.roofAngleSet?.length > 0) { + // setCurrentRoof({ ...currentRoof, roofSizeSet: String(basicSetting.roofSizeSet), roofAngleSet: basicSetting.roofAngleSet }) + // } + // }, []) useEffect(() => { if (addedRoofs.length > 0) { + const raftCodeList = findCommonCode('203800') + setRaftCodes(raftCodeList) + setCurrentRoof({ ...addedRoofs[0] }) } }, [addedRoofs]) @@ -155,20 +160,20 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, set ...roofInfo, }, //roofs: addedRoofs, - roofsData: { - roofApply: true, - roofSeq: 0, - roofMatlCd: currentRoof.roofMatlCd, - roofWidth: currentRoof.width, - roofHeight: currentRoof.length, - roofHajebichi: currentRoof.hajebichi, - roofGap: currentRoof.raft, - roofLayout: currentRoof.layout, - roofSizeSet: currentRoof.roofSizeSet, - roofAngleSet: currentRoof.roofAngleSet, - roofPitch: currentRoof.pitch, - roofAngle: currentRoof.angle, - }, + // roofsData: { + // roofApply: true, + // roofSeq: 0, + // roofMatlCd: currentRoof.roofMatlCd, + // roofWidth: currentRoof.width, + // roofHeight: currentRoof.length, + // roofHajebichi: currentRoof.hajebichi, + // roofGap: currentRoof.raft, + // roofLayout: currentRoof.layout, + // roofSizeSet: currentRoof.roofSizeSet, + // roofAngleSet: currentRoof.roofAngleSet, + // roofPitch: currentRoof.pitch, + // roofAngle: currentRoof.angle, + // }, }) basicSettingSave() @@ -338,13 +343,13 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, set {currentRoof && ['C', 'R'].includes(currentRoof.raftAuth) && (
{getMessage('modal.placement.initial.setting.rafter')} - {raftCodes.length > 0 && ( + {raftCodes?.length > 0 && (
r.clCode === (currentRoof?.raft === undefined ? currentRoof?.raftBaseCd : currentRoof?.raft)).clCodeNm + raftCodes?.find((r) => r.clCode === (currentRoof?.raft === undefined ? currentRoof?.raftBaseCd : currentRoof?.raft)).clCodeNm } value={currentRoof?.raft === undefined ? currentRoof?.raftBaseCd : currentRoof?.raft} onChange={(e) => handleRafterChange(e.clCode)} diff --git a/src/hooks/option/useCanvasSetting.js b/src/hooks/option/useCanvasSetting.js index 951d9801..ed9dec8c 100644 --- a/src/hooks/option/useCanvasSetting.js +++ b/src/hooks/option/useCanvasSetting.js @@ -48,7 +48,7 @@ const defaultDotLineGridSetting = { LINE: false, } -let previousRoofMaterialsYn = 'N' // 지붕재 select 정보 비교 후 변경된 것이 없으면 1회만 실행 +//let previousRoofMaterialsYn = 'N' // 지붕재 select 정보 비교 후 변경된 것이 없으면 1회만 실행 export function useCanvasSetting() { const canvas = useRecoilValue(canvasState) @@ -159,21 +159,23 @@ export function useCanvasSetting() { setBasicSettings({ ...basicSetting, selectedRoofMaterial: selectedRoofMaterial }) } + const previousObjectNoRef = useRef(null) const previousRoofMaterialsRef = useRef(null) useEffect(() => { // 지붕재 select 정보가 존재해야 배치면초기설정 DB 정보 비교 후 지붕재 정보를 가져올 수 있음 - if (roofMaterials.length !== 0 && JSON.stringify(previousRoofMaterialsRef.current) !== JSON.stringify(roofMaterials)) { - // 지붕재 select 정보 비교 후 변경된 것이 없으면 1회만 실행 - if (roofMaterials && previousRoofMaterialsYn === 'N') { + if (!previousObjectNoRef.current && !correntObjectNo && previousObjectNoRef.current !== correntObjectNo + || roofMaterials.length !== 0 && JSON.stringify(previousRoofMaterialsRef.current) !== JSON.stringify(roofMaterials)) { + + if (roofMaterials) { fetchBasicSettings() - previousRoofMaterialsYn = 'Y' } // 이전 값을 업데이트 + previousObjectNoRef.current = correntObjectNo previousRoofMaterialsRef.current = roofMaterials } - }, [roofMaterials]) + }, [roofMaterials, correntObjectNo]) useEffect(() => { if (!canvas) { @@ -328,6 +330,7 @@ export function useCanvasSetting() { roofGap: 'HEI_455', roofLayout: 'P', roofPitch: 4, + roofAngle: 21.8, }, ] } From 7db2553074b0f8a6dcca379a96c4b112d367d9b2 Mon Sep 17 00:00:00 2001 From: basssy Date: Fri, 17 Jan 2025 00:08:32 +0900 Subject: [PATCH 4/8] =?UTF-8?q?=EA=B2=AC=EC=A0=81=EC=84=9C=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=ED=9B=84=20=EC=95=84=EC=9D=B4=ED=85=9C=20=EC=B2=B4?= =?UTF-8?q?=ED=81=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/estimate/Estimate.jsx | 156 +++++++++++++++--- .../estimate/useEstimateController.js | 4 +- 2 files changed, 134 insertions(+), 26 deletions(-) diff --git a/src/components/estimate/Estimate.jsx b/src/components/estimate/Estimate.jsx index d0512fd7..0dc86adb 100644 --- a/src/components/estimate/Estimate.jsx +++ b/src/components/estimate/Estimate.jsx @@ -950,30 +950,138 @@ export default function Estimate({}) { setItemChangeYn(false) } else { - estimateContextState.itemList.forEach((item) => { - if (estimateContextState.estimateType === 'YJSS' && !item.paDispOrder && item.pkgMaterialFlg === '0') { - item.showSalePrice = '0' - item.showSaleTotPrice = '0' - } - if (estimateContextState.estimateType === 'YJSS' && item.openFlg === '1') { - item.showSalePrice = '0' - item.showSaleTotPrice = '0' - } - if (estimateContextState.estimateType === 'YJSS' && item.paDispOrder) { - item.showSalePrice = '0' - item.showSaleTotPrice = '0' - } - }) - estimateContextState.itemList.forEach((item) => { - if (estimateContextState.estimateType === 'YJOD' && item.openFlg === '1') { - item.showSalePrice = '0' - item.showSaleTotPrice = '0' - } - if (estimateContextState.estimateType === 'YJOD' && item.paDispOrder) { - item.showSalePrice = '0' - item.showSaleTotPrice = '0' - } - }) + let totals = { + totAmount: 0, + totVolKw: 0, + supplyPrice: 0, + vatPrice: 0, + totPrice: 0, + addSupplyPrice: 0, + pkgTotPrice: 0, + } + estimateContextState.itemList.sort((a, b) => a.dispOrder - b.dispOrder) + makeUniqueSpecialNoteCd(estimateContextState.itemList) + + if (estimateContextState.estimateType === 'YJSS') { + estimateContextState.itemList.forEach((item) => { + if (estimateContextState.estimateType === 'YJSS' && !item.paDispOrder && item.pkgMaterialFlg === '0') { + item.showSalePrice = '0' + item.showSaleTotPrice = '0' + } + if (estimateContextState.estimateType === 'YJSS' && item.openFlg === '1') { + item.showSalePrice = '0' + item.showSaleTotPrice = '0' + } + if (estimateContextState.estimateType === 'YJSS' && item.paDispOrder) { + item.showSalePrice = '0' + item.showSaleTotPrice = '0' + } + }) + + estimateContextState.itemList.forEach((item) => { + if (item.delFlg === '0') { + let amount = Number(item.amount?.replace(/[^0-9]/g, '').replaceAll(',', '')) || 0 + let salePrice + if (item.moduleFlg === '1') { + const volKw = (item.pnowW * amount) / 1000 + totals.totVolKw += volKw + } + if (amount === 0) { + salePrice = 0 + } else { + salePrice = Number(item.salePrice?.replaceAll(',', '')) || 0 + } + + totals.totAmount += amount + if (item.pkgMaterialFlg === '1') { + const saleTotPrice = amount * salePrice + totals.addSupplyPrice += saleTotPrice + } + + if (!item.paDispOrder) { + if (item.pkgMaterialFlg === '0') { + item.showSalePrice = '0' + item.showSaleTotPrice = '0' + } + } else { + item.showSalePrice = '0' + item.showSaleTotPrice = '0' + } + + if (item.openFlg === '1') { + item.showSalePrice = '0' + item.showSaleTotPrice = '0' + } + } + }) + let pkgAsp = estimateContextState.pkgAsp ? Number(estimateContextState.pkgAsp.replaceAll(',', '')) : 0 + + totals.pkgTotPrice = pkgAsp * totals.totVolKw * 1000 + totals.supplyPrice = totals.addSupplyPrice + totals.pkgTotPrice + totals.vatPrice = totals.supplyPrice * 0.1 + totals.totPrice = totals.supplyPrice + totals.vatPrice + + setEstimateContextState({ + pkgTotPrice: totals.pkgTotPrice, + totAmount: totals.totAmount, + totVolKw: totals.totVolKw.toFixed(2), + supplyPrice: totals.supplyPrice.toFixed(0), //소수첫자리에서 반올림 + vatPrice: totals.vatPrice.toFixed(0), //소수첫자리에서 반올림 + totPrice: totals.totPrice.toFixed(0), //소수첫자리에서 반올림 + }) + } else { + estimateContextState.itemList.forEach((item) => { + if (estimateContextState.estimateType === 'YJOD' && item.openFlg === '1') { + item.showSalePrice = '0' + item.showSaleTotPrice = '0' + } + if (estimateContextState.estimateType === 'YJOD' && item.paDispOrder) { + item.showSalePrice = '0' + item.showSaleTotPrice = '0' + } + }) + + estimateContextState.itemList.forEach((item) => { + delete item.showSalePrice + delete item.showSaleTotPrice + if (item.delFlg === '0') { + let amount = Number(item.amount?.replace(/[^0-9]/g, '').replaceAll(',', '')) || 0 + let price + if (amount === 0) { + price = 0 + } else { + price = Number(item.saleTotPrice?.replaceAll(',', '')) || 0 + } + + if (item.moduleFlg === '1') { + const volKw = (item.pnowW * amount) / 1000 + totals.totVolKw += volKw + } + totals.supplyPrice += price + totals.totAmount += amount + + if (item.paDispOrder) { + item.showSalePrice = '0' + item.showSaleTotPrice = '0' + } + if (item.openFlg === '1') { + item.showSalePrice = '0' + item.showSaleTotPrice = '0' + } + } + }) + + totals.vatPrice = totals.supplyPrice * 0.1 + totals.totPrice = totals.supplyPrice + totals.vatPrice + + setEstimateContextState({ + totAmount: totals.totAmount, + totVolKw: totals.totVolKw.toFixed(2), + supplyPrice: totals.supplyPrice.toFixed(0), //소수첫자리에서 반올림 + vatPrice: totals.vatPrice.toFixed(0), //소수첫자리에서 반올림 + totPrice: totals.totPrice.toFixed(0), //소수첫자리에서 반올림 + }) + } } }, [itemChangeYn, estimateContextState.itemList]) diff --git a/src/hooks/floorPlan/estimate/useEstimateController.js b/src/hooks/floorPlan/estimate/useEstimateController.js index 066393cf..ebd1ad88 100644 --- a/src/hooks/floorPlan/estimate/useEstimateController.js +++ b/src/hooks/floorPlan/estimate/useEstimateController.js @@ -385,7 +385,7 @@ export const useEstimateController = (planNo) => { if (res.status === 201) { estimateData.newFileList = [] swalFire({ text: getMessage('estimate.detail.save.alertMsg'), type: 'alert' }) - fetchSetting(objectRecoil.floorPlanObjectNo, estimateData.planNo) + fetchSetting(estimateData.objectNo, estimateData.planNo) } }) } catch (e) { @@ -410,7 +410,7 @@ export const useEstimateController = (planNo) => { const params = { saleStoreId: session.storeId, sapSalesStoreCd: session.custCd, - objectNo: objectRecoil.floorPlanObjectNo, + objectNo: estimateData.objectNo, planNo: sendPlanNo, copySaleStoreId: otherSaleStoreId ? otherSaleStoreId : saleStoreId, copyReceiveUser: copyReceiveUser, From d862ab359e6b17dac9569f4947531c1f860ec7b1 Mon Sep 17 00:00:00 2001 From: basssy Date: Fri, 17 Jan 2025 00:30:15 +0900 Subject: [PATCH 5/8] =?UTF-8?q?=20=EA=B2=AC=EC=A0=81=EC=84=9C=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=ED=85=9C=20=EA=B4=80=EB=A0=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/estimate/Estimate.jsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/estimate/Estimate.jsx b/src/components/estimate/Estimate.jsx index 0dc86adb..39766b12 100644 --- a/src/components/estimate/Estimate.jsx +++ b/src/components/estimate/Estimate.jsx @@ -726,13 +726,13 @@ export default function Estimate({}) { return { ...item, ...updates, saleTotPrice: '' } } else { if (estimateContextState.estimateType === 'YJSS') { - return { ...item, ...updates, salePrice: '', saleTotPrice: '' } + // return { ...item, ...updates, salePrice: '', saleTotPrice: '' } //확인 - // if (updates.pkgMaterialFlg === '1') { - // return { ...item, ...updates, showSalePrice: updates.salePrice } - // } else { - // return { ...item, ...updates, salePrice: '', saleTotPrice: '' } - // } + if (updates.pkgMaterialFlg === '1') { + return { ...item, ...updates, showSalePrice: updates.salePrice } + } else { + return { ...item, ...updates, salePrice: '', saleTotPrice: '' } + } } else { return { ...item, ...updates } } From 3aa20d6cf1956c5eabe77ebf3643e552e56bf2ed Mon Sep 17 00:00:00 2001 From: changkyu choi Date: Fri, 17 Jan 2025 09:34:50 +0900 Subject: [PATCH 6/8] =?UTF-8?q?=EC=A7=80=EB=B6=95=EB=A9=B4=20=ED=95=A0?= =?UTF-8?q?=EB=8B=B9=20=EC=B2=B4=ED=81=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/option/useCanvasSetting.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/option/useCanvasSetting.js b/src/hooks/option/useCanvasSetting.js index ed9dec8c..6afced52 100644 --- a/src/hooks/option/useCanvasSetting.js +++ b/src/hooks/option/useCanvasSetting.js @@ -299,7 +299,7 @@ export function useCanvasSetting() { }) roofsArray = res.map((item) => { return { - roofApply: true, + roofApply: item.roofApply, roofSeq: 0, roofMatlCd: item.roofMatlCd, roofWidth: item.roofWidth, From 28b0a5a65ac44d79343fd11d582b326dc74e65c2 Mon Sep 17 00:00:00 2001 From: basssy Date: Fri, 17 Jan 2025 09:50:42 +0900 Subject: [PATCH 7/8] =?UTF-8?q?=EB=AC=BC=EA=B1=B4=203-4=EB=93=B1=20?= =?UTF-8?q?=ED=95=98=EC=9C=84=20=EC=9E=88=EB=8A=94=202=EC=B0=A8=EC=A0=90?= =?UTF-8?q?=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=ED=95=B4=EC=84=9C=20=EB=AC=BC?= =?UTF-8?q?=EA=B1=B4=20=EC=9E=84=EC=8B=9C=EC=A0=80=EC=9E=A5=20/=20?= =?UTF-8?q?=EC=A0=80=EC=9E=A5=EC=8B=9C=202=EC=B0=A8=EC=A0=90=20=EC=97=86?= =?UTF-8?q?=EC=9C=BC=EB=A9=B4=20=EC=95=8C=EB=9F=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/estimate/Estimate.jsx | 2 -- src/components/management/StuffDetail.jsx | 9 ++++++++- src/locales/ja.json | 1 + src/locales/ko.json | 1 + 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/components/estimate/Estimate.jsx b/src/components/estimate/Estimate.jsx index 39766b12..21e87620 100644 --- a/src/components/estimate/Estimate.jsx +++ b/src/components/estimate/Estimate.jsx @@ -1185,7 +1185,6 @@ export default function Estimate({}) {
- {/* */}
- {/* */} 10) { diff --git a/src/locales/ja.json b/src/locales/ja.json index 900165c5..3c36a2cc 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -673,6 +673,7 @@ "stuff.detail.tooltip.surfaceType": "塩害地域の定義は各メーカーの設置マニュアルをご確認ください", "stuff.detail.tempSave.message1": "一時保存されました。商品番号を取得するには、必須項目をすべて入力してください。", "stuff.detail.tempSave.message2": "担当者は10桁以下で入力してください.", + "stuff.detail.tempSave.message3": "二次販売店を選択してください.", "stuff.detail.confirm.message1": "販売店情報を変更すると、設計依頼文書番号が削除されます。変更しますか?", "stuff.detail.delete.message1": "仕様が確定したものは削除できません。", "stuff.detail.planList.title": "プランリスト", diff --git a/src/locales/ko.json b/src/locales/ko.json index c5ba4658..c928a2f1 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -682,6 +682,7 @@ "stuff.detail.tooltip.surfaceType": "염해지역 정의는 각 메이커의 설치 메뉴얼을 확인해주십시오", "stuff.detail.tempSave.message1": "임시저장 되었습니다. 물건번호를 획득하려면 필수 항목을 모두 입력해 주십시오.", "stuff.detail.tempSave.message2": "담당자는 10자리 이하로 입력해 주십시오.", + "stuff.detail.tempSave.message3": "2차 판매점을 선택해주세요.", "stuff.detail.confirm.message1": "판매점 정보를 변경하면, 설계의뢰 문서번호가 삭제됩니다. 변경하시겠습니까?", "stuff.detail.delete.message1": "사양이 확정된 물건은 삭제할 수 없습니다.", "stuff.detail.planList.title": "플랜리스트", From 3ae8ef5dea87f3e487eae72810dbc7a34bdf751c Mon Sep 17 00:00:00 2001 From: basssy Date: Fri, 17 Jan 2025 10:12:07 +0900 Subject: [PATCH 8/8] =?UTF-8?q?=EA=B2=AC=EC=A0=81=EC=84=9C=20&=20=EB=B0=9C?= =?UTF-8?q?=EC=A0=84=EC=8B=9C=EB=AE=AC=EB=A0=88=EC=9D=B4=EC=85=98=20?= =?UTF-8?q?=ED=83=AD=EC=97=90=EC=84=9C=20=ED=94=8C=EB=9E=9C=20=ED=81=B4?= =?UTF-8?q?=EB=A6=AD=EC=8B=9C=20=EC=B2=B4=ED=81=AC=20=EB=B6=84=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/usePlan.js | 55 ++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/src/hooks/usePlan.js b/src/hooks/usePlan.js index 86b6aee3..fb743828 100644 --- a/src/hooks/usePlan.js +++ b/src/hooks/usePlan.js @@ -207,49 +207,54 @@ export function usePlan(params = {}) { const orderingNo = plans?.find((obj) => obj.id === newCurrentId).ordering const objectNo = floorPlanState.objectNo //견적서 or 발전시뮬 + if (pathname !== '/floor-plan') { await promiseGet({ url: `/api/estimate/${objectNo}/${orderingNo}/detail` }) .then((res) => { if (res.status === 200) { const estimateDetail = res.data - if (estimateDetail.docNo) { - res.data.resetFlag = 'N' + if (pathname === '/floor-plan/estimate/5') { + if (estimateDetail.tempFlg === '0' && estimateDetail.estimateDate !== null) { + console.log('이동') + res.data.resetFlag = 'N' - if (res.data.itemList.length > 0) { - res.data.itemList.map((item) => { - item.delFlg = '0' - }) - } - if (res.data.pkgAsp === null || res.data.pkgAsp == undefined) { - res.data.pkgAsp = '0.00' - } else { - const number = parseFloat(res.data.pkgAsp) - const roundedNumber = isNaN(number) ? '0.00' : number.toFixed(2) - - res.data.pkgAsp = roundedNumber.toString() - } - setEstimateContextState(res.data) - - if (pathname === '/floor-plan') { - if (!currentCanvasPlan || currentCanvasPlan.id !== newCurrentId) { - saveCanvas() + if (res.data.itemList.length > 0) { + res.data.itemList.map((item) => { + item.delFlg = '0' + }) } + if (res.data.pkgAsp === null || res.data.pkgAsp == undefined) { + res.data.pkgAsp = '0.00' + } else { + const number = parseFloat(res.data.pkgAsp) + const roundedNumber = isNaN(number) ? '0.00' : number.toFixed(2) + + res.data.pkgAsp = roundedNumber.toString() + } + setEstimateContextState(res.data) + // 클릭한 플랜 탭으로 이동 + updateCurrentPlan(newCurrentId) + } else { + swalFire({ text: getMessage('estimate.menu.move.valid1') }) } - updateCurrentPlan(newCurrentId) } else { - swalFire({ text: getMessage('estimate.menu.move.valid1') }) + //발전시뮬레이션 + // 클릭한 플랜 탭으로 이동 + // updateCurrentPlan(newCurrentId) } } }) .catch((error) => { - swalFire({ text: getMessage('estimate.menu.move.valid1') }) + if (pathname === '/floor-plan/estimate/5') { + swalFire({ text: getMessage('estimate.menu.move.valid1') }) + } else { + swalFire({ text: getMessage('simulator.menu.move.valid1') }) + } }) } else { - // if (pathname === '/floor-plan') { if (!currentCanvasPlan || currentCanvasPlan.id !== newCurrentId) { saveCanvas() } - // } updateCurrentPlan(newCurrentId) } }