diff --git a/frontend/src/pages/BOMStatusPage.jsx b/frontend/src/pages/BOMStatusPage.jsx index 78d28fc..b576def 100644 --- a/frontend/src/pages/BOMStatusPage.jsx +++ b/frontend/src/pages/BOMStatusPage.jsx @@ -1,7 +1,7 @@ import React, { useState, useEffect } from 'react'; import { Box, Typography, Button, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Paper, CircularProgress, Alert, TextField, Dialog, DialogTitle, DialogContent, DialogActions } from '@mui/material'; import { useSearchParams, useNavigate } from 'react-router-dom'; -import { uploadFile as uploadFileApi } from '../api'; +import { uploadFile as uploadFileApi, fetchFiles as fetchFilesApi, deleteFile as deleteFileApi } from '../api'; const BOMStatusPage = () => { const [files, setFiles] = useState([]); @@ -22,15 +22,20 @@ const BOMStatusPage = () => { setLoading(true); setError(''); try { - let url = 'http://localhost:8000/files'; - if (jobNo) { - url += `?job_no=${jobNo}`; + console.log('fetchFiles 호출 - jobNo:', jobNo); + const response = await fetchFilesApi({ job_no: jobNo }); + console.log('API 응답:', response); + + if (Array.isArray(response.data)) { + console.log('데이터 배열 형태:', response.data.length, '개'); + setFiles(response.data); + } else if (response.data && Array.isArray(response.data.files)) { + console.log('데이터.files 배열 형태:', response.data.files.length, '개'); + setFiles(response.data.files); + } else { + console.log('빈 배열로 설정'); + setFiles([]); } - const res = await fetch(url); - const data = await res.json(); - if (Array.isArray(data)) setFiles(data); - else if (data && Array.isArray(data.files)) setFiles(data.files); - else setFiles([]); } catch (e) { setError('파일 목록을 불러오지 못했습니다.'); console.error('파일 목록 로드 에러:', e); @@ -40,7 +45,12 @@ const BOMStatusPage = () => { }; useEffect(() => { - fetchFiles(); + console.log('useEffect 실행 - jobNo:', jobNo); + if (jobNo) { + fetchFiles(); + } else { + console.log('jobNo가 없어서 fetchFiles 실행하지 않음'); + } // eslint-disable-next-line }, [jobNo]); @@ -302,13 +312,15 @@ const BOMStatusPage = () => { onClick={async () => { if (confirm(`정말 "${file.revision || 'Rev.0'}"을 삭제하시겠습니까?`)) { try { - const res = await fetch(`http://localhost:8000/files/${file.id}`, { method: 'DELETE' }); - if (res.ok) { + const response = await deleteFileApi(file.id); + if (response.data.success) { fetchFiles(); + alert('삭제되었습니다.'); } else { - alert('삭제 실패'); + alert('삭제 실패: ' + (response.data.message || '알 수 없는 오류')); } } catch (e) { + console.error('삭제 오류:', e); alert('삭제 중 오류가 발생했습니다.'); } } diff --git a/frontend/src/pages/ProjectSelectionPage.jsx b/frontend/src/pages/ProjectSelectionPage.jsx index 15c920f..625628f 100644 --- a/frontend/src/pages/ProjectSelectionPage.jsx +++ b/frontend/src/pages/ProjectSelectionPage.jsx @@ -60,7 +60,7 @@ const ProjectSelectionPage = () => { variant="contained" sx={{ mt: 4, minWidth: 120 }} disabled={!selectedJob} - onClick={() => navigate(`/bom?job_no=${selectedJob}`)} + onClick={() => navigate(`/bom-status?job_no=${selectedJob}`)} > 확인