183 lines
6.1 KiB
JavaScript
183 lines
6.1 KiB
JavaScript
import { useAxios } from '@/hooks/useAxios'
|
|
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'
|
|
import { canvasState } from '@/store/canvasAtom'
|
|
import { useRecoilValue } from 'recoil'
|
|
|
|
/**
|
|
* 마스터 컨트롤러 훅
|
|
* @returns
|
|
*/
|
|
export function useMasterController() {
|
|
const { get, post } = 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) => {
|
|
const test = {
|
|
pcsMkrCd: 'MKR003',
|
|
pcsSerList: [{ pcsSerCd: 'SER007' }, { pcsSerCd: 'SER009' }, { pcsSerCd: 'SER010' }],
|
|
moduleItemList: [
|
|
{ itemId: '107015', mixMatlNo: null },
|
|
{ itemId: '107077', mixMatlNo: null },
|
|
{ itemId: '107015', mixMatlNo: 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) => {
|
|
const paramString = getQueryString(params)
|
|
return await post({ url: '/api/master/pcsAutoRecommendList', data: params }).then((res) => {
|
|
console.log('🚀🚀 ~ getPcsAutoRecommendList ~ res:', res)
|
|
return res
|
|
})
|
|
}
|
|
|
|
return {
|
|
getRoofMaterialList,
|
|
getModuleTypeItemList,
|
|
getTrestleList,
|
|
getConstructionList,
|
|
getTrestleDetailList,
|
|
getPcsMakerList,
|
|
getPcsModelList,
|
|
getPcsAutoRecommendList,
|
|
}
|
|
}
|