'use client' import { useEffect, useState, useContext } from 'react' import { useRecoilValue } from 'recoil' import { floorPlanObjectState } from '@/store/floorPlanObjectAtom' import { SessionContext } from '@/app/SessionProvider' import { useMessage } from '@/hooks/useMessage' import { useCanvasMenu } from '@/hooks/common/useCanvasMenu' import SingleDatePicker from '../common/datepicker/SingleDatePicker' import EstimateFileUploader from './EstimateFileUploader' import { useAxios } from '@/hooks/useAxios' import { globalLocaleStore } from '@/store/localeAtom' import { isNotEmptyArray, isObjectNotEmpty } from '@/util/common-utils' import dayjs from 'dayjs' import { useCommonCode } from '@/hooks/common/useCommonCode' import Select from 'react-select' import { useEstimateController } from '@/hooks/floorPlan/estimate/useEstimateController' export default function Estimate({ params }) { const [objectNo, setObjectNo] = useState('') //물건번호 const [planNo, setPlanNo] = useState('') //플랜번호 const [files, setFiles] = useState([]) // 보내는 첨부파일 const [showContentCode, setShowContentCode] = useState('ATTR001') //견적특이사항 접고 펼치기 const [hidden, setHidden] = useState(false) //공통코드 const { findCommonCode } = useCommonCode() const [honorificCodeList, setHonorificCodeList] = useState([]) //경칭 공통코드 const [startDate, setStartDate] = useState(new Date()) const singleDatePickerProps = { startDate, setStartDate, } const { session } = useContext(SessionContext) const objectRecoil = useRecoilValue(floorPlanObjectState) //견적서 상세데이터 const { state, setState } = useEstimateController(params.pid) //견적특이사항 상세 데이터 LIST //견적특이사항 List const [specialNoteList, setSpecialNoteList] = useState([]) const globalLocaleState = useRecoilValue(globalLocaleStore) const { get, post } = useAxios(globalLocaleState) const { getMessage } = useMessage() const { setMenuNumber } = useCanvasMenu() const fileUploadProps = { // objectNo: '', // planNo: params.pid, // category: '10', uploadFiles: files, setUploadFiles: setFiles, } useEffect(() => { setMenuNumber(5) setObjectNo(objectRecoil.floorPlanObjectNo) setPlanNo(params.pid) // 공통코드 const code1 = findCommonCode(200800) if (code1 != null) { setHonorificCodeList(code1) } }, []) useEffect(() => { //견적특이사항 API호출 //여러개 선택하면 구분자로 (、) let url = `/api/estimate/special-note-list` get({ url: url }).then((res) => { if (isNotEmptyArray(res)) { if (state?.estimateOption) { res.map((row) => { let estimateOption = state?.estimateOption?.split('、') row.text = false estimateOption.map((row2) => { if (row2 === row.code) { row.text = true } }) }) setSpecialNoteList(res) } } }) }, [state?.estimateOption]) //견적일 set useEffect(() => { let estimateDate = dayjs(startDate).format('YYYY-MM-DD') setState({ estimateDate: estimateDate }) }, [startDate]) useEffect(() => { //선택된 견적특이사항 setState if (isNotEmptyArray(specialNoteList)) { const liveCheckedData = specialNoteList.filter((row) => row.text === true) const data = [] for (let ele of liveCheckedData) { data.push(ele.code) } const newData = data.join('、') setState({ estimateOption: newData }) } }, [specialNoteList]) // 견적특이사항 remark 보여주기 const settingShowContent = (code, event) => { setShowContentCode(code) event.stopPropagation() } // 첨부파일 state에 넣기 useEffect(() => { // console.log(files) if (files.length > 0) { files.map((row) => { setState({ fileList: row.data }) }) } else { console.log('첨부파일 없음') setState({ fileList: [] }) } }, [files]) return (