feat: 모바일 반응형 UI 개선 및 공휴일/일정 시스템 통합

- MobileCard 접기/펼치기(collapsible) 기능 추가 및 반응형 레이아웃 개선
- DatePicker 공휴일/세무일정 색상 코딩 통합, DateTimePicker 신규 추가
- useCalendarScheduleInit 훅으로 전역 공휴일/일정 데이터 캐싱
- 전 도메인 날짜 필드 DatePicker 표준화 (104 files)
- 생산대시보드/작업지시 모바일 호환성 강화
- 견적서/주문관리 반응형 그리드 적용
- 회계 모듈 기능 개선 (매입상세 결재연동, 미수금현황 조회조건 등)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
유병철
2026-02-26 21:27:40 +09:00
parent 2777ecf664
commit b1686aaf66
107 changed files with 1703 additions and 970 deletions

View File

@@ -140,7 +140,7 @@ export function ManualInputModal({ open, onOpenChange, onSuccess }: ManualInputM
</div>
{/* 사용일 + 사용시간 (공통 DatePicker/TimePicker) */}
<div className="grid grid-cols-2 gap-4">
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div>
<Label className="text-sm font-medium">
<span className="text-red-500">*</span>
@@ -167,7 +167,7 @@ export function ManualInputModal({ open, onOpenChange, onSuccess }: ManualInputM
</div>
{/* 승인번호 + 승인유형 */}
<div className="grid grid-cols-2 gap-4">
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<FormField
label="승인번호"
value={formData.approvalNumber}
@@ -196,7 +196,7 @@ export function ManualInputModal({ open, onOpenChange, onSuccess }: ManualInputM
</div>
{/* 공급가액 + 세액 */}
<div className="grid grid-cols-2 gap-4">
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<FormField
type="number"
label="공급가액"
@@ -216,7 +216,7 @@ export function ManualInputModal({ open, onOpenChange, onSuccess }: ManualInputM
</div>
{/* 가맹점명 + 사업자번호 */}
<div className="grid grid-cols-2 gap-4">
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<FormField
label="가맹점명"
value={formData.merchantName}
@@ -233,7 +233,7 @@ export function ManualInputModal({ open, onOpenChange, onSuccess }: ManualInputM
</div>
{/* 공제여부 + 계정과목 (Select - FormField 예외) */}
<div className="grid grid-cols-2 gap-4">
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div>
<Label className="text-sm font-medium">
<span className="text-red-500">*</span>
@@ -272,7 +272,7 @@ export function ManualInputModal({ open, onOpenChange, onSuccess }: ManualInputM
</div>
{/* 증빙/판매자상호 + 내역 */}
<div className="grid grid-cols-2 gap-4">
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<FormField
label="증빙/판매자상호"
value={formData.vendorName}
@@ -297,7 +297,7 @@ export function ManualInputModal({ open, onOpenChange, onSuccess }: ManualInputM
/>
{/* 합계 금액 */}
<div className="bg-muted/50 rounded-lg p-3 flex items-center justify-between">
<div className="bg-muted/50 rounded-lg p-3 flex flex-col gap-1 sm:flex-row sm:items-center sm:justify-between">
<span className="text-sm font-medium"> ( + )</span>
<span className="text-lg font-bold">{formatNumber(totalAmount)}</span>
</div>