diff --git a/src/components/floor-plan/modal/circuitTrestle/step/PowerConditionalSelect.jsx b/src/components/floor-plan/modal/circuitTrestle/step/PowerConditionalSelect.jsx index f8d1d530..b7e50fda 100644 --- a/src/components/floor-plan/modal/circuitTrestle/step/PowerConditionalSelect.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/step/PowerConditionalSelect.jsx @@ -110,6 +110,7 @@ export default function PowerConditionalSelect(props) { selected: s.pcsSerCd === data.pcsSerCd ? !s.selected : false, } }) + setSelectedModels([]) } setSeries(copySeries) handleSetmodels(copySeries.filter((s) => s.selected)) diff --git a/src/components/management/Stuff.jsx b/src/components/management/Stuff.jsx index c1835874..83bc71ce 100644 --- a/src/components/management/Stuff.jsx +++ b/src/components/management/Stuff.jsx @@ -203,7 +203,7 @@ export default function Stuff() { if (event.column.colId === 'objectNo') { return } else { - //T 면 임시 R은 진짜 + //T 면 임시 S는 진짜 if (event.data.objectNo) { setIsGlobalLoading(true) if (event.data.tempFlg === '0') { diff --git a/src/components/management/StuffDetail.jsx b/src/components/management/StuffDetail.jsx index 9f9dfdbf..2eef9813 100644 --- a/src/components/management/StuffDetail.jsx +++ b/src/components/management/StuffDetail.jsx @@ -54,7 +54,7 @@ export default function StuffDetail() { const { get, promiseGet, del, promisePost, promisePut } = useAxios(globalLocaleState) //form const formInitValue = { - // 물건번호 T...(임시) R...(진짜) + // 물건번호 T...(임시) S...(진짜) planReqNo: '', //설계의뢰No receiveUser: session?.userNm, //담당자 로그인사용자명 디폴트 objectStatusId: '0', //물건구분(신축:0 기축 : 1) @@ -1033,8 +1033,7 @@ export default function StuffDetail() { const _saleStoreId = watch('saleStoreId') // 2차 판매점명 const _otherSaleStoreId = watch('otherSaleStoreId') - // zipNo: '', //우편번호 - const _zipNo = watch('zipNo') + // zipNo: '', //우편번호 필수값제거 #947 // prefId: '', //도도부현 const _prefId = watch('prefId') // address: '', //주소 @@ -1071,10 +1070,6 @@ export default function StuffDetail() { } } - if (!formData.zipNo) { - errors.zipNo = true - } - if (!formData.prefId) { errors.prefId = true } @@ -1115,10 +1110,6 @@ export default function StuffDetail() { } } - if (!formData.zipNo) { - errors.zipNo = true - } - if (!formData.prefId || formData.prefId === '0') { errors.prefId = true } @@ -1144,7 +1135,6 @@ export default function StuffDetail() { _objectName, _saleStoreId, _otherSaleStoreId, - _zipNo, _prefId, _address, _areaId, @@ -1189,6 +1179,14 @@ export default function StuffDetail() { } }, [prefValue]) + // 도도부현 /주소 disabled제거 변경 + const onChangePrefCode = (e) => { + setPrefValue(e.prefId) + + form.setValue('prefId', e.prefId) + form.setValue('prefName', e.prefName) + } + // 발전량 시뮬레이션 변경 const handleAreaIdOnChange = (e) => { form.setValue('areaId', e.areaId) @@ -1243,12 +1241,6 @@ export default function StuffDetail() { errors = fieldNm } - //우편번호 - if (!formData.zipNo) { - fieldNm = getMessage('stuff.detail.zipNo') - errors = fieldNm - } - //1차판매점명 if (!formData.saleStoreId) { fieldNm = getMessage('stuff.detail.saleStoreId') @@ -1558,7 +1550,7 @@ export default function StuffDetail() { type: 'alert', icon: 'error', }) - console.log('error::::::', error) + console.error('error::::::', error) }) } } @@ -2004,9 +1996,7 @@ export default function StuffDetail() { - - {getMessage('stuff.detail.zipNo')} * - + {getMessage('stuff.detail.zipNo')}
@@ -2038,10 +2028,10 @@ export default function StuffDetail() { getOptionLabel={(x) => x.prefName} getOptionValue={(x) => x.prefId} isSearchable={false} + onChange={onChangePrefCode} value={prefCodeList.filter(function (option) { return option.prefId === prefValue })} - isDisabled={true} /> )}
@@ -2571,9 +2561,7 @@ export default function StuffDetail() { - - {getMessage('stuff.detail.zipNo')} * - + {getMessage('stuff.detail.zipNo')}
@@ -2606,10 +2594,10 @@ export default function StuffDetail() { getOptionLabel={(x) => x.prefName} getOptionValue={(x) => x.prefId} isSearchable={false} + onChange={onChangePrefCode} value={prefCodeList.filter(function (option) { return option.prefId === prefValue })} - isDisabled={true} /> )}
diff --git a/src/hooks/roofcover/useRoofAllocationSetting.js b/src/hooks/roofcover/useRoofAllocationSetting.js index 6d573ff0..bc4d246a 100644 --- a/src/hooks/roofcover/useRoofAllocationSetting.js +++ b/src/hooks/roofcover/useRoofAllocationSetting.js @@ -71,30 +71,19 @@ export function useRoofAllocationSetting(id) { roof.innerLines.forEach((line) => { /** 실측값이 없는 경우 라인 두께 4로 설정 */ if (!line.attributes.actualSize || line.attributes?.actualSize === 0) { - line.set({ - strokeWidth: 4, - stroke: 'black', - selectable: true, - }) + line.set({ strokeWidth: 4, stroke: 'black', selectable: true }) } /** 현재 선택된 라인인 경우 라인 두께 2로 설정 */ if (editingLines.includes(line)) { - line.set({ - strokeWidth: 2, - stroke: 'black', - selectable: true, - }) + line.set({ strokeWidth: 2, stroke: 'black', selectable: true }) } }) }) /** 현재 선택된 객체가 보조라인, 피라미드, 힙인 경우 두께 4로 설정 */ if (currentObject && currentObject.name && ['auxiliaryLine', 'ridge', 'hip'].includes(currentObject.name)) { - currentObject.set({ - strokeWidth: 4, - stroke: '#EA10AC', - }) + currentObject.set({ strokeWidth: 4, stroke: '#EA10AC' }) } }, [currentObject]) @@ -102,7 +91,7 @@ export function useRoofAllocationSetting(id) { /** 현재 선택된 객체가 보조라인, 피라미드, 힙인 경우 두께 4로 설정 */ const roofBases = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.ROOF) if (roofBases.length === 0) { - swalFire({ text: '할당할 지붕이 없습니다.' }) + swalFire({ text: getMessage('roofAllocation.not.found'), icon: 'warning' }) closePopup(id) } @@ -115,9 +104,7 @@ export function useRoofAllocationSetting(id) { */ const fetchBasicSettings = async (planNo) => { try { - await get({ - url: `/api/canvas-management/canvas-basic-settings/by-object/${correntObjectNo}/${planNo}`, - }).then((res) => { + await get({ url: `/api/canvas-management/canvas-basic-settings/by-object/${correntObjectNo}/${planNo}` }).then((res) => { let roofsArray = {} if (res.length > 0) { @@ -187,11 +174,7 @@ export function useRoofAllocationSetting(id) { selectedRoofMaterial: selectRoofs.find((roof) => roof.selected), }) - setBasicInfo({ - planNo: '' + res[0].planNo, - roofSizeSet: '' + res[0].roofSizeSet, - roofAngleSet: '' + res[0].roofAngleSet, - }) + setBasicInfo({ planNo: '' + res[0].planNo, roofSizeSet: '' + res[0].roofSizeSet, roofAngleSet: '' + res[0].roofAngleSet }) }) } catch (error) { console.error('Data fetching error:', error) @@ -250,10 +233,7 @@ export function useRoofAllocationSetting(id) { } const originCurrentRoofList = currentRoofList.map((roof) => { - return { - ...roof, - selected: false, - } + return { ...roof, selected: false } }) originCurrentRoofList.push({ ...currentRoofMaterial, @@ -308,13 +288,19 @@ export function useRoofAllocationSetting(id) { */ const handleSaveContext = () => { const newRoofList = currentRoofList.map((roof, idx) => { + if (roof.index !== idx) { + // 기존 저장된 지붕재의 index 수정 + const roofs = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.ROOF && obj.roofMaterial?.index === roof.index) + roofs.forEach((roof) => { + setSurfaceShapePattern(roof, roofDisplay.column, false, { ...roof, index: idx }, true) + }) + } + return { ...roof, index: idx, raft: roof.raft ? roof.raft : roof.raftBaseCd } }) + setBasicSetting((prev) => { - return { - ...prev, - selectedRoofMaterial: newRoofList.find((roof) => roof.selected), - } + return { ...prev, selectedRoofMaterial: newRoofList.find((roof) => roof.selected) } }) setRoofList(newRoofList) @@ -349,11 +335,7 @@ export function useRoofAllocationSetting(id) { if (!checkInnerLines()) { apply() } else { - swalFire({ - type: 'alert', - icon: 'error', - text: getMessage('실제치수를 입력해 주세요.'), - }) + swalFire({ type: 'alert', icon: 'error', text: getMessage('실제치수를 입력해 주세요.') }) } } @@ -368,11 +350,7 @@ export function useRoofAllocationSetting(id) { if (roof.separatePolygon.length === 0) { roof.innerLines.forEach((line) => { if (!line.attributes.actualSize || line.attributes?.actualSize === 0) { - line.set({ - strokeWidth: 4, - stroke: 'black', - selectable: true, - }) + line.set({ strokeWidth: 4, stroke: 'black', selectable: true }) result = true } }) @@ -420,10 +398,7 @@ export function useRoofAllocationSetting(id) { }) setBasicSetting((prev) => { - return { - ...prev, - selectedRoofMaterial: newRoofList.find((roof) => roof.selected), - } + return { ...prev, selectedRoofMaterial: newRoofList.find((roof) => roof.selected) } }) setRoofList(newRoofList) @@ -431,9 +406,7 @@ export function useRoofAllocationSetting(id) { roofs.forEach((roof) => { if (roof.isFixed) return - roof.set({ - isFixed: true, - }) + roof.set({ isFixed: true }) /** 모양 패턴 설정 */ setSurfaceShapePattern( @@ -470,10 +443,7 @@ export function useRoofAllocationSetting(id) { if (id === line.id) { setEditingLines([...editingLines.filter((editLine) => editLine.id !== line.id), line]) line.attributes.actualSize = size - line.set({ - strokeWidth: 2, - stroke: 'black', - }) + line.set({ strokeWidth: 2, stroke: 'black' }) } }) }) diff --git a/src/locales/ja.json b/src/locales/ja.json index 718aeb8e..b8195843 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -999,7 +999,7 @@ "simulator.table.sub5": "枚数", "simulator.table.sub6": "合計", "simulator.table.sub7": "パワーコンディショナー", - "simulator.table.sub8": "ティーン", + "simulator.table.sub8": "台", "simulator.table.sub9": "予測発電量(kWh)", "simulator.notice.sub1": "ハンファジャパン年間発電量", "simulator.notice.sub2": "シミュレーションガイド", @@ -1042,8 +1042,8 @@ "wall.line.not.found": "外壁がありません", "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": "모듈의 최대 단수는 {0}, 최대 열수는 {1} 입니다. (JA)", "module.layout.setup.max.count.multiple": "모듈 {0}번의 최대 단수는 {1}, 최대 열수는 {2} 입니다. (JA)", - "module.place.mix.asg.yn.error": "혼합 설치가 불가능합니다. (JA)" + "roofAllocation.not.found": "할당할 지붕이 없습니다. (JA)" } diff --git a/src/locales/ko.json b/src/locales/ko.json index 9ff2ecec..6ea42c9f 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -1042,8 +1042,8 @@ "wall.line.not.found": "외벽선이 없습니다.", "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": "모듈의 최대 단수는 {0}, 최대 열수는 {1} 입니다.", "module.layout.setup.max.count.multiple": "모듈 {0}번의 최대 단수는 {1}, 최대 열수는 {2} 입니다.", - "module.place.mix.asg.yn.error": "혼합 설치가 불가능합니다." + "roofAllocation.not.found": "할당할 지붕이 없습니다." } diff --git a/src/styles/_grid-detail.scss b/src/styles/_grid-detail.scss index b0c88984..5f27bd18 100644 --- a/src/styles/_grid-detail.scss +++ b/src/styles/_grid-detail.scss @@ -24,6 +24,10 @@ .ag-header-cell{ font-size: 13px; color: #fff; + border-right: 1px solid #738596; + &:last-child{ + border: none; + } } .ag-header-cell-label{ justify-content: center; diff --git a/startscript.js b/startscript.js index 890c30f8..e276be78 100644 --- a/startscript.js +++ b/startscript.js @@ -1,2 +1,2 @@ var exec = require('child_process').exec -exec('yarn dev', { windowsHide: true }) +exec('yarn dev -p 5000', { windowsHide: true })