From b3d1c2d7d0183d61ab36c1baf1fd86a14782da05 Mon Sep 17 00:00:00 2001 From: basssy Date: Tue, 10 Dec 2024 16:27:22 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B2=AC=EC=A0=81=EC=84=9C=20=EC=B2=A8?= =?UTF-8?q?=EB=B6=80=ED=8C=8C=EC=9D=BC=20=EB=A9=80=ED=8B=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/estimate/Estimate.jsx | 3 - .../estimate/EstimateFileUploader.jsx | 60 +++++++++++++++---- .../estimate/useEstimateController.js | 13 ++-- src/locales/ja.json | 2 +- src/locales/ko.json | 2 +- 5 files changed, 59 insertions(+), 21 deletions(-) diff --git a/src/components/estimate/Estimate.jsx b/src/components/estimate/Estimate.jsx index 452e57be..5ba366a9 100644 --- a/src/components/estimate/Estimate.jsx +++ b/src/components/estimate/Estimate.jsx @@ -25,7 +25,6 @@ export default function Estimate({ params }) { const [uniqueData, setUniqueData] = useState([]) const [handlePricingFlag, setHandlePricingFlag] = useState(false) const [specialNoteFirstFlg, setSpecialNoteFirstFlg] = useState(false) - const fixedKey = 'itemKey' const [itemChangeYn, setItemChangeYn] = useState(false) const { session } = useContext(SessionContext) const [objectNo, setObjectNo] = useState('') //물건번호 @@ -1193,7 +1192,6 @@ export default function Estimate({ params }) { {originFiles.map((originFile) => { return (
  • - {/*
  • */}
    0 && specialNoteList.map((row) => { return ( - //
    diff --git a/src/components/estimate/EstimateFileUploader.jsx b/src/components/estimate/EstimateFileUploader.jsx index cda14e24..950ed6af 100644 --- a/src/components/estimate/EstimateFileUploader.jsx +++ b/src/components/estimate/EstimateFileUploader.jsx @@ -1,14 +1,12 @@ 'use client' -import { useContext, useRef } from 'react' +import { useRef } from 'react' import { v4 as uuidv4 } from 'uuid' import { useMessage } from '@/hooks/useMessage' -import { SessionContext } from '@/app/SessionProvider' export default function EstimateFileUploader({ uploadFiles, setUploadFiles }) { const fileInputRef = useRef(null) const { getMessage } = useMessage() - const { session } = useContext(SessionContext) const handleButtonClick = (e) => { e.preventDefault() @@ -20,13 +18,32 @@ export default function EstimateFileUploader({ uploadFiles, setUploadFiles }) { return } - const { files } = e.target - const file = files[0] - const fileType = file.type - if (!fileType.includes('image')) { - return alert(getMessage('estimate.detail.fileList.extCheck')) + const fileList = [] + let passFlag = true + Array.from(e.target.files).forEach((file) => { + let fileType = file.type + if (!fileType.includes('image')) { + passFlag = false + } else { + fileList.push({ data: file, id: uuidv4() }) + } + }) + + if (!passFlag) { + alert(getMessage('estimate.detail.fileList.extCheck')) } + // const { files } = e.target + // const file = files[0] + // const fileType = file.type + // if (!fileType.includes('image')) { + // return alert(getMessage('estimate.detail.fileList.extCheck')) + // } + + // setUploadFiles([...uploadFiles, { data: e.target.files[0], id: uuidv4() }]) + //다중으로 변경 + setUploadFiles([...uploadFiles, ...fileList]) + e.target.value = '' // const formData = new FormData() // formData.append('file', e.target.files[0]) // formData.append('objectNo', objectNo) // 받아와야 하는 값 @@ -37,8 +54,6 @@ export default function EstimateFileUploader({ uploadFiles, setUploadFiles }) { // await promisePost({ url: '/api/file/fileUpload', data: formData }).then((res) => { // if (res.data > 0) setUploadFiles([...files, { name: e.target.files[0].name, id: uuidv4() }]) // }) - setUploadFiles([...uploadFiles, { data: e.target.files[0], id: uuidv4() }]) - e.target.value = '' } const deleteFile = (id) => { @@ -49,9 +64,21 @@ export default function EstimateFileUploader({ uploadFiles, setUploadFiles }) { e.preventDefault() e.stopPropagation() const fileList = [] + let passFlag = true + Array.from(e.dataTransfer.files).forEach((file) => { - fileList.push({ data: file, id: uuidv4() }) + let fileType = file.type + if (!fileType.includes('image')) { + passFlag = false + } else { + fileList.push({ data: file, id: uuidv4() }) + } }) + + if (!passFlag) { + alert(getMessage('estimate.detail.fileList.extCheck')) + } + setUploadFiles([...uploadFiles, ...fileList]) } @@ -76,7 +103,16 @@ export default function EstimateFileUploader({ uploadFiles, setUploadFiles }) { - onChangeFiles(e)} /> + onChangeFiles(e)} + />
    { export const useEstimateController = (planNo) => { const [fileList, setFileList] = useState([]) - const [deleteFileList, setDeleteFileList] = useState([]) + const { setIsGlobalLoading } = useContext(QcastContext) const router = useRouter() const { session } = useContext(SessionContext) @@ -52,6 +53,7 @@ export const useEstimateController = (planNo) => { const fetchSetting = async (objectNo, planNo) => { try { await promiseGet({ url: `/api/estimate/${objectNo}/${planNo}/detail` }).then((res) => { + setIsGlobalLoading(true) if (res.status === 200) { if (isObjectNotEmpty(res.data)) { if (res.data.itemList.length > 0) { @@ -72,9 +74,11 @@ export const useEstimateController = (planNo) => { } }) setIsLoading(true) + setIsGlobalLoading(false) } catch (error) { console.error('견적서 상세조회 Error: ', error) setIsLoading(true) + setIsGlobalLoading(false) } } @@ -354,15 +358,16 @@ export const useEstimateController = (planNo) => { // return try { await promisePost({ url: `${ESTIMATE_API_ENDPOINT}/save-estimate`, data: estimateData }).then((res) => { + setIsGlobalLoading(true) if (res.status === 201) { estimateData.newFileList = [] - // estimateData.originFiles = [] alert(getMessage('estimate.detail.save.alertMsg')) //어디로 보낼지 fetchSetting(objectRecoil.floorPlanObjectNo, estimateData.planNo) } }) } catch (e) { + setIsGlobalLoading(false) console.log('error::::::::::::', e.response.data.message) } } diff --git a/src/locales/ja.json b/src/locales/ja.json index 8521c658..243418a8 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -840,7 +840,7 @@ "estimate.detail.fileFlg": "後日資料提出", "estimate.detail.header.fileList1": "ファイル添付", "estimate.detail.fileList.btn": "ファイル選択", - "estimate.detail.fileList.extCheck": "そのファイルはイメージファイルではありません", + "estimate.detail.fileList.extCheck": "画像ファイルのみ添付可能.", "estimate.detail.header.fileList2": "添付ファイル一覧", "estimate.detail.fileList2.btn.return": "復元", "estimate.detail.header.specialEstimate": "見積もりの具体的な", diff --git a/src/locales/ko.json b/src/locales/ko.json index cc65bb7d..495fe2dc 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -850,7 +850,7 @@ "estimate.detail.fileFlg": "후일자료제출", "estimate.detail.header.fileList1": "파일첨부", "estimate.detail.fileList.btn": "파일선택", - "estimate.detail.fileList.extCheck": "해당 파일은 이미지 파일이 아닙니다", + "estimate.detail.fileList.extCheck": "이미지 파일만 첨부 가능합니다.", "estimate.detail.header.fileList2": "첨부파일 목록", "estimate.detail.fileList2.btn.return": "복원", "estimate.detail.header.specialEstimate": "견적특이사항",