All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m13s
- PeFinalizeChip (single-source-of-truth pill): +nhánh phase===DaDuyet && !endsBeforeCeo → "✅ Đã được CEO duyệt" (đối xứng chip "⚑ Kết thúc · X" cho endsBeforeCeo=true) - Wire phase ở 6 call-site (PeListPanel + PurchaseEvaluationsListPage ×2 app + Inbox + Dashboard user) - FE-only, tận dụng endsBeforeCeo runtime (Mig 60 fix-3), no BE/mig; mirror 2-app SHA da9c3ed9, build ×2 PASS 0-TS-err Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
41 lines
1.7 KiB
TypeScript
41 lines
1.7 KiB
TypeScript
// PE — chip trạng thái cuối phiếu ở MỌI danh sách (cây danh sách + picker + inbox):
|
|
// [S89] "⚑ Kết thúc · X" khi quy trình có cấp AllowApproverFinalize (kết thúc, không lên CEO).
|
|
// [S97 anh Kiệt FDC] "✅ Đã được CEO duyệt" khi phiếu ĐÃ DUYỆT đi HẾT lên CEO (endsBeforeCeo=false).
|
|
// SINGLE SOURCE OF TRUTH — mọi người NẮM ngay trạng thái mà KHÔNG cần mở phiếu.
|
|
|
|
import { PurchaseEvaluationPhase } from '@/types/purchaseEvaluation'
|
|
|
|
export function PeFinalizeChip({
|
|
endsBeforeCeo,
|
|
finalizeStepName,
|
|
phase,
|
|
}: {
|
|
endsBeforeCeo: boolean
|
|
finalizeStepName: string | null
|
|
// PeListItem.phase là number (mirror BE) → prop nhận number, so khớp literal DaDuyet.
|
|
phase?: number
|
|
}) {
|
|
// [S97 anh Kiệt FDC] Phiếu đã duyệt KHÔNG kết thúc sớm = đi hết lên CEO/Ban Giám đốc.
|
|
if (!endsBeforeCeo) {
|
|
if (phase === PurchaseEvaluationPhase.DaDuyet) {
|
|
return (
|
|
<span
|
|
className="inline-flex shrink-0 items-center rounded bg-emerald-100 px-1.5 py-0.5 text-[11px] font-semibold text-emerald-800"
|
|
title="Phiếu đã được CEO / Ban Giám đốc duyệt (đi hết quy trình, không kết thúc sớm ở cấp dưới)"
|
|
>
|
|
✅ Đã được CEO duyệt
|
|
</span>
|
|
)
|
|
}
|
|
return null
|
|
}
|
|
return (
|
|
<span
|
|
className="inline-flex shrink-0 items-center rounded bg-violet-100 px-1.5 py-0.5 text-[11px] font-semibold text-violet-800"
|
|
title={`Quy trình kết thúc tại ${finalizeStepName ?? 'cấp này'} — không trình CEO`}
|
|
>
|
|
{finalizeStepName ? `⚑ Kết thúc · ${finalizeStepName}` : '⚑ Không lên CEO'}
|
|
</span>
|
|
)
|
|
}
|