[CLAUDE] FE-User+FE-Admin: cay 4 folder GD duoi tung goi thau (Duyet NCC / Ke hoach HD / Duyet HD / HD cung) x2 app + 5 fix review F-1/3/4/6/7
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m50s

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-07-30 10:04:32 +07:00
parent 8eba1379b2
commit bfc7b79f72
17 changed files with 1839 additions and 12 deletions

View File

@ -26,6 +26,7 @@ import { PageHeader } from '@/components/ui/PageHeader'
import { Button } from '@/components/ui/Button'
import { Input } from '@/components/ui/Input'
import { Textarea } from '@/components/ui/Textarea'
import { PipelineTreePanel } from '@/components/pipeline/PipelineTreePanel'
import { api, TOKEN_KEY } from '@/lib/api'
import { getErrorMessage } from '@/lib/apiError'
import { cn } from '@/lib/cn'
@ -110,6 +111,12 @@ export function HardCopiesPage() {
file scan xem như <span className="font-semibold">xong</span>.
</div>
{/* [S162] Cây toàn trình bám trái (owner chốt AskUser 30-07: folder GĐ áp
cả các trang giai đoạn khác) — folder "Hợp đồng cứng" mở sẵn ở đây. */}
<div className="grid gap-5 lg:grid-cols-[19rem_minmax(0,1fr)] xl:grid-cols-[21rem_minmax(0,1fr)]">
<PipelineTreePanel currentStage={4} />
<div className="min-w-0 space-y-5">
<div
className="card-accent flex items-center gap-3 px-4 py-3"
style={{ ['--accent' as string]: 'var(--color-teal-500)' }}
@ -130,6 +137,8 @@ export function HardCopiesPage() {
className="card-accent overflow-hidden"
style={{ ['--accent' as string]: 'var(--color-teal-500)' }}
>
{/* [S162] Cột trái ăn ~19rem ⇒ bảng cuộn ngang trong thẻ, không tràn lưới. */}
<div className="overflow-x-auto">
<table className="w-full text-sm">
<thead className="border-b border-slate-200 bg-slate-50/70">
<tr>
@ -217,6 +226,7 @@ export function HardCopiesPage() {
})}
</tbody>
</table>
</div>
{totalPages > 1 && (
<div className="flex items-center justify-between border-t border-slate-200 px-4 py-2.5 text-sm">
<div className="text-slate-500">
@ -238,6 +248,8 @@ export function HardCopiesPage() {
</div>
)}
</div>
</div>
</div>
</div>
)
}
@ -276,6 +288,7 @@ function HardCopyPanel({ contractId }: { contractId: string }) {
setNote('')
qc.invalidateQueries({ queryKey: ['contract', contractId] })
qc.invalidateQueries({ queryKey: ['hard-copies'] }) // badge cột "Bản cứng" lật
qc.invalidateQueries({ queryKey: ['pipeline-contract-index'] }) // [F-7 S162] badge GĐ4 trên cây lật cùng
toast.success('Đã lưu bản cứng')
},
onError: (err) => toast.error(`Tải lên lỗi: ${getErrorMessage(err)}`),