🔄 SUPPORT 카테고리를 U-BOLT로 통합
Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled

- DB: SUPPORT 카테고리 76개 자재를 U_BOLT로 변경 (총 211개)
- 프론트엔드: SUPPORT 표시명을 'U-BOLT'로 변경
- SUPPORT 전용 헤더 및 본문 렌더링 제거
- U_BOLT 렌더링 개선:
  - U-BOLT: 기본 표시
  - URETHANE: 우레탄 블록 슈
  - CLAMP: 클램프 (신규 추가)
- CLAMP 배지 스타일 추가 (청록색)
This commit is contained in:
Hyungi Ahn
2025-10-14 06:37:00 +09:00
parent e8fb531fdb
commit 07ca79f376
2 changed files with 31 additions and 90 deletions

View File

@@ -350,7 +350,7 @@
/* PIPE 전용 행 - 9개 컬럼 */
.detailed-material-row.pipe-row {
grid-template-columns: 2% 8% 14% 8% 10% 20% 12% 15% 10% !important;
grid-template-columns: 1.5% 8.5% 14% 8% 10% 20% 12% 15% 10% !important;
}
.detailed-material-row.pipe-row .material-cell {
@@ -479,6 +479,14 @@
font-weight: 600;
}
/* CLAMP 타입 배지 */
.type-badge.clamp {
background: #0d9488;
color: white;
border: 2px solid #0f766e;
font-weight: 600;
}
/* SUPPORT 전용 헤더 - 9개 컬럼 */
.detailed-grid-header.support-header {
grid-template-columns: 2% 8% 16% 8% 10% 18% 12% 15% 10%;
@@ -542,7 +550,7 @@
/* 플랜지 전용 행 - 10개 컬럼 */
.detailed-material-row.flange-row {
grid-template-columns: 2% 8% 12% 8% 10% 10% 18% 10% 15% 6%;
grid-template-columns: 1.5% 8.5% 12% 8% 10% 10% 18% 10% 15% 6%;
}

View File

@@ -293,7 +293,7 @@ const NewMaterialsPage = ({
const categoryMap = {
'SPECIAL': 'SPECIAL',
'U_BOLT': 'U-BOLT',
'SUPPORT': 'SUPPORT',
'SUPPORT': 'U-BOLT',
'PIPE': 'PIPE',
'FITTING': 'FITTING',
'FLANGE': 'FLANGE',
@@ -1304,18 +1304,6 @@ const NewMaterialsPage = ({
<div>사용자요구</div>
<FilterableHeader sortKey="quantity" filterKey="quantity">수량</FilterableHeader>
</div>
) : selectedCategory === 'SUPPORT' ? (
<div className="detailed-grid-header support-header">
<div>선택</div>
<FilterableHeader sortKey="type" filterKey="type">종류</FilterableHeader>
<FilterableHeader sortKey="subtype" filterKey="subtype">타입</FilterableHeader>
<FilterableHeader sortKey="size" filterKey="size">크기</FilterableHeader>
<div>스케줄</div>
<div>재질</div>
<div>추가요구</div>
<div>사용자요구</div>
<FilterableHeader sortKey="quantity" filterKey="quantity">수량</FilterableHeader>
</div>
) : selectedCategory === 'UNKNOWN' ? (
<div className="detailed-grid-header unknown-header">
<div>선택</div>
@@ -1907,9 +1895,23 @@ const NewMaterialsPage = ({
if (material.classified_category === 'U_BOLT') {
// U_BOLT 카테고리 - 자재 타입별 다른 표시
const isUrethaneBlock = material.original_description?.includes('URETHANE') ||
material.original_description?.includes('BLOCK SHOE') ||
material.original_description?.includes('우레탄');
const desc = material.original_description || '';
const isUrethaneBlock = desc.includes('URETHANE') || desc.includes('BLOCK SHOE') || desc.includes('우레탄');
const isClamp = desc.includes('CLAMP') || desc.includes('클램프');
let badgeType = 'ubolt';
let badgeText = 'U-BOLT';
let subtypeText = info.subtype || 'U_BOLT';
if (isUrethaneBlock) {
badgeType = 'urethane';
badgeText = 'URETHANE';
subtypeText = 'BLOCK SHOE';
} else if (isClamp) {
badgeType = 'clamp';
badgeText = 'CLAMP';
subtypeText = 'CLAMP';
}
return (
<div
@@ -1927,16 +1929,14 @@ const NewMaterialsPage = ({
{/* 종류 */}
<div className="material-cell">
<span className={`type-badge ${isUrethaneBlock ? 'urethane' : 'ubolt'}`}>
{isUrethaneBlock ? 'URETHANE' : 'U-BOLT'}
<span className={`type-badge ${badgeType}`}>
{badgeText}
</span>
</div>
{/* 타입 */}
<div className="material-cell">
<span className="subtype-text">
{isUrethaneBlock ? 'BLOCK SHOE' : (info.subtype || 'U_BOLT')}
</span>
<span className="subtype-text">{subtypeText}</span>
</div>
{/* 크기 */}
@@ -1983,73 +1983,6 @@ const NewMaterialsPage = ({
);
}
if (material.classified_category === 'SUPPORT') {
// SUPPORT 카테고리 (9개 컬럼)
return (
<div
key={material.id}
className={`detailed-material-row support-row ${selectedMaterials.has(material.id) ? 'selected' : ''}`}
>
{/* 선택 */}
<div className="material-cell">
<input
type="checkbox"
checked={selectedMaterials.has(material.id)}
onChange={() => toggleMaterialSelection(material.id)}
/>
</div>
{/* 종류 */}
<div className="material-cell">
<span className={`type-badge support`}>
SUPPORT
</span>
</div>
{/* 타입 */}
<div className="material-cell">
<span className="subtype-text">{info.subtype || material.original_description}</span>
</div>
{/* 크기 */}
<div className="material-cell">
<span className="size-text">{info.size || material.main_nom}</span>
</div>
{/* 스케줄 */}
<div className="material-cell">
<span className="schedule-text">{info.schedule || '-'}</span>
</div>
{/* 재질 */}
<div className="material-cell">
<span className="grade-text">{info.grade || material.full_material_grade || '-'}</span>
</div>
{/* 추가요구 */}
<div className="material-cell">
<span className="additional-req-text">{info.additionalReq || '-'}</span>
</div>
{/* 사용자요구 */}
<div className="material-cell">
<input
type="text"
className="user-req-input"
placeholder="요구사항 입력"
value={userRequirements[material.id] || ''}
onChange={(e) => handleUserRequirementChange(material.id, e.target.value)}
/>
</div>
{/* 수량 */}
<div className="material-cell">
<span className="quantity-text">{info.quantity || material.quantity || 1} {info.unit || 'EA'}</span>
</div>
</div>
);
}
// 위에서 처리되지 않은 모든 자재는 기본 9개 컬럼으로 렌더링
// (예: 아직 전용 뷰가 없는 자재)
return (