'use client'; import { useState } from 'react'; import { useMutation, useSuspenseQuery } from '@tanstack/react-query'; import { toast } from 'sonner'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog'; import { Input } from '@/components/ui/input'; import { approvalsQueryOptions, crmReferenceQueryOptions } from '../api/queries'; import { approveQuotationMutation, rejectQuotationMutation } from '../api/mutations'; import { BranchBadge, SectionCard, TimelineList } from './shared'; import { formatCurrency } from '../utils/format'; function DecisionDialog({ label, description, isPending, onConfirm }: { label: string; description: string; isPending: boolean; onConfirm: (comment: string) => void; }) { const [comment, setComment] = useState(''); return ( ); } export function ApprovalsPage() { const { data } = useSuspenseQuery(approvalsQueryOptions({ page: 1, limit: 10 })); const { data: reference } = useSuspenseQuery(crmReferenceQueryOptions()); const baseApproveMutation = approveQuotationMutation; const baseRejectMutation = rejectQuotationMutation; const approveMutation = useMutation({ ...baseApproveMutation, onSuccess: async (...args) => { await baseApproveMutation.onSuccess?.(...args); toast.success('Approve mock สำเร็จ'); } }); const rejectMutation = useMutation({ ...baseRejectMutation, onSuccess: async (...args) => { await baseRejectMutation.onSuccess?.(...args); toast.success('Reject mock สำเร็จ'); } }); return (
{item.quotationCode}
{branch ?{item.productType} / Submitter: {item.submitterName}
Level {item.approverLevel} / {formatCurrency(item.amount)}