From 9964ccbc1f85f95f7069de61ebe59f0cf207521d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A0=EB=B3=91=EC=B2=A0?= Date: Tue, 27 Jan 2026 20:10:48 +0900 Subject: [PATCH] =?UTF-8?q?fix(WEB):=20=EA=B2=AC=EC=A0=81=20=EA=B0=9C?= =?UTF-8?q?=EC=86=8C=20=EB=AA=A9=EB=A1=9D=20=ED=85=8C=EC=9D=B4=EB=B8=94=20?= =?UTF-8?q?=ED=99=95=EC=9E=A5=20=EB=B0=8F=20=EA=B2=AC=EC=A0=81=EC=84=9C=20?= =?UTF-8?q?=EB=AF=B8=EB=A6=AC=EB=B3=B4=EA=B8=B0=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit LocationListPanel: - 개소 목록 테이블 컬럼 확장 (층, 부호, 사이즈, 제품, 수량) - 수정/삭제 버튼 추가 - 테이블 헤더 스타일 변경 (어두운 배경) - 선택 행 스타일 변경 (blue → orange) QuotePreviewContent: - 공급자 정보 테이블 확장 (대표자, FAX, 종목 추가) - 품종 → 종류 라벨 변경 - 소계/할인율 행 레이아웃 개선 Co-Authored-By: Claude Opus 4.5 --- src/components/quotes/LocationListPanel.tsx | 57 +++++++++---- src/components/quotes/QuotePreviewContent.tsx | 80 +++++++++++-------- 2 files changed, 88 insertions(+), 49 deletions(-) diff --git a/src/components/quotes/LocationListPanel.tsx b/src/components/quotes/LocationListPanel.tsx index 2e57802b..e2bc6949 100644 --- a/src/components/quotes/LocationListPanel.tsx +++ b/src/components/quotes/LocationListPanel.tsx @@ -9,7 +9,7 @@ "use client"; import { useState, useCallback } from "react"; -import { Plus, Upload, Download } from "lucide-react"; +import { Plus, Upload, Download, Pencil, Trash2 } from "lucide-react"; import { toast } from "sonner"; import { Button } from "../ui/button"; @@ -455,19 +455,23 @@ export function LocationListPanel({ - {/* 개소 목록 테이블 (간소화: 부호, 사이즈만) */} + {/* 개소 목록 테이블 */}
- - 부호 - 사이즈 + + + 부호 + 사이즈 + 제품 + 수량 + {!disabled && } {locations.length === 0 ? ( - + 개소를 추가해주세요 @@ -476,18 +480,41 @@ export function LocationListPanel({ onSelectLocation(loc.id)} > - -
{loc.code}
-
{loc.productCode}
-
- -
{loc.openWidth}X{loc.openHeight}
-
{loc.floor} · {loc.quantity}개
-
+ {loc.floor} + {loc.code} + {loc.openWidth}X{loc.openHeight} + {loc.productCode} + {loc.quantity} + {!disabled && ( + +
+ + +
+
+ )}
)) )} diff --git a/src/components/quotes/QuotePreviewContent.tsx b/src/components/quotes/QuotePreviewContent.tsx index 63e062ee..6ff8d21f 100644 --- a/src/components/quotes/QuotePreviewContent.tsx +++ b/src/components/quotes/QuotePreviewContent.tsx @@ -8,6 +8,7 @@ * - calculation: 산출내역서 */ +import React from 'react'; import type { QuoteFormDataV2 } from './QuoteRegistrationV2'; // 양식 타입 @@ -138,23 +139,29 @@ export function QuotePreviewContent({
- + - + + + - + - + + + - + + +
상호회사명회사명
등록번호123-12-12345123-12-12345대표자홍길동
사업장주소주소명주소명
업태제조업제조업종목방화셔터, 금속창호
TEL031-123-1234031-123-1234FAX02-1234-1234
@@ -170,7 +177,7 @@ export function QuotePreviewContent({ No. - 품종 + 종류 부호 제품명 오픈사이즈 @@ -215,55 +222,56 @@ export function QuotePreviewContent({ {/* 소계 */} - - - {vatIncluded ? '공급가액 합계' : '소계'} + + 소계 + + {quoteData.locations.reduce((sum, loc) => sum + (loc.quantity || 0), 0)} + + + {subtotal.toLocaleString()} {/* 할인율 */} - - + 할인율 - - {hasDiscount ? `${discountRate.toFixed(1)}%` : '0.0%'} + + {hasDiscount ? `${discountRate.toFixed(1)} %` : '0.0 %'} {/* 할인금액 */} - - + 할인금액 - + {hasDiscount ? `-${discountAmount.toLocaleString()}` : '0'} + {/* 할인 후 금액 */} + + + 할인 후 금액 + + {afterDiscount.toLocaleString()} + + {/* 부가세 포함일 때 추가 행들 */} {vatIncluded && ( <> - - - 할인 후 공급가액 - - {afterDiscount.toLocaleString()} - - - - + 부가가치세 합계 {vat.toLocaleString()} - - + 총 견적금액 {grandTotal.toLocaleString()} @@ -299,14 +307,14 @@ export function QuotePreviewContent({ 수량 단위 단가 - 금액 + 합계 {quoteData.locations.map((loc) => ( - <> + {/* 각 개소별 품목 상세 */} - + {loc.symbol || '-'} 항목명 규격명 @@ -319,14 +327,18 @@ export function QuotePreviewContent({ {(loc.totalPrice || 0).toLocaleString()} - + ))} {/* 소계 */} - - - + + 소계 + + {quoteData.locations.reduce((sum, loc) => sum + (loc.quantity || 0), 0)} + + + {subtotal.toLocaleString()}