견적서 상세
This commit is contained in:
parent
08cced00e8
commit
408d7fb04b
@ -18,6 +18,7 @@ import Select, { components } from 'react-select'
|
||||
import { convertNumberToPriceDecimal } from '@/util/common-utils'
|
||||
import ProductFeaturesPop from './popup/ProductFeaturesPop'
|
||||
export default function Estimate({ params }) {
|
||||
const [itemChangeYn, setItemChangeYn] = useState(false)
|
||||
const { session } = useContext(SessionContext)
|
||||
const [objectNo, setObjectNo] = useState('') //물건번호
|
||||
const [planNo, setPlanNo] = useState('') //플랜번호
|
||||
@ -268,17 +269,45 @@ export default function Estimate({ params }) {
|
||||
|
||||
// 아이템 자동완성 검색시
|
||||
const onChangeDisplayItem = (itemId, dispOrder) => {
|
||||
console.log('아이템 자동완성:::::::', dispOrder)
|
||||
const param = {
|
||||
itemId: itemId,
|
||||
}
|
||||
const apiUrl = `/api/display-item/item-detail?${queryStringFormatter(param)}`
|
||||
let updateList = []
|
||||
let updates = {}
|
||||
get({ url: apiUrl }).then((res) => {
|
||||
console.log('제품상세 결과::::::::', res)
|
||||
console.log('아이템상세정보:::::::', res)
|
||||
updates.objectNo = objectNo
|
||||
updates.planNo = planNo
|
||||
updates.itemId = res.itemId
|
||||
updates.itemNo = '' //예정
|
||||
updates.itemName = res.itemName
|
||||
updates.itemChangeFlg = '1' //무조건1
|
||||
updates.fileUploadFlg = res.fileUploadFlg
|
||||
updates.unit = res.unit
|
||||
updates.unitPrice = res.salePrice //unitPrice도 salePrice로
|
||||
updates.moduleFlg = res.moduleFlg
|
||||
updates.pkgMaterialFlg = res.pkgMaterialFlg
|
||||
updates.pnowW = res.pnowW
|
||||
updates.salePrice = res.salePrice
|
||||
updates.specification = res.specification
|
||||
updates.unit = res.unit
|
||||
updates.specialNoteCd = res.spnAttrCds
|
||||
updates.itemGroup = res.itemGroup
|
||||
|
||||
updateList = state.itemList.map((item) => {
|
||||
if (item.dispOrder === dispOrder) {
|
||||
return { ...item, ...updates }
|
||||
} else {
|
||||
return item
|
||||
}
|
||||
})
|
||||
setState({
|
||||
itemList: updateList,
|
||||
})
|
||||
|
||||
setItemChangeYn(true)
|
||||
})
|
||||
// setState({
|
||||
// itemList: [{ itemNo: '123123123123' }],
|
||||
// })
|
||||
}
|
||||
|
||||
//제품 삭제
|
||||
@ -302,8 +331,19 @@ export default function Estimate({ params }) {
|
||||
})
|
||||
|
||||
setSelection(new Set())
|
||||
setItemChangeYn(true)
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (itemChangeYn) {
|
||||
// console.log('아이템에 뭔가 변화가 일어났어', itemChangeYn)
|
||||
// console.log('아이템상태가져오기::::::::::', state.itemList)
|
||||
}
|
||||
|
||||
//다시 false로 돌리기 여기서할지 가격정보 변경하는거 끝나고할지..
|
||||
setItemChangeYn(false)
|
||||
}, [itemChangeYn])
|
||||
|
||||
return (
|
||||
<div className="sub-content estimate">
|
||||
<div className="sub-content-inner">
|
||||
@ -844,8 +884,6 @@ export default function Estimate({ params }) {
|
||||
isClearable={true}
|
||||
isDisabled={false}
|
||||
value={displayItemList.filter(function (option) {
|
||||
// console.log('옵션값???', option.itemId)
|
||||
// console.log('골랐을때 여기오지???', item.itemId)
|
||||
return option.itemId === item.itemId
|
||||
})}
|
||||
/>
|
||||
@ -877,14 +915,30 @@ export default function Estimate({ params }) {
|
||||
</td>
|
||||
<td>
|
||||
<div className="input-wrap" style={{ width: '100%' }}>
|
||||
<input type="text" className="input-light al-r" defaultValue={item?.amount} />
|
||||
<input
|
||||
type="text"
|
||||
className="input-light al-r"
|
||||
defaultValue={convertNumberToPriceDecimal(item?.amount)}
|
||||
onChange={(e) => {
|
||||
//onChangeDisplayItem참고
|
||||
console.log('수량변경::::::::', e.target.value)
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</td>
|
||||
<td>{item.unit}</td>
|
||||
<td>
|
||||
<div className="form-flex-wrap">
|
||||
<div className="input-wrap mr5">
|
||||
<input type="text" className="input-light al-r" defaultValue={convertNumberToPriceDecimal(item?.salePrice)} />
|
||||
<input
|
||||
type="text"
|
||||
className="input-light al-r"
|
||||
value={convertNumberToPriceDecimal(item?.salePrice)}
|
||||
onChange={(e) => {
|
||||
//onChangeDisplayItem참고
|
||||
console.log('단가변경:::::::', e.target.value)
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
{/* <div className="btn-area">
|
||||
<span className="tb_ico open_check">OPEN아이콘 처리</span>
|
||||
|
||||
@ -29,8 +29,8 @@ const defaultEstimateData = {
|
||||
}
|
||||
|
||||
// Helper functions
|
||||
const updateItemInList = (itemList, itemId, updates) => {
|
||||
return itemList.map((item) => (item.itemId === itemId ? { ...item, ...updates } : item))
|
||||
const updateItemInList = (itemList, dispOrder, updates) => {
|
||||
return itemList.map((item) => (item.dispOrder === dispOrder ? { ...item, ...updates } : item))
|
||||
}
|
||||
|
||||
export const useEstimateController = (planNo) => {
|
||||
@ -69,9 +69,9 @@ export const useEstimateController = (planNo) => {
|
||||
}
|
||||
}
|
||||
|
||||
const updateItem = (itemId, updates) => {
|
||||
const updateItem = (dispOrder, updates) => {
|
||||
setState({
|
||||
itemList: updateItemInList(state.itemList, itemId, updates),
|
||||
itemList: updateItemInList(state.itemList, dispOrder, updates),
|
||||
})
|
||||
}
|
||||
|
||||
@ -85,8 +85,8 @@ export const useEstimateController = (planNo) => {
|
||||
planNo: planNo,
|
||||
dispOrder: newItemDispOrder.toString(),
|
||||
itemId: '', //제품번호
|
||||
itemNo: '', //형명
|
||||
itemName: '',
|
||||
itemNo: '',
|
||||
itemName: '', //형명
|
||||
amount: '', //수량
|
||||
unitPrice: '0',
|
||||
unit: '', //단위
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user