feat(WEB): Phase 6 IntegratedDetailTemplate 마이그레이션 완료
Phase 6 마이그레이션 (41개 컴포넌트 완료): - 건설/시공: 협력업체, 시공관리, 기성관리, 발주관리, 계약관리 등 - 영업: 견적관리(V2), 고객관리(V2), 수주관리 - 회계: 청구관리, 매입관리, 매출관리, 거래처관리, 악성채권 등 - 생산: 작업지시, 검수관리 - 출고: 출하관리 - 자재: 입고관리, 재고현황 - 고객센터: 문의관리, 이벤트관리, 공지관리 - 인사: 직원관리 - 설정: 권한관리 주요 변경사항: - 34개 xxxConfig.ts 파일 생성 (설정 기반 페이지 구성) - PageLayout/PageHeader → IntegratedDetailTemplate 통합 - 일관된 타이틀/버튼 영역 (목록, 상세, 수정, 삭제) - 1112줄 코드 감소 (중복 제거) 프로젝트 공통화 현황 분석 문서 추가: - 상세 페이지 62%, 목록 페이지 82% 공통화 달성 - 추가 공통화 기회 및 로드맵 정리 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -142,6 +142,8 @@ interface QuoteRegistrationV2Props {
|
||||
onCalculate?: () => void;
|
||||
initialData?: QuoteFormDataV2 | null;
|
||||
isLoading?: boolean;
|
||||
/** IntegratedDetailTemplate 사용 시 타이틀 영역 숨김 */
|
||||
hideHeader?: boolean;
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
@@ -155,6 +157,7 @@ export function QuoteRegistrationV2({
|
||||
onCalculate,
|
||||
initialData,
|
||||
isLoading = false,
|
||||
hideHeader = false,
|
||||
}: QuoteRegistrationV2Props) {
|
||||
// ---------------------------------------------------------------------------
|
||||
// 상태
|
||||
@@ -416,16 +419,19 @@ export function QuoteRegistrationV2({
|
||||
return (
|
||||
<div className="flex flex-col h-full">
|
||||
{/* 기본 정보 섹션 */}
|
||||
<div className="p-4 md:p-6 space-y-6">
|
||||
<div className="flex items-center justify-between">
|
||||
<h1 className="text-2xl font-bold flex items-center gap-2">
|
||||
<FileText className="h-6 w-6" />
|
||||
{pageTitle}
|
||||
</h1>
|
||||
<Badge variant={formData.status === "final" ? "default" : formData.status === "temporary" ? "secondary" : "outline"}>
|
||||
{formData.status === "final" ? "최종저장" : formData.status === "temporary" ? "임시저장" : "작성중"}
|
||||
</Badge>
|
||||
</div>
|
||||
<div className={hideHeader ? "space-y-6" : "p-4 md:p-6 space-y-6"}>
|
||||
{/* 타이틀 영역 - hideHeader 시 IntegratedDetailTemplate이 담당 */}
|
||||
{!hideHeader && (
|
||||
<div className="flex items-center justify-between">
|
||||
<h1 className="text-2xl font-bold flex items-center gap-2">
|
||||
<FileText className="h-6 w-6" />
|
||||
{pageTitle}
|
||||
</h1>
|
||||
<Badge variant={formData.status === "final" ? "default" : formData.status === "temporary" ? "secondary" : "outline"}>
|
||||
{formData.status === "final" ? "최종저장" : formData.status === "temporary" ? "임시저장" : "작성중"}
|
||||
</Badge>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* 기본 정보 */}
|
||||
<Card>
|
||||
|
||||
29
src/components/quotes/quoteConfig.ts
Normal file
29
src/components/quotes/quoteConfig.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { FileText } from 'lucide-react';
|
||||
import type { DetailConfig } from '@/components/templates/IntegratedDetailTemplate/types';
|
||||
|
||||
/**
|
||||
* 견적관리 상세 페이지 Config (V2 테스트)
|
||||
*
|
||||
* 참고: 이 config는 타이틀/뱃지 영역만 정의
|
||||
* 폼 내용은 QuoteRegistrationV2의 renderContent에서 처리
|
||||
* (자동 견적 산출, QuoteFooterBar 등 특수 기능 유지)
|
||||
*
|
||||
* 특이사항:
|
||||
* - view/edit/create 모드 지원
|
||||
* - 기본 버튼(수정/삭제/목록) 숨김 - QuoteFooterBar에서 처리
|
||||
* - 타이틀 영역만 IntegratedDetailTemplate이 담당
|
||||
*/
|
||||
export const quoteConfig: DetailConfig = {
|
||||
title: '견적',
|
||||
description: '견적 정보를 조회하고 관리합니다',
|
||||
icon: FileText,
|
||||
basePath: '/sales/quote-management',
|
||||
fields: [], // renderView/renderForm 사용으로 필드 정의 불필요
|
||||
gridColumns: 2,
|
||||
actions: {
|
||||
showBack: true,
|
||||
showDelete: false, // QuoteFooterBar에서 처리
|
||||
showEdit: false, // QuoteFooterBar에서 처리
|
||||
backLabel: '목록',
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user