feat: 구매신청 기능 완성 및 SUPPORT/SPECIAL 카테고리 개선

- 모든 카테고리 구매신청 기능 완성 (PIPE, FITTING, VALVE, FLANGE, GASKET, BOLT, SUPPORT, SPECIAL, UNKNOWN)
- 구매신청 완료 항목: 회색 배경, 체크박스 비활성화, '구매신청완료' 배지 표시
- 전체 선택/구매신청 시 이미 구매신청된 항목 자동 제외
- 구매신청 quantity 타입 에러 수정 (문자열 -> 정수 변환)

SUPPORT 카테고리 (구 U-BOLT):
- U-BOLT -> SUPPORT로 카테고리명 변경
- 클램프, 유볼트, 우레탄블럭슈 분류 개선
- 테이블 헤더: 선택-종류-타입-크기-디스크립션-추가요구-사용자요구-수량
- 크기 정보 main_nom 필드에서 가져오기 (배관 인치)
- 엑셀 내보내기 형식 조정

SPECIAL 카테고리:
- SPECIAL 키워드 자재 자동 분류 (SPECIFICATION 제외)
- 파일 업로드 시 SPECIAL 카테고리 처리 로직 추가
- 도면번호 필드 추가 (drawing_name, line_no)
- 타입 필드: 크기/스케줄/재질 제외한 핵심 정보 표시
- 엑셀 DWG_NAME, LINE_NUM 컬럼 파싱 및 저장

FITTING 카테고리:
- 테이블 컬럼 너비 조정 (선택 2%, 종류 8.5%, 수량 12%)

구매신청 관리:
- 엑셀 재다운로드 형식 개선 (BOM 페이지와 동일한 형식)
- 그룹화된 자재 정보 포함하여 저장 및 다운로드
This commit is contained in:
Hyungi Ahn
2025-10-14 12:39:25 +09:00
parent e468663386
commit e27020ae9b
44 changed files with 13102 additions and 176 deletions

View File

@@ -294,7 +294,7 @@
background: white;
margin: 16px 24px;
overflow-y: auto;
overflow-x: hidden;
overflow-x: auto; /* 좌우 스크롤 가능하도록 변경 */
max-height: calc(100vh - 220px);
border: 1px solid #d1d5db;
}
@@ -431,40 +431,40 @@
font-weight: 600;
}
/* U-BOLT 전용 헤더 - 8개 컬럼 */
.detailed-grid-header.ubolt-header {
grid-template-columns: 3% 11% 15% 10% 20% 12% 18% 10%;
/* SUPPORT 전용 헤더 - 8개 컬럼 */
.detailed-grid-header.support-header {
grid-template-columns: 3% 10% 12% 10% 25% 10% 18% 12%;
}
/* U-BOLT 전용 행 - 8개 컬럼 */
.detailed-material-row.ubolt-row {
grid-template-columns: 3% 11% 15% 10% 20% 12% 18% 10%;
/* SUPPORT 전용 행 - 8개 컬럼 */
.detailed-material-row.support-row {
grid-template-columns: 3% 10% 12% 10% 25% 10% 18% 12%;
}
/* U-BOLT 헤더 테두리 */
.detailed-grid-header.ubolt-header > div,
.detailed-grid-header.ubolt-header .filterable-header {
/* SUPPORT 헤더 테두리 */
.detailed-grid-header.support-header > div,
.detailed-grid-header.support-header .filterable-header {
border-right: 1px solid #d1d5db;
}
.detailed-grid-header.ubolt-header > div:last-child,
.detailed-grid-header.ubolt-header .filterable-header:last-child {
.detailed-grid-header.support-header > div:last-child,
.detailed-grid-header.support-header .filterable-header:last-child {
border-right: none;
}
/* U-BOLT 행 테두리 */
.detailed-material-row.ubolt-row .material-cell {
/* SUPPORT 행 테두리 */
.detailed-material-row.support-row .material-cell {
border-right: 1px solid #d1d5db;
}
.detailed-material-row.ubolt-row .material-cell:last-child {
.detailed-material-row.support-row .material-cell:last-child {
border-right: none;
}
/* U-BOLT 타입 배지 */
.type-badge.ubolt {
/* SUPPORT 타입 배지 */
.type-badge.support {
background: #059669;
color: white;
border: 2px solid #047857;
@@ -533,7 +533,7 @@
/* 플랜지 전용 헤더 - 10개 컬럼 */
.detailed-grid-header.flange-header {
grid-template-columns: 2% 8% 12% 8% 10% 10% 18% 10% 15% 6%;
grid-template-columns: 1.5% 8.5% 12% 8% 10% 10% 15% 8% 12% 11.5%;
}
@@ -550,7 +550,7 @@
/* 플랜지 전용 행 - 10개 컬럼 */
.detailed-material-row.flange-row {
grid-template-columns: 1.5% 8.5% 12% 8% 10% 10% 18% 10% 15% 6%;
grid-template-columns: 1.5% 8.5% 12% 8% 10% 10% 15% 8% 12% 11.5%;
}
@@ -565,7 +565,7 @@
/* 피팅 전용 헤더 - 10개 컬럼 */
.detailed-grid-header.fitting-header {
grid-template-columns: 2% 8% 20% 8% 8% 10% 18% 10% 15% 0%;
grid-template-columns: 2% 8.5% 16% 7.5% 7.5% 9% 15% 9% 13% 12%;
}
@@ -582,7 +582,7 @@
/* 피팅 전용 행 - 10개 컬럼 */
.detailed-material-row.fitting-row {
grid-template-columns: 2% 8% 20% 8% 8% 10% 18% 10% 15% 0%;
grid-template-columns: 2% 8.5% 16% 7.5% 7.5% 9% 15% 9% 13% 12%;
}