🎯 UI/UX 개선 및 안정성 강화
Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled
Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled
✅ 주요 개선사항: - Rev.0일 때 Revisions 카운트 0으로 정확히 표시 - 업로드 후 파일 목록 자동 새로고침 - 대시보드 계정 메뉴 zIndex 문제 해결 - 구매관리 페이지 500 오류 해결 및 대시보드 리다이렉트 - 구매신청 관리 페이지 버튼 텍스트 개선 🔧 기술적 수정: - purchase_requests API SQL 쿼리 테이블 구조에 맞게 수정 - UserMenu 드롭다운 zIndex 1050으로 상향 조정 - 프론트엔드 완전 재빌드로 최신 변경사항 반영 - 완전한 자동 마이그레이션 시스템 구축 (43개 테이블 스키마 동기화) 🚀 다음 단계: 리비전 기능 재도입 준비 완료
This commit is contained in:
@@ -213,7 +213,7 @@
|
||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
|
||||
overflow: hidden;
|
||||
animation: dropdownSlide 0.3s ease-out;
|
||||
z-index: 1000;
|
||||
z-index: 1050;
|
||||
}
|
||||
|
||||
@keyframes dropdownSlide {
|
||||
|
||||
@@ -264,7 +264,7 @@ const BOMFilesTab = ({
|
||||
<span style={{ fontWeight: '500' }}>Latest:</span> {latestFile.revision || 'Rev.0'}
|
||||
</div>
|
||||
<div>
|
||||
<span style={{ fontWeight: '500' }}>Revisions:</span> {files.length}
|
||||
<span style={{ fontWeight: '500' }}>Revisions:</span> {Math.max(0, files.length - 1)}
|
||||
</div>
|
||||
<div>
|
||||
<span style={{ fontWeight: '500' }}>Updated:</span> {formatDate(latestFile.upload_date)}
|
||||
|
||||
@@ -152,16 +152,14 @@ const BOMUploadTab = ({
|
||||
|
||||
setSuccess(`${selectedFiles.length}개 파일이 성공적으로 업로드되었습니다!`);
|
||||
|
||||
// 업로드 성공 즉시 콜백 호출 (파일 목록 새로고침)
|
||||
if (onUploadSuccess) {
|
||||
onUploadSuccess(uploadedFile);
|
||||
}
|
||||
|
||||
// 파일 초기화
|
||||
setSelectedFiles([]);
|
||||
setBomName('');
|
||||
|
||||
// 2초 후 Files 탭으로 이동
|
||||
setTimeout(() => {
|
||||
if (onUploadSuccess) {
|
||||
onUploadSuccess(uploadedFile);
|
||||
}
|
||||
}, 2000);
|
||||
|
||||
} catch (err) {
|
||||
console.error('업로드 실패:', err);
|
||||
|
||||
@@ -74,7 +74,7 @@ const UserMenu = ({ user, onNavigate, onLogout }) => {
|
||||
border: '1px solid #e2e8f0',
|
||||
borderRadius: '8px',
|
||||
boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)',
|
||||
zIndex: 1000,
|
||||
zIndex: 1050,
|
||||
minWidth: '200px'
|
||||
}}>
|
||||
<div style={{ padding: '8px 0' }}>
|
||||
|
||||
@@ -34,6 +34,11 @@ const PurchaseRequestPage = ({ onNavigate, fileId, jobNo, selectedProject }) =>
|
||||
setRequests(response.data.requests || []);
|
||||
} catch (error) {
|
||||
console.error('Failed to load requests:', error);
|
||||
// API 오류 시 대시보드로 리다이렉트
|
||||
if (error.response?.status === 500 || error.response?.status === 404) {
|
||||
alert('구매신청 페이지에 문제가 발생했습니다. 대시보드로 이동합니다.');
|
||||
onNavigate('dashboard');
|
||||
}
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
}
|
||||
@@ -133,8 +138,8 @@ const PurchaseRequestPage = ({ onNavigate, fileId, jobNo, selectedProject }) =>
|
||||
return (
|
||||
<div className="purchase-request-page">
|
||||
<div className="page-header">
|
||||
<button onClick={() => onNavigate('bom', { selectedProject })} className="back-btn">
|
||||
← BOM 관리로 돌아가기
|
||||
<button onClick={() => onNavigate('dashboard')} className="back-btn">
|
||||
← 대시보드로 돌아가기
|
||||
</button>
|
||||
<h1>구매신청 관리</h1>
|
||||
<p className="subtitle">구매신청한 자재들을 그룹별로 관리합니다</p>
|
||||
|
||||
Reference in New Issue
Block a user