물건상세 컴포넌트간 데이터 공유 방식 변경
This commit is contained in:
parent
7c048db6e4
commit
75a3cf3f73
@ -18,6 +18,7 @@ import WindSelectPop from './popup/WindSelectPop'
|
||||
import { useCommonCode } from '@/hooks/common/useCommonCode'
|
||||
import StuffPlanQGrid from './StuffPlanQGrid'
|
||||
import { floorPlanObjectState } from '@/store/floorPlanObjectAtom'
|
||||
import { ManagementContext } from '@/app/management/ManagementProvider'
|
||||
|
||||
export default function StuffDetail() {
|
||||
const setFloorPlanObjectNo = useSetRecoilState(floorPlanObjectState) //견적서 화면용 물건번호리코일
|
||||
@ -96,7 +97,7 @@ export default function StuffDetail() {
|
||||
const objectNo = searchParams.get('objectNo') //url에서 물건번호 꺼내서 바로 set
|
||||
|
||||
const [editMode, setEditMode] = useState('NEW')
|
||||
const [detailData, setDetailData] = useState({})
|
||||
const { managementState, setManagementState } = useContext(ManagementContext)
|
||||
|
||||
const [planGridProps, setPlanGridProps] = useState({
|
||||
planGridData: [],
|
||||
@ -289,9 +290,9 @@ export default function StuffDetail() {
|
||||
promiseGet({ url: `/api/object/${objectNo}/detail` }).then((res) => {
|
||||
if (res.status === 200) {
|
||||
if (res.data != null) {
|
||||
setDetailData(res.data)
|
||||
setManagementState(res.data)
|
||||
} else {
|
||||
setDetailData({})
|
||||
setManagementState({})
|
||||
}
|
||||
if (isNotEmptyArray(res.data.planList)) {
|
||||
setPlanGridProps({ ...planGridProps, planGridData: res.data.planList })
|
||||
@ -299,7 +300,7 @@ export default function StuffDetail() {
|
||||
setPlanGridProps({ ...planGridProps, planGridData: [] })
|
||||
}
|
||||
} else {
|
||||
setDetailData({})
|
||||
setManagementState({})
|
||||
setPlanGridProps({ ...planGridProps, planGridData: [] })
|
||||
}
|
||||
})
|
||||
@ -415,7 +416,7 @@ export default function StuffDetail() {
|
||||
}, [commonCode])
|
||||
|
||||
useEffect(() => {
|
||||
if (isObjectNotEmpty(detailData)) {
|
||||
if (isObjectNotEmpty(managementState)) {
|
||||
// 도도부현API
|
||||
get({ url: '/api/object/prefecture/list' }).then((res) => {
|
||||
if (!isEmptyArray(res)) {
|
||||
@ -449,18 +450,17 @@ export default function StuffDetail() {
|
||||
setFavoriteStoreList(favList)
|
||||
setShowSaleStoreList(favList)
|
||||
|
||||
if (detailData.firstAgentId != null) {
|
||||
form.setValue('saleStoreId', detailData.firstAgentId)
|
||||
setSelOptions(detailData.firstAgentId)
|
||||
if (managementState.firstAgentId != null) {
|
||||
form.setValue('saleStoreId', managementState.firstAgentId)
|
||||
setSelOptions(managementState.firstAgentId)
|
||||
} else {
|
||||
form.setValue('saleStoreId', detailData.saleStoreId)
|
||||
setSelOptions(detailData.saleStoreId)
|
||||
form.setValue('saleStoreId', managementState.saleStoreId)
|
||||
setSelOptions(managementState.saleStoreId)
|
||||
}
|
||||
|
||||
//상세데이터의 1차점 아이디로 2차점 목록 조회하기
|
||||
|
||||
let data = detailData?.firstAgentId ? detailData.firstAgentId : detailData.saleStoreId
|
||||
// url = `/api/object/saleStore/${session?.storeId}/list?firstFlg=0&userId=${session?.userId}`
|
||||
let data = managementState?.firstAgentId ? managementState.firstAgentId : managementState.saleStoreId
|
||||
url = `/api/object/saleStore/${data}/list?firstFlg=0&userId=${session?.userId}`
|
||||
|
||||
get({ url: url }).then((res) => {
|
||||
@ -502,74 +502,74 @@ export default function StuffDetail() {
|
||||
|
||||
//상세데이터가 1차점이면 1차점에 세팅
|
||||
//상세데이터가 2차점이면 2차점에 세팅하고 세션으로 1차점 세팅
|
||||
if (detailData.saleStoreLevel === '1') {
|
||||
setSelOptions(detailData.saleStoreId)
|
||||
form.setValue('saleStoreId', detailData.saleStoreId)
|
||||
form.setValue('saleStoreLevel', detailData.saleStoreLevel)
|
||||
if (managementState.saleStoreLevel === '1') {
|
||||
setSelOptions(managementState.saleStoreId)
|
||||
form.setValue('saleStoreId', managementState.saleStoreId)
|
||||
form.setValue('saleStoreLevel', managementState.saleStoreLevel)
|
||||
} else {
|
||||
setOtherSelOptions(detailData.saleStoreId)
|
||||
form.setValue('otherSaleStoreId', detailData.saleStoreId)
|
||||
form.setValue('otherSaleStoreLevel', detailData.saleStoreLevel)
|
||||
setOtherSelOptions(managementState.saleStoreId)
|
||||
form.setValue('otherSaleStoreId', managementState.saleStoreId)
|
||||
form.setValue('otherSaleStoreLevel', managementState.saleStoreLevel)
|
||||
|
||||
form.setValue('saleStoreLevel', '1')
|
||||
}
|
||||
|
||||
//설계의뢰No.
|
||||
form.setValue('planReqNo', detailData.planReqNo)
|
||||
form.setValue('planReqNo', managementState.planReqNo)
|
||||
//담당자
|
||||
form.setValue('receiveUser', detailData.receiveUser)
|
||||
form.setValue('receiveUser', managementState.receiveUser)
|
||||
|
||||
//물건구분objectStatusId
|
||||
setSelectObjectStatusId(detailData.objectStatusId)
|
||||
form.setValue('objectStatusId', detailData.objectStatusId)
|
||||
setSelectObjectStatusId(managementState.objectStatusId)
|
||||
form.setValue('objectStatusId', managementState.objectStatusId)
|
||||
|
||||
//물건명
|
||||
form.setValue('objectName', detailData.objectName)
|
||||
form.setValue('objectName', managementState.objectName)
|
||||
|
||||
//경칭코드
|
||||
setSelHonorificCode(detailData.objectNameOmit)
|
||||
form.setValue('objectNameOmit', detailData.objectNameOmit)
|
||||
setSelHonorificCode(managementState.objectNameOmit)
|
||||
form.setValue('objectNameOmit', managementState.objectNameOmit)
|
||||
|
||||
//물건명 후리가나
|
||||
form.setValue('objectNameKana', detailData.objectNameKana)
|
||||
form.setValue('objectNameKana', managementState.objectNameKana)
|
||||
|
||||
//우편번호
|
||||
form.setValue('zipNo', detailData.zipNo)
|
||||
form.setValue('zipNo', managementState.zipNo)
|
||||
|
||||
//도도부현 / 주소
|
||||
setPrefValue(detailData.prefId)
|
||||
form.setValue('prefId', detailData.prefId)
|
||||
form.setValue('prefName', detailData.prefName)
|
||||
form.setValue('address', detailData.address)
|
||||
setPrefValue(managementState.prefId)
|
||||
form.setValue('prefId', managementState.prefId)
|
||||
form.setValue('prefName', managementState.prefName)
|
||||
form.setValue('address', managementState.address)
|
||||
//발전시뮬
|
||||
form.setValue('areaId', detailData.areaId)
|
||||
form.setValue('areaId', managementState.areaId)
|
||||
|
||||
//기준풍속
|
||||
form.setValue('standardWindSpeedId', detailData.standardWindSpeedId)
|
||||
form.setValue('standardWindSpeedId', managementState.standardWindSpeedId)
|
||||
//수직적설량
|
||||
form.setValue('verticalSnowCover', detailData.verticalSnowCover)
|
||||
form.setValue('verticalSnowCover', managementState.verticalSnowCover)
|
||||
//한랭지대책시행 coldRegionFlg 1이면 true
|
||||
form.setValue('coldRegionFlg', detailData.coldRegionFlg === '1' ? true : false)
|
||||
form.setValue('coldRegionFlg', managementState.coldRegionFlg === '1' ? true : false)
|
||||
|
||||
//면조도구분 surfaceType null로 내려오면 셋팅 안하고 저장할때 필수값 체크하도록
|
||||
// form.setValue('surfaceType', 'Ⅱ')
|
||||
// form.setValue('surfaceType', 'Ⅲ・Ⅳ')
|
||||
form.setValue('surfaceType', detailData.surfaceType)
|
||||
form.setValue('surfaceType', managementState.surfaceType)
|
||||
//염해지역용아이템사용 saltAreaFlg 1이면 true
|
||||
form.setValue('saltAreaFlg', detailData.saltAreaFlg === '1' ? true : false)
|
||||
form.setValue('saltAreaFlg', managementState.saltAreaFlg === '1' ? true : false)
|
||||
//설치높이
|
||||
form.setValue('installHeight', detailData.installHeight)
|
||||
form.setValue('installHeight', managementState.installHeight)
|
||||
//계약조건 null로 내려오면 0으로 디폴트셋팅
|
||||
if (detailData.conType === null) {
|
||||
if (managementState.conType === null) {
|
||||
form.setValue('conType', '0')
|
||||
} else {
|
||||
form.setValue('conType', detailData.conType)
|
||||
form.setValue('conType', managementState.conType)
|
||||
}
|
||||
//메모
|
||||
form.setValue('remarks', detailData.remarks)
|
||||
form.setValue('remarks', managementState.remarks)
|
||||
})
|
||||
}
|
||||
}, [detailData, session])
|
||||
}, [managementState, session])
|
||||
|
||||
//경칭선택 변경 이벤트
|
||||
const onChangeHonorificCode = (key) => {
|
||||
@ -1189,9 +1189,9 @@ export default function StuffDetail() {
|
||||
return alert(getMessage('stuff.detail.save.valierror2'))
|
||||
}
|
||||
|
||||
let detail_sort = Object.keys(detailData)
|
||||
let detail_sort = Object.keys(managementState)
|
||||
.sort()
|
||||
.reduce((obj, key) => ((obj[key] = detailData[key]), obj), {})
|
||||
.reduce((obj, key) => ((obj[key] = managementState[key]), obj), {})
|
||||
let params_sort = Object.keys(params)
|
||||
.sort()
|
||||
.reduce((obj, key) => ((obj[key] = params[key]), obj), {})
|
||||
@ -1313,7 +1313,7 @@ export default function StuffDetail() {
|
||||
|
||||
// 물건삭제
|
||||
const onDelete = () => {
|
||||
const specificationConfirmDate = detailData.specificationConfirmDate
|
||||
const specificationConfirmDate = managementState.specificationConfirmDate
|
||||
if (specificationConfirmDate != null) {
|
||||
alert(getMessage('stuff.detail.delete.message1'))
|
||||
} else {
|
||||
@ -1860,8 +1860,7 @@ export default function StuffDetail() {
|
||||
<div className="flx-box">
|
||||
<div className="product-input-wrap mr5">
|
||||
<input type="text" className="product-input" readOnly value={form.watch('planReqNo') || ''} />
|
||||
{/* {detailData?.tempFlg === '1' && form.watch('planReqNo') ? ( */}
|
||||
{detailData?.tempFlg === '1' && form.watch('planReqNo') ? (
|
||||
{managementState?.tempFlg === '1' && form.watch('planReqNo') ? (
|
||||
<button
|
||||
type="button"
|
||||
className="product-delete"
|
||||
@ -1871,7 +1870,7 @@ export default function StuffDetail() {
|
||||
></button>
|
||||
) : null}
|
||||
</div>
|
||||
{detailData?.tempFlg === '1' ? (
|
||||
{managementState?.tempFlg === '1' ? (
|
||||
<>
|
||||
<Button className="btn-origin grey" onPress={onSearchDesignRequestPopOpen}>
|
||||
{getMessage('stuff.planReqPopup.title')}
|
||||
@ -1977,8 +1976,8 @@ export default function StuffDetail() {
|
||||
onChange={onSelectionChange}
|
||||
getOptionLabel={(x) => x.saleStoreName}
|
||||
getOptionValue={(x) => x.saleStoreId}
|
||||
isClearable={detailData.tempFlg === '0' ? false : session?.storeLvl === '1' ? true : false}
|
||||
isDisabled={detailData.tempFlg === '0' ? true : session?.storeLvl !== '1' ? true : false}
|
||||
isClearable={managementState.tempFlg === '0' ? false : session?.storeLvl === '1' ? true : false}
|
||||
isDisabled={managementState.tempFlg === '0' ? true : session?.storeLvl !== '1' ? true : false}
|
||||
value={saleStoreList.filter(function (option) {
|
||||
return option.saleStoreId === selOptions
|
||||
})}
|
||||
@ -2011,7 +2010,13 @@ export default function StuffDetail() {
|
||||
getOptionValue={(x) => x.saleStoreId}
|
||||
isClearable={false}
|
||||
isDisabled={
|
||||
detailData.tempFlg === '0' ? true : session?.storeLvl !== '1' ? true : session?.storeId !== 'T01' ? true : false
|
||||
managementState.tempFlg === '0'
|
||||
? true
|
||||
: session?.storeLvl !== '1'
|
||||
? true
|
||||
: session?.storeId !== 'T01'
|
||||
? true
|
||||
: false
|
||||
}
|
||||
value={showSaleStoreList.filter(function (option) {
|
||||
return option.saleStoreId === selOptions
|
||||
@ -2090,9 +2095,9 @@ export default function StuffDetail() {
|
||||
getOptionLabel={(x) => x.saleStoreName}
|
||||
getOptionValue={(x) => x.saleStoreId}
|
||||
isDisabled={
|
||||
detailData.tempFlg === '0' ? true : session?.storeLvl === '1' && form.watch('saleStoreId') != '' ? false : true
|
||||
managementState.tempFlg === '0' ? true : session?.storeLvl === '1' && form.watch('saleStoreId') != '' ? false : true
|
||||
}
|
||||
isClearable={detailData.tempFlg === '0' ? false : session?.storeLvl === '1' ? true : false}
|
||||
isClearable={managementState.tempFlg === '0' ? false : session?.storeLvl === '1' ? true : false}
|
||||
value={otherSaleStoreList.filter(function (option) {
|
||||
return option.saleStoreId === otherSelOptions
|
||||
})}
|
||||
@ -2345,8 +2350,7 @@ export default function StuffDetail() {
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{/* {detailData?.tempFlg === '0' ? ( */}
|
||||
{detailData?.tempFlg === '0' ? (
|
||||
{managementState?.tempFlg === '0' ? (
|
||||
<>
|
||||
{/* 진짜R 플랜시작 */}
|
||||
<div className="table-box-title-wrap">
|
||||
@ -2355,7 +2359,7 @@ export default function StuffDetail() {
|
||||
<ul className="info-wrap">
|
||||
<li>
|
||||
{getMessage('stuff.detail.planList.cnt')}
|
||||
<span className="red"> {detailData.planList?.length}</span>
|
||||
<span className="red"> {managementState.planList?.length}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@ -1,40 +1,21 @@
|
||||
'use client'
|
||||
|
||||
import React, { useState, useEffect } from 'react'
|
||||
import { useAxios } from '@/hooks/useAxios'
|
||||
import { useRouter, useSearchParams } from 'next/navigation'
|
||||
import { globalLocaleStore } from '@/store/localeAtom'
|
||||
import { useRecoilValue } from 'recoil'
|
||||
import { useContext } from 'react'
|
||||
import { useMessage } from '@/hooks/useMessage'
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
import { ManagementContext } from '@/app/management/ManagementProvider'
|
||||
export default function StuffHeader() {
|
||||
const { getMessage } = useMessage()
|
||||
const router = useRouter()
|
||||
const searchParams = useSearchParams()
|
||||
const objectNo = searchParams.get('objectNo') //url에서 물건번호 꺼내서 바로 set
|
||||
const globalLocaleState = useRecoilValue(globalLocaleStore)
|
||||
const { get } = useAxios(globalLocaleState)
|
||||
const [headerData, setHeaderData] = useState({})
|
||||
|
||||
useEffect(() => {
|
||||
get({ url: `/api/object/${objectNo}/detail` }).then((res) => {
|
||||
if (res != null && res != '') {
|
||||
setHeaderData(res)
|
||||
} else {
|
||||
alert(getMessage('stuff.detail.header.notExistObjectNo'))
|
||||
router.push('/management/stuff')
|
||||
}
|
||||
})
|
||||
}, [objectNo])
|
||||
const { managementState } = useContext(ManagementContext)
|
||||
|
||||
//물건번호 복사
|
||||
const copyObjectNo = async (objectNo) => {
|
||||
await navigator.clipboard.writeText(objectNo)
|
||||
alert(getMessage('stuff.detail.header.message2'))
|
||||
alert(getMessage('stuff.detail.header.successCopy'))
|
||||
try {
|
||||
} catch (error) {
|
||||
alert(getMessage('stuff.detail.header.message3'))
|
||||
alert(getMessage('stuff.detail.header.failCopy'))
|
||||
}
|
||||
}
|
||||
|
||||
@ -43,31 +24,31 @@ export default function StuffHeader() {
|
||||
<div className="sub-table-box">
|
||||
<div className="info-title">{getMessage('stuff.detail.header.objectNo')}</div>
|
||||
<div className="info-inner">
|
||||
{headerData.objectNo}{' '}
|
||||
{managementState?.objectNo}{' '}
|
||||
<button
|
||||
className="copy-ico"
|
||||
onClick={() => {
|
||||
copyObjectNo(headerData.objectNo)
|
||||
copyObjectNo(managementState?.objectNo)
|
||||
}}
|
||||
></button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="sub-table-box">
|
||||
<div className="info-title">{getMessage('stuff.detail.header.specificationConfirmDate')}</div>
|
||||
<div className="info-inner">{headerData.specificationConfirmDate}</div>
|
||||
<div className="info-inner">{managementState?.specificationConfirmDate}</div>
|
||||
</div>
|
||||
<div className="sub-table-box">
|
||||
<div className="info-title">{getMessage('stuff.detail.header.lastEditDatetime')}</div>
|
||||
<div className="info-inner">
|
||||
{headerData?.lastEditDatetime ? `${dayjs(headerData.lastEditDatetime).format('YYYY.MM.DD HH:mm:ss')}` : ''}{' '}
|
||||
{headerData?.lastEditUserName ? `(${headerData.lastEditUserName})` : null}
|
||||
{managementState?.lastEditDatetime ? `${dayjs(managementState.lastEditDatetime).format('YYYY.MM.DD HH:mm:ss')}` : ''}{' '}
|
||||
{managementState?.lastEditUserName ? `(${managementState.lastEditUserName})` : null}
|
||||
</div>
|
||||
</div>
|
||||
<div className="sub-table-box">
|
||||
<div className="info-title">{getMessage('stuff.detail.header.createDatetime')}</div>
|
||||
<div className="info-inner">
|
||||
{headerData?.createDatetime ? `${dayjs(headerData.lastEditDatetime).format('YYYY.MM.DD')}` : ''}{' '}
|
||||
{headerData?.createUserName ? `(${headerData.createUserName})` : null}
|
||||
{managementState?.createDatetime ? `${dayjs(managementState.lastEditDatetime).format('YYYY.MM.DD')}` : ''}{' '}
|
||||
{managementState?.createUserName ? `(${managementState.createUserName})` : null}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -223,10 +223,6 @@ export default function StuffSearchCondition() {
|
||||
}
|
||||
})
|
||||
}
|
||||
// setStuffSearch({
|
||||
// ...stuffSearch,
|
||||
// code: 'S',
|
||||
// })
|
||||
} else {
|
||||
if (session?.storeLvl === '1') {
|
||||
allList = res
|
||||
|
||||
@ -617,8 +617,8 @@
|
||||
"stuff.temp.subTitle": "商品情報",
|
||||
"stuff.temp.subTitle2": "作図",
|
||||
"stuff.detail.header.notExistObjectNo": "存在しないものです。",
|
||||
"stuff.detail.header.message2": "商品番号がコピーされました。",
|
||||
"stuff.detail.header.message3": "存在しないものです。",
|
||||
"stuff.detail.header.successCopy": "商品番号がコピーされました。",
|
||||
"stuff.detail.header.failCopy": "存在しないものです。",
|
||||
"stuff.detail.header.objectNo": "商品番号のコピーに失敗しました。",
|
||||
"stuff.detail.header.specificationConfirmDate": "仕様拡張日",
|
||||
"stuff.detail.header.lastEditDatetime": "更新日時",
|
||||
|
||||
@ -627,8 +627,8 @@
|
||||
"stuff.temp.subTitle": "물건정보",
|
||||
"stuff.temp.subTitle2": "도면작성",
|
||||
"stuff.detail.header.notExistObjectNo": "존재하지 않는 물건입니다.",
|
||||
"stuff.detail.header.message2": "물건번호가 복사되었습니다.",
|
||||
"stuff.detail.header.message3": "물건번호 복사에 실패했습니다.",
|
||||
"stuff.detail.header.successCopy": "물건번호가 복사되었습니다.",
|
||||
"stuff.detail.header.failCopy": "물건번호 복사에 실패했습니다.",
|
||||
"stuff.detail.header.objectNo": "물건번호",
|
||||
"stuff.detail.header.specificationConfirmDate": "사양확장일",
|
||||
"stuff.detail.header.lastEditDatetime": "갱신일시",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user