{/* List body */}
@@ -150,10 +163,10 @@ export function PeListPanel({
- {PurchaseEvaluationPhaseLabel[p.phase]}
+ {PeDisplayStatusLabel[getPeDisplayStatus(p.phase)]}
@@ -195,3 +208,16 @@ export function PeListPanel({
)
}
+
+// Map display status → phase enum cho filter dropdown.
+// Bản nháp = DangSoanThao (1), Đã duyệt = DaDuyet (7), Từ chối = TuChoi (99).
+// Đã gửi duyệt = không filter exact phase (cần BE hỗ trợ multi-phase filter
+// hoặc filter client-side). Tạm thời: trả về '' (không filter) → list show
+// hết, user vẫn thấy được phiếu Đã gửi duyệt cùng với tất cả khác. Trade-off
+// chấp nhận tới khi BE thêm multi-phase param.
+function statusToPhaseValue(status: PeDisplayStatus): string {
+ if (status === PeDisplayStatus.BanNhap) return String(PurchaseEvaluationPhase.DangSoanThao)
+ if (status === PeDisplayStatus.DaDuyet) return String(PurchaseEvaluationPhase.DaDuyet)
+ if (status === PeDisplayStatus.TuChoi) return String(PurchaseEvaluationPhase.TuChoi)
+ return '' // DaGuiDuyet — multi-phase, không filter exact (TODO BE add support)
+}
diff --git a/fe-admin/src/pages/pe/PurchaseEvaluationWorkspacePage.tsx b/fe-admin/src/pages/pe/PurchaseEvaluationWorkspacePage.tsx
index 8707212..4870150 100644
--- a/fe-admin/src/pages/pe/PurchaseEvaluationWorkspacePage.tsx
+++ b/fe-admin/src/pages/pe/PurchaseEvaluationWorkspacePage.tsx
@@ -20,6 +20,7 @@ import { PeWorkspaceCreateView } from '@/components/pe/PeWorkspaceCreateView'
import { api } from '@/lib/api'
import { getErrorMessage } from '@/lib/apiError'
import {
+ PurchaseEvaluationPhase,
PurchaseEvaluationType,
PurchaseEvaluationTypeLabel,
type PeDetailBundle,
@@ -78,7 +79,9 @@ export function PurchaseEvaluationWorkspacePage() {
- {/* Panel 1: List pure picker + sticky create + pencil edit hover */}
+ {/* Panel 1: List pure picker + sticky create + pencil edit hover.
+ Workspace chỉ list phiếu Bản nháp (DangSoanThao) — đã gửi duyệt rồi
+ không hiện ở đây (vào Danh sách / Duyệt). User 2026-05-07. */}
setParams({ mode: 'new', id: null, editHeader: null })}
onEditClick={id => setParams({ id, mode: null, editHeader: '1' })}
+ forcedPhase={PurchaseEvaluationPhase.DangSoanThao}
/>
{/* Panel 2: Empty | Header form | Detail tabs (workspace mode) */}
diff --git a/fe-admin/src/pages/pe/PurchaseEvaluationsListPage.tsx b/fe-admin/src/pages/pe/PurchaseEvaluationsListPage.tsx
index f3f42c9..7d348a2 100644
--- a/fe-admin/src/pages/pe/PurchaseEvaluationsListPage.tsx
+++ b/fe-admin/src/pages/pe/PurchaseEvaluationsListPage.tsx
@@ -14,10 +14,12 @@ import { getErrorMessage } from '@/lib/apiError'
import { cn } from '@/lib/cn'
import type { Paged } from '@/types/master'
import {
+ PeDisplayStatus,
+ PeDisplayStatusColor,
+ PeDisplayStatusLabel,
PurchaseEvaluationPhase,
- PurchaseEvaluationPhaseColor,
- PurchaseEvaluationPhaseLabel,
PurchaseEvaluationTypeLabel,
+ getPeDisplayStatus,
type PeDetailBundle,
type PeListItem,
} from '@/types/purchaseEvaluation'
@@ -124,10 +126,19 @@ export function PurchaseEvaluationsListPage() {
/>
{/* List body */}
@@ -150,10 +163,10 @@ export function PeListPanel({
- {PurchaseEvaluationPhaseLabel[p.phase]}
+ {PeDisplayStatusLabel[getPeDisplayStatus(p.phase)]}
@@ -195,3 +208,16 @@ export function PeListPanel({
)
}
+
+// Map display status → phase enum cho filter dropdown.
+// Bản nháp = DangSoanThao (1), Đã duyệt = DaDuyet (7), Từ chối = TuChoi (99).
+// Đã gửi duyệt = không filter exact phase (cần BE hỗ trợ multi-phase filter
+// hoặc filter client-side). Tạm thời: trả về '' (không filter) → list show
+// hết, user vẫn thấy được phiếu Đã gửi duyệt cùng với tất cả khác. Trade-off
+// chấp nhận tới khi BE thêm multi-phase param.
+function statusToPhaseValue(status: PeDisplayStatus): string {
+ if (status === PeDisplayStatus.BanNhap) return String(PurchaseEvaluationPhase.DangSoanThao)
+ if (status === PeDisplayStatus.DaDuyet) return String(PurchaseEvaluationPhase.DaDuyet)
+ if (status === PeDisplayStatus.TuChoi) return String(PurchaseEvaluationPhase.TuChoi)
+ return '' // DaGuiDuyet — multi-phase, không filter exact (TODO BE add support)
+}
diff --git a/fe-user/src/pages/pe/PurchaseEvaluationWorkspacePage.tsx b/fe-user/src/pages/pe/PurchaseEvaluationWorkspacePage.tsx
index 8707212..4870150 100644
--- a/fe-user/src/pages/pe/PurchaseEvaluationWorkspacePage.tsx
+++ b/fe-user/src/pages/pe/PurchaseEvaluationWorkspacePage.tsx
@@ -20,6 +20,7 @@ import { PeWorkspaceCreateView } from '@/components/pe/PeWorkspaceCreateView'
import { api } from '@/lib/api'
import { getErrorMessage } from '@/lib/apiError'
import {
+ PurchaseEvaluationPhase,
PurchaseEvaluationType,
PurchaseEvaluationTypeLabel,
type PeDetailBundle,
@@ -78,7 +79,9 @@ export function PurchaseEvaluationWorkspacePage() {
- {/* Panel 1: List pure picker + sticky create + pencil edit hover */}
+ {/* Panel 1: List pure picker + sticky create + pencil edit hover.
+ Workspace chỉ list phiếu Bản nháp (DangSoanThao) — đã gửi duyệt rồi
+ không hiện ở đây (vào Danh sách / Duyệt). User 2026-05-07. */}
setParams({ mode: 'new', id: null, editHeader: null })}
onEditClick={id => setParams({ id, mode: null, editHeader: '1' })}
+ forcedPhase={PurchaseEvaluationPhase.DangSoanThao}
/>
{/* Panel 2: Empty | Header form | Detail tabs (workspace mode) */}
diff --git a/fe-user/src/pages/pe/PurchaseEvaluationsListPage.tsx b/fe-user/src/pages/pe/PurchaseEvaluationsListPage.tsx
index f3f42c9..7d348a2 100644
--- a/fe-user/src/pages/pe/PurchaseEvaluationsListPage.tsx
+++ b/fe-user/src/pages/pe/PurchaseEvaluationsListPage.tsx
@@ -14,10 +14,12 @@ import { getErrorMessage } from '@/lib/apiError'
import { cn } from '@/lib/cn'
import type { Paged } from '@/types/master'
import {
+ PeDisplayStatus,
+ PeDisplayStatusColor,
+ PeDisplayStatusLabel,
PurchaseEvaluationPhase,
- PurchaseEvaluationPhaseColor,
- PurchaseEvaluationPhaseLabel,
PurchaseEvaluationTypeLabel,
+ getPeDisplayStatus,
type PeDetailBundle,
type PeListItem,
} from '@/types/purchaseEvaluation'
@@ -124,10 +126,19 @@ export function PurchaseEvaluationsListPage() {
/>