Update Bulk request claim

This commit is contained in:
ivan-sim
2024-02-27 14:20:05 +07:00
parent 7c5fdaef78
commit c82bd31d57
8 changed files with 450 additions and 38 deletions

View File

@@ -13,6 +13,7 @@ import {
TableSortLabel,
Box,
Card,
Checkbox,
Grid,
FormControl,
InputLabel,
@@ -43,6 +44,8 @@ import { DivisionDataProps, Order, PaginationTableProps, TableListProps } from '
import { InputAdornment } from '@mui/material';
import GetAppIcon from '@mui/icons-material/GetApp';
import { LanguageContext } from '@/contexts/LanguageContext';
import CancelIcon from '@mui/icons-material/Cancel';
import CheckCircleIcon from '@mui/icons-material/CheckCircle';
/* --------------------------------- styled --------------------------------- */
const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({
@@ -71,6 +74,7 @@ export default function Table<T>({
filterEndDate,
searchs,
exportReport,
selected,
}: TableListProps<T>) {
/* ------------------------------- handle sort ------------------------------ */
const handleRequestSort = async (event: React.MouseEvent<unknown>, property: string) => {
@@ -98,34 +102,73 @@ export default function Table<T>({
return (
<TableHead>
<TableRow>
{headCells &&
headCells.map((headCell, index) => (
<TableCell
key={index}
sortDirection={orders?.orderBy === headCell.id ? orders.order : false}
// @ts-ignore
align={headCell.align}
sx={{ padding: 2 }}
width={headCell.width ? headCell.width : 'auto'}
>
{headCell.isSort ? (
<TableSortLabel
active={orders?.orderBy === headCell.id}
direction={orders?.orderBy === headCell.id ? orders.order : 'asc'}
onClick={createSortHandler(headCell.id)}
>
{headCell.label}
{orders?.orderBy === headCell.id ? (
<Box component="span" sx={visuallyHidden}>
{orders.order === 'desc' ? 'sorted descending' : 'sorted ascending'}
</Box>
) : null}
</TableSortLabel>
) : (
headCell.label
)}
{selected.useSelected && selected.selectedRows.length > 0 ? (
<>
<TableCell style={{ backgroundColor: '#D1F1F1', }} align="left" colSpan={selected.totRows} sx={{ padding: 2 }}>
<Grid container alignItems="center" justifyContent="space-between">
<Grid item>
<Stack direction="row" alignItems="center">
<Checkbox checked={selected.selectAll} onChange={selected.handleSelectAll} />
<Typography variant='subtitle2'>
{selected.selectedRows.length > 0 ? selected.selectedRows.length : '0'} &nbsp; {localeData.txtSelected}
</Typography>
</Stack>
</Grid>
<Grid item>
<Stack direction="row" spacing={2}>
{selected.useDecline ? (
<Button variant="text" color="error" startIcon={<CancelIcon />} onClick={() => {selected.setOpenDialogSubmit(true);selected.setValDialog('decline');}}>
<Typography variant='subtitle2'>{selected.txtDecline}</Typography>
</Button>
):''}
<Button variant="text" color="primary" startIcon={<CheckCircleIcon />} onClick={() => {selected.setOpenDialogSubmit(true);selected.setValDialog('approve');}}>
<Typography variant='subtitle2'>{selected.txtApprove}</Typography>
</Button>
</Stack>
</Grid>
</Grid>
</TableCell>
))}
</>
):(
<>
{selected.useSelected ? (
<TableCell>
<Checkbox checked={selected.selectAll} onChange={selected.handleSelectAll} />
</TableCell>
):''}
{headCells &&
headCells.map((headCell, index) => (
<TableCell
key={index}
sortDirection={orders?.orderBy === headCell.id ? orders.order : false}
// @ts-ignore
align={headCell.align}
sx={{ padding: 2 }}
width={headCell.width ? headCell.width : 'auto'}
>
{headCell.isSort ? (
<TableSortLabel
active={orders?.orderBy === headCell.id}
direction={orders?.orderBy === headCell.id ? orders.order : 'asc'}
onClick={createSortHandler(headCell.id)}
>
{headCell.label}
{orders?.orderBy === headCell.id ? (
<Box component="span" sx={visuallyHidden}>
{orders.order === 'desc' ? 'sorted descending' : 'sorted ascending'}
</Box>
) : null}
</TableSortLabel>
) : (
headCell.label
)}
</TableCell>
))}
</>
)}
</TableRow>
</TableHead>
);
@@ -162,7 +205,6 @@ export default function Table<T>({
params.setAppliedParams(parameters);
};
/* -------------------------------------------------------------------------- */
return (
// <Card>
<Grid container>
@@ -349,6 +391,20 @@ export default function Table<T>({
) : rows && rows.length >= 1 ? (
rows.map((row, rowIndex) => (
<TableRow key={rowIndex}>
{!selected.useSelected ? (
''
): (selected.useSelected && row.check_status === 'approved' && !row.check_claim ? (
<TableCell>
<Checkbox
checked={selected.selectedRows.includes(row.id)}
onChange={() => selected.handleCheckboxChange(row.id)}
/>
</TableCell>
):(
<TableCell>
</TableCell>
))}
{headCells &&
//@ts-ignore
headCells.map((head, headIndex) => (