88 lines
3.1 KiB
TypeScript
88 lines
3.1 KiB
TypeScript
"use client";
|
||
|
||
import React, { useState } from "react";
|
||
import { OrderRegistrationModal } from "@/components/order/OrderRegistrationModal";
|
||
import { Button } from "@/components/ui/button";
|
||
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
|
||
|
||
export default function TestOrderRegistrationPage() {
|
||
const [modalOpen, setModalOpen] = useState(false);
|
||
|
||
const handleSuccess = () => {
|
||
console.log("수주 등록 성공!");
|
||
};
|
||
|
||
return (
|
||
<div className="container mx-auto p-6 space-y-6">
|
||
<div>
|
||
<h1 className="text-3xl font-bold">수주 등록 테스트</h1>
|
||
<p className="text-muted-foreground mt-2">
|
||
EntitySearchInput + ModalRepeaterTable을 활용한 수주 등록 화면
|
||
</p>
|
||
</div>
|
||
|
||
<Card>
|
||
<CardHeader>
|
||
<CardTitle>수주 등록 모달</CardTitle>
|
||
<CardDescription>
|
||
모달 버튼을 클릭하여 수주 등록 화면을 테스트하세요
|
||
</CardDescription>
|
||
</CardHeader>
|
||
<CardContent>
|
||
<Button onClick={() => setModalOpen(true)}>
|
||
수주 등록 모달 열기
|
||
</Button>
|
||
</CardContent>
|
||
</Card>
|
||
|
||
<Card>
|
||
<CardHeader>
|
||
<CardTitle>구현된 기능</CardTitle>
|
||
</CardHeader>
|
||
<CardContent className="space-y-2 text-sm">
|
||
<div className="flex items-start gap-2">
|
||
<span className="text-primary">✓</span>
|
||
<span>EntitySearchInput: 거래처 검색 및 선택 (콤보 모드)</span>
|
||
</div>
|
||
<div className="flex items-start gap-2">
|
||
<span className="text-primary">✓</span>
|
||
<span>ModalRepeaterTable: 품목 검색 및 동적 추가</span>
|
||
</div>
|
||
<div className="flex items-start gap-2">
|
||
<span className="text-primary">✓</span>
|
||
<span>자동 계산: 수량 × 단가 = 금액</span>
|
||
</div>
|
||
<div className="flex items-start gap-2">
|
||
<span className="text-primary">✓</span>
|
||
<span>인라인 편집: 수량, 단가, 납품일, 비고 수정 가능</span>
|
||
</div>
|
||
<div className="flex items-start gap-2">
|
||
<span className="text-primary">✓</span>
|
||
<span>중복 방지: 이미 추가된 품목은 선택 불가</span>
|
||
</div>
|
||
<div className="flex items-start gap-2">
|
||
<span className="text-primary">✓</span>
|
||
<span>행 삭제: 추가된 품목 개별 삭제 가능</span>
|
||
</div>
|
||
<div className="flex items-start gap-2">
|
||
<span className="text-primary">✓</span>
|
||
<span>전체 금액 표시: 모든 품목 금액의 합계</span>
|
||
</div>
|
||
<div className="flex items-start gap-2">
|
||
<span className="text-primary">✓</span>
|
||
<span>입력 방식 전환: 거래처 우선 / 견대 방식 / 단가 방식</span>
|
||
</div>
|
||
</CardContent>
|
||
</Card>
|
||
|
||
{/* 수주 등록 모달 */}
|
||
<OrderRegistrationModal
|
||
open={modalOpen}
|
||
onOpenChange={setModalOpen}
|
||
onSuccess={handleSuccess}
|
||
/>
|
||
</div>
|
||
);
|
||
}
|
||
|