견적서 상세 수정
This commit is contained in:
parent
dd92a47b0b
commit
7a7a6f4c08
@ -9,7 +9,7 @@ import SingleDatePicker from '../common/datepicker/SingleDatePicker'
|
|||||||
import EstimateFileUploader from './EstimateFileUploader'
|
import EstimateFileUploader from './EstimateFileUploader'
|
||||||
import { useAxios } from '@/hooks/useAxios'
|
import { useAxios } from '@/hooks/useAxios'
|
||||||
import { globalLocaleStore } from '@/store/localeAtom'
|
import { globalLocaleStore } from '@/store/localeAtom'
|
||||||
import { isNotEmptyArray, isObjectNotEmpty, queryStringFormatter } from '@/util/common-utils'
|
import { isEmptyArray, isNotEmptyArray, isObjectNotEmpty, queryStringFormatter } from '@/util/common-utils'
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
import { useCommonCode } from '@/hooks/common/useCommonCode'
|
import { useCommonCode } from '@/hooks/common/useCommonCode'
|
||||||
import { useEstimateController } from '@/hooks/floorPlan/estimate/useEstimateController'
|
import { useEstimateController } from '@/hooks/floorPlan/estimate/useEstimateController'
|
||||||
@ -209,11 +209,12 @@ export default function Estimate({ params }) {
|
|||||||
}, [files])
|
}, [files])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (originFiles.length > 0) {
|
// console.log('USEEFFECT originFiles::::::::::', originFiles)
|
||||||
setEstimateContextState({
|
// if (originFiles.length > 0) {
|
||||||
originFiles: originFiles,
|
// setEstimateContextState({
|
||||||
})
|
// originFiles: originFiles,
|
||||||
}
|
// })
|
||||||
|
// }
|
||||||
}, [originFiles])
|
}, [originFiles])
|
||||||
|
|
||||||
//상세에서 내려온 첨부파일 set 만들기
|
//상세에서 내려온 첨부파일 set 만들기
|
||||||
@ -232,10 +233,12 @@ export default function Estimate({ params }) {
|
|||||||
file.delFlg = '0'
|
file.delFlg = '0'
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
setOriginFiles((prev) => {
|
setOriginFiles((prev) => {
|
||||||
return [...prev]
|
return [...prev]
|
||||||
})
|
})
|
||||||
|
setEstimateContextState({
|
||||||
|
originFiles: originFiles,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
// 기존첨부파일 삭제 (플래그값 추가?) 저장할때 플래그값에 따라 진짜 삭제
|
// 기존첨부파일 삭제 (플래그값 추가?) 저장할때 플래그값에 따라 진짜 삭제
|
||||||
const deleteOriginFile = (no) => {
|
const deleteOriginFile = (no) => {
|
||||||
@ -248,6 +251,9 @@ export default function Estimate({ params }) {
|
|||||||
setOriginFiles((prev) => {
|
setOriginFiles((prev) => {
|
||||||
return [...prev]
|
return [...prev]
|
||||||
})
|
})
|
||||||
|
setEstimateContextState({
|
||||||
|
originFiles: originFiles,
|
||||||
|
})
|
||||||
alert(getMessage('estimate.detail.alert.delFile'))
|
alert(getMessage('estimate.detail.alert.delFile'))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,20 +433,6 @@ export default function Estimate({ params }) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// data.data2.map((item2) => {
|
|
||||||
// if (item2) {
|
|
||||||
// // console.log('프라이싱아이템::::', item2)
|
|
||||||
// if (item2.itemId === item.itemId) {
|
|
||||||
// updateList.push({
|
|
||||||
// ...item,
|
|
||||||
// openFlg: item2.unitPrice === '0.0' ? '1' : '0',
|
|
||||||
// salePrice: item2.unitPrice === null ? '0' : item2.unitPrice,
|
|
||||||
// saleTotPrice: (item.amount * item2.unitPrice).toString(),
|
|
||||||
// })
|
|
||||||
// checkYn = true
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
|
|
||||||
if (!checkYn) {
|
if (!checkYn) {
|
||||||
updateList.push({ ...item, salePrice: '0', saleTotPrice: '0' })
|
updateList.push({ ...item, salePrice: '0', saleTotPrice: '0' })
|
||||||
@ -590,7 +582,7 @@ export default function Estimate({ params }) {
|
|||||||
let updateList = []
|
let updateList = []
|
||||||
let updates = {}
|
let updates = {}
|
||||||
get({ url: apiUrl }).then((res) => {
|
get({ url: apiUrl }).then((res) => {
|
||||||
console.log('아이템디테일::::::::', res)
|
// console.log('아이템디테일::::::::', res)
|
||||||
updates.objectNo = objectNo
|
updates.objectNo = objectNo
|
||||||
updates.planNo = planNo
|
updates.planNo = planNo
|
||||||
updates.itemId = res.itemId
|
updates.itemId = res.itemId
|
||||||
@ -605,16 +597,12 @@ export default function Estimate({ params }) {
|
|||||||
updates.pkgMaterialFlg = res.pkgMaterialFlg
|
updates.pkgMaterialFlg = res.pkgMaterialFlg
|
||||||
updates.pnowW = res.pnowW
|
updates.pnowW = res.pnowW
|
||||||
updates.salePrice = res.salePrice
|
updates.salePrice = res.salePrice
|
||||||
// updates.salePrice = ''
|
|
||||||
updates.specification = res.specification
|
updates.specification = res.specification
|
||||||
updates.unit = res.unit
|
updates.unit = res.unit
|
||||||
updates.specialNoteCd = res.spnAttrCds
|
updates.specialNoteCd = res.spnAttrCds
|
||||||
updates.itemGroup = res.itemGroup
|
updates.itemGroup = res.itemGroup
|
||||||
updates.delFlg = '0' // 삭제플래그 0
|
updates.delFlg = '0' // 삭제플래그 0
|
||||||
updates.saleTotPrice = (res.salePrice * estimateContextState.itemList[index].amount).toString()
|
updates.saleTotPrice = (res.salePrice * estimateContextState.itemList[index].amount).toString()
|
||||||
//console.log('updates::', updates)
|
|
||||||
//console.log('estimateContextState.itemList[index].amount::', estimateContextState.itemList[index].amount)
|
|
||||||
// updates.saleTotPrice = ''
|
|
||||||
updates.amount = ''
|
updates.amount = ''
|
||||||
updates.openFlg = res.openFlg
|
updates.openFlg = res.openFlg
|
||||||
|
|
||||||
@ -748,7 +736,7 @@ export default function Estimate({ params }) {
|
|||||||
makeUniqueSpecialNoteCd(itemList)
|
makeUniqueSpecialNoteCd(itemList)
|
||||||
|
|
||||||
itemList.forEach((item) => {
|
itemList.forEach((item) => {
|
||||||
console.log('YJOD::::::', item)
|
// console.log('YJOD::::::', item)
|
||||||
delete item.showSalePrice
|
delete item.showSalePrice
|
||||||
delete item.showSaleTotPrice
|
delete item.showSaleTotPrice
|
||||||
if (item.delFlg === '0') {
|
if (item.delFlg === '0') {
|
||||||
@ -777,7 +765,7 @@ export default function Estimate({ params }) {
|
|||||||
itemList.sort((a, b) => a.dispOrder - b.dispOrder)
|
itemList.sort((a, b) => a.dispOrder - b.dispOrder)
|
||||||
makeUniqueSpecialNoteCd(itemList)
|
makeUniqueSpecialNoteCd(itemList)
|
||||||
itemList.forEach((item) => {
|
itemList.forEach((item) => {
|
||||||
console.log('YJSSS::', item)
|
// console.log('YJSSS::', item)
|
||||||
if (item.delFlg === '0') {
|
if (item.delFlg === '0') {
|
||||||
let amount = Number(item.amount?.replace(/[^0-9]/g, '').replaceAll(',', '')) || 0
|
let amount = Number(item.amount?.replace(/[^0-9]/g, '').replaceAll(',', '')) || 0
|
||||||
let salePrice = Number(item.salePrice?.replaceAll(',', '')) || 0
|
let salePrice = Number(item.salePrice?.replaceAll(',', '')) || 0
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { useContext, useEffect, useReducer, useState } from 'react'
|
|||||||
import { useRecoilState, useRecoilValue } from 'recoil'
|
import { useRecoilState, useRecoilValue } from 'recoil'
|
||||||
import { globalLocaleStore } from '@/store/localeAtom'
|
import { globalLocaleStore } from '@/store/localeAtom'
|
||||||
import { estimateState, floorPlanObjectState } from '@/store/floorPlanObjectAtom'
|
import { estimateState, floorPlanObjectState } from '@/store/floorPlanObjectAtom'
|
||||||
import { isObjectNotEmpty } from '@/util/common-utils'
|
import { isObjectNotEmpty, isEmptyArray } from '@/util/common-utils'
|
||||||
import { SessionContext } from '@/app/SessionProvider'
|
import { SessionContext } from '@/app/SessionProvider'
|
||||||
import { useMessage } from '@/hooks/useMessage'
|
import { useMessage } from '@/hooks/useMessage'
|
||||||
import { useRouter } from 'next/navigation'
|
import { useRouter } from 'next/navigation'
|
||||||
@ -59,6 +59,7 @@ export const useEstimateController = (planNo) => {
|
|||||||
item.delFlg = '0'
|
item.delFlg = '0'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
setEstimateContextState(res.data)
|
setEstimateContextState(res.data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -155,13 +156,6 @@ export const useEstimateController = (planNo) => {
|
|||||||
return alert(getMessage('estimate.detail.save.requiredEstimateDate'))
|
return alert(getMessage('estimate.detail.save.requiredEstimateDate'))
|
||||||
}
|
}
|
||||||
|
|
||||||
//첨부파일을 첨부안했는데
|
|
||||||
//아이템 fileUploadFlg가1(첨부파일 필수)이 1개라도 있는데 후일 자료 제출(fileFlg) 체크안했으면(0) alert 저장안돼
|
|
||||||
// console.log('새로추가첨부파일:::', estimateData.newFileList)
|
|
||||||
// console.log('기존첨부파일:::', estimateData.originFiles)
|
|
||||||
|
|
||||||
// console.log('estimateData::', estimateData)
|
|
||||||
|
|
||||||
//기존에 첨부된 파일이 있으면 파일첨부관련 통과
|
//기존에 첨부된 파일이 있으면 파일첨부관련 통과
|
||||||
if (estimateData?.originFiles?.length > 0) {
|
if (estimateData?.originFiles?.length > 0) {
|
||||||
originFileFlg = true
|
originFileFlg = true
|
||||||
@ -169,8 +163,9 @@ export const useEstimateController = (planNo) => {
|
|||||||
if (flag) {
|
if (flag) {
|
||||||
if (!originFileFlg) {
|
if (!originFileFlg) {
|
||||||
//기존에 첨부된 파일이 없으면
|
//기존에 첨부된 파일이 없으면
|
||||||
if (estimateData.newFileList?.length < 1) {
|
// if (estimateData.newFileList?.length < 1) {
|
||||||
//새로 첨부한 파일이 있으면
|
if (isEmptyArray(estimateData.newFileList)) {
|
||||||
|
//새로 첨부한 파일이 없으면
|
||||||
if (estimateData.itemList.length > 1) {
|
if (estimateData.itemList.length > 1) {
|
||||||
estimateData.itemList.map((row) => {
|
estimateData.itemList.map((row) => {
|
||||||
if (row.delFlg === '0') {
|
if (row.delFlg === '0') {
|
||||||
@ -244,7 +239,7 @@ export const useEstimateController = (planNo) => {
|
|||||||
//1. 첨부파일 저장시작
|
//1. 첨부파일 저장시작
|
||||||
const formData = new FormData()
|
const formData = new FormData()
|
||||||
if (estimateData?.newFileList?.length > 0) {
|
if (estimateData?.newFileList?.length > 0) {
|
||||||
console.log('새로추가한 첨부파일있음:::', estimateData?.newFileList)
|
// console.log('새로추가한 첨부파일있음:::', estimateData?.newFileList)
|
||||||
estimateData.newFileList.forEach((file) => {
|
estimateData.newFileList.forEach((file) => {
|
||||||
formData.append('files', file)
|
formData.append('files', file)
|
||||||
})
|
})
|
||||||
@ -316,12 +311,15 @@ export const useEstimateController = (planNo) => {
|
|||||||
} else {
|
} else {
|
||||||
estimateData.deleteFileList = []
|
estimateData.deleteFileList = []
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('최종저장::', estimateData)
|
console.log('최종저장::', estimateData)
|
||||||
//2. 상세데이터 저장
|
//2. 상세데이터 저장
|
||||||
// return
|
// return
|
||||||
try {
|
try {
|
||||||
await promisePost({ url: `${ESTIMATE_API_ENDPOINT}/save-estimate`, data: estimateData }).then((res) => {
|
await promisePost({ url: `${ESTIMATE_API_ENDPOINT}/save-estimate`, data: estimateData }).then((res) => {
|
||||||
if (res.status === 201) {
|
if (res.status === 201) {
|
||||||
|
estimateData.newFileList = []
|
||||||
|
estimateData.originFileList = []
|
||||||
alert(getMessage('estimate.detail.save.alertMsg'))
|
alert(getMessage('estimate.detail.save.alertMsg'))
|
||||||
//어디로 보낼지
|
//어디로 보낼지
|
||||||
fetchSetting(objectRecoil.floorPlanObjectNo, estimateData.planNo)
|
fetchSetting(objectRecoil.floorPlanObjectNo, estimateData.planNo)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user