견적서 상세 첨부파일

This commit is contained in:
basssy 2024-11-07 11:35:18 +09:00
parent 7365279bda
commit ee59b0498a

View File

@ -3,7 +3,6 @@
import { useEffect, useState, useContext } from 'react' import { useEffect, useState, useContext } from 'react'
import { useRecoilValue } from 'recoil' import { useRecoilValue } from 'recoil'
import { floorPlanObjectState } from '@/store/floorPlanObjectAtom' import { floorPlanObjectState } from '@/store/floorPlanObjectAtom'
import { SessionContext } from '@/app/SessionProvider'
import { useMessage } from '@/hooks/useMessage' import { useMessage } from '@/hooks/useMessage'
import { useCanvasMenu } from '@/hooks/common/useCanvasMenu' import { useCanvasMenu } from '@/hooks/common/useCanvasMenu'
import SingleDatePicker from '../common/datepicker/SingleDatePicker' import SingleDatePicker from '../common/datepicker/SingleDatePicker'
@ -15,11 +14,15 @@ import dayjs from 'dayjs'
import { useCommonCode } from '@/hooks/common/useCommonCode' import { useCommonCode } from '@/hooks/common/useCommonCode'
import Select from 'react-select' import Select from 'react-select'
import { useEstimateController } from '@/hooks/floorPlan/estimate/useEstimateController' import { useEstimateController } from '@/hooks/floorPlan/estimate/useEstimateController'
import { SessionContext } from '@/app/SessionProvider'
export default function Estimate({ params }) { export default function Estimate({ params }) {
const { session } = useContext(SessionContext)
const [objectNo, setObjectNo] = useState('') // const [objectNo, setObjectNo] = useState('') //
const [planNo, setPlanNo] = useState('') // const [planNo, setPlanNo] = useState('') //
const [files, setFiles] = useState([]) // const [files, setFiles] = useState([]) //
const [originFiles, setOriginFiles] = useState([]) //
const [showContentCode, setShowContentCode] = useState('ATTR001') const [showContentCode, setShowContentCode] = useState('ATTR001')
@ -36,7 +39,6 @@ export default function Estimate({ params }) {
setStartDate, setStartDate,
} }
const { session } = useContext(SessionContext)
const objectRecoil = useRecoilValue(floorPlanObjectState) const objectRecoil = useRecoilValue(floorPlanObjectState)
// //
@ -48,16 +50,14 @@ export default function Estimate({ params }) {
const [specialNoteList, setSpecialNoteList] = useState([]) const [specialNoteList, setSpecialNoteList] = useState([])
const globalLocaleState = useRecoilValue(globalLocaleStore) const globalLocaleState = useRecoilValue(globalLocaleStore)
const { get, post } = useAxios(globalLocaleState) const { get, promisePost } = useAxios(globalLocaleState)
const { getMessage } = useMessage() const { getMessage } = useMessage()
const { setMenuNumber } = useCanvasMenu() const { setMenuNumber } = useCanvasMenu()
// props
const fileUploadProps = { const fileUploadProps = {
// objectNo: '',
// planNo: params.pid,
// category: '10',
uploadFiles: files, uploadFiles: files,
setUploadFiles: setFiles, setUploadFiles: setFiles,
} }
@ -123,24 +123,42 @@ export default function Estimate({ params }) {
event.stopPropagation() event.stopPropagation()
} }
// state // state
useEffect(() => { useEffect(() => {
// console.log(files) if (isNotEmptyArray(files)) {
if (files.length > 0) {
files.map((row) => { files.map((row) => {
setState({ fileList: row.data }) setState({ fileList: row.data })
}) })
} else { } else {
console.log('첨부파일 없음')
setState({ fileList: [] }) setState({ fileList: [] })
} }
}, [files]) }, [files])
// set
useEffect(() => {
if (isNotEmptyArray(state.fileList)) {
setOriginFiles(state.fileList)
}
}, [state?.fileList])
//
const deleteOriginFile = async (objectNo, no) => {
const delParams = {
userId: session.userId,
objectNo: objectNo,
no: no,
}
await promisePost({ url: 'api/file/fileDelete', data: delParams }).then((res) => {
if (res.status === 204) {
setOriginFiles(originFiles.filter((file) => file.objectNo === objectNo && file.no !== no))
}
})
}
return ( return (
<div className="sub-content estimate"> <div className="sub-content estimate">
<div className="sub-content-inner"> <div className="sub-content-inner">
{/* 물건번호, 견적서번호, 등록일, 변경일시 시작 */} {/* 물건번호, 견적서번호, 등록일, 변경일시 시작 */}
{/* <form onSubmit={handleSubmit(onValid)}> */}
<div className="sub-content-box"> <div className="sub-content-box">
<div className="sub-table-box"> <div className="sub-table-box">
<div className="estimate-list-wrap one"> <div className="estimate-list-wrap one">
@ -395,6 +413,23 @@ export default function Estimate({ params }) {
<tbody> <tbody>
<tr> <tr>
<th>{getMessage('estimate.detail.header.fileList2')}</th> <th>{getMessage('estimate.detail.header.fileList2')}</th>
<td>
<div className="drag-file-box">
<ul className="file-list">
{isNotEmptyArray(originFiles) &&
originFiles.map((originFile) => {
return (
<li className="file-item">
<span>
{originFile.faileName}
<button className="delete" onClick={() => deleteOriginFile(originFile.objectNo, originFile.no)}></button>
</span>
</li>
)
})}
</ul>
</div>
</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -444,7 +479,7 @@ export default function Estimate({ params }) {
) )
})} })}
</div> </div>
{/* 견적특이사항 선택한 내용?영역시작 */} {/* 견적특이사항 선택한 내용 영역시작 */}
<div className="calculation-estimate"> <div className="calculation-estimate">
{specialNoteList.map((row) => { {specialNoteList.map((row) => {
if (row.code === showContentCode) { if (row.code === showContentCode) {
@ -575,7 +610,6 @@ export default function Estimate({ params }) {
</div> </div>
</div> </div>
{/* 기본정보끝 */} {/* 기본정보끝 */}
{/* </form> */}
</div> </div>
</div> </div>
) )