견적서 상세 수정

This commit is contained in:
basssy 2024-12-04 14:20:59 +09:00
parent dd92a47b0b
commit 7a7a6f4c08
2 changed files with 25 additions and 39 deletions

View File

@ -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

View File

@ -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)