Files
solution-erp/fe-user/src/pages/pe/PurchaseEvaluationCreatePage.tsx
pqhuy1987 14f8d9d808 [CLAUDE] FE-User: PE + HĐ toggle "Nhập tay" + 2 fields manual budget mirror fe-admin
Chunk 4/5 — mirror y hệt Chunk 3 sang fe-user (rule §3.9 duplicate có chủ đích).

Files:
  ~ fe-user/src/types/purchaseEvaluation.ts — PeDetailBundle +2 field
  ~ fe-user/src/types/contracts.ts — ContractDetail +2 field
  ~ fe-user/src/components/pe/PeHeaderForm.tsx (copy từ fe-admin)
  ~ fe-user/src/components/pe/PeDetailTabs.tsx — Section "b. Ngân sách"
    fallback display khi !ev.budget + có manual data
  ~ fe-user/src/pages/pe/PurchaseEvaluationCreatePage.tsx (copy refactor wrap)
  ~ fe-user/src/pages/contracts/ContractCreatePage.tsx — toggle pattern cho
    NewContractForm + EditContractForm (giống fe-admin)

Verify: npm run build fe-user pass · 1904 modules · 0 TS error.

Next: Chunk 5 docs + push.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 12:40:29 +07:00

34 lines
1.3 KiB
TypeScript

// Page Create / edit header phiếu Duyệt NCC riêng (deep-link "Sửa header"
// button trong PeDetailTabs). Refactor 2026-05-07: wrap PeHeaderForm cho DRY
// + auto support manual budget (Mig 17). NCC + Báo giá + Items vẫn chỉnh ở
// Detail tabs sau khi save.
import { useNavigate, useSearchParams } from 'react-router-dom'
import { ClipboardCheck } from 'lucide-react'
import { PeHeaderForm } from '@/components/pe/PeHeaderForm'
import { PurchaseEvaluationType } from '@/types/purchaseEvaluation'
export function PurchaseEvaluationCreatePage() {
const navigate = useNavigate()
const [sp] = useSearchParams()
const editId = sp.get('id')
const urlType = sp.get('type') ? Number(sp.get('type')) : PurchaseEvaluationType.DuyetNcc
return (
<div className="space-y-4 p-6">
<header className="flex items-center gap-2">
<ClipboardCheck className="h-5 w-5 text-slate-500" />
<h1 className="text-base font-semibold tracking-tight text-slate-900">
{editId ? 'Sửa phiếu Duyệt NCC' : 'Tạo phiếu Duyệt NCC mới'}
</h1>
</header>
<PeHeaderForm
editId={editId}
defaultType={urlType}
onSaved={(id, type) => navigate(`/purchase-evaluations?id=${id}&type=${type}`)}
onCancel={() => navigate(-1)}
/>
</div>
)
}