diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-11-11 10:18:06 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-11-11 10:18:06 +0000 |
| commit | 4098a22b43c6ebc51688d03db59fd510e72dee10 (patch) | |
| tree | ded7c8defce7031ae8d7933b2cd0d4e11115b9e4 /lib/general-contracts | |
| parent | 535de26b9cf3242c04543d6891d78352b9593a60 (diff) | |
(최겸) 구매 일반계약 수정중
Diffstat (limited to 'lib/general-contracts')
4 files changed, 281 insertions, 295 deletions
diff --git a/lib/general-contracts/detail/general-contract-basic-info.tsx b/lib/general-contracts/detail/general-contract-basic-info.tsx index fb08da87..54c083ff 100644 --- a/lib/general-contracts/detail/general-contract-basic-info.tsx +++ b/lib/general-contracts/detail/general-contract-basic-info.tsx @@ -356,41 +356,31 @@ export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { {/* 기본 정보 탭 */}
<TabsContent value="basic" className="space-y-6">
- {/* 계약확정범위 */}
<Card>
- <CardHeader>
- <CardTitle>계약확정범위</CardTitle>
- </CardHeader>
- <CardContent>
- <div className="grid gap-4">
- <div className="flex flex-col gap-2">
- <Label htmlFor="contractScope">계약확정범위 *</Label>
- <Select
- value={formData.contractScope}
- onValueChange={(value) => setFormData(prev => ({ ...prev, contractScope: value }))}
- >
- <SelectTrigger>
- <SelectValue placeholder="계약확정범위 선택" />
- </SelectTrigger>
- <SelectContent>
- {GENERAL_CONTRACT_SCOPES.map((scope) => (
- <SelectItem key={scope} value={scope}>
- {scope}
- </SelectItem>
- ))}
- </SelectContent>
- </Select>
- </div>
- </div>
- </CardContent>
- </Card>
-
- <Card>
- {/* 보증기간 및 단가유형 */}
+ {/* 계약확정범위 및 보증기간/단가유형 */}
<CardHeader>
- <CardTitle>보증기간 및 단가유형</CardTitle>
+ <CardTitle>계약확정범위 및 보증기간/단가유형</CardTitle>
</CardHeader>
<CardContent className="space-y-4">
+ {/* 계약확정범위 */}
+ <div className="flex flex-col gap-2">
+ <Label htmlFor="contractScope">계약확정범위 *</Label>
+ <Select
+ value={formData.contractScope}
+ onValueChange={(value) => setFormData(prev => ({ ...prev, contractScope: value }))}
+ >
+ <SelectTrigger>
+ <SelectValue placeholder="계약확정범위 선택" />
+ </SelectTrigger>
+ <SelectContent>
+ {GENERAL_CONTRACT_SCOPES.map((scope) => (
+ <SelectItem key={scope} value={scope}>
+ {scope}
+ </SelectItem>
+ ))}
+ </SelectContent>
+ </Select>
+ </div>
{/* 3그리드: 보증기간, 사양, 단가 */}
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
{/* 보증기간 */}
@@ -878,31 +868,31 @@ export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { <CardTitle>Payment & Delivery Conditions (지급/인도 조건)</CardTitle>
</CardHeader>
<CardContent className="space-y-6">
- <div className="grid grid-cols-5 gap-6">
+ <div className="grid grid-cols-6 gap-4">
{/* 납품 전 지급조건 */}
- <div className="space-y-4">
- <Label className="text-base font-medium">납품 전</Label>
- <div className="space-y-3">
- <div className="flex items-center space-x-2">
+ <div className="space-y-2">
+ <Label className="text-sm font-medium">납품 전</Label>
+ <div className="space-y-2">
+ <div className="flex items-center space-x-1">
<input
type="checkbox"
- id="apBond"
+ id="apBond"
checked={formData.paymentBeforeDelivery.apBond || false}
- onChange={(e) => setFormData(prev => ({
- ...prev,
- paymentBeforeDelivery: {
- ...prev.paymentBeforeDelivery,
- apBond: e.target.checked
- }
+ onChange={(e) => setFormData(prev => ({
+ ...prev,
+ paymentBeforeDelivery: {
+ ...prev.paymentBeforeDelivery,
+ apBond: e.target.checked
+ }
}))}
- className="rounded"
+ className="rounded w-4 h-4"
/>
- <Label htmlFor="apBond" className="text-sm">AP Bond & Performance Bond</Label>
+ <Label htmlFor="apBond" className="text-xs">AP Bond</Label>
<Input
type="number"
min="0"
placeholder="%"
- className="w-16"
+ className="w-16 h-6 text-xs"
value={formData.paymentBeforeDelivery.apBondPercent || ''}
onChange={(e) => setFormData(prev => ({
...prev,
@@ -914,26 +904,26 @@ export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { disabled={!formData.paymentBeforeDelivery.apBond}
/>
</div>
- <div className="flex items-center space-x-2">
+ <div className="flex items-center space-x-1">
<input
type="checkbox"
- id="drawingSubmission"
+ id="drawingSubmission"
checked={formData.paymentBeforeDelivery.drawingSubmission || false}
- onChange={(e) => setFormData(prev => ({
- ...prev,
- paymentBeforeDelivery: {
- ...prev.paymentBeforeDelivery,
- drawingSubmission: e.target.checked
- }
+ onChange={(e) => setFormData(prev => ({
+ ...prev,
+ paymentBeforeDelivery: {
+ ...prev.paymentBeforeDelivery,
+ drawingSubmission: e.target.checked
+ }
}))}
- className="rounded"
+ className="rounded w-4 h-4"
/>
- <Label htmlFor="drawingSubmission" className="text-sm">도면제출</Label>
+ <Label htmlFor="drawingSubmission" className="text-xs">도면제출</Label>
<Input
type="number"
min="0"
placeholder="%"
- className="w-16"
+ className="w-16 h-6 text-xs"
value={formData.paymentBeforeDelivery.drawingSubmissionPercent || ''}
onChange={(e) => setFormData(prev => ({
...prev,
@@ -945,26 +935,26 @@ export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { disabled={!formData.paymentBeforeDelivery.drawingSubmission}
/>
</div>
- <div className="flex items-center space-x-2">
+ <div className="flex items-center space-x-1">
<input
type="checkbox"
- id="materialPurchase"
+ id="materialPurchase"
checked={formData.paymentBeforeDelivery.materialPurchase || false}
- onChange={(e) => setFormData(prev => ({
- ...prev,
- paymentBeforeDelivery: {
- ...prev.paymentBeforeDelivery,
- materialPurchase: e.target.checked
- }
+ onChange={(e) => setFormData(prev => ({
+ ...prev,
+ paymentBeforeDelivery: {
+ ...prev.paymentBeforeDelivery,
+ materialPurchase: e.target.checked
+ }
}))}
- className="rounded"
+ className="rounded w-4 h-4"
/>
- <Label htmlFor="materialPurchase" className="text-sm">소재구매 문서</Label>
+ <Label htmlFor="materialPurchase" className="text-xs">소재구매</Label>
<Input
type="number"
min="0"
placeholder="%"
- className="w-16"
+ className="w-16 h-6 text-xs"
value={formData.paymentBeforeDelivery.materialPurchasePercent || ''}
onChange={(e) => setFormData(prev => ({
...prev,
@@ -976,26 +966,26 @@ export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { disabled={!formData.paymentBeforeDelivery.materialPurchase}
/>
</div>
- <div className="flex items-center space-x-2">
+ <div className="flex items-center space-x-1">
<input
type="checkbox"
id="additionalConditionBefore"
checked={formData.paymentBeforeDelivery.additionalCondition || false}
- onChange={(e) => setFormData(prev => ({
- ...prev,
- paymentBeforeDelivery: {
- ...prev.paymentBeforeDelivery,
- additionalCondition: e.target.checked
- }
+ onChange={(e) => setFormData(prev => ({
+ ...prev,
+ paymentBeforeDelivery: {
+ ...prev.paymentBeforeDelivery,
+ additionalCondition: e.target.checked
+ }
}))}
- className="rounded"
+ className="rounded w-4 h-4"
/>
- <Label htmlFor="additionalConditionBefore" className="text-sm">추가조건</Label>
+ <Label htmlFor="additionalConditionBefore" className="text-xs">추가조건</Label>
<Input
type="number"
min="0"
placeholder="%"
- className="w-16"
+ className="w-16 h-6 text-xs"
value={formData.paymentBeforeDelivery.additionalConditionPercent || ''}
onChange={(e) => setFormData(prev => ({
...prev,
@@ -1011,69 +1001,62 @@ export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { </div>
{/* 납품 지급조건 */}
- <div className="space-y-4">
- <Label className="text-base font-medium">납품</Label>
- <div className="space-y-3">
- <div className="space-y-2">
- <Label htmlFor="paymentDelivery">납품 지급조건 <span className="text-red-600">*</span></Label>
+ <div className="space-y-2">
+ <Label className="text-sm font-medium">납품</Label>
+ <div className="space-y-2">
+ <div className="space-y-1">
+ <Label htmlFor="paymentDelivery" className="text-xs">지급조건 *</Label>
<Select value={formData.paymentDelivery} onValueChange={(value) => setFormData(prev => ({ ...prev, paymentDelivery: value }))}>
- <SelectTrigger className={errors.paymentDelivery ? 'border-red-500' : ''}>
- <SelectValue placeholder="납품 지급조건을 선택하세요" />
+ <SelectTrigger className={`h-8 text-xs ${errors.paymentDelivery ? 'border-red-500' : ''}`}>
+ <SelectValue placeholder="선택" />
</SelectTrigger>
<SelectContent>
- {/* Payment term 검색 옵션들 */}
{paymentTermsOptions.map((term) => (
- <SelectItem key={term.code} value={term.code}>
- {term.code} - {term.description}
+ <SelectItem key={term.code} value={term.code} className="text-xs">
+ {term.code}
</SelectItem>
))}
- <SelectItem value="납품완료일로부터 60일 이내 지급">납품완료일로부터 60일 이내 지급</SelectItem>
- <SelectItem value="추가조건">추가조건</SelectItem>
+ <SelectItem value="납품완료일로부터 60일 이내 지급" className="text-xs">60일 이내</SelectItem>
+ <SelectItem value="추가조건" className="text-xs">추가조건</SelectItem>
</SelectContent>
</Select>
- {/* 추가조건 선택 시 수기 입력 필드 */}
{formData.paymentDelivery === '추가조건' && (
- <div className="mt-2">
- <Input
- type="text"
- value={formData.paymentDeliveryAdditionalText || ''}
- onChange={(e) => setFormData(prev => ({ ...prev, paymentDeliveryAdditionalText: e.target.value }))}
- placeholder="추가조건을 입력하세요"
- className="w-full"
- />
- </div>
- )}
- {errors.paymentDelivery && (
- <p className="text-sm text-red-600">납품 지급조건은 필수값입니다.</p>
+ <Input
+ type="text"
+ value={formData.paymentDeliveryAdditionalText || ''}
+ onChange={(e) => setFormData(prev => ({ ...prev, paymentDeliveryAdditionalText: e.target.value }))}
+ placeholder="추가조건"
+ className="h-6 text-xs mt-1"
+ />
)}
</div>
</div>
</div>
{/* 납품 외 지급조건 */}
- <div className="space-y-4">
- <Label className="text-base font-medium">납품 외</Label>
- <div className="space-y-3">
- <div className="flex items-center space-x-2">
+ <div className="space-y-2">
+ <Label className="text-sm font-medium">납품 외</Label>
+ <div className="space-y-2">
+ <div className="flex items-center space-x-1">
<input
type="checkbox"
- id="commissioning"
+ id="commissioning"
checked={formData.paymentAfterDelivery.commissioning || false}
- onChange={(e) => setFormData(prev => ({
- ...prev,
- paymentAfterDelivery: {
- ...prev.paymentAfterDelivery,
- commissioning: e.target.checked
- }
+ onChange={(e) => setFormData(prev => ({
+ ...prev,
+ paymentAfterDelivery: {
+ ...prev.paymentAfterDelivery,
+ commissioning: e.target.checked
+ }
}))}
- className="rounded"
+ className="rounded w-4 h-4"
/>
- <Label htmlFor="commissioning" className="text-sm">Commissioning 완료</Label>
+ <Label htmlFor="commissioning" className="text-xs">Commissioning</Label>
<Input
type="number"
min="0"
placeholder="%"
- className="w-16"
+ className="w-16 h-6 text-xs"
value={formData.paymentAfterDelivery.commissioningPercent || ''}
onChange={(e) => setFormData(prev => ({
...prev,
@@ -1085,26 +1068,26 @@ export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { disabled={!formData.paymentAfterDelivery.commissioning}
/>
</div>
- <div className="flex items-center space-x-2">
+ <div className="flex items-center space-x-1">
<input
type="checkbox"
- id="finalDocument"
+ id="finalDocument"
checked={formData.paymentAfterDelivery.finalDocument || false}
- onChange={(e) => setFormData(prev => ({
- ...prev,
- paymentAfterDelivery: {
- ...prev.paymentAfterDelivery,
- finalDocument: e.target.checked
- }
+ onChange={(e) => setFormData(prev => ({
+ ...prev,
+ paymentAfterDelivery: {
+ ...prev.paymentAfterDelivery,
+ finalDocument: e.target.checked
+ }
}))}
- className="rounded"
+ className="rounded w-4 h-4"
/>
- <Label htmlFor="finalDocument" className="text-sm">최종문서 승인</Label>
+ <Label htmlFor="finalDocument" className="text-xs">최종문서</Label>
<Input
type="number"
min="0"
placeholder="%"
- className="w-16"
+ className="w-16 h-6 text-xs"
value={formData.paymentAfterDelivery.finalDocumentPercent || ''}
onChange={(e) => setFormData(prev => ({
...prev,
@@ -1116,32 +1099,32 @@ export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { disabled={!formData.paymentAfterDelivery.finalDocument}
/>
</div>
- <div className="flex items-center space-x-2">
+ <div className="flex items-center space-x-1">
<input
type="checkbox"
- id="other"
+ id="other"
checked={formData.paymentAfterDelivery.other || false}
- onChange={(e) => setFormData(prev => ({
- ...prev,
- paymentAfterDelivery: {
- ...prev.paymentAfterDelivery,
- other: e.target.checked
- }
+ onChange={(e) => setFormData(prev => ({
+ ...prev,
+ paymentAfterDelivery: {
+ ...prev.paymentAfterDelivery,
+ other: e.target.checked
+ }
}))}
- className="rounded"
+ className="rounded w-4 h-4"
/>
- <Label htmlFor="other" className="text-sm">기타</Label>
+ <Label htmlFor="other" className="text-xs">기타</Label>
<Input
type="text"
- placeholder="기타 조건을 입력하세요"
- className="w-48"
+ placeholder="기타"
+ className="w-16 h-6 text-xs"
value={formData.paymentAfterDelivery.otherText || ''}
- onChange={(e) => setFormData(prev => ({
- ...prev,
- paymentAfterDelivery: {
- ...prev.paymentAfterDelivery,
- otherText: e.target.value
- }
+ onChange={(e) => setFormData(prev => ({
+ ...prev,
+ paymentAfterDelivery: {
+ ...prev.paymentAfterDelivery,
+ otherText: e.target.value
+ }
}))}
disabled={!formData.paymentAfterDelivery.other}
/>
@@ -1150,81 +1133,75 @@ export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { </div>
{/* 지불조건 */}
- <div className="space-y-4">
- <Label className="text-base font-medium">지불조건</Label>
- <div className="space-y-3">
- <div className="space-y-2">
- <Label htmlFor="paymentTerm">지불조건 <span className="text-red-600">*</span></Label>
+ <div className="space-y-2">
+ <Label className="text-sm font-medium">지불조건</Label>
+ <div className="space-y-2">
+ <div className="space-y-1">
+ <Label htmlFor="paymentTerm" className="text-xs">지불조건 *</Label>
<Select
value={formData.paymentTerm}
onValueChange={(value) => setFormData(prev => ({ ...prev, paymentTerm: value }))}
>
- <SelectTrigger className={errors.paymentTerm ? 'border-red-500' : ''}>
- <SelectValue placeholder="지불조건을 선택하세요" />
+ <SelectTrigger className={`h-8 text-xs ${errors.paymentTerm ? 'border-red-500' : ''}`}>
+ <SelectValue placeholder="선택" />
</SelectTrigger>
<SelectContent>
{paymentTermsOptions.length > 0 ? (
paymentTermsOptions.map((option) => (
- <SelectItem key={option.code} value={option.code}>
- {option.code} {option.description && `(${option.description})`}
+ <SelectItem key={option.code} value={option.code} className="text-xs">
+ {option.code}
</SelectItem>
))
) : (
- <SelectItem value="loading" disabled>
- 데이터를 불러오는 중...
+ <SelectItem value="loading" disabled className="text-xs">
+ 로딩중...
</SelectItem>
)}
</SelectContent>
</Select>
- {errors.paymentTerm && (
- <p className="text-sm text-red-600">지불조건은 필수값입니다.</p>
- )}
</div>
- <div className="space-y-2">
- <Label htmlFor="taxType">세금조건 <span className="text-red-600">*</span></Label>
+ <div className="space-y-1">
+ <Label htmlFor="taxType" className="text-xs">세금조건 *</Label>
<Select
value={formData.taxType}
onValueChange={(value) => setFormData(prev => ({ ...prev, taxType: value }))}
>
- <SelectTrigger className={errors.taxType ? 'border-red-500' : ''}>
- <SelectValue placeholder="세금조건을 선택하세요" />
+ <SelectTrigger className={`h-8 text-xs ${errors.taxType ? 'border-red-500' : ''}`}>
+ <SelectValue placeholder="선택" />
</SelectTrigger>
<SelectContent>
{TAX_CONDITIONS.map((condition) => (
- <SelectItem key={condition.code} value={condition.code}>
+ <SelectItem key={condition.code} value={condition.code} className="text-xs">
{condition.name}
</SelectItem>
))}
</SelectContent>
</Select>
- {errors.taxType && (
- <p className="text-sm text-red-600">세금조건은 필수값입니다.</p>
- )}
</div>
</div>
</div>
{/* 클레임금액 */}
- <div className="space-y-4">
- <Label className="text-base font-medium">클레임금액</Label>
- <div className="space-y-3">
- <div className="flex items-center space-x-2">
+ <div className="space-y-2">
+ <Label className="text-sm font-medium">클레임금액</Label>
+ <div className="space-y-2">
+ <div className="flex items-center space-x-1">
<input
type="checkbox"
- id="liquidatedDamages"
+ id="liquidatedDamages"
checked={formData.liquidatedDamages || false}
- onChange={(e) => setFormData(prev => ({
- ...prev,
- liquidatedDamages: e.target.checked
+ onChange={(e) => setFormData(prev => ({
+ ...prev,
+ liquidatedDamages: e.target.checked
}))}
- className="rounded"
+ className="rounded w-4 h-4"
/>
- <Label htmlFor="liquidatedDamages" className="text-sm">지체상금</Label>
+ <Label htmlFor="liquidatedDamages" className="text-xs">지체상금</Label>
<Input
type="number"
min="0"
placeholder="%"
- className="w-16"
+ className="w-16 h-6 text-xs"
value={formData.liquidatedDamagesPercent || ''}
onChange={(e) => setFormData(prev => ({
...prev,
@@ -1238,130 +1215,111 @@ export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { </div>
{/* 인도조건 섹션 */}
- <div className="mt-8">
- <h3 className="text-lg font-semibold mb-4">인도조건</h3>
- <div className="grid grid-cols-5 gap-6">
+ <div className="mt-6">
+ <h3 className="text-base font-semibold mb-3">인도조건</h3>
+ <div className="grid grid-cols-6 gap-4">
{/* 납기종류 */}
- <div className="space-y-4">
- <div className="space-y-3">
- <div className="space-y-2">
- <Label htmlFor="deliveryType">납기종류</Label>
- <Select value={formData.deliveryType} onValueChange={(value) => setFormData(prev => ({ ...prev, deliveryType: value }))}>
- <SelectTrigger>
- <SelectValue placeholder="납기종류를 선택하세요" />
- </SelectTrigger>
- <SelectContent>
- <SelectItem value="단일납기">단일납기</SelectItem>
- <SelectItem value="분할납기">분할납기</SelectItem>
- <SelectItem value="구간납기">구간납기</SelectItem>
- </SelectContent>
- </Select>
- </div>
- </div>
+ <div className="space-y-2">
+ <Label htmlFor="deliveryType" className="text-xs">납기종류</Label>
+ <Select value={formData.deliveryType} onValueChange={(value) => setFormData(prev => ({ ...prev, deliveryType: value }))}>
+ <SelectTrigger className="h-8 text-xs">
+ <SelectValue placeholder="선택" />
+ </SelectTrigger>
+ <SelectContent>
+ <SelectItem value="단일납기" className="text-xs">단일납기</SelectItem>
+ <SelectItem value="분할납기" className="text-xs">분할납기</SelectItem>
+ <SelectItem value="구간납기" className="text-xs">구간납기</SelectItem>
+ </SelectContent>
+ </Select>
</div>
{/* 인도조건 */}
- <div className="space-y-4">
- <div className="space-y-3">
- <div className="space-y-2">
- <Label htmlFor="deliveryTerm">인도조건</Label>
- <Select
- value={formData.deliveryTerm}
- onValueChange={(value) => setFormData(prev => ({ ...prev, deliveryTerm: value }))}
- >
- <SelectTrigger>
- <SelectValue placeholder="인도조건을 선택하세요" />
- </SelectTrigger>
- <SelectContent>
- {incotermsOptions.length > 0 ? (
- incotermsOptions.map((option) => (
- <SelectItem key={option.code} value={option.code}>
- {option.code} {option.description && `(${option.description})`}
- </SelectItem>
- ))
- ) : (
- <SelectItem value="loading" disabled>
- 데이터를 불러오는 중...
- </SelectItem>
- )}
- </SelectContent>
- </Select>
- </div>
- </div>
+ <div className="space-y-2">
+ <Label htmlFor="deliveryTerm" className="text-xs">인도조건</Label>
+ <Select
+ value={formData.deliveryTerm}
+ onValueChange={(value) => setFormData(prev => ({ ...prev, deliveryTerm: value }))}
+ >
+ <SelectTrigger className="h-8 text-xs">
+ <SelectValue placeholder="선택" />
+ </SelectTrigger>
+ <SelectContent>
+ {incotermsOptions.length > 0 ? (
+ incotermsOptions.map((option) => (
+ <SelectItem key={option.code} value={option.code} className="text-xs">
+ {option.code}
+ </SelectItem>
+ ))
+ ) : (
+ <SelectItem value="loading" disabled className="text-xs">
+ 로딩중...
+ </SelectItem>
+ )}
+ </SelectContent>
+ </Select>
</div>
{/* 선적지 */}
- <div className="space-y-4">
- <div className="space-y-3">
- <div className="space-y-2">
- <Label htmlFor="shippingLocation">선적지</Label>
- <Select
- value={formData.shippingLocation}
- onValueChange={(value) => setFormData(prev => ({ ...prev, shippingLocation: value }))}
- >
- <SelectTrigger>
- <SelectValue placeholder="선적지를 선택하세요" />
- </SelectTrigger>
- <SelectContent>
- {shippingPlaces.length > 0 ? (
- shippingPlaces.map((place) => (
- <SelectItem key={place.code} value={place.code}>
- {place.code} {place.description && `(${place.description})`}
- </SelectItem>
- ))
- ) : (
- <SelectItem value="loading" disabled>
- 데이터를 불러오는 중...
- </SelectItem>
- )}
- </SelectContent>
- </Select>
- </div>
- </div>
+ <div className="space-y-2">
+ <Label htmlFor="shippingLocation" className="text-xs">선적지</Label>
+ <Select
+ value={formData.shippingLocation}
+ onValueChange={(value) => setFormData(prev => ({ ...prev, shippingLocation: value }))}
+ >
+ <SelectTrigger className="h-8 text-xs">
+ <SelectValue placeholder="선택" />
+ </SelectTrigger>
+ <SelectContent>
+ {shippingPlaces.length > 0 ? (
+ shippingPlaces.map((place) => (
+ <SelectItem key={place.code} value={place.code} className="text-xs">
+ {place.code}
+ </SelectItem>
+ ))
+ ) : (
+ <SelectItem value="loading" disabled className="text-xs">
+ 로딩중...
+ </SelectItem>
+ )}
+ </SelectContent>
+ </Select>
</div>
{/* 하역지 */}
- <div className="space-y-4">
- <div className="space-y-3">
- <div className="space-y-2">
- <Label htmlFor="dischargeLocation">하역지</Label>
- <Select
- value={formData.dischargeLocation}
- onValueChange={(value) => setFormData(prev => ({ ...prev, dischargeLocation: value }))}
- >
- <SelectTrigger>
- <SelectValue placeholder="하역지를 선택하세요" />
- </SelectTrigger>
- <SelectContent>
- {destinationPlaces.length > 0 ? (
- destinationPlaces.map((place) => (
- <SelectItem key={place.code} value={place.code}>
- {place.code} {place.description && `(${place.description})`}
- </SelectItem>
- ))
- ) : (
- <SelectItem value="loading" disabled>
- 데이터를 불러오는 중...
- </SelectItem>
- )}
- </SelectContent>
- </Select>
- </div>
- </div>
+ <div className="space-y-2">
+ <Label htmlFor="dischargeLocation" className="text-xs">하역지</Label>
+ <Select
+ value={formData.dischargeLocation}
+ onValueChange={(value) => setFormData(prev => ({ ...prev, dischargeLocation: value }))}
+ >
+ <SelectTrigger className="h-8 text-xs">
+ <SelectValue placeholder="선택" />
+ </SelectTrigger>
+ <SelectContent>
+ {destinationPlaces.length > 0 ? (
+ destinationPlaces.map((place) => (
+ <SelectItem key={place.code} value={place.code} className="text-xs">
+ {place.code}
+ </SelectItem>
+ ))
+ ) : (
+ <SelectItem value="loading" disabled className="text-xs">
+ 로딩중...
+ </SelectItem>
+ )}
+ </SelectContent>
+ </Select>
</div>
{/* 계약납기일 */}
- <div className="space-y-4">
- <div className="space-y-3">
- <div className="space-y-2">
- <Label htmlFor="contractDeliveryDate">계약납기일</Label>
- <Input
- type="date"
- value={formData.contractDeliveryDate}
- onChange={(e) => setFormData(prev => ({ ...prev, contractDeliveryDate: e.target.value }))}
- />
- </div>
- </div>
+ <div className="space-y-2">
+ <Label htmlFor="contractDeliveryDate" className="text-xs">계약납기일</Label>
+ <Input
+ type="date"
+ value={formData.contractDeliveryDate}
+ onChange={(e) => setFormData(prev => ({ ...prev, contractDeliveryDate: e.target.value }))}
+ className="h-8 text-xs"
+ />
</div>
</div>
</div>
diff --git a/lib/general-contracts/main/general-contract-update-sheet.tsx b/lib/general-contracts/main/general-contract-update-sheet.tsx index 074558ec..ac49faca 100644 --- a/lib/general-contracts/main/general-contract-update-sheet.tsx +++ b/lib/general-contracts/main/general-contract-update-sheet.tsx @@ -254,10 +254,28 @@ export function GeneralContractUpdateSheet({ </SelectContent> </Select> <FormMessage /> + {field.value === 'SC' && ( + <p className="text-sm text-blue-600 mt-1"> + 납품예정 품목 및 수량을 명기하세요. 납품 품목 또는 작업 내용은 구체적으로 작성하되, 수량(물량)이 정확하지 않을 경우, 상호협의하에 변경 가능하며, 수량(물량) 등은 개별계약(PO)시 명기하세요 + </p> + )} </FormItem> )} /> + {/* 계약번호 */} + <div className="space-y-2"> + <label className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"> + 계약번호 + </label> + <Input + placeholder="계약번호" + value={contract?.contractNumber || ""} + readOnly + className="bg-gray-50" + /> + </div> + {/* 체결방식 */} <FormField control={form.control} @@ -304,6 +322,19 @@ export function GeneralContractUpdateSheet({ )} /> + {/* 협력업체명 + 코드 */} + <div className="space-y-2"> + <label className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"> + 협력업체 + </label> + <Input + placeholder="협력업체명 + 코드" + value={contract?.vendorName ? `${contract.vendorName}${contract.vendorCode ? ` (${contract.vendorCode})` : ''}` : ""} + readOnly + className="bg-gray-50" + /> + </div> + {/* 계약시작일 */} <FormField control={form.control} @@ -356,7 +387,7 @@ export function GeneralContractUpdateSheet({ /> {/* 계약확정범위 */} - <FormField + {/* <FormField control={form.control} name="contractScope" render={({ field }) => ( @@ -380,7 +411,7 @@ export function GeneralContractUpdateSheet({ </p> </FormItem> )} - /> + /> */} {/* 비고 */} <FormField diff --git a/lib/general-contracts/main/general-contracts-table.tsx b/lib/general-contracts/main/general-contracts-table.tsx index 503527b3..813c1798 100644 --- a/lib/general-contracts/main/general-contracts-table.tsx +++ b/lib/general-contracts/main/general-contracts-table.tsx @@ -75,8 +75,6 @@ export function GeneralContractsTable({ promises }: GeneralContractsTableProps) const [updateSheetOpen, setUpdateSheetOpen] = React.useState(false)
const [selectedContract, setSelectedContract] = React.useState<GeneralContractListItem | null>(null)
- console.log(data, "data")
-
const router = useRouter()
const columns = React.useMemo(
diff --git a/lib/general-contracts/service.ts b/lib/general-contracts/service.ts index 77593f29..1b1d5c9f 100644 --- a/lib/general-contracts/service.ts +++ b/lib/general-contracts/service.ts @@ -164,7 +164,6 @@ export async function getGeneralContracts(input: GetGeneralContractsSchema) { return { data: [], pageCount: 0, total: 0 }
}
- console.log("Total contracts:", total)
// ✅ 6) 정렬 및 페이징
const orderByColumns: any[] = []
|
