add change status
This commit is contained in:
@@ -0,0 +1,26 @@
|
|||||||
|
import { Close } from "@mui/icons-material";
|
||||||
|
import { Dialog, DialogTitle, IconButton } from "@mui/material";
|
||||||
|
import ChangeStatusForm from "./Form";
|
||||||
|
|
||||||
|
const ChangeStatusDialog = ({ open, setOpen, mutate, row }) => {
|
||||||
|
return (
|
||||||
|
<Dialog open={open} fullWidth maxWidth="xs">
|
||||||
|
<IconButton
|
||||||
|
aria-label="close"
|
||||||
|
onClick={() => setOpen(false)}
|
||||||
|
sx={(theme) => ({
|
||||||
|
position: "absolute",
|
||||||
|
right: 8,
|
||||||
|
top: 8,
|
||||||
|
zIndex: 50,
|
||||||
|
color: theme.palette.grey[500],
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
<Close />
|
||||||
|
</IconButton>
|
||||||
|
<DialogTitle>تغییر وضعیت</DialogTitle>
|
||||||
|
{open && <ChangeStatusForm setOpen={setOpen} mutate={mutate} row={row} />}
|
||||||
|
</Dialog>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
export default ChangeStatusDialog;
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
import SelectBox from "@/core/components/SelectBox";
|
||||||
|
import StyledForm from "@/core/components/StyledForm";
|
||||||
|
import { CHANGE_STATUS_RECEIPT } from "@/core/utils/routes";
|
||||||
|
import useRequest from "@/lib/hooks/useRequest";
|
||||||
|
import { yupResolver } from "@hookform/resolvers/yup";
|
||||||
|
import { Beenhere, ExitToApp } from "@mui/icons-material";
|
||||||
|
import { Button, DialogActions, DialogContent, Grid, Stack } from "@mui/material";
|
||||||
|
import { Controller, useForm } from "react-hook-form";
|
||||||
|
import { object, string } from "yup";
|
||||||
|
|
||||||
|
const validationSchema = object({
|
||||||
|
status: string().required("وضعیت را مشخص کنید!"),
|
||||||
|
});
|
||||||
|
|
||||||
|
const ChangeStatusForm = ({ setOpen, mutate, row }) => {
|
||||||
|
const requestServer = useRequest({ notificationSuccess: true });
|
||||||
|
const defaultValues = {
|
||||||
|
status: row.original.status || "",
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleClose = () => {
|
||||||
|
setOpen(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const {
|
||||||
|
control,
|
||||||
|
handleSubmit,
|
||||||
|
formState: { isSubmitting },
|
||||||
|
} = useForm({
|
||||||
|
defaultValues,
|
||||||
|
resolver: yupResolver(validationSchema),
|
||||||
|
mode: "all",
|
||||||
|
});
|
||||||
|
const onSubmitBase = async (data) => {
|
||||||
|
const formData = new FormData();
|
||||||
|
formData.append("status_id", data.status);
|
||||||
|
await requestServer(`${CHANGE_STATUS_RECEIPT}/${row.original.id}`, "post", {
|
||||||
|
data: formData,
|
||||||
|
})
|
||||||
|
.then((response) => {
|
||||||
|
mutate();
|
||||||
|
setOpen(false);
|
||||||
|
})
|
||||||
|
.catch((error) => {});
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<StyledForm onSubmit={handleSubmit(onSubmitBase)}>
|
||||||
|
<DialogContent dividers sx={{ overflowY: "auto", maxHeight: "70vh" }}>
|
||||||
|
<Stack>
|
||||||
|
<Grid container spacing={2}>
|
||||||
|
<Grid item xs={12} sm={12} sx={{ display: "flex", alignItems: "center" }}>
|
||||||
|
<Controller
|
||||||
|
control={control}
|
||||||
|
name={"status"}
|
||||||
|
render={({ field, fieldState: { error } }) => (
|
||||||
|
<SelectBox
|
||||||
|
value={field.value}
|
||||||
|
label="وضعیت"
|
||||||
|
selectors={[
|
||||||
|
{ id: 0, name_fa: "بدون اقدام" },
|
||||||
|
{ id: 1, name_fa: "صدور نامه بیمه و کارشناسی داغی" },
|
||||||
|
{ id: 2, name_fa: "فیش ها ثبت شده است" },
|
||||||
|
{ id: 3, name_fa: "فاکتور صادر شده است" },
|
||||||
|
{ id: 4, name_fa: "فاکتور پرداخت شده است" },
|
||||||
|
{ id: 5, name_fa: "نامه پلیس راه صادر شده است" },
|
||||||
|
]}
|
||||||
|
schema={{ name: "name_fa", value: "id" }}
|
||||||
|
error={error}
|
||||||
|
onChange={field.onChange}
|
||||||
|
helperText={error?.message}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
</Stack>
|
||||||
|
</DialogContent>
|
||||||
|
<DialogActions sx={{ alignItems: "center", justifyContent: "center" }}>
|
||||||
|
<Button
|
||||||
|
onClick={handleClose}
|
||||||
|
variant="outlined"
|
||||||
|
color="secondary"
|
||||||
|
size="large"
|
||||||
|
startIcon={<ExitToApp />}
|
||||||
|
>
|
||||||
|
بستن
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
variant="contained"
|
||||||
|
size="large"
|
||||||
|
disabled={isSubmitting}
|
||||||
|
type={"submit"}
|
||||||
|
endIcon={<Beenhere />}
|
||||||
|
>
|
||||||
|
{isSubmitting ? "در حال ثبت" : "ثبت"}
|
||||||
|
</Button>
|
||||||
|
</DialogActions>
|
||||||
|
</StyledForm>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
export default ChangeStatusForm;
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
import { Reply } from "@mui/icons-material";
|
||||||
|
import { IconButton, Tooltip } from "@mui/material";
|
||||||
|
import { useState } from "react";
|
||||||
|
import ChangeStatusDialog from "./Dialog";
|
||||||
|
|
||||||
|
const ChangeStatus = ({ row, mutate }) => {
|
||||||
|
const [open, setOpen] = useState(false);
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Tooltip title="تغییر وضعیت">
|
||||||
|
<IconButton color="primary" onClick={() => setOpen(true)}>
|
||||||
|
<Reply />
|
||||||
|
</IconButton>
|
||||||
|
</Tooltip>
|
||||||
|
<ChangeStatusDialog open={open} setOpen={setOpen} mutate={mutate} row={row} />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
export default ChangeStatus;
|
||||||
@@ -6,13 +6,14 @@ import SendToInsurance from "./SendToInsurance";
|
|||||||
import PoliceRahLetter from "./PoliceRahLetter";
|
import PoliceRahLetter from "./PoliceRahLetter";
|
||||||
import EditForm from "../Form/EditForm";
|
import EditForm from "../Form/EditForm";
|
||||||
import { usePermissions } from "@/lib/hooks/usePermissions";
|
import { usePermissions } from "@/lib/hooks/usePermissions";
|
||||||
|
import ChangeStatus from "./ChangeStatus";
|
||||||
|
|
||||||
const RowActions = ({ row, mutate }) => {
|
const RowActions = ({ row, mutate }) => {
|
||||||
const { data: userPermissions } = usePermissions();
|
const { data: userPermissions } = usePermissions();
|
||||||
const hasDeletePermission = userPermissions.some((item) =>
|
const hasChangeStatusPermission = userPermissions.some((item) => ["change-accident-status"].includes(item));
|
||||||
["delete-receipt", "delete-receipt-province"].includes(item)
|
const hasDeletePermission = userPermissions.some((item) => ["delete-receipt"].includes(item));
|
||||||
);
|
const hasDeleteProvincePermission = userPermissions.some((item) => ["delete-receipt-province"].includes(item));
|
||||||
const hasEditPermission = userPermissions.some((item) => ["edit-receipt", "edit-receipt-province"].includes(item));
|
const hasEditPermission = userPermissions.some((item) => ["edit-receipt", "edit-receipt-province"].includes(item));
|
||||||
return (
|
return (
|
||||||
<Box sx={{ display: "flex", gap: 1 }}>
|
<Box sx={{ display: "flex", gap: 1 }}>
|
||||||
{[4, 5].includes(row.original?.status) && <PoliceRahLetter mutate={mutate} rowId={row.getValue("id")} />}
|
{[4, 5].includes(row.original?.status) && <PoliceRahLetter mutate={mutate} rowId={row.getValue("id")} />}
|
||||||
@@ -26,9 +27,10 @@ const RowActions = ({ row, mutate }) => {
|
|||||||
{hasEditPermission && [0].includes(row.original?.status) && (
|
{hasEditPermission && [0].includes(row.original?.status) && (
|
||||||
<EditForm row={row} mutate={mutate} rowId={row.getValue("id")} />
|
<EditForm row={row} mutate={mutate} rowId={row.getValue("id")} />
|
||||||
)}
|
)}
|
||||||
{hasDeletePermission && [0].includes(row.original?.status) && (
|
{(hasDeletePermission || (hasDeleteProvincePermission && [0].includes(row.original?.status))) && (
|
||||||
<DeleteDialog mutate={mutate} rowId={row.getValue("id")} />
|
<DeleteDialog mutate={mutate} rowId={row.getValue("id")} />
|
||||||
)}
|
)}
|
||||||
|
{hasChangeStatusPermission && <ChangeStatus mutate={mutate} row={row} />}
|
||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ export const GET_INSURANCE = api + "/api/v3/receipts/generate_insurance_letter";
|
|||||||
export const GET_INSURANCE_PAGE = api + "/v2/receipt/send-to-insurance";
|
export const GET_INSURANCE_PAGE = api + "/v2/receipt/send-to-insurance";
|
||||||
export const GET_POLICERAH = api + "/api/v3/receipts/generate_police_document";
|
export const GET_POLICERAH = api + "/api/v3/receipts/generate_police_document";
|
||||||
export const GET_POLICERAH_PAGE = api + "/v2/receipt/document-release";
|
export const GET_POLICERAH_PAGE = api + "/v2/receipt/document-release";
|
||||||
|
export const CHANGE_STATUS_RECEIPT = api + "/api/v3/receipts/change_status";
|
||||||
|
|
||||||
// recept report
|
// recept report
|
||||||
export const GET_COUNTRY_RECEIPT_REPORT = api + "/api/v3/receipt_reports/country_report";
|
export const GET_COUNTRY_RECEIPT_REPORT = api + "/api/v3/receipt_reports/country_report";
|
||||||
|
|||||||
Reference in New Issue
Block a user