'use client' import React, { useEffect } from 'react' import { useState } from 'react' import { Autocomplete, AutocompleteItem } from '@nextui-org/react' import { useAxios } from '@/hooks/useAxios' import { useRecoilState, useRecoilValue, useResetRecoilState } from 'recoil' import { globalLocaleStore } from '@/store/localeAtom' import RangeDatePicker from '@/components/common/datepicker/RangeDatePicker' import { stuffSearchState } from '@/store/stuffAtom' import { isEmptyArray } from '@/util/common-utils' import dayjs from 'dayjs' import isLeapYear from 'dayjs/plugin/isLeapYear' // 윤년 판단 플러그인 dayjs.extend(isLeapYear) import Link from 'next/link' import SingleDatePicker from '../common/datepicker/SingleDatePicker' export default function StuffSearchCondition() { const globalLocaleState = useRecoilValue(globalLocaleStore) const { get } = useAxios(globalLocaleState) //달력 props 관련 날짜 셋팅 const [startDate, setStartDate] = useState(dayjs(new Date()).add(-1, 'year').format('YYYY-MM-DD')) const [endDate, setEndDate] = useState(dayjs(new Date()).format('YYYY-MM-DD')) const rangeDatePickerProps1 = { startDate, //시작일 setStartDate, } const rangeDatePickerProps2 = { startDate: endDate, //종료일 setStartDate: setEndDate, } //여기서 선택한 검색조건들을 recoil로 관리 const resetStuffRecoil = useResetRecoilState(stuffSearchState) const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState) const [objectNo, setObjectNo] = useState('') //물건번호 const [saleStoreId, setSaleStoreId] = useState('') //판매대리점ID const [address, setAddress] = useState('') //물건주소 const [objectName, setobjectName] = useState('') //물건명 const [saleStoreName, setSaleStoreName] = useState('') //판매대리점명 const [specDateYn, setSpecDateYn] = useState('') //사양 확인('', 'Y', 'N') const [receiveUser, setReceiveUser] = useState('') //담당자 const [dispCompanyName, setDispCompanyName] = useState('') //견적처 const [dateType, setDateType] = useState('U') //갱신일(U)/등록일(R) const [schSelSaleStoreId, setSchSelSaleStoreId] = useState('') //판매대리점 선택 const [schSelSaleStoreList, setSchSelSaleStoreList] = useState([]) //판매대리점 자동완성 SELECT // 조회 const onSubmit = () => { let diff = dayjs(endDate).diff(startDate, 'day') if (diff > 366) { return alert('최대1년 조회 가능합니다.') } setStuffSearch({ schObjectNo: stuffSearch?.schObjectNo ? stuffSearch.schObjectNo : objectNo, schSaleStoreId: stuffSearch?.schSaleStoreId ? stuffSearch.schSaleStoreId : saleStoreId, schAddress: stuffSearch?.schAddress ? stuffSearch.schAddress : address, schObjectName: stuffSearch?.schObjectName ? stuffSearch.schObjectName : objectName, schSaleStoreName: stuffSearch?.schSaleStoreName ? stuffSearch.schSaleStoreName : saleStoreName, schSpecDateYn: stuffSearch?.schSpecDateYn ? stuffSearch.schSpecDateYn : specDateYn, schReceiveUser: stuffSearch?.schReceiveUser ? stuffSearch.schReceiveUser : receiveUser, schDispCompanyName: stuffSearch?.schDispCompanyName ? stuffSearch.schDispCompanyName : dispCompanyName, schDateType: stuffSearch?.schDateType ? stuffSearch.schDateType : dateType, schFromDt: dayjs(startDate).format('YYYY-MM-DD'), schToDt: dayjs(endDate).format('YYYY-MM-DD'), code: 'E', schSelSaleStoreId: stuffSearch?.schSelSaleStoreId ? stuffSearch.schSelSaleStoreId : schSelSaleStoreId, startRow: stuffSearch?.startRow ? stuffSearch.startRow : 1, endRow: stuffSearch?.endRow ? stuffSearch.endRow : 100, schSortType: stuffSearch?.schSortType ? stuffSearch.schSortType : 'R', }) } //초기화 const resetRecoil = () => { setObjectNo('') setSaleStoreId('') setAddress('') setobjectName('') setSaleStoreName('') setSpecDateYn('') setReceiveUser('') setDispCompanyName('') setDateType('U') setStartDate(dayjs(new Date()).add(-1, 'year').format('YYYY-MM-DD')) setEndDate(dayjs(new Date()).format('YYYY-MM-DD')) setSchSelSaleStoreId('') resetStuffRecoil() } useEffect(() => { get({ url: `/api/object/saleStore/201TES01/list` }).then((res) => { if (!isEmptyArray(res)) { // console.log('판매점 결과:::::', res) setSchSelSaleStoreList(res) } }) }, []) //판매대리점 자동완성 변경 const onSelectionChange = (key) => { // console.log('자동완성값변경', key) if (key == null) { setSchSelSaleStoreId('') setStuffSearch({ ...stuffSearch, schSelSaleStoreId: '' }) } else { setSchSelSaleStoreId(key) setStuffSearch({ ...stuffSearch, schSelSaleStoreId: key }) } } useEffect(() => { setStartDate(stuffSearch?.schFromDt ? stuffSearch.schFromDt : dayjs(new Date()).add(-1, 'year').format('YYYY-MM-DD')) setEndDate(stuffSearch?.schToDt ? stuffSearch.schToDt : dayjs(new Date()).format('YYYY-MM-DD')) }, [stuffSearch]) return ( <> {/* 퍼블적용시작 */}

물건현황

물건번호
{ setObjectNo(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schObjectNo: e.target.value }) }} />
판매대리점명
{ setSaleStoreId(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schSaleStoreId: e.target.value }) }} />
물건주소
{ setAddress(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schAddress: e.target.value }) }} />
물건명
{ setobjectName(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schObjectName: e.target.value }) }} />
견적처
{ setDispCompanyName(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schDispCompanyName: e.target.value }) }} />
판매대리점 선택 {/*
*/} {schSelSaleStoreList?.length > 0 && ( {(option) => {option.saleStoreName}} )}
담당자
{ setReceiveUser(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schReceiveUser: e.target.value }) }} />
기간검색
{ setDateType(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schDateType: e.target.value }) }} />
{ setDateType(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schDateType: e.target.value }) }} />
~
{/* 퍼블적용끝 */} {/*
{Array(4) .fill() .map((_, i) => { if (i === 0) { return (
{ setObjectNo(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schObjectNo: e.target.value }) }} /> { setSaleStoreId(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schSaleStoreId: e.target.value }) }} /> { setAddress(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schAddress: e.target.value }) }} />
) } else if (i === 1) { return (
{ setobjectName(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schObjectName: e.target.value }) }} /> { setSaleStoreName(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schSaleStoreName: e.target.value }) }} />
{ setSpecDateYn(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schSpecDateYn: e.target.value }) }} />
{ setSpecDateYn(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schSpecDateYn: e.target.value }) }} />
{ setSpecDateYn(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schSpecDateYn: e.target.value }) }} />
) } else if (i === 2) { return (
{ setReceiveUser(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schReceiveUser: e.target.value }) }} /> { setDispCompanyName(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schDispCompanyName: e.target.value }) }} /> {schSelSaleStoreList?.length > 0 && ( {(option) => {option.saleStoreName}} )}
) } else { return (
{ setDateType(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schDateType: e.target.value }) }} />
{ setDateType(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schDateType: e.target.value }) }} />
) } })}
*/} ) }