'use client' import React, { useState, useEffect, useRef } from 'react' import { useRouter, useSearchParams, usePathname } from 'next/navigation' import { Button } from '@nextui-org/react' import Select from 'react-select' import Link from 'next/link' import { useAxios } from '@/hooks/useAxios' import { globalLocaleStore } from '@/store/localeAtom' import { isEmptyArray, isNotEmptyArray, isObjectNotEmpty } from '@/util/common-utils' import { useMessage } from '@/hooks/useMessage' import { useForm } from 'react-hook-form' import { useRecoilValue } from 'recoil' import { sessionStore } from '@/store/commonAtom' import FindAddressPop from './popup/FindAddressPop' import PlanRequestPop from './popup/PlanRequestPop' import WindSelectPop from './popup/WindSelectPop' import { useCommonCode } from '@/hooks/common/useCommonCode' import StuffPlanQGrid from './StuffPlanQGrid' export default function StuffDetail() { //공통코드 const { commonCode, findCommonCode } = useCommonCode() const [selOptions, setSelOptions] = useState('') //선택한 1차점 const [otherSelOptions, setOtherSelOptions] = useState('') //선택한 1차점외 const sessionState = useRecoilValue(sessionStore) const router = useRouter() const pathname = usePathname() const searchParams = useSearchParams() const { getMessage } = useMessage() const globalLocaleState = useRecoilValue(globalLocaleStore) const ref = useRef() const { get, promiseGet, del, promisePost, promisePut } = useAxios(globalLocaleState) //form const formInitValue = { // 물건번호 T...(임시) R...(진짜) planReqNo: '', //설계의뢰No receiveUser: '', //담당자 objectStatusId: '0', //물건구분(신축:0 기축 : 1) objectName: '', //물건명 objectNameOmit: '', //경칭선택 objectNameKana: '', //물건명 후리가나 saleStoreLevel: '', //1차점스토어레벨 saleStoreId: '', //1차점판매점ID saleStoreName: '', //1차점판매점명 otherSaleStoreId: '', //1차점 외 판매점ID otherSaleStoreName: '', //1차점 외 판매점명 otherSaleStoreLevel: '', //1차점 외 스토어레벨 zipNo: '', //우편번호 prefId: '', //도도부현 prefName: '', address: '', //주소 areaId: '', //발전량시뮬레이션지역id standardWindSpeedId: '', //기준풍속 verticalSnowCover: '', //수직적설량NEW coldRegionFlg: false, //한랭지대책시행(true : 1 / false : 0) surfaceType: 'III・IV', //면조도구분(III・IV / Ⅱ) saltAreaFlg: false, //염해지역용아이템사용 (true : 1 / false : 0) installHeight: '', //설치높이 conType: '0', //계약조건(잉여 / 전량) remarks: '', //메모 tempFlag: 'T', //임시저장(1) 저장(0) } const { register, setValue, getValues, handleSubmit, resetField, control, watch } = useForm({ defaultValues: formInitValue, }) const form = { register, setValue, getValues, handleSubmit, resetField, control, watch } const [honorificCodeList, setHonorificCodeList] = useState([]) //경칭 공통코드 리스트 const [selHonorificCode, setSelHonorificCode] = useState('') //선택한 경칭코드 const [objectStatusList, setObjectStatusList] = useState([]) //물건구분 공통코드 리스트 const [selectObjectStatusId, setSelectObjectStatusId] = useState('0') //신축기축 선택값 const [windSpeedList, setWindSpeedList] = useState([]) //기준 풍속 공통코드 리스트 const [prefCodeList, setPrefCodeList] = useState([]) //도도부현 코트 리스트 const [prefValue, setPrefValue] = useState('') const [saleStoreList, setSaleStoreList] = useState([]) // 판매점 리스트 const [otherSaleStoreList, setOtherSaleStoreList] = useState([]) const [originOtherSaleStoreList, setOriginOtherSaleStoreList] = useState([]) const [areaIdList, setAreaIdList] = useState([]) //발전시뮬레이션 리스트 const [isFormValid, setIsFormValid] = useState(false) //임시저장, 진짜저장 버튼 컨트롤 const [showAddressButtonValid, setShowAddressButtonValid] = useState(false) //주소검색팝업 활성화 컨트롤 const [showDesignRequestButtonValid, setShowDesignRequestButtonValid] = useState(false) //설계의뢰팝업 활성화 컨트롤 const [showWindSpeedButtonValid, setShowWindSpeedButtonValid] = useState(false) //풍속선택팝업 활성화 컨트롤 const objectNo = searchParams.get('objectNo') //url에서 물건번호 꺼내서 바로 set const [editMode, setEditMode] = useState('NEW') const [detailData, setDetailData] = useState({}) const [planGridProps, setPlanGridProps] = useState({ planGridData: [], isPageable: false, planGridColumns: [ { field: 'planNo', headerName: getMessage('stuff.detail.planGridHeader.planNo'), width: 100, cellStyle: { justifyContent: 'center' }, }, { field: 'orderFlg', headerName: getMessage('stuff.detail.planGridHeader.orderFlg'), width: 80, cellStyle: { justifyContent: 'center' }, cellRenderer: (params) => { //1일때만 동그라미 let orderFlg orderFlg = params.value === '1' ? 'O' : 'X' return orderFlg }, }, { field: 'moduleModel', headerName: getMessage('stuff.detail.planGridHeader.moduleModel'), flex: 1, cellStyle: { justifyContent: 'flex-start' /* 좌측정렬*/ }, }, { field: 'capacity', headerName: getMessage('stuff.detail.planGridHeader.capacity'), width: 120, cellStyle: { justifyContent: 'flex-end' /* 우측정렬*/ }, }, { field: 'roofMaterialIdMulti', headerName: getMessage('stuff.detail.planGridHeader.roofMaterialIdMulti'), width: 140, wrapText: true, autoHeight: true, cellStyle: { justifyContent: 'flex-start' /* 좌측정렬*/ }, cellRenderer: (params) => { //콤마가 아니라 、.. 일본콤마? let origin = params.value if (origin !== null) { return ( <> {origin?.split('、').map((it, idx) => ( {it}
))} ) } else { return null } }, }, { field: 'constructSpecification', headerName: getMessage('stuff.detail.planGridHeader.constructSpecification'), wrapText: true, autoHeight: true, cellStyle: { justifyContent: 'flex-start' /* 좌측정렬*/ }, cellRenderer: (params) => { let origin = params.value if (origin !== null) { return ( <> {origin?.split('、').map((it, idx) => ( {it}
))} ) } else { return null } }, }, { field: 'supportMethodIdMulti', headerName: getMessage('stuff.detail.planGridHeader.supportMethodIdMulti'), wrapText: true, autoHeight: true, cellStyle: { justifyContent: 'flex-start' /* 좌측정렬*/ }, cellRenderer: (params) => { let origin = params.value if (origin !== null) { return ( <> {origin?.split('、').map((it, idx) => ( {it}
))} ) } else { return null } }, }, { field: 'pcTypeNo', headerName: getMessage('stuff.detail.planGridHeader.pcTypeNo'), flex: 1, wrapText: true, autoHeight: true, cellStyle: { justifyContent: 'flex-start' /* 좌측정렬*/ }, cellRenderer: (params) => { let origin = params.value if (origin !== null) { return ( <> {origin?.split('、').map((it, idx) => ( {it}
))} ) } else { return null } }, }, { field: 'management', headerName: getMessage('stuff.detail.planGridHeader.management'), width: 200, autoHeight: true, cellStyle: { justifyContent: 'center' }, cellRenderer: () => { return (
) }, }, ], }) useEffect(() => { // console.log('objectNo::', objectNo) if (objectNo) { setEditMode('EDIT') if (objectNo.substring(0, 1) === 'R') { //벨리데이션 체크용.. setIsFormValid(true) } promiseGet({ url: `/api/object/${objectNo}/detail` }).then((res) => { if (res.status === 200) { if (res.data != null) { setDetailData(res.data) } else { setDetailData({}) } if (isNotEmptyArray(res.data.planList)) { // console.log('플랜RES::::::::', res.data.planList) setPlanGridProps({ ...planGridProps, planGridData: res.data.planList }) } else { setPlanGridProps({ ...planGridProps, planGridData: [] }) } } else { setDetailData({}) setPlanGridProps({ ...planGridProps, planGridData: [] }) } }) } else { // 신규 상세 공통APi // 도도부현API get({ url: '/api/object/prefecture/list' }).then((res) => { if (!isEmptyArray(res)) { setPrefCodeList(res) } }) //1차점 : X167 T01 //2차점 : 10X22, 201X112 // get({ url: `/api/object/saleStore/${sessionState?.storeId}/list` }).then((res) => { get({ url: `/api/object/saleStore/T100/list` }).then((res) => { if (!isEmptyArray(res)) { const firstList = res.filter((row) => row.saleStoreLevel === '1') const otherList = res.filter((row) => row.saleStoreLevel !== '1') //1차점 셀렉트박스 setSaleStoreList(firstList) //1차점 아닌 판매점 셀렉트박스 setOriginOtherSaleStoreList(otherList) setOtherSaleStoreList(otherList) if (sessionState?.storeLvl === '1') { setSelOptions(sessionState?.storeId) form.setValue('saleStoreId', sessionState?.storeId) form.setValue('saleStoreLevel', sessionState?.storeLvl) } else { setSelOptions(firstList[0].saleStoreId) setOtherSelOptions(sessionState?.storeId) form.setValue('saleStoreId', firstList[0].saleStoreId) form.setValue('otherSaleStoreId', sessionState?.storeId) form.setValue('otherSaleStoreLevel', sessionState?.storeLvl) } } }) } }, [objectNo, sessionState]) useEffect(() => { const code1 = findCommonCode(200800) //경칭 const code2 = findCommonCode(201700) //신축/기축 const code3 = findCommonCode(202000) //기준풍속 202000 if (code1 != null) { // console.log('경칭공코::::::', code1) setHonorificCodeList(code1) } if (code2 != null) { // console.log('신축/기축공코::::', code2) setObjectStatusList(code2) } if (code3 != null) { // console.log('기준풍속::::', code3) setWindSpeedList(code3) } }, [commonCode]) useEffect(() => { if (isObjectNotEmpty(detailData)) { // 도도부현API get({ url: '/api/object/prefecture/list' }).then((res) => { if (!isEmptyArray(res)) { setPrefCodeList(res) } }) //1차점 : X167 T01 //2차점 : 10X22, 201X112 // get({ url: `/api/object/saleStore/${sessionState?.storeId}/list` }).then((res) => { get({ url: `/api/object/saleStore/T100/list` }).then((res) => { if (!isEmptyArray(res)) { const firstList = res.filter((row) => row.saleStoreLevel === '1') const otherList = res.filter((row) => row.saleStoreLevel !== '1') //1차점 셀렉트박스 setSaleStoreList(firstList) //1차점 아닌 판매점 셀렉트박스 setOriginOtherSaleStoreList(otherList) setOtherSaleStoreList(otherList) // console.log('1차점리스트::', firstList) // console.log('2차점리스트::', otherList) } //설계의뢰No. form.setValue('planReqNo', detailData.planReqNo) //담당자 form.setValue('receiveUser', detailData.receiveUser) //물건구분objectStatusId setSelectObjectStatusId(detailData.objectStatusId) form.setValue('objectStatusId', detailData.objectStatusId) //물건명 form.setValue('objectName', detailData.objectName) //경칭코드 setSelHonorificCode(detailData.objectNameOmit) form.setValue('objectNameOmit', detailData.objectNameOmit) //물건명 후리가나 form.setValue('objectNameKana', detailData.objectNameKana) console.log('상세데이타::세팅:::::', detailData) //상세데이터에는 2차점까지 골랐으면 2차점 정보만 내려옴 //로그인세션이 1차점이면 1차점은 본인으로 디폴트 셋팅하고 2차점에 상세데이터 넣어줌 //1차점 // setSelOptions(detailData.saleStoreId) // form.setValue('saleStoreId', detailData.saleStoreId) // form.setValue('saleStoreLevel', sessionState?.storeLvl) //2차점까지 고른경우 확인필요 // console.log('2차점까지 고른경우 확인필요') // setOtherSelOptions(sessionState?.storeId) // form.setValue('saleStoreId', firstList[0].saleStoreId) // form.setValue('otherSaleStoreId', sessionState?.storeId) // form.setValue('otherSaleStoreLevel', sessionState?.storeLvl) //우편번호 form.setValue('zipNo', detailData.zipNo) //도도부현 / 주소 setPrefValue(detailData.prefId) form.setValue('prefId', detailData.prefId) //prefName ??? form.setValue('address', detailData.address) //수직적설량 form.setValue('verticalSnowCover', detailData.verticalSnowCover) //한랭지대책시행 coldRegionFlg 1이면 true form.setValue('coldRegionFlg', detailData.coldRegionFlg === '1' ? true : false) //면조도구분surfaceType // form.setValue('surfaceType', 'Ⅱ') // form.setValue('surfaceType', 'III・IV') form.setValue('surfaceType', detailData.surfaceType) //염해지역용아이템사용 saltAreaFlg 1이면 true form.setValue('saltAreaFlg', detailData.saltAreaFlg === '1' ? true : false) //설치높이 form.setValue('installHeight', detailData.installHeight) //계약조건 form.setValue('conType', detailData.conType) //메모 form.setValue('remarks', detailData.remarks) }) } }, [detailData, sessionState]) //경칭선택 변경 이벤트 const onChangeHonorificCode = (key) => { if (isObjectNotEmpty(key)) { setSelHonorificCode(key.clCodeNm) form.setValue('objectNameOmit', key.clCodeNm) } else { setSelHonorificCode('') form.setValue('objectNameOmit', '') } } //기준풍속 변경 이벤트 const onChangeWindSpeedCode = (key) => { if (isObjectNotEmpty(key)) { form.setValue('standardWindSpeedId', key.clCode) } else { form.setValue('standardWindSpeedId', '') } } //물건구분 변경 이벤트 const onRadioChange = (key) => { setSelectObjectStatusId(key.target.value) } //1차점 변경 이벤트 const onSelectionChange = (key) => { const planReqNo = form.watch('planReqNo') let delFlg = false if (editMode === 'NEW') { if (planReqNo !== '') { if (confirm(getMessage('stuff.detail.confirm.message1'))) { delFlg = true } else { delFlg = false } } } else { // EDIT if (planReqNo !== null) { if (confirm(getMessage('stuff.detail.confirm.message1'))) { delFlg = true } else { delFlg = false } } } let tempObjectNo = 'T' if (objectNo) { tempObjectNo = objectNo.substring(0, 1) } if (tempObjectNo !== 'R') { if (planReqNo) { if (delFlg) { form.setValue('planReqNo', '') if (isObjectNotEmpty(key)) { setOtherSaleStoreList(otherSaleStoreList) form.setValue('saleStoreId', key.saleStoreId) form.setValue('saleStoreName', key.saleStoreName) form.setValue('saleStoreLevel', key.saleStoreLevel) setSelOptions(key.saleStoreId) //선택한 1차점 정보로 2차점 list 추리기 //長府工産株式会社 大阪支社 let newOtherSaleStoreList = originOtherSaleStoreList.filter((row) => row.firstAgentId === key.saleStoreId) setOtherSaleStoreList(newOtherSaleStoreList) } else { //X누름 setSelOptions('') form.setValue('saleStoreId', '') form.setValue('saleStoreName', '') form.setValue('saleStoreLevel', '') form.setValue('otherSaleStoreId', '') form.setValue('otherSaleStoreName', '') form.setValue('otherSaleStoreLevel', '') //1차점 지웠을때 2차점 자동완성 초기화 setOtherSaleStoreList(originOtherSaleStoreList) handleClear() } } } else { if (isObjectNotEmpty(key)) { setOtherSaleStoreList(otherSaleStoreList) form.setValue('saleStoreId', key.saleStoreId) form.setValue('saleStoreName', key.saleStoreName) form.setValue('saleStoreLevel', key.saleStoreLevel) setSelOptions(key.saleStoreId) //선택한 1차점 정보로 2차점 list 추리기 //長府工産株式会社 大阪支社 let newOtherSaleStoreList = originOtherSaleStoreList.filter((row) => row.firstAgentId === key.saleStoreId) setOtherSaleStoreList(newOtherSaleStoreList) } else { //X누름 setSelOptions('') form.setValue('saleStoreId', '') form.setValue('saleStoreName', '') form.setValue('saleStoreLevel', '') form.setValue('otherSaleStoreId', '') form.setValue('otherSaleStoreName', '') form.setValue('otherSaleStoreLevel', '') //1차점 지웠을때 2차점 자동완성 초기화 setOtherSaleStoreList(originOtherSaleStoreList) handleClear() } } } else { if (isObjectNotEmpty(key)) { setOtherSaleStoreList(otherSaleStoreList) form.setValue('saleStoreId', key.saleStoreId) form.setValue('saleStoreName', key.saleStoreName) form.setValue('saleStoreLevel', key.saleStoreLevel) setSelOptions(key.saleStoreId) //선택한 1차점 정보로 2차점 list 추리기 //長府工産株式会社 大阪支社 let newOtherSaleStoreList = originOtherSaleStoreList.filter((row) => row.firstAgentId === key.saleStoreId) setOtherSaleStoreList(newOtherSaleStoreList) } else { //X누름 setSelOptions('') form.setValue('saleStoreId', '') form.setValue('saleStoreName', '') form.setValue('saleStoreLevel', '') form.setValue('otherSaleStoreId', '') form.setValue('otherSaleStoreName', '') form.setValue('otherSaleStoreLevel', '') //1차점 지웠을때 2차점 자동완성 초기화 setOtherSaleStoreList(originOtherSaleStoreList) handleClear() } } } //2차점 변경 이벤트 const onSelectionChange2 = (key) => { const planReqNo = form.watch('planReqNo') let delFlg = false if (editMode === 'NEW') { if (planReqNo !== '') { if (confirm(getMessage('stuff.detail.confirm.message1'))) { delFlg = true } else { delFlg = false } } } else { //EDIT if (planReqNo !== null) { if (confirm(getMessage('stuff.detail.confirm.message1'))) { delFlg = true } else { delFlg = false } } } let tempObjectNo = 'T' if (objectNo) { tempObjectNo = objectNo.substring(0, 1) } if (tempObjectNo !== 'R') { if (planReqNo) { if (delFlg) { form.setValue('planReqNo', '') if (isObjectNotEmpty(key)) { setOtherSelOptions(key.saleStoreId) form.setValue('otherSaleStoreId', key.saleStoreId) form.setValue('otherSaleStoreName', key.saleStoreName) form.setValue('otherSaleStoreLevel', key.saleStoreLevel) } else { setOtherSelOptions('') form.setValue('otherSaleStoreId', '') form.setValue('otherSaleStoreName', '') form.setValue('otherSaleStoreLevel', '') } } } else { if (isObjectNotEmpty(key)) { setOtherSelOptions(key.saleStoreId) form.setValue('otherSaleStoreId', key.saleStoreId) form.setValue('otherSaleStoreName', key.saleStoreName) form.setValue('otherSaleStoreLevel', key.saleStoreLevel) } else { setOtherSelOptions('') form.setValue('otherSaleStoreId', '') form.setValue('otherSaleStoreName', '') form.setValue('otherSaleStoreLevel', '') } } } else { if (isObjectNotEmpty(key)) { setOtherSelOptions(key.saleStoreId) form.setValue('otherSaleStoreId', key.saleStoreId) form.setValue('otherSaleStoreName', key.saleStoreName) form.setValue('otherSaleStoreLevel', key.saleStoreLevel) } else { setOtherSelOptions('') form.setValue('otherSaleStoreId', '') form.setValue('otherSaleStoreName', '') form.setValue('otherSaleStoreLevel', '') } } } //1차점 지웠을때 2차점 자동완성 초기화 const handleClear = () => { if (ref.current) { ref.current.clearValue() } } //팝업에서 넘어온 우편정보 const setZipInfo = (info) => { // console.log('팝업에서 넘어온 우편 데이타::::::::', info) setPrefValue(info.prefId) form.setValue('prefId', info.prefId) form.setValue('prefName', info.address1) form.setValue('address', info.address2 + info.address3) form.setValue('zipNo', info.zipNo) } //팝업에서 넘어온 설계의뢰 정보로 바꾸기 const setPlanReqInfo = (info) => { form.setValue('planReqNo', info.planReqNo) form.setValue('objectStatusId', info.building) form.setValue('objectName', info.planReqName) form.setValue('zipNo', info.zipNo) form.setValue('address', info.address2) prefCodeList.map((row) => { if (row.prefName == info.address1) { setPrefValue(row.prefId) form.setValue('prefId', row.prefId) form.setValue('prefName', info.address1) } }) //설계의뢰 팝업에선 WL_안붙어서 옴 form.setValue('standardWindSpeedId', `WL_${info.windSpeed}`) form.setValue('verticalSnowCover', info.verticalSnowCover) form.setValue('surfaceType', info.surfaceType) form.setValue('installHeight', info.installHeight) form.setValue('remarks', info.remarks) if (info.saleStoreLevel === '1') { setSelOptions(info.saleStoreId) form.setValue('saleStoreId', info.saleStoreId) form.setValue('saleStoreName', info.saleStoreName) form.setValue('saleStoreLevel', info.saleStoreLevel) } else { setOtherSelOptions(info.saleStoreId) form.setValue('otherSaleStoreId', info.saleStoreId) form.setValue('otherSaleStoreName', info.saleStoreName) form.setValue('otherSaleStoreLevel', info.saleStoreLevel) } } //풍속선택 팝업에서 넘어온 바람정보 const setWindSppedInfo = (info) => { form.setValue('standardWindSpeedId', info.windSpeed) } //receiveUser: '', //담당자 const _receiveUser = watch('receiveUser') //objectName: '', //물건명 const _objectName = watch('objectName') // objectNameOmit: '', //경칭선택 const _objectNameOmit = watch('objectNameOmit') // saleStoreId: '', //1차 판매점ID const _saleStoreId = watch('saleStoreId') // zipNo: '', //우편번호 const _zipNo = watch('zipNo') // prefId: '', //도도부현 const _prefId = watch('prefId') // address: '', //주소 const _address = watch('address') // areaId: '', //발전량시뮬레이션지역 const _areaId = watch('areaId') // standardWindSpeedId: '', //기준풍속 const _standardWindSpeedId = watch('standardWindSpeedId') // verticalSnowCover: '', //수직적설량 const _verticalSnowCover = watch('verticalSnowCover') // installHeight: '', //설치높이 const _installHeight = watch('installHeight') useEffect(() => { if (editMode === 'NEW') { const formData = form.getValues() let errors = {} if (!formData.receiveUser || formData.receiveUser.trim().length === 0) { errors.receiveUser = true } if (!formData.objectName || formData.objectName.trim().length === 0) { errors.objectName = true } if (!formData.objectNameOmit) { errors.objectNameOmit = true } if (!formData.saleStoreId) { errors.saleStoreId = true } if (!formData.zipNo) { errors.zipNo = true } if (!formData.prefId) { errors.prefId = true } if (!formData.areaId) { errors.areaId = true } if (!formData.standardWindSpeedId) { errors.standardWindSpeedId = true } if (!formData.verticalSnowCover) { errors.verticalSnowCover = true } if (!formData.installHeight) { errors.installHeight = true } setIsFormValid(Object.keys(errors).length === 0 ? true : false) } else { console.log('상세일때 폼체크') const formData = form.getValues() let errors = {} if (!formData.receiveUser || formData.receiveUser.trim().length === 0) { errors.receiveUser = true } if (!formData.objectName || formData.objectName.trim().length === 0) { errors.objectName = true } if (!formData.objectNameOmit) { errors.objectNameOmit = true } if (!formData.saleStoreId) { errors.saleStoreId = true } if (!formData.zipNo) { errors.zipNo = true } if (!formData.prefId) { errors.prefId = true } if (!formData.areaId) { errors.areaId = true } if (!formData.standardWindSpeedId) { errors.standardWindSpeedId = true } if (!formData.verticalSnowCover) { errors.verticalSnowCover = true } if (!formData.installHeight) { errors.installHeight = true } console.log('상세 저장용 에러결과?????::', errors) setIsFormValid(Object.keys(errors).length === 0 ? true : false) } }, [ _receiveUser, _objectName, _objectNameOmit, _saleStoreId, _zipNo, _prefId, _address, _areaId, _standardWindSpeedId, _verticalSnowCover, _installHeight, ]) // 주소검색 팝업오픈 const onSearchPostNumberPopOpen = () => { setShowAddressButtonValid(true) } //설계의뢰 팝업 오픈 const onSearchDesignRequestPopOpen = () => { setShowDesignRequestButtonValid(true) } // 풍속선택 팝업 오픈 const onSearchWindSpeedPopOpen = () => { const prefName = form.watch('prefName') if (prefName === '') { alert(getMessage('stuff.windSelectPopup.error.message1')) } else { setShowWindSpeedButtonValid(true) } } useEffect(() => { if (prefValue !== '') { // 발전량시뮬레이션 지역 목록 get({ url: `/api/object/prefecture/${prefValue}/list` }).then((res) => { if (!isEmptyArray(res)) { setAreaIdList(res) } }) } }, [prefValue]) // 발전량 시뮬레이션 변경 const handleAreaIdOnChange = (e) => { form.setValue('areaId', e.areaId) form.setValue('areaName', e.prefName) } //필수값 다 입력했을때 const onValid = async () => { const formData = form.getValues() const apiUrl = '/api/object/save-object' const params = { planReqNo: formData.planReqNo, saleStoreId: formData.otherSaleStoreId ? formData.otherSaleStoreId : formData.saleStoreId, saleStoreName: formData.otherSaleStoreName ? formData.otherSaleStoreName : formData.saleStoreName, saleStoreLevel: formData.otherSaleStoreLevel ? formData.otherSaleStoreLevel : formData.saleStoreLevel, objectStatusId: formData.objectStatusId, objectName: formData.objectName, objectNameOmit: formData.objectNameOmit, objectNameKana: formData.objectNameKana, zipNo: formData.zipNo, prefId: formData.prefId, prefName: formData.prefName, address: formData.address, areaId: formData.areaId, receiveUser: formData.receiveUser, installHeight: formData.installHeight, standardWindSpeedId: formData.standardWindSpeedId, verticalSnowCover: formData.verticalSnowCover, surfaceType: formData.surfaceType, conType: formData.conType, coldRegionFlg: formData.coldRegionFlg === true ? '1' : '0', saltAreaFlg: formData.saltAreaFlg === true ? '1' : '0', remarks: formData.remarks, tempFlg: '0', workNo: null, workName: null, } console.log('REAL저장::', params) //수직적설량, 설치높이 0인지 체크 let snow = params.verticalSnowCover let height = params.installHeight if (snow === '0') { alert(getMessage('stuff.detail.save.valierror1')) } if (height === '0') { alert(getMessage('stuff.detail.save.valierror2')) } alert('작업중') return if (editMode === 'NEW') { await promisePost({ url: apiUrl, data: params }).then((res) => { console.log('진짜저장결과::::', pathname, res) //상세화면으로 전환 //router.push(`${pathname}?objectNo=${res.data.objectNo.toString()}`) }) } else { // 수정모드일때는 PUT await promisePut({ url: apiUrl, data: params }).then((res) => { console.log('진짜데이터 수정 결과::::::::::', pathname, res) //새로고침??? }) } } // 임시저장 const onTempSave = async () => { const formData = form.getValues() const params = { planReqNo: formData.planReqNo, saleStoreId: formData.otherSaleStoreId ? formData.otherSaleStoreId : formData.saleStoreId, saleStoreName: formData.otherSaleStoreName ? formData.otherSaleStoreName : formData.saleStoreName, saleStoreLevel: formData.otherSaleStoreLevel ? formData.otherSaleStoreLevel : formData.saleStoreLevel, objectStatusId: formData.objectStatusId, objectName: formData.objectName, objectNameOmit: formData.objectNameOmit, objectNameKana: formData.objectNameKana, zipNo: formData.zipNo, prefId: formData.prefId, prefName: formData.prefName, address: formData.address, areaId: formData.areaId, receiveUser: formData.receiveUser, installHeight: formData.installHeight, standardWindSpeedId: formData.standardWindSpeedId, verticalSnowCover: formData.verticalSnowCover, surfaceType: formData.surfaceType, conType: formData.conType, coldRegionFlg: formData.coldRegionFlg === true ? '1' : '0', saltAreaFlg: formData.saltAreaFlg === true ? '1' : '0', remarks: formData.remarks, tempFlg: '1', workNo: null, workName: null, } //1차점 or 2차점 안고르고 임시저장하면 if (params.saleStoreId == '') { params.saleStoreId = sessionState.storeId params.saleStoreLevel = sessionState.storeLvl } //수직적설량, 설치높이 0인지 체크 let snow = params.verticalSnowCover let height = params.installHeight if (snow === '0') { alert(getMessage('stuff.detail.save.valierror1')) } if (height === '0') { alert(getMessage('stuff.detail.save.valierror2')) } alert('작업중') return await promisePost({ url: '/api/object/save-object', data: params }).then((res) => { if (res.status === 201) { getMessage('stuff.detail.tempSave.message1') router.push(`${pathname}?objectNo=${res.data.objectNo.toString()}`) } }) } // 물건삭제 const onDelete = () => { // console.log('물건번호::::::::', objectNo) // console.log('detailData:::::::::', detailData) const specificationConfirmDate = detailData.specificationConfirmDate if (specificationConfirmDate != null) { alert(getMessage('stuff.detail.delete.message1')) } else { if (confirm(getMessage('common.message.data.delete'))) { del({ url: `/api/object/${objectNo}` }).then((res) => { // console.log('삭제결과:::::::', res) router.push('/management/stuff') }) } } } // 숫자만 입력 가능 const handleKeyUp = (e) => { let input = e.target input.value = input.value.replace(/[^0-9]/g, '') } return ( <> {(editMode === 'NEW' && (
* {getMessage('stuff.detail.required')}
{getMessage('stuff.detail.planReqNo')}
{(form.watch('planReqNo') !== '' && ( )) || null}
{getMessage('stuff.detail.dispCompanyName')} *
{getMessage('stuff.detail.objectStatusId')} *
{/* 라디오시작 */} {objectStatusList.map((row) => { return (
) })} {/* 라디오끝 */}
{getMessage('stuff.detail.objectNameKana')}
{getMessage('stuff.detail.saleStoreId')} *
{getMessage('stuff.detail.tooltip.saleStoreId')}
{getMessage('stuff.detail.otherSaleStoreId')}
{getMessage('stuff.detail.tooltip.saleStoreId')}
{getMessage('stuff.detail.zipNo')} *
{getMessage('stuff.detail.btn.addressPop.guide')}
{getMessage('stuff.detail.prefId')} *
{prefCodeList?.length > 0 && (
{getMessage('stuff.detail.areaId')} *
{getMessage('stuff.detail.windSpeed')} *
{getMessage('stuff.detail.windSpeedSpan')}
{getMessage('stuff.detail.verticalSnowCover')} *
cm
{getMessage('stuff.detail.surfaceType')} *
{getMessage('stuff.detail.tooltip.surfaceType')}
{getMessage('stuff.detail.installHeight')} *
m
{getMessage('stuff.detail.conType')}
{getMessage('stuff.detail.remarks')}
{!isFormValid ? ( ) : ( )}
)) || ( <>
* {getMessage('stuff.detail.required')}
{/* 도도부현 /주소 시작*/} {/* 도도부현 /주소 끝 */} {/* 발전량시뮬레이션지역시작 */} {/* 발전량시뮬레이션지역끝 */} {/* 기준풍속시작 */} {/* 기준풍속끝 */} {/* 수직적설량시작 */} {/* 수직적설량끝 */} {/* 면조도구분시작 */} {/* 면조도구분끝 */} {/* 설치높이시작 */} {/* 설치높이끝 */} {/* 계약조건시작 */} {/* 계약조건끝 */} {/* 메모시작 */} {/* 메모끝 */}
{getMessage('stuff.detail.planReqNo')}
{objectNo.substring(0, 1) === 'T' && form.watch('planReqNo') ? ( ) : null}
{objectNo.substring(0, 1) === 'T' ? ( <> ) : null}
{getMessage('stuff.detail.dispCompanyName')} *
{getMessage('stuff.detail.objectStatusId')} *
{/* 상세라디오시작 */} {objectStatusList.map((row) => { return (
) })} {/* 상세라디오끝 */}
{getMessage('stuff.detail.objectNameKana')}
{getMessage('stuff.detail.saleStoreId')} *
{getMessage('stuff.detail.tooltip.saleStoreId')}
{getMessage('stuff.detail.otherSaleStoreId')}
{getMessage('stuff.detail.tooltip.saleStoreId')}
{getMessage('stuff.detail.zipNo')} *
{getMessage('stuff.detail.btn.addressPop.guide')}
{getMessage('stuff.detail.prefId')} *
{prefCodeList?.length > 0 && (
{getMessage('stuff.detail.areaId')} *
{getMessage('stuff.detail.windSpeed')} *
{getMessage('stuff.detail.windSpeedSpan')}
{getMessage('stuff.detail.verticalSnowCover')} *
cm
{getMessage('stuff.detail.surfaceType')} *
{getMessage('stuff.detail.tooltip.surfaceType')}
{getMessage('stuff.detail.installHeight')} *
m
{getMessage('stuff.detail.conType')}
{getMessage('stuff.detail.remarks')}
{objectNo.substring(0, 1) === 'R' ? ( <> {/* 진짜R 플랜시작 */}

{getMessage('stuff.detail.planList.title')}

  • {getMessage('stuff.detail.planList.cnt')} {detailData.planList?.length}
{getMessage('stuff.detail.planList.help')}
{getMessage('stuff.detail.planList.guide1')} {getMessage('stuff.detail.planList.guide2')} {getMessage('stuff.detail.planList.guide3')}
{/*
페이징영역
*/}
{/* 진짜R 플랜끝 */}
) : ( <>
{!isFormValid ? ( ) : ( )}
)}
)} {showAddressButtonValid && } {showDesignRequestButtonValid && ( )} {showWindSpeedButtonValid && ( )} ) }