diff --git a/src/app/floor-plan/page.jsx b/src/app/floor-plan/page.jsx index b38a7ef0..78873b04 100644 --- a/src/app/floor-plan/page.jsx +++ b/src/app/floor-plan/page.jsx @@ -1,5 +1,4 @@ import CanvasFrame from '@/components/floor-plan/CanvasFrame' -import FloorPlan from '@/components/floor-plan/FloorPlan' export default function FloorPlanPage() { return ( diff --git a/src/app/roof2/page.jsx b/src/app/roof2/page.jsx index af24acfa..cccd7bb5 100644 --- a/src/app/roof2/page.jsx +++ b/src/app/roof2/page.jsx @@ -1,14 +1,14 @@ import Roof2 from '@/components/Roof2' -import { initCheck } from '@/util/session-util' +// import { initCheck } from '@/util/session-util' import RoofSelect from '@/app/roof2/RoofSelect' export default async function Roof2Page() { - const session = await initCheck() + // const session = await initCheck() const roof2Props = { - name: session.name || '', - userId: session.userId || '', - email: session.email || '', - isLoggedIn: session.isLoggedIn, + // name: session.name || '', + // userId: session.userId || '', + // email: session.email || '', + // isLoggedIn: session.isLoggedIn, } return ( diff --git a/src/common/common.js b/src/common/common.js index e1e9bb2c..7ab733c4 100644 --- a/src/common/common.js +++ b/src/common/common.js @@ -156,6 +156,7 @@ export const SAVE_KEY = [ 'groupYn', 'groupName', 'lineDirection', + 'groupId', ] export const OBJECT_PROTOTYPE = [fabric.Line.prototype, fabric.Polygon.prototype, fabric.Triangle.prototype] diff --git a/src/components/estimate/Estimate.jsx b/src/components/estimate/Estimate.jsx index de96d1a3..7cbf936a 100644 --- a/src/components/estimate/Estimate.jsx +++ b/src/components/estimate/Estimate.jsx @@ -1,20 +1,31 @@ 'use client' + import { useEffect, useState, useRef } from 'react' -import { useMessage } from '@/hooks/useMessage' -import SingleDatePicker from '../common/datepicker/SingleDatePicker' import { useRecoilValue } from 'recoil' import { floorPlanObjectState } from '@/store/floorPlanObjectAtom' -import { Button } from '@nextui-org/react' import { sessionStore } from '@/store/commonAtom' +import { useMessage } from '@/hooks/useMessage' +import { useCanvasMenu } from '@/hooks/common/useCanvasMenu' +import SingleDatePicker from '../common/datepicker/SingleDatePicker' +import EstimateFileUploader from './EstimateFileUploader' export default function Estimate({ params }) { - const sessionState = useRecoilValue(sessionStore) - const { getMessage } = useMessage() - const objectRecoil = useRecoilValue(floorPlanObjectState) const [objectNo, setObjectNo] = useState('') - const fileInputRef = useRef(null) const [files, setFiles] = useState([]) //첨부파일 - const fileId = useRef(0) + + const sessionState = useRecoilValue(sessionStore) + const objectRecoil = useRecoilValue(floorPlanObjectState) + const { getMessage } = useMessage() + + const { setMenuNumber } = useCanvasMenu() + + const fileUploadProps = { + // objectNo: '', + // planNo: params.pid, + // category: '10', + uploadFiles: files, + setUploadFiles: setFiles, + } useEffect(() => { setObjectNo(objectRecoil.floorPlanObjectNo) @@ -28,31 +39,9 @@ export default function Estimate({ params }) { } }, [objectNo]) - const handleButtonClick = () => { - fileInputRef.current.click() - } - - const onChangeFiles = (e) => { - // e.preventDefault() - // e.persist() - // console.log('파일::', e.target.files[0]) - // console.log('파일::', e.target.files) - // let selectFiles = [] - // let tempFiles = files - // selectFiles = e.target.files - // for (const file of selectFiles) { - // tempFiles = [ - // ...tempFiles, - // { - // id: fileId.current++, - // object: file, - // }, - // ] - // } - // setFiles(tempFiles) - // const formData = new FormData() - // formData.append('file', e.target.files[0]) - } + useEffect(() => { + setMenuNumber(5) + }, []) return (
@@ -210,7 +199,8 @@ export default function Estimate({ params }) { {getMessage('estimate.detail.header.fileList1')} -
+ + {/*
-
+
*/} diff --git a/src/components/estimate/EstimateFileUploader.jsx b/src/components/estimate/EstimateFileUploader.jsx new file mode 100644 index 00000000..c2bccb22 --- /dev/null +++ b/src/components/estimate/EstimateFileUploader.jsx @@ -0,0 +1,91 @@ +'use client' + +import { useContext, useRef } from 'react' +import { v4 as uuidv4 } from 'uuid' +import { useMessage } from '@/hooks/useMessage' +import { SessionContext } from '@/app/SessionProvider' + +export default function EstimateFileUploader({ uploadFiles, setUploadFiles }) { + const fileInputRef = useRef(null) + const { getMessage } = useMessage() + const { session } = useContext(SessionContext) + + const handleButtonClick = (e) => { + e.preventDefault() + fileInputRef.current.click() + } + + const onChangeFiles = async (e) => { + // const formData = new FormData() + // formData.append('file', e.target.files[0]) + // formData.append('objectNo', objectNo) // 받아와야 하는 값 + // formData.append('planNo', planNo) // 받아와야 하는 값 + // formData.append('category', category) // 받아와야 하는 값 + // formData.append('userId', session.userId) + + // await promisePost({ url: '/api/file/fileUpload', data: formData }).then((res) => { + // if (res.data > 0) setUploadFiles([...files, { name: e.target.files[0].name, id: uuidv4() }]) + // }) + setUploadFiles([...uploadFiles, { data: e.target.files[0], id: uuidv4() }]) + } + + const deleteFile = (id) => { + setUploadFiles(uploadFiles.filter((file) => file.id !== id)) + } + + const handleDrop = (e) => { + e.preventDefault() + e.stopPropagation() + const fileList = [] + Array.from(e.dataTransfer.files).forEach((file) => { + fileList.push({ data: file, id: uuidv4() }) + }) + setUploadFiles([...uploadFiles, ...fileList]) + } + + const handleDragOver = (e) => { + e.preventDefault() + e.stopPropagation() + } + + const handleDragEnd = (e) => { + e.preventDefault() + e.stopPropagation() + } + + const handleDragLeave = (e) => { + e.preventDefault() + e.stopPropagation() + } + + return ( +
+
+ + onChangeFiles(e)} /> +
+
handleDrop(e)} + onDragOver={(e) => handleDragOver(e)} + onDragEnd={(e) => handleDragEnd(e)} + onDragLeave={(e) => handleDragLeave(e)} + > +

Drag file here

+
    + {uploadFiles.length > 0 && + uploadFiles.map((file) => ( +
  • + + {file.data.name} + +
  • + ))} +
+
+
+ ) +} diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx index c77e1870..adcd34b3 100644 --- a/src/components/floor-plan/CanvasMenu.jsx +++ b/src/components/floor-plan/CanvasMenu.jsx @@ -224,7 +224,7 @@ export default function CanvasMenu(props) {
+
diff --git a/src/components/floor-plan/modal/object/type/PentagonDormer.jsx b/src/components/floor-plan/modal/object/type/PentagonDormer.jsx index 73f9c5d8..c67a08fc 100644 --- a/src/components/floor-plan/modal/object/type/PentagonDormer.jsx +++ b/src/components/floor-plan/modal/object/type/PentagonDormer.jsx @@ -38,7 +38,7 @@ const PentagonDormer = forwardRef((props, refs) => {
- +
mm
@@ -60,7 +60,7 @@ const PentagonDormer = forwardRef((props, refs) => {
- +
mm
diff --git a/src/components/floor-plan/modal/object/type/TriangleDormer.jsx b/src/components/floor-plan/modal/object/type/TriangleDormer.jsx index f2a8a1f0..34a87e44 100644 --- a/src/components/floor-plan/modal/object/type/TriangleDormer.jsx +++ b/src/components/floor-plan/modal/object/type/TriangleDormer.jsx @@ -38,7 +38,7 @@ const TriangleDormer = forwardRef((props, refs) => {
- +
mm
diff --git a/src/components/main/MainContents.jsx b/src/components/main/MainContents.jsx index 9490a868..77df845a 100644 --- a/src/components/main/MainContents.jsx +++ b/src/components/main/MainContents.jsx @@ -15,7 +15,7 @@ export default function MainContents() { const { getMessage } = useMessage() const router = useRouter() const globalLocaleState = useRecoilValue(globalLocaleStore) - const { promiseGet, get } = useAxios(globalLocaleState) + const { promiseGet } = useAxios(globalLocaleState) const sessionState = useRecoilValue(sessionStore) @@ -118,7 +118,7 @@ export default function MainContents() { key={row.objectNo} className="recently-item" onClick={() => { - if (row.objectNo.substring(0, 1) === 'R') { + if (row.tempFlg === '0') { router.push(`/management/stuff/detail?objectNo=${row.objectNo.toString()}`) } else { router.push(`/management/stuff/tempdetail?objectNo=${row.objectNo.toString()}`) diff --git a/src/components/management/Stuff.jsx b/src/components/management/Stuff.jsx index 999ea900..05f62c28 100644 --- a/src/components/management/Stuff.jsx +++ b/src/components/management/Stuff.jsx @@ -1,12 +1,11 @@ 'use client' -import React, { useEffect, useState, useRef } from 'react' +import { useEffect, useState, useRef, useContext } from 'react' import { useRouter, usePathname } from 'next/navigation' -import { Button } from '@nextui-org/react' import { useAxios } from '@/hooks/useAxios' import { useMessage } from '@/hooks/useMessage' import StuffQGrid from './StuffQGrid' -import { useRecoilValue, useRecoilState } from 'recoil' +import { useRecoilValue, useRecoilState, useSetRecoilState } from 'recoil' import { stuffSearchState } from '@/store/stuffAtom' import { queryStringFormatter, isEmptyArray } from '@/util/common-utils' import dayjs from 'dayjs' @@ -17,10 +16,12 @@ import KO from '@/locales/ko.json' import JA from '@/locales/ja.json' import QPagination from '../common/pagination/QPagination' import { sessionStore } from '@/store/commonAtom' +import { SessionContext } from '@/app/SessionProvider' export default function Stuff() { const sessionState = useRecoilValue(sessionStore) - const [appMessageState, setAppMessageState] = useRecoilState(appMessageStore) + const { session } = useContext(SessionContext) + const setAppMessageState = useSetRecoilState(appMessageStore) const stuffSearchParams = useRecoilValue(stuffSearchState) const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState) const { getMessage } = useMessage() @@ -224,11 +225,10 @@ export default function Stuff() { // 진입시 그리드 데이터 조회 useEffect(() => { - if (isObjectNotEmpty(sessionState)) { - //물건 메뉴 눌러서 최초 진입 sessionState + if (isObjectNotEmpty(session)) { if (stuffSearchParams?.code === 'S') { const params = { - saleStoreId: sessionState?.storeId, + saleStoreId: stuffSearchParams.schSelSaleStoreId, schObjectNo: stuffSearchParams?.schObjectNo, schAddress: stuffSearchParams?.schAddress, schObjectName: stuffSearchParams?.schObjectName, @@ -240,7 +240,9 @@ export default function Stuff() { schToDt: dayjs(new Date()).format('YYYY-MM-DD'), startRow: (pageNo - 1) * pageSize + 1, endRow: pageNo * pageSize, - schSelSaleStoreId: '', + schSelSaleStoreId: stuffSearchParams?.schOtherSelSaleStoreId + ? stuffSearchParams.schOtherSelSaleStoreId + : stuffSearchParams.schSelSaleStoreId, schSortType: stuffSearchParams.schSortType, } @@ -255,11 +257,13 @@ export default function Stuff() { } }) } - fetchData() - } else { + if (stuffSearchParams?.schSelSaleStoreId !== '') { + fetchData() + } + } else if (stuffSearchParams?.code === 'M') { //메인화면에서 진입 const params = { - saleStoreId: sessionState?.storeId, + saleStoreId: session?.storeId, schObjectNo: stuffSearchParams.schObjectNo, schAddress: '', schObjectName: '', @@ -271,25 +275,17 @@ export default function Stuff() { schToDt: dayjs(new Date()).format('YYYY-MM-DD'), startRow: (pageNo - 1) * pageSize + 1, endRow: pageNo * pageSize, - schSelSaleStoreId: '', + schSelSaleStoreId: stuffSearchParams?.schOtherSelSaleStoreId + ? stuffSearchParams.schOtherSelSaleStoreId + : stuffSearchParams.schSelSaleStoreId, schSortType: 'R', } - - async function fetchData() { - const apiUrl = `/api/object/list?${queryStringFormatter(params)}` - await get({ - url: apiUrl, - }).then((res) => { - if (!isEmptyArray(res)) { - setGridProps({ ...gridProps, gridData: res, count: res[0].totCnt }) - setTotalCount(res[0].totCnt) - } - }) - } - fetchData() + setStuffSearch({ + ...params, + }) } } - }, [pageNo, sessionState]) + }, [pageNo, session, stuffSearchParams]) useEffect(() => { if (stuffSearchParams?.code === 'E') { @@ -298,9 +294,13 @@ export default function Stuff() { stuffSearchParams.schSortType = defaultSortType setPageNo(1) + //조회를 눌렀을때 async function fetchData() { - const apiUrl = `/api/object/list?saleStoreId=${sessionState?.storeId}&${queryStringFormatter(stuffSearchParams)}` + let saleStoreId + saleStoreId = stuffSearchParams?.schSelSaleStoreId ? stuffSearchParams.schSelSaleStoreId : session?.storeId + // const apiUrl = `/api/object/list?saleStoreId=${session?.storeId}&${queryStringFormatter(stuffSearchParams)}` + const apiUrl = `/api/object/list?saleStoreId=${saleStoreId}&${queryStringFormatter(stuffSearchParams)}` await get({ url: apiUrl }).then((res) => { if (!isEmptyArray(res)) { setGridProps({ ...gridProps, gridData: res, count: res[0].totCnt }) @@ -320,16 +320,21 @@ export default function Stuff() { let startRow = (1 - 1) * e.target.value + 1 stuffSearchParams.startRow = startRow stuffSearchParams.endRow = 1 * e.target.value + stuffSearchParams.schSelSaleStoreId = stuffSearchParams?.schOtherSelSaleStoreId + ? stuffSearchParams.schOtherSelSaleStoreId + : stuffSearchParams.schSelSaleStoreId setPageSize(e.target.value) setStuffSearch({ - ...stuffSearch, - code: 'S', + ...stuffSearchParams, startRow: startRow, endRow: 1 * e.target.value, }) setPageNo(1) - const apiUrl = `/api/object/list?saleStoreId=${sessionState?.storeId}&${queryStringFormatter(stuffSearchParams)}` + let saleStoreId + saleStoreId = stuffSearchParams?.schSelSaleStoreId ? stuffSearchParams.schSelSaleStoreId : session?.storeId + // const apiUrl = `/api/object/list?saleStoreId=${session?.storeId}&${queryStringFormatter(stuffSearchParams)}` + const apiUrl = `/api/object/list?saleStoreId=${saleStoreId}&${queryStringFormatter(stuffSearchParams)}` get({ url: apiUrl }).then((res) => { if (!isEmptyArray(res)) { setGridProps({ ...gridProps, gridData: res, count: res[0].totCnt }) @@ -348,6 +353,9 @@ export default function Stuff() { stuffSearchParams.endRow = 1 * pageSize stuffSearchParams.schSortType = e.target.value + stuffSearchParams.schSelSaleStoreId = stuffSearchParams?.schOtherSelSaleStoreId + ? stuffSearchParams.schOtherSelSaleStoreId + : stuffSearchParams.schSelSaleStoreId setDefaultSortType(e.target.value) setStuffSearch({ ...stuffSearch, @@ -358,8 +366,10 @@ export default function Stuff() { }) setPageNo(1) - - const apiUrl = `/api/object/list?saleStoreId=${sessionState?.storeId}&${queryStringFormatter(stuffSearchParams)}` + let saleStoreId + saleStoreId = stuffSearchParams?.schSelSaleStoreId ? stuffSearchParams.schSelSaleStoreId : session?.storeId + // const apiUrl = `/api/object/list?saleStoreId=${session?.storeId}&${queryStringFormatter(stuffSearchParams)}` + const apiUrl = `/api/object/list?saleStoreId=${saleStoreId}&${queryStringFormatter(stuffSearchParams)}` get({ url: apiUrl }).then((res) => { if (!isEmptyArray(res)) { setGridProps({ ...gridProps, gridData: res, count: res[0].totCnt }) @@ -382,7 +392,9 @@ export default function Stuff() { // 페이징 현재페이지 변경 const handleChangePage = (page) => { stuffSearchParams.code = 'S' - + stuffSearchParams.schSelSaleStoreId = stuffSearchParams?.schOtherSelSaleStoreId + ? stuffSearchParams.schOtherSelSaleStoreId + : stuffSearchParams.schSelSaleStoreId setStuffSearch({ ...stuffSearch, code: 'S', @@ -405,10 +417,7 @@ export default function Stuff() { {getMessage('stuff.search.grid.all')} {convertNumberToPriceDecimal(totalCount)} -
  • - {/* {getMessage('stuff.search.grid.selected')} */} - {/* {convertNumberToPriceDecimal(selectedRowDataCount)} */} -
  • +
  • diff --git a/src/components/management/StuffDetail.jsx b/src/components/management/StuffDetail.jsx index 6d3a83ee..49fc92f8 100644 --- a/src/components/management/StuffDetail.jsx +++ b/src/components/management/StuffDetail.jsx @@ -1,6 +1,6 @@ 'use client' -import React, { useState, useEffect, useRef } from 'react' +import { useState, useEffect, useRef, useContext } from 'react' import { useRouter, useSearchParams, usePathname } from 'next/navigation' import { Button } from '@nextui-org/react' import Select, { components } from 'react-select' @@ -12,6 +12,7 @@ import { useMessage } from '@/hooks/useMessage' import { useForm } from 'react-hook-form' import { useRecoilValue, useSetRecoilState } from 'recoil' import { sessionStore } from '@/store/commonAtom' +import { SessionContext } from '@/app/SessionProvider' import FindAddressPop from './popup/FindAddressPop' import PlanRequestPop from './popup/PlanRequestPop' import WindSelectPop from './popup/WindSelectPop' @@ -22,19 +23,13 @@ import { floorPlanObjectState } from '@/store/floorPlanObjectAtom' export default function StuffDetail() { const setFloorPlanObjectNo = useSetRecoilState(floorPlanObjectState) //견적서 화면용 물건번호리코일 - // const inputReceiveUserEl = useRef(null) //담당자ref - // const inputObjectNameEl = useRef(null) //물건명ref - // const inputZipNoEl = useRef(null) //우편번호ref - // const inputAddressEl = useRef(null) //주소ref - // const inputVerticalSnowCoverEl = useRef(null) //수직적설량ref - // const inputInstallHeightEl = useRef(null) //설치높이ref - //공통코드 const { commonCode, findCommonCode } = useCommonCode() const [selOptions, setSelOptions] = useState('') //선택한 1차점 const [otherSelOptions, setOtherSelOptions] = useState('') //선택한 1차점외 const sessionState = useRecoilValue(sessionStore) + const { session } = useContext(SessionContext) const router = useRouter() const pathname = usePathname() @@ -322,55 +317,91 @@ export default function StuffDetail() { //1차점 : X167 T01 //2차점 : 10X22, 201X112 let url - if (sessionState?.storeId === 'T01') { - // url = `/api/object/saleStore/${sessionState?.storeId}/list?userId=an1` - url = `/api/object/saleStore/${sessionState?.storeId}/list?userId=${sessionState?.userId}` + let firstList + let otherList + let favList + // if (sessionState?.storeId === 'T01') { + if (session?.storeId === 'T01') { + url = `/api/object/saleStore/${session?.storeId}/firstList?userId=${session?.userId}` } else { - url = `/api/object/saleStore/${sessionState?.storeId}/list` + if (session.storeLvl === '1') { + url = `/api/object/saleStore/${session?.storeId}/list?firstFlg=1&userId=${sessionState?.userId}` + } else { + url = `/api/object/saleStore/${session?.storeId}/list?firstFlg=1&userId=${session?.userId}` + } } get({ url: url }).then((res) => { if (!isEmptyArray(res)) { - const firstList = res.filter((row) => row.saleStoreLevel === '1') - let favList - if (sessionState?.storeId === 'T01') { + res.map((row) => { + row.value = row.saleStoreId + row.label = row.saleStoreName + }) + if (session?.storeId === 'T01') { + firstList = res firstList.sort((a, b) => (a.saleStoreId !== 'T01') - (b.saleStoreId !== 'T01') || a.saleStoreId - b.saleStoreId) favList = firstList.filter((row) => row.saleStoreId === 'T01' || row.priority !== 'B') + setSaleStoreList(firstList) setFavoriteStoreList(favList) setShowSaleStoreList(favList) - } else { - //1차점 셀렉트박스 - setSaleStoreList(firstList) - } - const otherList = res.filter((row) => row.saleStoreLevel !== '1') - let filterOtherList - if (sessionState?.storeId === 'T01') { - filterOtherList = otherList.filter((row) => row.firstAgentId === 'T01') + setSelOptions(session?.storeId) + form.setValue('saleStoreId', session?.storeId) + form.setValue('saleStoreLevel', session?.storeLvl) + //T01일떄는 1차점을 고른다음 2차점 목록 조회하기 + //디폴트 값(T01)으로 2차점목록 조회하기 + url = `/api/object/saleStore/${session?.storeId}/list?firstFlg=0&userId=${session?.userId}` + get({ url: url }).then((res) => { + if (!isEmptyArray(res)) { + res.map((row) => { + row.value = row.saleStoreId + row.label = row.saleStoreName + }) - setOriginOtherSaleStoreList(filterOtherList) - setOtherSaleStoreList(filterOtherList) + otherList = res + setOtherSaleStoreList(otherList) + } else { + setOtherSaleStoreList([]) + } + }) } else { - //T01 아니고 2차점 판매점 셀렉트박스 - setOriginOtherSaleStoreList(otherList) - setOtherSaleStoreList(otherList) - } + if (session?.storeLvl === '1') { + firstList = res + favList = res.filter((row) => row.priority !== 'B') + otherList = res.filter((row) => row.firstAgentYn === 'N') - 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) + setSaleStoreList(firstList) + setFavoriteStoreList(firstList) + setShowSaleStoreList(firstList) + setSelOptions(firstList[0].saleStoreId) + form.setValue('saleStoreId', session?.storeId) + form.setValue('saleStoreLevel', session?.storeLvl) + + setOtherSaleStoreList(otherList) + } else { + //10X22, 201X112,202X217 + firstList = res.filter((row) => row.firstAgentYn === 'Y') + setSaleStoreList(firstList) + setFavoriteStoreList(firstList) + setShowSaleStoreList(firstList) + setSelOptions(firstList[0].saleStoreId) + + form.setValue('saleStoreId', firstList[0].saleStoreId) + form.setValue('saleStoreLevel', firstList[0].saleStoreLevel) + + otherList = res.filter((row) => row.firstAgentYn === 'N') + setOtherSaleStoreList(otherList) + //2차 판매점명/ID는 본인을 셀렉트 + setOtherSelOptions(session?.storeId) + form.setValue('otherSaleStoreId', session?.storeId) + form.setValue('otherSaleStoreLevel', session?.storeLvl) + } } } }) } - }, [objectNo, sessionState]) + // }, [objectNo, sessionState]) + }, [objectNo, session]) useEffect(() => { const code1 = findCommonCode(200800) //경칭 @@ -400,38 +431,78 @@ export default function StuffDetail() { //1차점 : X167 T01 //2차점 : 10X22, 201X112 let url - if (sessionState?.storeId === 'T01') { - // url = `/api/object/saleStore/${sessionState?.storeId}/list?userId=an1` - url = `/api/object/saleStore/${sessionState?.storeId}/list?userId=${sessionState?.userId}` + let firstList + let otherList + let favList + // if (sessionState?.storeId === 'T01') { + if (session?.storeId === 'T01') { + // url = `/api/object/saleStore/${sessionState?.storeId}/firstList?userId=${sessionState?.userId}` + url = `/api/object/saleStore/${session?.storeId}/firstList?userId=${session?.userId}` } else { - url = `/api/object/saleStore/${sessionState?.storeId}/list` + // if (sessionState.storeLvl === '1') { + if (session.storeLvl === '1') { + // url = `/api/object/saleStore/${sessionState?.storeId}/list?firstFlg=1&userId=${sessionState?.userId}` + url = `/api/object/saleStore/${session?.storeId}/list?firstFlg=1&userId=${session?.userId}` + } else { + // url = `/api/object/saleStore/${sessionState?.storeId}/list?firstFlg=1&userId=${sessionState?.userId}` + url = `/api/object/saleStore/${session?.storeId}/list?firstFlg=1&userId=${session?.userId}` + } } get({ url: url }).then((res) => { if (!isEmptyArray(res)) { - const firstList = res.filter((row) => row.saleStoreLevel === '1') - const otherList = res.filter((row) => row.saleStoreLevel !== '1') - let favList - - if (sessionState?.storeId === 'T01') { + // if (sessionState?.storeId === 'T01') { + if (session?.storeId === 'T01') { + firstList = res.filter((row) => row.saleStoreLevel === '1') firstList.sort((a, b) => (a.saleStoreId !== 'T01') - (b.saleStoreId !== 'T01') || a.saleStoreId - b.saleStoreId) favList = firstList.filter((row) => row.saleStoreId === 'T01' || row.priority !== 'B') setSaleStoreList(firstList) setFavoriteStoreList(favList) setShowSaleStoreList(favList) + + form.setValue('saleStoreId', firstList[0].saleStoreId) + form.setValue('saleStoreName', firstList[0].saleStoreName) + form.setValue('saleStoreLevel', firstList[0].saleStoreLevel) + setSelOptions(firstList[0].saleStoreId) + + //상세데이터의 1차점 아이디로 2차점 목록 조회하기 + // url = `/api/object/saleStore/${detailData?.saleStoreId}/list?firstFlg=0&userId=${sessionState?.userId}` + url = `/api/object/saleStore/${detailData?.saleStoreId}/list?firstFlg=0&userId=${session?.userId}` + + get({ url: url }).then((res) => { + if (!isEmptyArray(res)) { + res.map((row) => { + row.value = row.saleStoreId + row.label = row.saleStoreName + }) + + otherList = res + setOriginOtherSaleStoreList(otherList) + setOtherSaleStoreList(otherList) + } + }) } else { //1차점 셀렉트박스 - setSaleStoreList(firstList) - } + // if (sessionState?.storeLvl === '1') { + if (session?.storeLvl === '1') { + firstList = res + favList = res.filter((row) => row.priority !== 'B') + otherList = res.filter((row) => row.firstAgentYn === 'N') - let filterOtherList - if (sessionState?.storeId === 'T01') { - filterOtherList = otherList.filter((row) => row.firstAgentId === 'T01') - setOriginOtherSaleStoreList(filterOtherList) - setOtherSaleStoreList(filterOtherList) - } else { - //1차점 아닌 판매점 셀렉트박스 - setOriginOtherSaleStoreList(otherList) - setOtherSaleStoreList(otherList) + setSaleStoreList(firstList) + setFavoriteStoreList(firstList) + setShowSaleStoreList(firstList) + + setOtherSaleStoreList(otherList) + } else { + setSelOptions(res[0].saleStoreId) + form.setValue('saleStoreId', res[0].saleStoreId) + form.setValue('saleStoreLevel', res[0].storeLvl) + setSaleStoreList(res) + setFavoriteStoreList(res) + setShowSaleStoreList(res) + otherList = res.filter((row) => row.firstAgentYn === 'N') + setOtherSaleStoreList(otherList) + } } } @@ -442,9 +513,6 @@ export default function StuffDetail() { form.setValue('saleStoreId', detailData.saleStoreId) form.setValue('saleStoreLevel', detailData.saleStoreLevel) } else { - setSelOptions(sessionState?.storeId) - form.setValue('saleStoreId', sessionState?.storeId) - form.setValue('saleStoreLevel', sessionState?.storeLvl) setOtherSelOptions(detailData.saleStoreId) form.setValue('otherSaleStoreId', detailData.saleStoreId) form.setValue('otherSaleStoreLevel', detailData.saleStoreLevel) @@ -504,7 +572,8 @@ export default function StuffDetail() { form.setValue('remarks', detailData.remarks) }) } - }, [detailData, sessionState]) + // }, [detailData, sessionState]) + }, [detailData, session]) //경칭선택 변경 이벤트 const onChangeHonorificCode = (key) => { @@ -574,6 +643,7 @@ export default function StuffDetail() { if (objectNo) { tempObjectNo = objectNo.substring(0, 1) } + if (tempObjectNo === 'T') { if (planReqNo) { if (delFlg) { @@ -584,10 +654,21 @@ export default function StuffDetail() { 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) + let url = `/api/object/saleStore/${key.saleStoreId}/list?firstFlg=0&userId=${session?.userId}` + let otherList + get({ url: url }).then((res) => { + if (!isEmptyArray(res)) { + res.map((row) => { + row.value = row.saleStoreId + row.label = row.saleStoreName + }) + + otherList = res + setOtherSaleStoreList(otherList) + } else { + setOtherSaleStoreList([]) + } + }) } else { //X누름 setSelOptions('') @@ -604,15 +685,34 @@ export default function StuffDetail() { } } else { if (isObjectNotEmpty(key)) { - setOtherSaleStoreList(otherSaleStoreList) + setSelOptions(key.saleStoreId) 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) + //선택한 1차점 정보로 2차점 조회하기 + let url = `/api/object/saleStore/${key.saleStoreId}/list?firstFlg=0&userId=${session?.userId}` + let otherList + get({ url: url }).then((res) => { + if (!isEmptyArray(res)) { + res.map((row) => { + row.value = row.saleStoreId + row.label = row.saleStoreName + }) + + otherList = res + setOtherSaleStoreList(otherList) + setOtherSelOptions('') + form.setValue('otherSaleStoreId', '') + form.setValue('otherSaleStoreName', '') + form.setValue('otherSaleStoreLevel', '') + } else { + setOtherSelOptions('') + form.setValue('otherSaleStoreId', '') + form.setValue('otherSaleStoreName', '') + form.setValue('otherSaleStoreLevel', '') + setOtherSaleStoreList([]) + } + }) } else { //X누름 setSelOptions('') @@ -634,10 +734,21 @@ export default function StuffDetail() { 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) + let url = `/api/object/saleStore/${key.saleStoreId}/list?firstFlg=0&userId=${session?.userId}` + let otherList + get({ url: url }).then((res) => { + if (!isEmptyArray(res)) { + res.map((row) => { + row.value = row.saleStoreId + row.label = row.saleStoreName + }) + + otherList = res + setOtherSaleStoreList(otherList) + } else { + setOtherSaleStoreList([]) + } + }) } else { //X누름 setSelOptions('') @@ -687,6 +798,7 @@ export default function StuffDetail() { if (objectNo) { tempObjectNo = objectNo.substring(0, 1) } + if (tempObjectNo === 'T') { if (planReqNo) { if (delFlg) { @@ -1170,19 +1282,12 @@ export default function StuffDetail() { //1차점 or 2차점 안고르고 임시저장하면 if (params.saleStoreId == '') { - params.saleStoreId = sessionState.storeId - params.saleStoreLevel = sessionState.storeLvl + // params.saleStoreId = sessionState.storeId + params.saleStoreId = session.storeId + // params.saleStoreLevel = sessionState.storeLvl + params.saleStoreLevel = session.storeLvl } - //수직적설량, 설치높이 0인지 체크 - // let snow = params.verticalSnowCover - // let height = params.installHeight - // if (snow === '0') { - // return alert(getMessage('stuff.detail.save.valierror1')) - // } - // if (height === '0') { - // return alert(getMessage('stuff.detail.save.valierror2')) - // } await promisePost({ url: '/api/object/save-object', data: params }).then((res) => { if (res.status === 201) { alert(getMessage('stuff.detail.tempSave.message1')) @@ -1256,7 +1361,7 @@ export default function StuffDetail() { )) || null}
    -
    @@ -1343,7 +1448,8 @@ export default function StuffDetail() {
    - {(sessionState?.storeId === 'T01' && ( + {/* {sessionState?.storeId === 'T01' && ( */} + {session?.storeId === 'T01' && ( <>
    +
    +
    + +
    + + )} + + {/* {sessionState?.storeId !== 'T01' && sessionState?.storeLvl === '1' && ( */} + {session?.storeId !== 'T01' && session?.storeLvl === '1' && ( + <> +
    + x.saleStoreName} getOptionValue={(x) => x.saleStoreId} - isClearable={sessionState?.storeLvl === '1' ? true : false} - isDisabled={sessionState?.storeLvl !== '1' ? true : false} - value={saleStoreList.filter(function (option) { + isClearable={false} + isDisabled={true} + value={showSaleStoreList.filter(function (option) { return option.saleStoreId === selOptions })} > @@ -1432,8 +1573,8 @@ export default function StuffDetail() { onChange={onSelectionChange2} getOptionLabel={(x) => x.saleStoreName} getOptionValue={(x) => x.saleStoreId} - isDisabled={sessionState?.storeLvl === '1' && form.watch('saleStoreId') != '' ? false : true} - isClearable={sessionState?.storeLvl === '1' ? true : false} + isDisabled={otherSaleStoreList.length > 1 ? false : true} + isClearable={true} value={otherSaleStoreList.filter(function (option) { return option.saleStoreId === otherSelOptions })} @@ -1688,7 +1829,7 @@ export default function StuffDetail() {
    {/* {detailData?.tempFlg === '1' && form.watch('planReqNo') ? ( */} - {objectNo.substring(0, 1) === 'T' && form.watch('planReqNo') ? ( + {detailData?.tempFlg === '1' && form.watch('planReqNo') ? (
    {/* {detailData?.tempFlg === '0' ? ( */} - {objectNo.substring(0, 1) !== 'T' ? ( + {detailData?.tempFlg === '0' ? ( <> {/* 진짜R 플랜시작 */}
    diff --git a/src/components/management/StuffSearchCondition.jsx b/src/components/management/StuffSearchCondition.jsx index 421f806f..659ab696 100644 --- a/src/components/management/StuffSearchCondition.jsx +++ b/src/components/management/StuffSearchCondition.jsx @@ -1,8 +1,8 @@ 'use client' -import React, { useEffect, useRef, useState } from 'react' +import { useEffect, useRef, useState, useContext } from 'react' import { useAxios } from '@/hooks/useAxios' -import { useRecoilState, useRecoilValue, useResetRecoilState } from 'recoil' +import { useRecoilState, useRecoilValue, useResetRecoilState, useSetRecoilState } from 'recoil' import { appMessageStore, globalLocaleStore } from '@/store/localeAtom' import Select from 'react-select' import KO from '@/locales/ko.json' @@ -15,12 +15,17 @@ import SingleDatePicker from '../common/datepicker/SingleDatePicker' import { sessionStore } from '@/store/commonAtom' import { useMessage } from '@/hooks/useMessage' import { isObjectNotEmpty } from '@/util/common-utils' + +import { SessionContext } from '@/app/SessionProvider' + export default function StuffSearchCondition() { + const { session } = useContext(SessionContext) const sessionState = useRecoilValue(sessionStore) - const [appMessageState, setAppMessageState] = useRecoilState(appMessageStore) + const setAppMessageState = useSetRecoilState(appMessageStore) const globalLocaleState = useRecoilValue(globalLocaleStore) const { getMessage } = useMessage() const ref = useRef() + const ref2 = useRef() const { get } = useAxios(globalLocaleState) const objectNoRef = useRef(null) @@ -59,6 +64,10 @@ export default function StuffSearchCondition() { const [schSelSaleStoreList, setSchSelSaleStoreList] = useState([]) //판매대리점 자동완성 SELECT 전체 const [favoriteStoreList, setFavoriteStoreList] = useState([]) //즐겨찾기한 판매점목록 const [showSaleStoreList, setShowSaleStoreList] = useState([]) //보여줄 판매점목록 + + const [otherSaleStoreList, setOtherSaleStoreList] = useState([]) //1차점 이외 판매점목록 + const [otherSaleStoreId, setOtherSaleStoreId] = useState('') + // 조회 const onSubmit = () => { let diff = dayjs(endDate).diff(startDate, 'day') @@ -68,14 +77,14 @@ export default function StuffSearchCondition() { if (stuffSearch.code === 'S') { setStuffSearch({ - schObjectNo: objectNo ? objectNo : stuffSearch?.schObjectNo, - schSaleStoreName: stuffSearch?.schSaleStoreName ? stuffSearch?.schSaleStoreName : saleStoreName, - schAddress: address ? address : stuffSearch?.schAddress, - schObjectName: objectName ? objectName : stuffSearch?.schObjectName, - schDispCompanyName: dispCompanyName ? dispCompanyName : stuffSearch?.schDispCompanyName, - schSelSaleStoreId: stuffSearch?.schSelSaleStoreId ? stuffSearch.schSelSaleStoreId : schSelSaleStoreId, - schReceiveUser: receiveUser ? receiveUser : stuffSearch?.schReceiveUser, - schDateType: stuffSearch?.schDateType ? stuffSearch.schDateType : dateType, + schObjectNo: objectNo ? objectNo : stuffSearch.schObjectNo, + schSaleStoreName: saleStoreName ? saleStoreName : '', + schAddress: address ? address : '', + schObjectName: objectName ? objectName : '', + schDispCompanyName: dispCompanyName ? dispCompanyName : '', + schSelSaleStoreId: stuffSearch?.schOtherSelSaleStoreId ? stuffSearch.schOtherSelSaleStoreId : stuffSearch.schSelSaleStoreId, + schReceiveUser: receiveUser ? receiveUser : '', + schDateType: dateType, schFromDt: dayjs(startDate).format('YYYY-MM-DD'), schToDt: dayjs(endDate).format('YYYY-MM-DD'), code: 'E', @@ -90,7 +99,7 @@ export default function StuffSearchCondition() { schAddress: address ? address : '', schObjectName: objectName ? objectName : '', schDispCompanyName: dispCompanyName ? dispCompanyName : '', - schSelSaleStoreId: schSelSaleStoreId ? schSelSaleStoreId : '', + schSelSaleStoreId: stuffSearch?.schOtherSelSaleStoreId ? stuffSearch.schOtherSelSaleStoreId : stuffSearch.schSelSaleStoreId, schReceiveUser: receiveUser ? receiveUser : '', schDateType: dateType, schFromDt: dayjs(startDate).format('YYYY-MM-DD'), @@ -105,6 +114,7 @@ export default function StuffSearchCondition() { //초기화 const resetRecoil = () => { + //T01아니면 자동완성 초기화 막기 objectNoRef.current.value = '' saleStoreNameRef.current.value = '' addressRef.current.value = '' @@ -121,49 +131,158 @@ export default function StuffSearchCondition() { setDateType('U') setStartDate(dayjs(new Date()).add(-1, 'year').format('YYYY-MM-DD')) setEndDate(dayjs(new Date()).format('YYYY-MM-DD')) - setSchSelSaleStoreId('') - handleClear() //판매대리점선택 자동완성 클리어 - resetStuffRecoil() + // if (sessionState?.storeId === 'T01') { + if (session?.storeId === 'T01') { + setSchSelSaleStoreId('') + handleClear1() //판매대리점선택 자동완성 클리어 + resetStuffRecoil() + setStuffSearch({ + ...stuffSearch, + code: 'C', + schSelSaleStoreId: '', + schOtherSelSaleStoreId: '', + }) + } else { + if (otherSaleStoreList.length > 1) { + handleClear2() + setOtherSaleStoreId('') + stuffSearch.schObjectNo = '' + stuffSearch.schDateType = 'U' + } else { + stuffSearch.schObjectNo = '' + stuffSearch.schDateType = 'U' + } + } } useEffect(() => { - if (isObjectNotEmpty(sessionState)) { - // storeId가 T01 이거나 1차점일때만 판매대리점 선택 활성화 + // if (isObjectNotEmpty(sessionState)) { + if (isObjectNotEmpty(session)) { + // storeId가 T01 이거나 storeLvl이 1차점일때만 판매대리점 선택 활성화 let url - if (sessionState?.storeId === 'T01') { - // url = `/api/object/saleStore/${sessionState?.storeId}/list?userId=an1` - url = `/api/object/saleStore/${sessionState?.storeId}/list?userId=${sessionState?.userId}` + // if (sessionState?.storeId === 'T01') { + if (session?.storeId === 'T01') { + //T01일떄 + // url = `/api/object/saleStore/${sessionState?.storeId}/firstList?userId=${sessionState?.userId}` + url = `/api/object/saleStore/${session?.storeId}/firstList?userId=${session?.userId}` } else { - url = `/api/object/saleStore/${sessionState?.storeId}/list` + // if (sessionState.storeLvl === '1') { + if (session.storeLvl === '1') { + //T01아닌 1차점일때 + // url = `/api/object/saleStore/${sessionState?.storeId}/list?firstFlg=1&userId=${sessionState?.userId}` + url = `/api/object/saleStore/${session?.storeId}/list?firstFlg=1&userId=${sessionState?.userId}` + } else { + // url = `/api/object/saleStore/${sessionState?.storeId}/list?firstFlg=1&userId=${sessionState?.userId}` + url = `/api/object/saleStore/${session?.storeId}/list?firstFlg=1&userId=${session?.userId}` + } } + get({ url: url }).then((res) => { if (!isEmptyArray(res)) { res.map((row) => { row.value = row.saleStoreId row.label = row.saleStoreName }) - const allList = res - const favList = res.filter((row) => row.priority !== 'B') - setSchSelSaleStoreList(allList) - setFavoriteStoreList(favList) - setShowSaleStoreList(favList) + let allList + let favList + let otherList + // if (sessionState?.storeId === 'T01') { + if (session?.storeId === 'T01') { + allList = res + allList.sort((a, b) => (a.saleStoreId !== 'T01') - (b.saleStoreId !== 'T01') || a.saleStoreId - b.saleStoreId) + favList = res.filter((row) => row.saleStoreId === 'T01' || row.priority !== 'B') + setSchSelSaleStoreList(allList) + setFavoriteStoreList(favList) + setShowSaleStoreList(favList) + // setSchSelSaleStoreId(sessionState?.storeId) + setSchSelSaleStoreId(session?.storeId) + setStuffSearch({ + ...stuffSearch, + code: 'S', + // schSelSaleStoreId: sessionState?.storeId, + schSelSaleStoreId: session?.storeId, + }) + + //T01일때 2차 판매점 호출하기 디폴트로 1차점을 본인으로 셋팅해서 세션storeId사용 + // url = `/api/object/saleStore/${sessionState?.storeId}/list?firstFlg=0&userId=${sessionState?.userId}` + url = `/api/object/saleStore/${session?.storeId}/list?firstFlg=0&userId=${session?.userId}` + + get({ url: url }).then((res) => { + if (!isEmptyArray(res)) { + res.map((row) => { + row.value = row.saleStoreId + row.label = row.saleStoreName + }) + + otherList = res + setOtherSaleStoreList(otherList) + } else { + setOtherSaleStoreList([]) + } + }) + } else { + // if (sessionState?.storeLvl === '1') { + if (session?.storeLvl === '1') { + allList = res + favList = res.filter((row) => row.priority !== 'B') + otherList = res.filter((row) => row.firstAgentYn === 'N') + setSchSelSaleStoreList(allList) + setFavoriteStoreList(allList) + setShowSaleStoreList(allList) + setSchSelSaleStoreId(allList[0].saleStoreId) + + setOtherSaleStoreList(otherList) + + setStuffSearch({ + ...stuffSearch, + code: 'S', + schSelSaleStoreId: allList[0].saleStoreId, + }) + } else { + //10X22, 201X112 그냥2차점 + //2차점인데 34들고있는애 202X217 + setSchSelSaleStoreList(res) + setFavoriteStoreList(res) + setShowSaleStoreList(res) + setSchSelSaleStoreId(res[0].saleStoreId) + otherList = res.filter((row) => row.firstAgentYn === 'N') + setOtherSaleStoreList(otherList) + + //선택한 2차점 세션으로 자동셋팅 + // setOtherSaleStoreId(sessionState?.storeId) + setOtherSaleStoreId(session?.storeId) + setStuffSearch({ + ...stuffSearch, + code: 'S', + schSelSaleStoreId: otherList[0].saleStoreId, + }) + } + } } }) } - }, [sessionState]) + // }, [sessionState]) + }, [session]) - //초기화 눌렀을 때 자동완성도.. - const handleClear = () => { + //초기화 눌렀을 때 1차판매점 자동완성도.. + const handleClear1 = () => { if (ref.current) { ref.current.clearValue() } } + const handleClear2 = () => { + if (ref2.current) { + ref2.current.clearValue() + } + } + //자동완성 인풋 const onInputChange = (key) => { if (key !== '') { setShowSaleStoreList(schSelSaleStoreList) + setOtherSaleStoreList([]) } else { setShowSaleStoreList(favoriteStoreList) } @@ -172,15 +291,48 @@ export default function StuffSearchCondition() { //판매대리점 자동완성 변경 const onSelectionChange = (key) => { if (isObjectNotEmpty(key)) { + setOtherSaleStoreId('') setSchSelSaleStoreId(key.saleStoreId) - setStuffSearch({ - ...stuffSearch, - code: 'S', - schSelSaleStoreId: key.saleStoreId, + stuffSearch.schSelSaleStoreId = key.saleStoreId + //T01아닌 1차점은 본인으로 디폴트셋팅이고 수정할수없어서 여기안옴 + //고른 1차점의 saleStoreId로 2차점 API호출하기 + // let url = `/api/object/saleStore/${key.saleStoreId}/list?firstFlg=0&userId=${sessionState?.userId}` + let url = `/api/object/saleStore/${key.saleStoreId}/list?firstFlg=0&userId=${session?.userId}` + let otherList + get({ url: url }).then((res) => { + if (!isEmptyArray(res)) { + res.map((row) => { + row.value = row.saleStoreId + row.label = row.saleStoreName + }) + + otherList = res + setOtherSaleStoreList(otherList) + } else { + setOtherSaleStoreList([]) + } }) } else { + //X누름 setSchSelSaleStoreId('') - setStuffSearch({ ...stuffSearch, schSelSaleStoreId: '' }) + stuffSearch.schSelSaleStoreId = '' + + //2차점 판매점목록비우기 + setOtherSaleStoreList([]) + } + } + + //2차점 자동완성 변경 + const onSelectionChange2 = (key) => { + if (isObjectNotEmpty(key)) { + setOtherSaleStoreId(key.saleStoreId) + stuffSearch.schOtherSelSaleStoreId = key.saleStoreId + } else { + //X누르면 검색조건에 1차점으로 셋팅 + setOtherSaleStoreId('') + setSchSelSaleStoreId(schSelSaleStoreId) + stuffSearch.schOtherSelSaleStoreId = '' + stuffSearch.schSelSaleStoreId = schSelSaleStoreId } } @@ -200,6 +352,7 @@ export default function StuffSearchCondition() { // 엔터 이벤트 const handleByOnKeyUp = (e) => { if (e.key === 'Enter') { + stuffSearch.code = 'E' onSubmit() } } @@ -235,6 +388,8 @@ export default function StuffSearchCondition() { + + @@ -245,7 +400,7 @@ export default function StuffSearchCondition() { type="text" ref={objectNoRef} className="input-light" - defaultValue={stuffSearch.code === 'E' || stuffSearch.code === 'M' ? stuffSearch?.schObjectNo : objectNo} + defaultValue={stuffSearch?.schObjectNo ? stuffSearch.schObjectNo : objectNo} onChange={(e) => { setObjectNo(objectNoRef.current.value) }} @@ -260,7 +415,7 @@ export default function StuffSearchCondition() { type="text" ref={saleStoreNameRef} className="input-light" - defaultValue={stuffSearch.code === 'E' ? stuffSearch?.schSaleStoreName : saleStoreName} + defaultValue={stuffSearch?.schSaleStoreName ? stuffSearch.schSaleStoreName : saleStoreName} onChange={(e) => { setSaleStoreName(saleStoreNameRef.current.value) }} @@ -275,7 +430,7 @@ export default function StuffSearchCondition() { type="text" ref={addressRef} className="input-light" - defaultValue={stuffSearch.code === 'E' ? stuffSearch?.schAddress : address} + defaultValue={stuffSearch?.schAddress ? stuffSearch.schAddress : address} onChange={(e) => { setAddress(addressRef.current.value) }} @@ -283,6 +438,21 @@ export default function StuffSearchCondition() { />
    + {getMessage('stuff.search.schDispCompanyName')} + +
    + { + setDispCompanyName(dispCompanyNameRef.current.value) + }} + onKeyUp={handleByOnKeyUp} + /> +
    + {getMessage('stuff.search.schObjectName')} @@ -292,7 +462,7 @@ export default function StuffSearchCondition() { type="text" ref={objectNameRef} className="input-light" - defaultValue={stuffSearch.code === 'E' ? stuffSearch?.schObjectName : objectName} + defaultValue={stuffSearch?.schObjectName ? stuffSearch.schObjectName : objectName} onChange={(e) => { setobjectName(objectNameRef.current.value) }} @@ -300,63 +470,6 @@ export default function StuffSearchCondition() { />
    - {getMessage('stuff.search.schDispCompanyName')} - -
    - { - setDispCompanyName(dispCompanyNameRef.current.value) - }} - onKeyUp={handleByOnKeyUp} - /> -
    - - {getMessage('stuff.search.schSelSaleStoreId')} - -
    - {schSelSaleStoreList?.length > 0 && ( - x.saleStoreName} + getOptionValue={(x) => x.saleStoreId} + value={schSelSaleStoreList.filter(function (option) { + if (stuffSearch?.code === 'S' && schSelSaleStoreId === '') { + return false + } else if (stuffSearch?.code === 'S' && schSelSaleStoreId !== '') { + return option.saleStoreId === schSelSaleStoreId + } else if (stuffSearch?.code === 'E' && schSelSaleStoreId !== '') { + return option.saleStoreId === schSelSaleStoreId + } else { + if (stuffSearch?.schSelSaleStoreId !== '') { + return option.saleStoreId === stuffSearch.schSelSaleStoreId + } else { + return false + } + } + })} + isDisabled={session?.storeLvl !== '1' ? true : session?.storeId !== 'T01' ? true : false} + isClearable={true} + /> + )} + {session?.storeId !== 'T01' && session?.storeLvl === '1' && ( + x.saleStoreName} + getOptionValue={(x) => x.saleStoreId} + value={showSaleStoreList.filter(function (option) { + if (stuffSearch?.code === 'S' && schSelSaleStoreId === '') { + return false + } else if (stuffSearch?.code === 'S' && schSelSaleStoreId !== '') { + return option.saleStoreId === schSelSaleStoreId + } else if (stuffSearch?.code === 'E' && schSelSaleStoreId !== '') { + return option.saleStoreId === schSelSaleStoreId + } else { + if (stuffSearch?.schSelSaleStoreId !== '') { + return option.saleStoreId === stuffSearch.schSelSaleStoreId + } else { + return false + } + } + })} + isDisabled={true} + isClearable={false} + /> + )} +
    +
    +