Merge remote-tracking branch 'origin/qcast-pub' into dev

This commit is contained in:
김민식 2025-01-13 23:19:34 +09:00
commit bced92b4ad
6 changed files with 170 additions and 98 deletions

View File

@ -296,7 +296,9 @@ export default function CanvasMenu(props) {
}, [type, globalLocale])
useEffect(() => {
if (Object.keys(basicSetting).length === 0) return
console.log('🚀 ~ useEffect ~ basicSetting:', basicSetting)
if (Object.keys(basicSetting).length === 0 || !basicSetting.roofSizeSet) return
// setMenuNumber(1)
// if ([2, 3].some((num) => num === canvasSetting?.roofSizeSet)) {
// setMenuNumber(3)
@ -308,7 +310,6 @@ export default function CanvasMenu(props) {
// setCurrentMenu(MENU.ROOF_COVERING.EXTERIOR_WALL_LINE)
// }
}, [basicSetting])
const checkMenuState = (menu) => {
return (['2', '3'].includes(canvasSetting?.roofSizeSet) && menu.index === 2) || (menuNumber === 4 && menu.index === 2)
}

View File

@ -12,6 +12,11 @@ import { get } from 'react-hook-form'
import { correntObjectNoState } from '@/store/settingAtom'
import { useRecoilValue } from 'recoil'
import { GlobalDataContext } from '@/app/GlobalDataProvider'
import { useRecoilState } from 'recoil'
import { powerConditionalState } from '@/store/circuitTrestleAtom'
import { POLYGON_TYPE } from '@/common/common'
import { useSwal } from '@/hooks/useSwal'
import { canvasState } from '@/store/canvasAtom'
const ALLOCATION_TYPE = {
AUTO: 'auto',
@ -24,72 +29,41 @@ export default function CircuitTrestleSetting({ id }) {
// 2:
const [tabNum, setTabNum] = useState(1)
const [allocationType, setAllocationType] = useState(ALLOCATION_TYPE.AUTO)
const [makers, setMakers] = useState([])
const [series, setSeries] = useState([])
const [models, setModels] = useState([])
const [selectedMaker, setSelectedMaker] = useState(null)
const [selectedModels, setSelectedModels] = useState(null)
const [selectedSeries, setSelectedSeries] = useState(null)
const correntObjectNo = useRecoilValue(correntObjectNoState)
const { getPcsMakerList } = useMasterController()
const { managementState, setManagementState, managementStateLoaded } = useContext(GlobalDataContext)
const canvas = useRecoilValue(canvasState)
const { swalFire } = useSwal()
const apply = () => {
closePopup(id)
}
useEffect(() => {
getPcsMakerList().then((res) => {
setMakers(res.data)
})
if (!managementState) {
console.log('🚀 ~ useEffect ~ managementState:', managementState)
setManagementState(managementStateLoaded)
}
console.log('🚀 ~ useEffect ~ managementState:', managementState)
// promiseGet({ url: `/api/object/${correntObjectNo}/detail` }).then((res) => {
// console.log('🚀 ~ useEffect ~ /api/object/${correntObjectNo}/detail:', res)
// // coldRegionFlg-, conType// (~,)
// })
// console.log(canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE))
// if (canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE).length === 0) {
// swalFire({
// title: ' .',
// type: 'alert',
// confirmFn: () => {
// closePopup(id)
// },
// })
// }
}, [])
useEffect(() => {
if (selectedMaker) {
getPcsMakerList(selectedMaker).then((res) => {
const series = res.data.map((series) => {
return { ...series, selected: false }
})
setSeries(series)
})
}
}, [selectedMaker])
useEffect(() => {
console.log('🚀 ~ CircuitTrestleSetting ~ series:', series)
const selectedSeries = series.filter((s) => s.selectd).map((s) => s.pcsSerCd)
if (selectedSeries.length > 0) {
getPcsMakerList(selectedSeries).then((res) => {
setModels(res.data)
})
}
}, [series])
// useEffect(() => {
// console.log('🚀 ~ CircuitTrestleSetting ~ series:', series)
// const selectedSeries = series.filter((s) => s.selectd).map((s) => s.pcsSerCd)
// if (selectedSeries.length > 0) {
// getPcsMakerList(selectedSeries).then((res) => {
// setModels(res.data)
// })
// }
// }, [series])
//
const [circuitAllocationType, setCircuitAllocationType] = useState(1)
const powerConditionalSelectProps = {
tabNum,
setTabNum,
makers,
selectedMaker,
setSelectedMaker,
series,
setSeries,
selectedSeries,
setSelectedSeries,
models,
setModels,
selectedModels,
setSelectedModels,
managementState,
}
const circuitProps = {
tabNum,

View File

@ -1,61 +1,142 @@
import { GlobalDataContext } from '@/app/GlobalDataProvider'
import QSelectBox from '@/components/common/select/QSelectBox'
import { useMasterController } from '@/hooks/common/useMasterController'
import { useEvent } from '@/hooks/useEvent'
import { useMessage } from '@/hooks/useMessage'
import { makerState, modelState, seriesState } from '@/store/circuitTrestleAtom'
import { globalLocaleStore } from '@/store/localeAtom'
import { useState } from 'react'
import { moduleSelectionDataState, selectedModuleState } from '@/store/selectedModuleOptions'
import { useContext, useEffect, useState } from 'react'
import { useRecoilState } from 'recoil'
import { useRecoilValue } from 'recoil'
import { v4 as uuidv4 } from 'uuid'
const SelectOption01 = [{ name: '0' }, { name: '0' }, { name: '0' }, { name: '0' }]
export default function PowerConditionalSelect(props) {
const {
makers,
selectedMaker,
setSelectedMaker,
series,
setSeries,
selectedSeries,
setSelectedSeries,
models,
selectedModels,
tabNum,
setTabNum,
managementState,
} = props
let { tabNum, setTabNum } = props
const [makerData, setMakerData] = useRecoilState(makerState)
const [makers, setMakers] = useState(makerData.makers)
const [selectedMaker, setSelectedMaker] = useState(makerData.selectedMaker)
const [series, setSeries] = useRecoilState(seriesState)
const [seriesList, setSeriesList] = useState(series.series)
const [selectedSeries, setSelectedSeries] = useState(series.selectedSeries)
const model = useRecoilValue(modelState)
const [models, setModels] = useState(model.models)
const [selectedModels, setSelectedModels] = useState(model.selectedModels)
const { managementState, setManagementState, managementStateLoaded } = useContext(GlobalDataContext)
const { getMessage } = useMessage()
const [selectedRowIndex, setSelectedRowIndex] = useState(null)
const [powerConditions, setPowerConditions] = useState([])
const [selectedRow, setSelectedRow] = useState(null)
const globalLocale = useRecoilValue(globalLocaleStore)
const { getPcsMakerList, getPcsModelList } = useMasterController()
const selectedModules = useRecoilValue(selectedModuleState)
const modelHeader = [
{ name: getMessage('명칭'), width: '15%', prop: 'name', type: 'color-box' },
{ name: getMessage('명칭'), width: '15%', prop: 'itemNm', type: 'color-box' },
{
name: `${getMessage('modal.circuit.trestle.setting.power.conditional.select.rated.output')} (kW)`,
width: '10%',
prop: 'ratedOutput',
prop: 'ratedCapa',
},
{
name: `${getMessage('modal.circuit.trestle.setting.power.conditional.select.circuit.amount')}`,
width: '10%',
prop: 'circuitAmount',
prop: 'paralMax',
},
{
name: `${getMessage('modal.circuit.trestle.setting.power.conditional.select.max.connection')}`,
width: '10%',
prop: 'maxConnection',
prop: 'moduleStdQty',
},
{
name: `${getMessage('modal.circuit.trestle.setting.power.conditional.select.max.overload')}`,
width: '10%',
prop: 'maxOverload',
},
{
name: `${getMessage('modal.circuit.trestle.setting.power.conditional.select.output.current')}`,
width: '10%',
prop: 'outputCurrent',
prop: 'moduleMaxQty',
},
]
useEffect(() => {
if (makers.length === 0) {
getPcsMakerList().then((res) => {
setMakers(res.data)
})
}
if (!managementState) {
console.log('🚀 ~ useEffect ~ managementState:', managementState)
setManagementState(managementStateLoaded)
}
// promiseGet({ url: `/api/object/${correntObjectNo}/detail` }).then((res) => {
// console.log('🚀 ~ useEffect ~ /api/object/${correntObjectNo}/detail:', res)
// // coldRegionFlg-, conType// (~,)
// })
}, [])
useEffect(() => {
console.log('🚀 ~ PowerConditionalSelect ~ selectedMaker:', selectedMaker)
if (selectedMaker) {
setSelectedModels([])
getPcsMakerList(selectedMaker).then((res) => {
setSeriesList(
res.data.map((series) => {
return { ...series, selected: false }
}),
)
})
}
}, [selectedMaker])
useEffect(() => {
console.log('🚀 ~ useEffect ~ seriesList:', seriesList)
if (seriesList.filter((series) => series.selected).length === 0) return
const pcsMkrCd = seriesList.filter((series) => series.selected)[0]?.pcsMkrCd
const pcsSerList = seriesList
.filter((series) => series.selected)
.map((series) => {
return { pcsSerCd: series.pcsSerCd }
})
const moduleItemList = selectedModules.itemList?.map((module) => {
return {
itemId: module.itemId,
mixMatlNo: module.mixMatlNo,
}
})
console.log('🚀 ~ useEffect ~ moduleItemList:', selectedModules)
getPcsModelList({ pcsMkrCd, pcsSerList, moduleItemList }).then((res) => {
if (res?.result.code === 200) {
console.log('🚀 ~ useEffect ~ res:', res.data)
setModels(
res.data.map((model) => {
return {
...model,
code: uuidv4(),
selected: false,
}
}),
)
}
})
}, [seriesList])
const onCheckSeries = (series) => {
setSeries((prev) => prev.map((s) => ({ ...s, selected: s.pcsSerCd === series.pcsSerCd ? !s.selected : s.selected })))
setSeriesList((prev) => prev.map((s) => ({ ...s, selected: s.pcsSerCd === series.pcsSerCd ? !s.selected : s.selected })))
}
const onAddSelectedModel = () => {
setSelectedModels([...selectedModels, selectedRow])
setSelectedRow(null)
}
useEffect(() => {
const selectedModelsIds = selectedModels.map((model) => model.itemId)
setModels(
models.map((model) => {
return {
...model,
selected: selectedModelsIds.includes(model.itemId) === selectedRow.itemId ? true : false,
}
}),
)
}, [selectedModels])
return (
<>
<div className="outline-form mb15">
@ -80,9 +161,9 @@ export default function PowerConditionalSelect(props) {
<div className="module-table-box mb10">
<div className="module-table-inner">
<div className="circuit-check-inner overflow">
{series?.map((series, index) => (
{seriesList?.map((series, index) => (
<div className="d-check-box pop sel">
<input type="checkbox" id={`"ch0"${index}`} onClick={() => onCheckSeries(series)} />
<input type="checkbox" id={`"ch0"${index}`} onClick={() => onCheckSeries(series)} checked={series.selected} />
<label htmlFor={`"ch0"${index}`}>{globalLocale === 'ko' ? series.pcsSerNm : series.pcsSerNmJp}</label>
</div>
))}
@ -105,11 +186,11 @@ export default function PowerConditionalSelect(props) {
</thead>
<tbody>
{models
?.filter((model) => model.series === selectedSeries?.code)
.map((row, index) => (
<tr key={index} onClick={() => setSelectedRowIndex(index)} className={index === selectedRowIndex ? 'on' : ''}>
?.filter((model) => !model.selected)
.map((model, index) => (
<tr key={index} onClick={() => setSelectedRow(model)} className={model === selectedRow ? 'on' : ''}>
{modelHeader.map((header) => (
<td>{row[header.prop]}</td>
<td>{model[header.prop]}</td>
))}
</tr>
))}
@ -118,12 +199,14 @@ export default function PowerConditionalSelect(props) {
</div>
</div>
<div className="circuit-right-wrap mb10">
<button className="btn-frame self mr5">{getMessage('modal.common.add')}</button>
<button className="btn-frame self mr5" onClick={() => onAddSelectedModel()}>
{getMessage('modal.common.add')}
</button>
</div>
<div className="circuit-data-form">
{selectedModels?.map((model) => (
<span className="normal-font">
{model.name} <button className="del"></button>
{model.itemNm} <button className="del"></button>
</span>
))}
</div>

View File

@ -46,12 +46,10 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, set
if (!basicSetting || !currentRoof || Object.keys(currentRoof).length === 0 || Object.keys(basicSetting).length === 0) return
const raftCodeList = findCommonCode('203800')
setRaftCodes(raftCodeList)
// setCurrentRoof({ ...currentRoof, roofSizeSet: basicSetting.roofMaterials.roofSizeSet, roofAngleSet: basicSetting.roofMaterials.roofAngleSet })
setCurrentRoof({ ...currentRoof, roofSizeSet: basicSetting.roofMaterials.roofSizeSet, roofAngleSet: basicSetting.roofMaterials.roofAngleSet })
}, [])
useEffect(() => {
if (!currentRoof || Object.keys(currentRoof).length === 0) return
console.log(basicSetting)
setBasicSettings({
...basicSetting,
roofSizeSet: String(currentRoof.roofSizeSet),

View File

@ -3,6 +3,7 @@ import { useMessage } from '@/hooks/useMessage'
import { useSwal } from '@/hooks/useSwal'
import { getQueryString } from '@/util/common-utils'
import { trestleRequest, constructionRequest, trestleDetailRequest } from '@/models/apiModels'
import { POST } from '@/app/api/image-upload/route'
/**
* 마스터 컨트롤러
@ -126,6 +127,23 @@ export function useMasterController() {
})
}
/**
* PCS 메이커, 시리즈 목록 조회
* @param {PCS 메이커코드} pcsMkrCd
* @param {혼합모듈번호} mixMatlNo
* @returns
*/
const getPcsModelList = async (params = null) => {
const test = {
pcsMkrCd: 'MKR003',
pcsSerList: [{ pcsSerCd: 'SER007' }, { pcsSerCd: 'SER009' }, { pcsSerCd: 'SER010' }],
moduleItemList: [{ itemId: '107015', mixMatlNo: '' }, { itemId: '107077' }, { itemId: '107015' }],
}
return await post({ url: '/api/v1/master/getPcsSeriesItemList', data: test }).then((res) => {
return res
})
}
return {
getRoofMaterialList,
getModuleTypeItemList,
@ -133,5 +151,6 @@ export function useMasterController() {
getConstructionList,
getTrestleDetailList,
getPcsMakerList,
getPcsModelList,
}
}

View File

@ -402,16 +402,13 @@ export function useCanvasSetting() {
],
}
console.log('basicSettingSave patternData ', patternData)
await post({ url: `/api/canvas-management/canvas-basic-settings`, data: patternData }).then((res) => {
console.log('basicSettingSave res ', res)
swalFire({ text: getMessage(res.returnMessage) })
})
//Recoil 설정
//setCanvasSetting({ ...basicSetting })\
console.log(basicSetting)
setCanvasSetting({ ...basicSetting })
fetchBasicSettings()
if (['2', '3'].includes(basicSetting?.roofSizeSet)) {
setMenuNumber(3)