가대 상세 조회 로직 추가

This commit is contained in:
lelalela 2025-01-13 22:43:13 +09:00
parent ff4b85b7a9
commit 8bac0a76ed
5 changed files with 60 additions and 23 deletions

View File

@ -9,7 +9,7 @@ import ModuleTabContents from './ModuleTabContents'
import { useDebounceCallback, useDebounceValue } from 'usehooks-ts' import { useDebounceCallback, useDebounceValue } from 'usehooks-ts'
import { moduleSelectionDataState } from '@/store/selectedModuleOptions' import { moduleSelectionDataState } from '@/store/selectedModuleOptions'
export default function Module() { export default function Module({ setTabNum }) {
const { getMessage } = useMessage() const { getMessage } = useMessage()
const addedRoofs = useRecoilValue(addedRoofsState) // const addedRoofs = useRecoilValue(addedRoofsState) //
const [roofTab, setRoofTab] = useState(0) // const [roofTab, setRoofTab] = useState(0) //
@ -114,9 +114,9 @@ export default function Module() {
</thead> </thead>
<tbody> <tbody>
{selectedModules.itemList && {selectedModules.itemList &&
selectedModules.itemList.map((row) => ( selectedModules.itemList.map((row, index) => (
<> <>
<tr> <tr key={index}>
<td> <td>
<div className="color-wrap"> <div className="color-wrap">
<span className="color-box" style={{ backgroundColor: row.color }}></span> <span className="color-box" style={{ backgroundColor: row.color }}></span>

View File

@ -271,7 +271,6 @@ export default function ModuleTabContents({
useEffect(() => { useEffect(() => {
if (isObjectNotEmpty(tempModuleSelectionData)) { if (isObjectNotEmpty(tempModuleSelectionData)) {
console.log('tempModuleSelectionData', tempModuleSelectionData)
setModuleSelectionData(tempModuleSelectionData) setModuleSelectionData(tempModuleSelectionData)
} }
}, [tempModuleSelectionData]) }, [tempModuleSelectionData])
@ -450,7 +449,7 @@ export default function ModuleTabContents({
type="checkbox" type="checkbox"
id={`ch01_${roofTab}`} id={`ch01_${roofTab}`}
disabled={cvrYn === 'N' ? true : false} disabled={cvrYn === 'N' ? true : false}
checked={cvrChecked} defaultChecked={cvrChecked}
onChange={handleCvrChecked} onChange={handleCvrChecked}
/> />
<label htmlFor={`ch01_${roofTab}`}>{getMessage('modal.module.basic.setting.module.eaves.bar.fitting')}</label> <label htmlFor={`ch01_${roofTab}`}>{getMessage('modal.module.basic.setting.module.eaves.bar.fitting')}</label>
@ -460,7 +459,7 @@ export default function ModuleTabContents({
type="checkbox" type="checkbox"
id={`ch02_${roofTab}`} id={`ch02_${roofTab}`}
disabled={snowGdPossYn === 'N' ? true : false} disabled={snowGdPossYn === 'N' ? true : false}
checked={snowGdChecked} defaultChecked={snowGdChecked}
onChange={handleSnowGdChecked} onChange={handleSnowGdChecked}
/> />
<label htmlFor={`ch02_${roofTab}`}>{getMessage('modal.module.basic.setting.module.blind.metal.fitting')}</label> <label htmlFor={`ch02_${roofTab}`}>{getMessage('modal.module.basic.setting.module.blind.metal.fitting')}</label>

View File

@ -4,17 +4,19 @@ import { useModuleBasicSetting } from '@/hooks/module/useModuleBasicSetting'
import { checkedModuleState } from '@/store/canvasAtom' import { checkedModuleState } from '@/store/canvasAtom'
import { useRecoilValue, useRecoilState, useSetRecoilState } from 'recoil' import { useRecoilValue, useRecoilState, useSetRecoilState } from 'recoil'
import { selectedModuleState, moduleSelectionDataState } from '@/store/selectedModuleOptions' import { selectedModuleState, moduleSelectionDataState } from '@/store/selectedModuleOptions'
import { useModulePlace } from '@/hooks/module/useModulePlace'
const Placement = forwardRef((props, refs) => { const Placement = forwardRef((props, refs) => {
const { getMessage } = useMessage() const { getMessage } = useMessage()
const selectedModules = useRecoilValue(selectedModuleState)
const [isChidori, setIsChidori] = useState('false') const [isChidori, setIsChidori] = useState('false')
const [setupLocation, setSetupLocation] = useState('center') const [setupLocation, setSetupLocation] = useState('center')
const [isMaxSetup, setIsMaxSetup] = useState('false') const [isMaxSetup, setIsMaxSetup] = useState('false')
const { makeModuleInstArea } = useModuleBasicSetting()
const [selectedItems, setSelectedItems] = useState({}) const [selectedItems, setSelectedItems] = useState({})
const setCheckedModules = useSetRecoilState(checkedModuleState)
const { makeModuleInstArea } = useModuleBasicSetting()
const { selectedModules } = useModulePlace()
const setCheckedModules = useSetRecoilState(checkedModuleState)
const moduleSelectionData = useRecoilValue(moduleSelectionDataState) const moduleSelectionData = useRecoilValue(moduleSelectionDataState)
// //
@ -92,9 +94,9 @@ const Placement = forwardRef((props, refs) => {
</thead> </thead>
<tbody> <tbody>
{selectedModules.itemList && {selectedModules.itemList &&
selectedModules.itemList.map((item) => ( selectedModules.itemList.map((item, index) => (
<> <>
<tr> <tr key={index}>
<td className="al-c"> <td className="al-c">
<div className="d-check-box no-text pop"> <div className="d-check-box no-text pop">
<input type="checkbox" id={item.itemId} name={item.itemId} onChange={handleSelectedItem} /> <input type="checkbox" id={item.itemId} name={item.itemId} onChange={handleSelectedItem} />

View File

@ -9,7 +9,7 @@ import { trestleRequest, constructionRequest, trestleDetailRequest } from '@/mod
* @returns * @returns
*/ */
export function useMasterController() { export function useMasterController() {
const { get } = useAxios() const { get, post } = useAxios()
const { getMessage } = useMessage() const { getMessage } = useMessage()
const { swalFire } = useSwal() const { swalFire } = useSwal()
@ -104,10 +104,8 @@ export function useMasterController() {
* @returns * @returns
*/ */
const getTrestleDetailList = async (params) => { const getTrestleDetailList = async (params) => {
const paramString = getQueryString(params) // const paramString = getQueryString(params)
console.log('🚀🚀 ~ getTrestleDetailList ~ paramString:', paramString) return await post({ url: '/api/v1/master/getTrestleDetailList', data: params }).then((res) => {
return await get({ url: '/api/v1/master/getTrestleDetailList' + paramString }).then((res) => {
console.log('🚀🚀 ~ getTrestleDetailList ~ res:', res)
return res return res
}) })
} }

View File

@ -1,12 +1,50 @@
import { useEffect, useState } from 'react'
import { useRecoilState, useRecoilValue } from 'recoil' import { useRecoilState, useRecoilValue } from 'recoil'
import { useContext, useEffect, useState } from 'react' import { moduleSelectionDataState, selectedModuleState } from '@/store/selectedModuleOptions'
import { GlobalDataContext } from '@/app/GlobalDataProvider'
import { useMasterController } from '@/hooks/common/useMasterController' import { useMasterController } from '@/hooks/common/useMasterController'
import { useCommonCode } from '@/hooks/common/useCommonCode'
import { selectedModuleState, moduleSelectionInitParamsState } from '@/store/selectedModuleOptions' export function useModulePlace() {
import { pitchSelector } from '@/store/canvasAtom' const moduleSelectionData = useRecoilValue(moduleSelectionDataState) //다음으로 넘어가는 최종 데이터
const [trestleDetailParams, setTrestleDetailParams] = useState([])
const [trestleDetailList, setTrestleDetailList] = useState([])
const selectedModules = useRecoilValue(selectedModuleState)
const { getTrestleDetailList } = useMasterController()
export function useModuleSelection(props) { useEffect(() => {
return {} const common = moduleSelectionData.common
const roofConstructions = moduleSelectionData.roofConstructions
const listParams = roofConstructions.map((item) => {
return {
...common,
moduleTpCd: selectedModules.itemTp,
roofMatlCd: item.trestle.roofMatlCd,
trestleMkrCd: item.trestle.trestleMkrCd,
constMthdCd: item.trestle.constMthdCd,
roofBaseCd: item.trestle.roofBaseCd,
constTp: item.construction.constTp,
mixMatlNo: selectedModules.mixMatlNo,
roofPitch: selectedModules.roofPchBase ? selectedModules.roofPchBase : null,
inclCd: String(item.addRoof.pitch),
roofIndex: item.addRoof.roofIndex,
}
})
setTrestleDetailParams(listParams)
}, [moduleSelectionData])
useEffect(() => {
if (trestleDetailParams.length > 0) {
const trestleDetailList = getTrestleDetailList(trestleDetailParams)
setTrestleDetailList(trestleDetailList)
}
}, [trestleDetailParams])
useEffect(() => {
//todo 결과값을 가지고 roofs를 돌아서
}, [trestleDetailList])
return {
selectedModules,
}
} }