qcast-front/src/hooks/common/useMasterController.js
yjnoh a0cca5fbca [1092] : [特定の組み合わせの時、回路割付後のデータローディングが終わらない]
[작업내용] : 가대 생성시 api 호출 부분에 try catch로 로딩바 제거 로직 추가
2025-06-10 10:34:51 +09:00

264 lines
8.7 KiB
JavaScript

import { useAxios } from '@/hooks/useAxios'
import { useMessage } from '@/hooks/useMessage'
import { useSwal } from '@/hooks/useSwal'
import { getQueryString } from '@/util/common-utils'
/**
* 마스터 컨트롤러 훅
* @returns
*/
export function useMasterController() {
const { get, post, put } = useAxios()
const { getMessage } = useMessage()
const { swalFire } = useSwal()
/**
* 지붕재 목록 조회
* @returns
*/
const getRoofMaterialList = async () => {
return await get({ url: '/api/v1/master/getRoofMaterialList' }).then((res) => {
// console.log('🚀🚀 ~ getRoofMaterialList ~ res:', res)
return res
})
}
/**
* 모듈 타입별 아이템 목록 조회
* @param {지붕재 코드 목록} arrRoofMatlCd
* @returns
*/
const getModuleTypeItemList = async (paramArr) => {
if (!Array.isArray(paramArr) || paramArr.length === 0 || paramArr.length > 4 || paramArr.some((item) => !item || item.trim() === '')) {
swalFire({ text: getMessage('master.moduletypeitem.message.error'), type: 'alert', icon: 'error' })
return null
}
const paramString = `?${paramArr.map((item) => `arrRoofMatlCd=${item}`).join('&')}`
return await get({ url: `/api/v1/master/getModuleTypeItemList${paramString}` }).then((res) => {
// console.log('🚀🚀 ~ getModuleTypeItemList ~ res:', res)
return res
})
}
/**
* 가대 목록 조회
* @param {모듈타입코드} moduleTpCd
* @param {지붕재코드} roofMatlCd
* @param {서까래기초코드} raftBaseCd
* @param {가대메이커코드} trestleMkrCd
* @param {공법코드} constMthdCd
* @param {지붕기초코드} roofBaseCd
* @returns
*/
const getTrestleList = async (params) => {
const paramString = getQueryString(params)
// console.log('🚀🚀 ~ getTrestleList ~ paramString:', paramString)
return await get({ url: '/api/v1/master/getTrestleList' + paramString }).then((res) => {
// console.log('🚀🚀 ~ getTrestleList ~ res:', res)
return res
})
}
/**
* 모듈 시공법 목록 조회
* @param {모듈타입코드} moduleTpCd
* @param {지붕재코드} roofMatlCd
* @param {가대메이커코드} trestleMkrCd
* @param {공법코드} constMthdCd
* @param {지붕기초코드} roofBaseCd
* @param {면조도} illuminationTp
* @param {설치높이} instHt
* @param {풍속} stdWindSpeed
* @param {적설량} stdSnowLd
* @param {경사도코드} inclCd
* @param {서까래기초코드} raftBaseCd
* @param {하제(망둥어)피치} roofPitch
*
* @returns
*/
const getConstructionList = async (params) => {
const paramString = getQueryString(params)
// console.log('🚀🚀 ~ getConstructionList ~ paramString:', paramString)
return await get({ url: '/api/v1/master/getConstructionList' + paramString }).then((res) => {
// console.log('🚀🚀 ~ getConstructionList ~ res:', res)
return res
})
}
/**
* 가대 상세 조회
* @param {모듈타입코드} moduleTpCd
* @param {지붕재코드} roofMatlCd
* @param {가대메이커코드} trestleMkrCd
* @param {공법코드} constMthdCd
* @param {지붕기초코드} roofBaseCd
* @param {면조도} illuminationTp
* @param {설치높이} instHt
* @param {풍속} stdWindSpeed
* @param {적설량} stdSnowLd
* @param {경사도코드} inclCd
* @param {시공법} constTp
* @param {혼합모듈번호} mixMatlNo
* @param {하제(망둥어)피치}roofPitch
* @returns
*/
const getTrestleDetailList = async (params) => {
// const paramString = getQueryString(params)
return await post({ url: '/api/v1/master/getTrestleDetailList', data: params }).then((res) => {
return res
})
}
/**
* PCS 메이커, 시리즈 목록 조회
* @param {PCS 메이커코드} pcsMkrCd
* @param {혼합모듈번호} mixMatlNo
* @returns
*/
const getPcsMakerList = async (params = null) => {
let paramString = ''
if (params) {
paramString = getQueryString(params)
}
return await get({ url: '/api/v1/master/pcsMakerList' + paramString }).then((res) => {
return res
})
}
/**
* 모듈 타입별 아이템 목록 조회
* @param {PCS 메이커코드} pcsMkrCd
* @param {PCS시리즈코드 목록} pcsSerList
* @param {모듈아이템 ID 목록} moduleItemList
* @returns
*/
const getPcsModelList = async (params = null) => {
return await post({ url: '/api/v1/master/getPcsSeriesItemList', data: params }).then((res) => {
return res
})
}
/**
* 시리즈중 자동으로 추천 PCS 정보 조회
* @param {Max접속(과적)여부} maxConnYn
* @param {동일회로도여부} smpCirYn
* @param {한랭지여부} coldZoneYn
* @param {사용된 모듈 아이템 List} useModuleItemList
* @param {지붕면별 목록} roofSurfaceList
* @param {PCS 제품 목록} pcsItemList
* @returns
*/
const getPcsAutoRecommendList = async (params = null) => {
return await post({ url: '/api/v1/master/getPcsAutoRecommendList', data: params }).then((res) => {
return res
})
}
const getPcsManualConfChk = async (params = null) => {
return await post({ url: '/api/v1/master/getPcsMenualConfChk', data: params }).then((res) => {
return res
})
}
/**
* PCS로 회로 구성 가능 여부 체크
* @param {Max접속(과적)여부} maxConnYn
* @param {동일회로도여부} smpCirYn
* @param {한랭지여부} coldZoneYn
* @param {사용된 모듈 아이템 List} useModuleItemList
* @param {지붕면별 목록} roofSurfaceList
* @param {PCS 제품 목록} pcsItemList
* @returns
*/
const getPcsVoltageChk = async (params = null) => {
return await post({ url: '/api/v1/master/getPcsVoltageChk', data: params }).then((res) => {
return res
})
}
/**
* PCS 승압설정 정보 조회
* @param {Max접속(과적)여부} maxConnYn
* @param {동일회로도여부} smpCirYn
* @param {한랭지여부} coldZoneYn
* @param {사용된 모듈아이템 목록} useModuleItemList
* @param {지붕면 목록} roofSurfaceList
* @param {PCS 아이템 목록} pcsItemList
* @returns
*/
const getPcsVoltageStepUpList = async (params2 = null) => {
// roofSurfaceList의 moduleList에서 circuit 속성을 제외
const modifiedRoofSurfaceList = params2.roofSurfaceList.map((surface) => ({
...surface,
moduleList: surface.moduleList.map((module) => ({
itemId: module.itemId,
uniqueId: module.uniqueId,
})),
}))
const params = {
...params2,
maxConnYn: params2.maxConnYn,
smpCirYn: params2.smpCirYn,
coldZoneYn: params2.coldZoneYn,
useModuleItemList: params2.useModuleItemList,
roofSurfaceList: modifiedRoofSurfaceList,
pcsItemList: params2.pcsItemList,
}
return await post({ url: '/api/v1/master/getPcsVoltageStepUpList', data: params }).then((res) => {
return res
})
}
const getQuotationItem = async (params) => {
return await post({ url: '/api/v1/master/getQuotationItem', data: params })
.then((res) => {
return res
})
.catch((error) => {
console.log('🚀 ~ getQuotationItem ~ error:', error)
setIsGlobalLoading(false)
})
}
/**
* 물건 정보 업데이트 api 호출
* @param {objectNo standardWindSpeedId verticalSnowCover surfaceType installHeight userId} params
* @param {물건번호 기준풍속코드 적설량 면조도구분 설치높이 작성자아아디 } params
* @returns
*/
const updateObjectDate = async (params = null) => {
return await put({ url: '/api/object/update-object-date', data: params })
}
/**
* PCS 접속함 및 옵션 목록 조회
* @param {사용된 모듈 아이템 목록} useModuleItemList
* @param {PCS 제품 목록} pcsItemList
* @returns
*/
const getPcsConnOptionItemList = async (params = null) => {
return await post({ url: '/api/v1/master/getPcsConnOptionItemList', data: params }).then((res) => {
return res
})
}
return {
getRoofMaterialList,
getModuleTypeItemList,
getTrestleList,
getConstructionList,
getTrestleDetailList,
getPcsMakerList,
getPcsModelList,
getPcsAutoRecommendList,
getPcsVoltageChk,
getPcsManualConfChk,
getPcsVoltageStepUpList,
updateObjectDate,
getQuotationItem,
getPcsConnOptionItemList,
}
}