diff --git a/src/components/dashboard/roadItems/operator/Actions/Create/Forms/CreateFormContent.jsx b/src/components/dashboard/roadItems/operator/Actions/Create/Forms/CreateFormContent.jsx
index cfb5a36..ea86df8 100644
--- a/src/components/dashboard/roadItems/operator/Actions/Create/Forms/CreateFormContent.jsx
+++ b/src/components/dashboard/roadItems/operator/Actions/Create/Forms/CreateFormContent.jsx
@@ -1,9 +1,9 @@
-import React, {useState} from "react";
-import {useForm} from "react-hook-form";
-import {yupResolver} from "@hookform/resolvers/yup";
-import {array, mixed, number, object, string} from "yup";
-import {useTheme} from "@emotion/react";
-import {Box, Button, DialogActions, DialogContent, Tab, Tabs, useMediaQuery} from "@mui/material";
+import React, { useState } from "react";
+import { useForm } from "react-hook-form";
+import { yupResolver } from "@hookform/resolvers/yup";
+import { array, mixed, number, object, string } from "yup";
+import { useTheme } from "@emotion/react";
+import { Box, Button, DialogActions, DialogContent, Tab, Tabs, useMediaQuery } from "@mui/material";
import StyledForm from "@/core/components/StyledForm";
import InsertDriveFileIcon from "@mui/icons-material/InsertDriveFile";
import FileCopyIcon from "@mui/icons-material/FileCopy";
@@ -16,7 +16,7 @@ import GetSubItemsForm from "@/components/dashboard/roadItems/operator/Actions/C
import GetItemInfo from "@/components/dashboard/roadItems/operator/Actions/Create/Forms/GetItemInfo";
function TabPanel(props) {
- const {children, value, index} = props;
+ const { children, value, index } = props;
return (
{value === index &&
{children}}
@@ -30,26 +30,28 @@ const validationSchema = object({
amount: string().required("وارد کردن مقدار الزامیست!"),
cmms_machines: array().required("وارد کردن کد خودرو الزامیست!"),
rahdaran_id: array().required("وارد کردن کد راهداران الزامیست!").min(1, "حداقل یک کد راهدار باید وارد شود!"), // بررسی حداقل یک آیتم,
- activity_time: string()
- .test("activity-time-conditional", "لطفا زمان فعالیت را انتخاب کنید!", function (value) {
- const {is_gasht} = this.options.context; // دسترسی به context
+ activity_time: string().test("activity-time-conditional", "لطفا زمان فعالیت را انتخاب کنید!", function (value) {
+ const { is_gasht } = this.options.context; // دسترسی به context
+ if (is_gasht) {
+ return true; // اگر is_gasht true باشد، این فیلد نیاز به اعتبارسنجی ندارد
+ }
+ return !!value; // در غیر این صورت مقدار فیلد باید وجود داشته باشد
+ }),
+ activity_date: string().test(
+ "activity-date-conditional",
+ "لطفاً تاریخ شروع فعالیت را انتخاب کنید!",
+ function (value) {
+ const { is_gasht } = this.options.context; // دسترسی به context
if (is_gasht) {
return true; // اگر is_gasht true باشد، این فیلد نیاز به اعتبارسنجی ندارد
}
return !!value; // در غیر این صورت مقدار فیلد باید وجود داشته باشد
- }),
- activity_date: string()
- .test("activity-date-conditional", "لطفاً تاریخ شروع فعالیت را انتخاب کنید!", function (value) {
- const {is_gasht} = this.options.context; // دسترسی به context
- if (is_gasht) {
- return true; // اگر is_gasht true باشد، این فیلد نیاز به اعتبارسنجی ندارد
- }
- return !!value; // در غیر این صورت مقدار فیلد باید وجود داشته باشد
- }),
+ }
+ ),
before_image: mixed()
.nullable()
.test("before-image-required", "لطفا عکس قبل از اقدام را بارگذاری کنید!", function (value) {
- const {subItemsList} = this.options.context;
+ const { subItemsList } = this.options.context;
const needsImage = subItemsList?.needs_image === 1;
if (needsImage) {
return !!value;
@@ -59,7 +61,7 @@ const validationSchema = object({
after_image: mixed()
.nullable()
.test("after-image-required", "لطفا عکس بعد از اقدام را بارگذاری کنید!", function (value) {
- const {subItemsList} = this.options.context;
+ const { subItemsList } = this.options.context;
const needsImage = subItemsList?.needs_image === 1;
if (needsImage) {
return !!value;
@@ -72,7 +74,7 @@ const validationSchema = object({
})
.required("لطفاً نقطه شروع را مشخص کنید!"),
end_point: mixed().test("end-point-required", "لطفاً نقطه پایان را مشخص کنید!", function (value) {
- const {subItemsList} = this.options.context;
+ const { subItemsList } = this.options.context;
const needsEndPoint = subItemsList?.needs_end_point === 1;
if (needsEndPoint) {
return !!value; // چک میکند که مقدار موجود است
@@ -81,7 +83,7 @@ const validationSchema = object({
}),
});
-const CreateFormContent = ({setOpen, onSubmit, is_gasht = false}) => {
+const CreateFormContent = ({ setOpen, onSubmit, is_gasht = false }) => {
const defaultValues = {
item_id: null,
sub_item_id: null,
@@ -92,7 +94,7 @@ const CreateFormContent = ({setOpen, onSubmit, is_gasht = false}) => {
rahdaran_id: null,
start_point: "",
end_point: "",
- ...(!is_gasht && {activity_time: "", activity_date: ""}),
+ ...(!is_gasht && { activity_time: "", activity_date: "" }),
};
const [tabState, setTabState] = useState(0);
@@ -138,15 +140,15 @@ const CreateFormContent = ({setOpen, onSubmit, is_gasht = false}) => {
handleSubmit,
setValue,
resetField,
- formState: {errors, isSubmitting},
+ formState: { errors, isSubmitting },
} = useForm({
defaultValues,
resolver: yupResolver(validationSchema),
mode: "onBlur",
- context: {subItemsList, is_gasht},
+ context: { subItemsList, is_gasht },
});
const onSubmitBase = (data) => {
- let result = {...data};
+ let result = { ...data };
if (result.before_image === null) {
delete result.before_image;
@@ -192,7 +194,7 @@ const CreateFormContent = ({setOpen, onSubmit, is_gasht = false}) => {
},
});
};
- console.log(errors)
+ console.log(errors);
return (
@@ -208,12 +210,12 @@ const CreateFormContent = ({setOpen, onSubmit, is_gasht = false}) => {
backgroundColor: "#efefef",
}}
>
- } label="انتخاب آیتم"/>
- } label="انتخاب موضوع مشاهده شده"/>
- } label="اطلاعات فعالیت"/>
+ } label="انتخاب آیتم" />
+ } label="انتخاب موضوع مشاهده شده" />
+ } label="اطلاعات فعالیت" />
-
-
+
+
{
-
+
: }
+ startIcon={tabState === 0 ? : }
>
{tabState === 0 ? "بستن" : "مرحله قبل"}
@@ -264,7 +266,7 @@ const CreateFormContent = ({setOpen, onSubmit, is_gasht = false}) => {
disabled={isSubmitting}
type={"submit"}
form="road_items"
- endIcon={}
+ endIcon={}
>
{isSubmitting ? "در حال ثبت فعالیت" : "ثبت فعالیت"}
diff --git a/src/components/dashboard/roadItems/operator/Actions/Create/Forms/GetItemInfo.jsx b/src/components/dashboard/roadItems/operator/Actions/Create/Forms/GetItemInfo.jsx
index 0b32bc7..a802b89 100644
--- a/src/components/dashboard/roadItems/operator/Actions/Create/Forms/GetItemInfo.jsx
+++ b/src/components/dashboard/roadItems/operator/Actions/Create/Forms/GetItemInfo.jsx
@@ -1,20 +1,20 @@
-import {Grid, Stack} from "@mui/material";
+import { Grid, Stack } from "@mui/material";
import ImageUpload from "./ImageUpload";
import MuiDatePicker from "@/core/components/MuiDatePicker";
import MuiTimePicker from "@/core/components/MuiTimePicker";
import MapInfoTwoMarker from "@/core/components/MapInfoTwoMarker";
import MapInfoOneMarker from "@/core/components/MapInfoOneMarker";
-import {Controller} from "react-hook-form";
+import { Controller } from "react-hook-form";
import CarCode from "@/core/components/CarCode";
import RahdarCode from "@/core/components/RahdarCode";
import PreviousStatesInfo from "./PreviousStatesInfo";
import NumberField from "@/core/components/NumberField";
-const GetItemInfo = ({register, itemsList, subItemsList, control, setValue, errors, watch, getValues, is_gasht}) => {
+const GetItemInfo = ({ register, itemsList, subItemsList, control, setValue, errors, watch, getValues, is_gasht }) => {
return (
-
+
{
+ render={({ field, fieldState: { error } }) => {
return (
{
+ render={({ field, fieldState: { error } }) => {
return (
{subItemsList.needs_image ? (
-
+
) : null}
{!is_gasht ? (
@@ -106,9 +106,9 @@ const GetItemInfo = ({register, itemsList, subItemsList, control, setValue, erro
) : null}
{subItemsList?.needs_end_point === 1 ? (
-
+
) : (
-
+
)}
diff --git a/src/components/dashboard/roadItems/operator/Actions/Create/Forms/ImageUpload.jsx b/src/components/dashboard/roadItems/operator/Actions/Create/Forms/ImageUpload.jsx
index 63e8c17..a545b4d 100644
--- a/src/components/dashboard/roadItems/operator/Actions/Create/Forms/ImageUpload.jsx
+++ b/src/components/dashboard/roadItems/operator/Actions/Create/Forms/ImageUpload.jsx
@@ -1,9 +1,9 @@
-import {FormControl, FormHelperText, Grid} from "@mui/material";
+import { FormControl, FormHelperText, Grid } from "@mui/material";
import UploadSystem from "@/core/components/UploadSystem";
-import {Controller} from "react-hook-form";
-import React, {useEffect, useState} from "react";
+import { Controller } from "react-hook-form";
+import React, { useEffect, useState } from "react";
-const ImageUpload = ({control, setValue, errors, getValues, beforeImage = null, afterImage = null}) => {
+const ImageUpload = ({ control, setValue, errors, getValues, beforeImage = null, afterImage = null }) => {
const [beforeImg, setBeforeImg] = useState(beforeImage ? beforeImage : null);
const [beforeFileType, setBeforeFileType] = useState(beforeImage ? "image/" : null);
const [beforeFileName, setBeforeFileName] = useState(null);
@@ -73,7 +73,7 @@ const ImageUpload = ({control, setValue, errors, getValues, beforeImage = null,
{
+ render={({ field: { value, onChange } }) => {
return (
-
+
عکس قبل از اقدام
{
+ render={({ field: { value, onChange } }) => {
return (
-
+
عکس بعد از اقدام
{
- const {subItemsList, loadingSubItemsList, errorSubItemsList} = useRoadItemGetISubtems(defaultData?.item_id);
+const EditFormContent = ({ setOpenEditDialog, onSubmit, defaultData }) => {
+ const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetISubtems(defaultData?.item_id);
const subItem = subItemsList.find((SubItem) => SubItem.sub_item === defaultData?.sub_item_id);
const defaultValues = {
before_image: defaultData?.before_image || null,
after_image: defaultData?.after_image || null,
amount: defaultData?.amount || null,
- start_point: defaultData?.start_point || {lat: "", lng: ""},
- end_point: defaultData?.end_point || {lat: "", lng: ""},
+ start_point: defaultData?.start_point || { lat: "", lng: "" },
+ end_point: defaultData?.end_point || { lat: "", lng: "" },
cmms_machines: defaultData?.cmms_machines || null,
rahdaran_id: defaultData?.rahdaran_id || null,
};
const onSubmitBase = (data) => {
- let result = {...data};
+ let result = { ...data };
if (result.before_image === null) {
delete result.before_image;
delete data.before_image;
@@ -73,7 +73,7 @@ const EditFormContent = ({setOpenEditDialog, onSubmit, defaultData}) => {
خطا در دریافت اطلاعات!!!
) : loadingSubItemsList ? (
-
+
) : (
{
+const EditFormCreate = ({ defaultData, subItem, onSubmitBase, defaultValues, setOpenEditDialog }) => {
const {
control,
getValues,
@@ -58,17 +58,17 @@ const EditFormCreate = ({defaultData, subItem, onSubmitBase, defaultValues, setO
register,
handleSubmit,
setValue,
- formState: {errors, isSubmitting},
+ formState: { errors, isSubmitting },
} = useForm({
defaultValues,
resolver: yupResolver(validationSchema),
mode: "onBlur",
- context: {subItem},
+ context: { subItem },
});
return (
-
+
{subItem.needs_image === 1 ? (
@@ -111,7 +111,7 @@ const EditFormCreate = ({defaultData, subItem, onSubmitBase, defaultValues, setO
{
+ render={({ field, fieldState: { error } }) => {
return (
{
+ render={({ field, fieldState: { error } }) => {
return (
setOpenEditDialog(false)} variant="outlined" color="primary" autoFocus>
بستن
-
diff --git a/src/components/dashboard/roadPatrols/operator/Actions/Create/index.jsx b/src/components/dashboard/roadPatrols/operator/Actions/Create/index.jsx
index 63347f0..a76a68a 100644
--- a/src/components/dashboard/roadPatrols/operator/Actions/Create/index.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Actions/Create/index.jsx
@@ -1,12 +1,12 @@
"use client";
-import {Button, IconButton, useMediaQuery} from "@mui/material";
-import {useTheme} from "@emotion/react";
-import {useState} from "react";
-import {AddCircle} from "@mui/icons-material";
+import { Button, IconButton, useMediaQuery } from "@mui/material";
+import { useTheme } from "@emotion/react";
+import { useState } from "react";
+import { AddCircle } from "@mui/icons-material";
import CreatePatrol from "../../Forms/CreatePatrol";
-const OperatorCreate = ({mutate}) => {
+const OperatorCreate = ({ mutate }) => {
const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
const [open, setOpen] = useState(false);
@@ -19,14 +19,14 @@ const OperatorCreate = ({mutate}) => {
<>
{isMobile ? (
-
+
) : (
- } onClick={handleOpen}>
+ } onClick={handleOpen}>
ثبت اقدام
)}
- {open && }
+ {open && }
>
);
};
diff --git a/src/components/dashboard/roadPatrols/operator/ExcelPrint/index.jsx b/src/components/dashboard/roadPatrols/operator/ExcelPrint/index.jsx
index 24be6df..1c635c8 100644
--- a/src/components/dashboard/roadPatrols/operator/ExcelPrint/index.jsx
+++ b/src/components/dashboard/roadPatrols/operator/ExcelPrint/index.jsx
@@ -1,18 +1,18 @@
-import {Button, CircularProgress} from "@mui/material";
-import {useMemo, useState} from "react";
+import { Button, CircularProgress } from "@mui/material";
+import { useMemo, useState } from "react";
import moment from "jalali-moment";
import FileSaver from "file-saver";
import DescriptionIcon from "@mui/icons-material/Description";
import useRequest from "@/lib/hooks/useRequest";
-import {EXPORT_ROAD_PATROL_OPERATOR_LIST} from "@/core/utils/routes";
+import { EXPORT_ROAD_PATROL_OPERATOR_LIST } from "@/core/utils/routes";
-const PrintExcel = ({table, filterData}) => {
+const PrintExcel = ({ table, filterData }) => {
const [loading, setLoading] = useState(false);
const requestServer = useRequest();
const activeFilters = Object.entries(filterData).reduce((acc, [key, filter]) => {
if (filter.value) {
// Check if there's an active filter
- acc.push({id: key, value: filter.value});
+ acc.push({ id: key, value: filter.value });
}
return acc;
}, []);
@@ -20,23 +20,22 @@ const PrintExcel = ({table, filterData}) => {
const filterParams = useMemo(() => {
const params = new URLSearchParams();
activeFilters.length > 0 &&
- activeFilters.map((filter, index) => {
- params.set(`${filter.id}`, filter.value);
- });
+ activeFilters.map((filter, index) => {
+ params.set(`${filter.id}`, filter.value);
+ });
return params;
}, [activeFilters]);
const clickHandler = () => {
setLoading(true);
requestServer(`${EXPORT_ROAD_PATROL_OPERATOR_LIST}?${filterParams}`, "get", {
- requestOptions: {responseType: "blob"},
+ requestOptions: { responseType: "blob" },
})
.then((response) => {
const filename = `خروجی کارتابل عملیات تاریخ_${moment().format("jYYYY_jMM_jDD")}.xlsx`;
FileSaver.saveAs(response.data, filename);
})
- .catch(() => {
- })
+ .catch(() => {})
.finally(() => {
setLoading(false);
});
@@ -47,8 +46,8 @@ const PrintExcel = ({table, filterData}) => {
color="primary"
variant="contained"
disabled={loading}
- sx={{textTransform: "unset", alignSelf: "center"}}
- startIcon={loading ? : }
+ sx={{ textTransform: "unset", alignSelf: "center" }}
+ startIcon={loading ? : }
onClick={clickHandler}
>
خروجی اکسل
diff --git a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/ActionInfo.jsx b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/ActionInfo.jsx
index c9984dd..025aee2 100644
--- a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/ActionInfo.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/ActionInfo.jsx
@@ -13,44 +13,40 @@ import {
Divider,
IconButton,
Stack,
- Typography
+ Typography,
} from "@mui/material";
-import HandymanIcon from '@mui/icons-material/Handyman';
+import HandymanIcon from "@mui/icons-material/Handyman";
import DeleteIcon from "@mui/icons-material/Delete";
-import DirectionsCarIcon from '@mui/icons-material/DirectionsCar';
-import PersonIcon from '@mui/icons-material/Person';
-import DesignServicesIcon from '@mui/icons-material/DesignServices';
+import DirectionsCarIcon from "@mui/icons-material/DirectionsCar";
+import PersonIcon from "@mui/icons-material/Person";
+import DesignServicesIcon from "@mui/icons-material/DesignServices";
import EditActionDuringPatrol from "./EditActionDuringPatrol";
const MapLayer = dynamic(() => import("@/core/components/MapLayer"), {
- loading: () => ,
+ loading: () => ,
ssr: false,
});
-const ActionInfo = ({action, setActionsList, index, deleteAction}) => {
+const ActionInfo = ({ action, setActionsList, index, deleteAction }) => {
return (
-
+
- }
- title={{action.data.item_name}}
+ avatar={}
+ title={{action.data.item_name}}
subheader={action.data.sub_item_name}
/>
-
-
-
-
- میزان فعالیت انجام شده:
-
+
+
+
+ میزان فعالیت انجام شده:
{action.data.amount}({action.data.unit_fa})
-
- }/>
+
+ } />
{action.data.cmms_machines.map((cmms_machine, index) => (
@@ -61,8 +57,8 @@ const ActionInfo = ({action, setActionsList, index, deleteAction}) => {
-
- }/>
+
+ } />
{action.data.rahdaran_id.map((rahdar, index) => (
@@ -77,13 +73,13 @@ const ActionInfo = ({action, setActionsList, index, deleteAction}) => {
-
+
-
+
);
};
-export default ActionInfo;
\ No newline at end of file
+export default ActionInfo;
diff --git a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/ActionsDurigPatrol.jsx b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/ActionsDurigPatrol.jsx
index 3662f29..698346f 100644
--- a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/ActionsDurigPatrol.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/ActionsDurigPatrol.jsx
@@ -1,13 +1,13 @@
"use client";
-import {Box, Button, Divider, Grid, Typography} from "@mui/material";
-import AddCircleIcon from '@mui/icons-material/AddCircle';
-import React, {useState} from "react";
+import { Box, Button, Divider, Grid, Typography } from "@mui/material";
+import AddCircleIcon from "@mui/icons-material/AddCircle";
+import React, { useState } from "react";
import ModalActionsDuringPatrol from "./ModalActionsDuringPatrol";
import ActionInfo from "./ActionInfo";
import KeyboardDoubleArrowLeftIcon from "@mui/icons-material/KeyboardDoubleArrowLeft";
-const ActionsDuringPatrol = ({setValue, tabState, setTabState}) => {
+const ActionsDuringPatrol = ({ setValue, tabState, setTabState }) => {
const [ActionsList, setActionsList] = useState([]);
const [open, setOpen] = useState(false);
const handleOpen = () => {
@@ -20,29 +20,37 @@ const ActionsDuringPatrol = ({setValue, tabState, setTabState}) => {
const SubmitActionDuringPatrol = () => {
setTabState(tabState + 1);
- const resultItems = ActionsList.map(item => item.result);
+ const resultItems = ActionsList.map((item) => item.result);
console.log("resultItems", resultItems);
setValue("observed_items", resultItems);
- }
+ };
return (
-
+
لیست اقدامات حین گشت
- } variant="outlined"
- sx={{mb: 1, alignSelf: "end"}}>
+ }
+ variant="outlined"
+ sx={{ mb: 1, alignSelf: "end" }}
+ >
ثبت اقدام
-
+
-
- {ActionsList.length !== 0 ?
-
+
+ {ActionsList.length !== 0 ? (
+
{ActionsList.map((action, index) => (
{
))}
- :
-
-
+ ) : (
+
+
فعالیتی ثبت نکرده اید
- }
+ )}
-
- } sx={{mt: 2}}>
+
+ }
+ sx={{ mt: 2 }}
+ >
نهایی کردن درخواست
@@ -74,4 +87,4 @@ const ActionsDuringPatrol = ({setValue, tabState, setTabState}) => {
);
};
-export default ActionsDuringPatrol;
\ No newline at end of file
+export default ActionsDuringPatrol;
diff --git a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/CompeleteRequest.jsx b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/CompeleteRequest.jsx
index 9a4f10b..3299e47 100644
--- a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/CompeleteRequest.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/CompeleteRequest.jsx
@@ -1,6 +1,6 @@
"use client";
-import React, {useEffect, useState} from "react";
+import React, { useEffect, useState } from "react";
import {
Box,
Button,
@@ -12,17 +12,17 @@ import {
OutlinedInput,
Slide,
Stack,
- Typography
+ Typography,
} from "@mui/material";
import BeenhereIcon from "@mui/icons-material/Beenhere";
import ForwardToInboxIcon from "@mui/icons-material/ForwardToInbox";
-import {formatCounter} from "@/core/utils/formatCounter";
+import { formatCounter } from "@/core/utils/formatCounter";
import useRequest from "@/lib/hooks/useRequest";
-import {GET_OTP_TOKEN} from "@/core/utils/routes";
+import { GET_OTP_TOKEN } from "@/core/utils/routes";
import moment from "jalali-moment";
-const CompeleteRequest = ({watch, isSubmitting, setValue, register}) => {
- const requestServer = useRequest({auth: true});
+const CompeleteRequest = ({ watch, isSubmitting, setValue, register }) => {
+ const requestServer = useRequest({ auth: true });
const [delayPerRequest, setDelayPerRequest] = useState(false);
const [phoneNumber, setPhoneNumber] = useState("");
const [validPhone, setValidPhone] = useState(false);
@@ -32,7 +32,7 @@ const CompeleteRequest = ({watch, isSubmitting, setValue, register}) => {
const [readyToVerify, setReadyToVerify] = useState(false);
const handleNumericInput = (e) => {
- e.target.value = e.target.value.replace(/[^0-9]/g, '');
+ e.target.value = e.target.value.replace(/[^0-9]/g, "");
};
useEffect(() => {
@@ -55,7 +55,7 @@ const CompeleteRequest = ({watch, isSubmitting, setValue, register}) => {
}
if (delayPerRequest && counter > 0) {
const timer = setInterval(() => {
- setCounter(prevCounter => prevCounter - 1);
+ setCounter((prevCounter) => prevCounter - 1);
}, 1000);
return () => clearInterval(timer);
@@ -69,82 +69,89 @@ const CompeleteRequest = ({watch, isSubmitting, setValue, register}) => {
setOtpSended(true);
setDelayPerRequest(true);
})
- .catch(() => {
- });
+ .catch(() => {});
};
return (
-
+
- {moment(watch("start_time")).locale("fa").format("YYYY/MM/DD | HH:mm")}
+
+ {moment(watch("start_time")).locale("fa").format("YYYY/MM/DD | HH:mm")}
+
- {moment(watch("end_time")).locale("fa").format("YYYY/MM/DD | HH:mm")}
+
+ {moment(watch("end_time")).locale("fa").format("YYYY/MM/DD | HH:mm")}
+
-
-
-
-
+
+
+
+
{watch("vehicle_runtime")}
-
-
-
+
+
+
{watch("fuel_consumption")}
-
-
-
+
+
+
{watch("stop_points").length}
-
-
-
+
+
+
{watch("distance")}
-
-
-
+
+
+
{watch("observed_items").length}
-
+
-
-
+
+
+
+
کد
-
+
{watch("road_patrol_machines_id.machine_code")}
-
+
نام
-
+
{watch("road_patrol_machines_id.car_name")}
-
+
پلاک
-
+
{watch("road_patrol_machines_id.plak_number")}
-
+
+
+
{watch("road_patrol_rahdaran_id")?.map((rahdar, index) => (
-
+
نام و کد راهدار
-
- {rahdar.name} | {rahdar.code}
+
+
+ {rahdar.name} | {rahdar.code}
+
))}
-
-
+
+
شماره تلفن مامور گشت
{
onInput={handleNumericInput}
type="text"
inputProps={{
- maxLength: 11
+ maxLength: 11,
}}
/>
- }>
+ }
+ >
{delayPerRequest ? formatCounter(counter) : "دریافت کد"}
@@ -207,7 +218,7 @@ const CompeleteRequest = ({watch, isSubmitting, setValue, register}) => {
disabled={isSubmitting}
type={"submit"}
form="patrol_form"
- endIcon={}
+ endIcon={}
>
{isSubmitting ? "در حال ثبت فعالیت" : "ثبت فعالیت"}
@@ -215,4 +226,4 @@ const CompeleteRequest = ({watch, isSubmitting, setValue, register}) => {
);
};
-export default CompeleteRequest;
\ No newline at end of file
+export default CompeleteRequest;
diff --git a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/EditActionDuringPatrol.jsx b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/EditActionDuringPatrol.jsx
index 8be1610..1693c39 100644
--- a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/EditActionDuringPatrol.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/EditActionDuringPatrol.jsx
@@ -1,18 +1,18 @@
"use client";
-import React, {useState} from "react";
+import React, { useState } from "react";
import dynamic from "next/dynamic";
import MapLoading from "@/core/components/MapLayer/Loading";
-import {Dialog, DialogTitle, IconButton} from "@mui/material";
+import { Dialog, DialogTitle, IconButton } from "@mui/material";
import EditIcon from "@mui/icons-material/Edit";
import EditFormContent from "@/components/dashboard/roadItems/operator/RowActions/EditForm/EditFormContent";
const MapLayer = dynamic(() => import("@/core/components/MapLayer"), {
- loading: () => ,
+ loading: () => ,
ssr: false,
});
-const EditActionDuringPatrol = ({action, index, setActionsList}) => {
+const EditActionDuringPatrol = ({ action, index, setActionsList }) => {
const [open, setOpen] = useState(false);
const handleOpen = () => {
@@ -35,7 +35,7 @@ const EditActionDuringPatrol = ({action, index, setActionsList}) => {
return (
<>
-
+
>
);
};
-export default EditActionDuringPatrol;
\ No newline at end of file
+export default EditActionDuringPatrol;
diff --git a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/ModalActionsDuringPatrol.jsx b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/ModalActionsDuringPatrol.jsx
index db677d7..073fd9e 100644
--- a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/ModalActionsDuringPatrol.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/ModalActionsDuringPatrol.jsx
@@ -1,17 +1,16 @@
import CreateFormContent from "@/components/dashboard/roadItems/operator/Actions/Create/Forms/CreateFormContent";
-import {Dialog} from "@mui/material";
-
-const ModalActionsDuringPatrol = ({open, setOpen, setActionsList}) => {
+import { Dialog } from "@mui/material";
+const ModalActionsDuringPatrol = ({ open, setOpen, setActionsList }) => {
const HandleSubmit = async (data) => {
setActionsList((prev) => [...prev, data]);
setOpen(false);
- }
+ };
return (
);
-}
-export default ModalActionsDuringPatrol;
\ No newline at end of file
+};
+export default ModalActionsDuringPatrol;
diff --git a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolDetail.jsx b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolDetail.jsx
index fb97c4f..487f38e 100644
--- a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolDetail.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolDetail.jsx
@@ -1,30 +1,30 @@
"use client";
-import {Box, Button, Chip, Divider, IconButton, InputAdornment, Stack} from "@mui/material";
-import React, {useEffect, useState} from "react";
+import { Box, Button, Chip, Divider, IconButton, InputAdornment, Stack } from "@mui/material";
+import React, { useEffect, useState } from "react";
import CarCode from "@/core/components/CarCode";
-import SearchIcon from '@mui/icons-material/Search';
-import {AdapterDateFnsJalali} from "@mui/x-date-pickers/AdapterDateFnsJalali";
-import {faIR} from "@mui/x-date-pickers/locales";
-import {LocalizationProvider, MobileDateTimePicker} from "@mui/x-date-pickers";
+import SearchIcon from "@mui/icons-material/Search";
+import { AdapterDateFnsJalali } from "@mui/x-date-pickers/AdapterDateFnsJalali";
+import { faIR } from "@mui/x-date-pickers/locales";
+import { LocalizationProvider, MobileDateTimePicker } from "@mui/x-date-pickers";
import ClearIcon from "@mui/icons-material/Clear";
import moment from "jalali-moment";
import dynamic from "next/dynamic";
import MapLoading from "@/core/components/MapLayer/Loading";
-import {Controller} from "react-hook-form";
-import {GET_FMS_DATA} from "@/core/utils/routes";
+import { Controller } from "react-hook-form";
+import { GET_FMS_DATA } from "@/core/utils/routes";
import useRequest from "@/lib/hooks/useRequest";
import PatrolDetailInfo from "./PatrolDetailInfo";
import PatrolResultCodeErrors from "./PatrolResultCodeErrors";
const MapLayer = dynamic(() => import("@/core/components/MapLayer"), {
- loading: () => ,
+ loading: () => ,
ssr: false,
});
-const PatrolDetail = ({control, watch, setValue, tabState, setTabState}) => {
- const requestServer = useRequest({notificationSuccess: true});
- const [patrolResultStatus, setPatrolResultStatus] = useState(null)
+const PatrolDetail = ({ control, watch, setValue, tabState, setTabState }) => {
+ const requestServer = useRequest({ notificationSuccess: true });
+ const [patrolResultStatus, setPatrolResultStatus] = useState(null);
const [readyToRequest, setReadyToRequest] = useState(false);
const [patrolData, setPatrolData] = useState(null);
@@ -35,18 +35,19 @@ const PatrolDetail = ({control, watch, setValue, tabState, setTabState}) => {
formData.append("endDT", moment(watch("end_time")).format("YYYY-MM-DDTHH:mm"));
await requestServer(GET_FMS_DATA, "post", {
data: formData,
- }).then((response) => {
- const data = response.data.data;
- setPatrolData({
- ...data,
- roadPatrolMachinesId: watch("road_patrol_machines_id"),
- start_time: watch("start_time"),
- end_time: watch("end_time")
- });
- setPatrolResultStatus(data.resultCode);
- }).catch((error) => {
- });
- }
+ })
+ .then((response) => {
+ const data = response.data.data;
+ setPatrolData({
+ ...data,
+ roadPatrolMachinesId: watch("road_patrol_machines_id"),
+ start_time: watch("start_time"),
+ end_time: watch("end_time"),
+ });
+ setPatrolResultStatus(data.resultCode);
+ })
+ .catch((error) => {});
+ };
useEffect(() => {
const roadPatrolMachinesId = watch("road_patrol_machines_id");
@@ -64,14 +65,14 @@ const PatrolDetail = ({control, watch, setValue, tabState, setTabState}) => {
flexDirection: "column",
alignItems: "center",
justifyContent: "center",
- my: 3
+ my: 3,
}}
>
-
-
+
+
{
+ render={({ field, fieldState: { error } }) => {
return (
{
name={"road_patrol_machines_id"}
/>
-
+
- {
- const date = new Date(start_time);
- const formattedDate = moment(date).locale("en").format("YYYY-MM-DD HH:mm");
- setValue("start_time", formattedDate);
- }}
- slotProps={{
- textField: {
- size: "small",
- placeholder: "تاریخ و ساعت شروع گشت",
- InputProps: {
- endAdornment: (
-
- {
- event.stopPropagation();
- setValue("start_time", "");
- }}
- sx={{
- color: "#bfbfbf",
- "&:hover": {
- backgroundColor: "rgba(189, 189, 189, 0.1)",
- color: "#363434",
- },
- }}
- >
-
-
-
- ),
- },
- },
- }} label="تاریخ و ساعت شروع گشت"
+ {
+ const date = new Date(start_time);
+ const formattedDate = moment(date).locale("en").format("YYYY-MM-DD HH:mm");
+ setValue("start_time", formattedDate);
+ }}
+ slotProps={{
+ textField: {
+ size: "small",
+ placeholder: "تاریخ و ساعت شروع گشت",
+ InputProps: {
+ endAdornment: (
+
+ {
+ event.stopPropagation();
+ setValue("start_time", "");
+ }}
+ sx={{
+ color: "#bfbfbf",
+ "&:hover": {
+ backgroundColor: "rgba(189, 189, 189, 0.1)",
+ color: "#363434",
+ },
+ }}
+ >
+
+
+
+ ),
+ },
+ },
+ }}
+ label="تاریخ و ساعت شروع گشت"
+ />
+ {
+ const date = new Date(end_time);
+ const formattedDate = moment(date).locale("en").format("YYYY-MM-DD HH:mm");
+ setValue("end_time", formattedDate);
+ }}
+ slotProps={{
+ textField: {
+ size: "small",
+ placeholder: "تاریخ و ساعت پایان گشت",
+ InputProps: {
+ endAdornment: (
+
+ {
+ event.stopPropagation();
+ setValue("end_time", "");
+ }}
+ sx={{
+ color: "#bfbfbf",
+ "&:hover": {
+ backgroundColor: "rgba(189, 189, 189, 0.1)",
+ color: "#363434",
+ },
+ }}
+ >
+
+
+
+ ),
+ },
+ },
+ }}
+ label="تاریخ و ساعت پایان گشت"
/>
- {
- const date = new Date(end_time);
- const formattedDate = moment(date).locale("en").format("YYYY-MM-DD HH:mm");
- setValue("end_time", formattedDate);
- }}
- slotProps={{
- textField: {
- size: "small",
- placeholder: "تاریخ و ساعت پایان گشت",
- InputProps: {
- endAdornment: (
-
- {
- event.stopPropagation();
- setValue("end_time", "");
- }}
- sx={{
- color: "#bfbfbf",
- "&:hover": {
- backgroundColor: "rgba(189, 189, 189, 0.1)",
- color: "#363434",
- },
- }}
- >
-
-
-
- ),
- },
- },
- }} label="تاریخ و ساعت پایان گشت"/>
- }>درخواست
- اطلاعات
+ }
+ >
+ درخواست اطلاعات
+
-
-
+
+
- {patrolResultStatus === 0 ?
- :
- }
+ {patrolResultStatus === 0 ? (
+
+ ) : (
+
+ )}
);
};
-export default PatrolDetail;
\ No newline at end of file
+export default PatrolDetail;
diff --git a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolDetailInfo.jsx b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolDetailInfo.jsx
index ce23609..81fb7f0 100644
--- a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolDetailInfo.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolDetailInfo.jsx
@@ -1,35 +1,33 @@
"use client";
-import {Box, Button, Card, CardActions, CardContent, Chip, Divider, Slide, Stack, Typography} from "@mui/material";
-import React, {useEffect} from "react";
+import { Box, Button, Card, CardActions, CardContent, Chip, Divider, Slide, Stack, Typography } from "@mui/material";
+import React, { useEffect } from "react";
import dynamic from "next/dynamic";
import MapLoading from "@/core/components/MapLayer/Loading";
-import LocalGasStationIcon from '@mui/icons-material/LocalGasStation';
-import DirectionsCarFilledIcon from '@mui/icons-material/DirectionsCarFilled';
-import WatchLaterIcon from '@mui/icons-material/WatchLater';
-import QueryBuilderIcon from '@mui/icons-material/QueryBuilder';
-import AddRoadIcon from '@mui/icons-material/AddRoad';
-import ShareLocationIcon from '@mui/icons-material/ShareLocation';
-import ElectricCarIcon from '@mui/icons-material/ElectricCar';
+import LocalGasStationIcon from "@mui/icons-material/LocalGasStation";
+import DirectionsCarFilledIcon from "@mui/icons-material/DirectionsCarFilled";
+import WatchLaterIcon from "@mui/icons-material/WatchLater";
+import QueryBuilderIcon from "@mui/icons-material/QueryBuilder";
+import AddRoadIcon from "@mui/icons-material/AddRoad";
+import ShareLocationIcon from "@mui/icons-material/ShareLocation";
+import ElectricCarIcon from "@mui/icons-material/ElectricCar";
import KeyboardDoubleArrowLeftIcon from "@mui/icons-material/KeyboardDoubleArrowLeft";
-import QrCode2Icon from '@mui/icons-material/QrCode2';
+import QrCode2Icon from "@mui/icons-material/QrCode2";
import moment from "jalali-moment";
import PatrolMapFeatures from "./PatrolMapFeatures";
-import {useMap} from "react-leaflet";
+import { useMap } from "react-leaflet";
const MapLayer = dynamic(() => import("@/core/components/MapLayer"), {
- loading: () => ,
+ loading: () => ,
ssr: false,
});
-const MapItemViewBound = ({patrolData, bound}) => {
+const MapItemViewBound = ({ patrolData, bound }) => {
const map = useMap();
useEffect(() => {
if (bound.length !== 0) {
- map.fitBounds(bound,
- {paddingTopLeft: [16, 16], paddingBottomRight: [16, 130]}
- );
+ map.fitBounds(bound, { paddingTopLeft: [16, 16], paddingBottomRight: [16, 130] });
}
}, [bound]);
@@ -37,102 +35,103 @@ const MapItemViewBound = ({patrolData, bound}) => {
<>
{patrolData.stopPoints.map((stopPoint, index) => (
-
+
))}
>
);
};
-const PatrolDetailInfo = ({patrolData, tabState, setTabState, setValue}) => {
- const bound = patrolData.stopPoints.map(point => [point.latitude, point.longitude]);
+const PatrolDetailInfo = ({ patrolData, tabState, setTabState, setValue }) => {
+ const bound = patrolData.stopPoints.map((point) => [point.latitude, point.longitude]);
const SendPatrolInfo = () => {
- setValue("vehicle_runtime", patrolData.accOnDuration)
- setValue("fuel_consumption", patrolData.fuelConsumption)
- setValue("distance", patrolData.mileage)
- setValue("stop_points", patrolData.stopPoints)
- setTabState(tabState + 1)
- }
+ setValue("vehicle_runtime", patrolData.accOnDuration);
+ setValue("fuel_consumption", patrolData.fuelConsumption);
+ setValue("distance", patrolData.mileage);
+ setValue("stop_points", patrolData.stopPoints);
+ setTabState(tabState + 1);
+ };
return (
-
+
-
-
- }/>
-
-
+ gap: { xs: 2, lg: 0 },
+ }}
+ >
+
+
+ } />
+
+
{Math.floor(patrolData.accOnDuration / 60)} دقیقه
-
- }/>
-
-
+
+ } />
+
+
{patrolData.roadPatrolMachinesId.car_name}
-
- }/>
-
-
+
+ } />
+
+
{patrolData.roadPatrolMachinesId.machine_code}
-
- }/>
-
-
+
+ } />
+
+
{patrolData.roadPatrolMachinesId.plak_number}
-
- }/>
-
-
+
+ } />
+
+
{moment(patrolData.start_time).locale("fa").format("HH:mm | YYYY/MM/DD")}
-
- }/>
-
-
+
+ } />
+
+
{moment(patrolData.end_time).locale("fa").format("HH:mm | YYYY/MM/DD")}
-
- }/>
-
-
+
+ } />
+
+
{(patrolData.mileage / 1000).toFixed(1)} کیلومتر
-
- }/>
-
-
+
+ } />
+
+
{Math.round(patrolData.fuelConsumption * 10) / 10} لیتر
-
- }/>
-
-
+
+ } />
+
+
{patrolData.stopPoints.length} مورد
-
-
+
+
{
}}
>
-
+
-
-
- } sx={{mt: 2}}>
+
+
+ }
+ sx={{ mt: 2 }}
+ >
تایید اطلاعات و رفتن به مرحله بعد
@@ -170,4 +174,4 @@ const PatrolDetailInfo = ({patrolData, tabState, setTabState, setValue}) => {
);
};
-export default PatrolDetailInfo;
\ No newline at end of file
+export default PatrolDetailInfo;
diff --git a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolForms.jsx b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolForms.jsx
index 8cff149..bc67467 100644
--- a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolForms.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolForms.jsx
@@ -1,23 +1,23 @@
"use client";
-import {Box, DialogContent, Tab, Tabs, useMediaQuery} from "@mui/material";
-import {useTheme} from "@emotion/react";
-import React, {useEffect, useState} from "react";
-import TaxiAlertIcon from '@mui/icons-material/TaxiAlert';
-import EngineeringIcon from '@mui/icons-material/Engineering';
-import HandymanIcon from '@mui/icons-material/Handyman';
-import VerifiedIcon from '@mui/icons-material/Verified';
+import { Box, DialogContent, Tab, Tabs, useMediaQuery } from "@mui/material";
+import { useTheme } from "@emotion/react";
+import React, { useEffect, useState } from "react";
+import TaxiAlertIcon from "@mui/icons-material/TaxiAlert";
+import EngineeringIcon from "@mui/icons-material/Engineering";
+import HandymanIcon from "@mui/icons-material/Handyman";
+import VerifiedIcon from "@mui/icons-material/Verified";
import PatrolTimeLine from "./PatrolTimeLine";
import PatrolDetail from "./PatrolDetail";
import SuperVisorsDetail from "./SuperVisorsDetail";
import ActionsDuringPatrol from "./ActionsDurigPatrol";
-import {useForm} from "react-hook-form";
+import { useForm } from "react-hook-form";
import StyledForm from "@/core/components/StyledForm";
import useRequest from "@/lib/hooks/useRequest";
import CompeleteRequest from "./CompeleteRequest";
function TabPanel(props) {
- const {children, value, index} = props;
+ const { children, value, index } = props;
return (
@@ -37,11 +37,11 @@ const defaultValues = {
distance: "",
observed_items: null,
phone_number: "",
- otp_token: ""
+ otp_token: "",
};
-const PatrolForms = ({mutate, setOpen}) => {
- const requestServer = useRequest({notificationSuccess: true});
+const PatrolForms = ({ mutate, setOpen }) => {
+ const requestServer = useRequest({ notificationSuccess: true });
const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down("md"));
const [tabState, setTabState] = useState(0);
@@ -65,14 +65,14 @@ const PatrolForms = ({mutate, setOpen}) => {
handleSubmit,
setValue,
resetField,
- formState: {isSubmitting},
+ formState: { isSubmitting },
} = useForm({
defaultValues,
- mode: "onBlur"
+ mode: "onBlur",
});
const onSubmit = async (data) => {
- console.log("data", data)
+ console.log("data", data);
// const formData = new FormData();
// data.road_patrol_rahdaran_id.forEach((rahdar, index) => formData.append(`road_patrol_rahdaran_id[${index}]`, rahdar.id));
// formData.append(`road_patrol_machines_id[0]`, data.road_patrol_machines_id.id)
@@ -109,7 +109,6 @@ const PatrolForms = ({mutate, setOpen}) => {
// } else {
// console.log("error phone number")
// }
-
};
return (
@@ -126,13 +125,13 @@ const PatrolForms = ({mutate, setOpen}) => {
backgroundColor: "#efefef",
}}
>
-
= 0)} icon={} label="مشخصات گشت">
-
= 1)} icon={} label="مشخصات راهداران">
-
= 2)} icon={} label="اقدامات حین گشت">
-
= 3)} icon={} label="تکمیل درخواست">
+
= 0)} icon={} label="مشخصات گشت">
+
= 1)} icon={} label="مشخصات راهداران">
+
= 2)} icon={} label="اقدامات حین گشت">
+
= 3)} icon={} label="تکمیل درخواست">
-
-
+
+
{
setValue={setValue}
watch={watch}
tabState={tabState}
- setTabState={setTabState}/>
+ setTabState={setTabState}
+ />
{
{!isMobile && (
-
-
+
+
)}
diff --git a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolMapFeatures.jsx b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolMapFeatures.jsx
index a72ce56..1a8b785 100644
--- a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolMapFeatures.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolMapFeatures.jsx
@@ -1,11 +1,11 @@
"use client";
-import {Typography} from "@mui/material";
-import React, {useRef} from "react";
-import {Marker, Popup} from "react-leaflet";
+import { Typography } from "@mui/material";
+import React, { useRef } from "react";
+import { Marker, Popup } from "react-leaflet";
import AzmayeshIcon from "@/assets/images/examine_marker.png";
-const PatrolMapFeatures = ({stopPoint}) => {
+const PatrolMapFeatures = ({ stopPoint }) => {
const position = [stopPoint.latitude, stopPoint.longitude];
const mapPatrolMarker = useRef();
const createCustomIcon = (size, iconUrl) => {
@@ -18,21 +18,21 @@ const PatrolMapFeatures = ({stopPoint}) => {
};
return (
-
- مدت زمان
- توقف: {stopPoint.duration} ثانیه
+ مدت زمان توقف: {stopPoint.duration} ثانیه
);
};
-export default PatrolMapFeatures;
\ No newline at end of file
+export default PatrolMapFeatures;
diff --git a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolResultCodeErrors.jsx b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolResultCodeErrors.jsx
index c470da6..da28921 100644
--- a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolResultCodeErrors.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolResultCodeErrors.jsx
@@ -1,9 +1,9 @@
"use client";
-import {Box, Typography} from "@mui/material";
+import { Box, Typography } from "@mui/material";
import React from "react";
-const PatrolResultCodeErrors = ({ResultCode}) => {
+const PatrolResultCodeErrors = ({ ResultCode }) => {
const errorMessages = {
[-1]: "نام کاربری یا کلمه عبور صحیح نمیباشد",
[-2]: "ردیاب به خودرو انتخابی متصل نیست",
@@ -14,12 +14,12 @@ const PatrolResultCodeErrors = ({ResultCode}) => {
const message = errorMessages[ResultCode] || "ابتدا اطلاعات بالا را تکمیل نمایید";
return (
-
-
+
+
{message}
);
};
-export default PatrolResultCodeErrors;
\ No newline at end of file
+export default PatrolResultCodeErrors;
diff --git a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolTimeLine.jsx b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolTimeLine.jsx
index 54c01cc..4edaa2f 100644
--- a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolTimeLine.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PatrolTimeLine.jsx
@@ -1,10 +1,10 @@
"use client";
-import {Box, CircularProgress, Typography} from "@mui/material";
-import TaxiAlertIcon from '@mui/icons-material/TaxiAlert';
-import EngineeringIcon from '@mui/icons-material/Engineering';
-import HandymanIcon from '@mui/icons-material/Handyman';
-import VerifiedIcon from '@mui/icons-material/Verified';
+import { Box, CircularProgress, Typography } from "@mui/material";
+import TaxiAlertIcon from "@mui/icons-material/TaxiAlert";
+import EngineeringIcon from "@mui/icons-material/Engineering";
+import HandymanIcon from "@mui/icons-material/Handyman";
+import VerifiedIcon from "@mui/icons-material/Verified";
import {
Timeline,
TimelineConnector,
@@ -15,83 +15,99 @@ import {
TimelineSeparator,
} from "@mui/lab";
-const PatrolTimeLine = ({tabState}) => {
+const PatrolTimeLine = ({ tabState }) => {
return (
-
+
-
-
- {tabState === 0 ? : 0 ? "success" : "error"}
- sx={{width: "1.5rem", height: "1.5rem"}}
- />}
+
+
+ {tabState === 0 ? (
+
+ ) : (
+ 0 ? "success" : "error"}
+ sx={{ width: "1.5rem", height: "1.5rem" }}
+ />
+ )}
-
+
-
+
مشخصات گشت
-
+
تایید اطلاعات اولیه گشت
-
-
- {tabState === 1 ? : 1 ? "success" : "error"}
- sx={{width: "1.5rem", height: "1.5rem"}}
- />}
+
+
+ {tabState === 1 ? (
+
+ ) : (
+ 1 ? "success" : "error"}
+ sx={{ width: "1.5rem", height: "1.5rem" }}
+ />
+ )}
-
+
-
+
مشخصات راهداران
-
+
راهدار / راهداران حاضر در گشت
-
-
- {tabState === 2 ? : 2 ? "success" : "error"}
- sx={{width: "1.5rem", height: "1.5rem"}}
- />}
+
+
+ {tabState === 2 ? (
+
+ ) : (
+ 2 ? "success" : "error"}
+ sx={{ width: "1.5rem", height: "1.5rem" }}
+ />
+ )}
-
+
-
+
اقدامات حین گشت
-
+
ثبت فعالیت های صورت گرفته حین گشت
-
-
- {tabState === 3 ? : 3 ? "success" : "error"}
- sx={{width: "1.5rem", height: "1.5rem"}}
- />}
+
+
+ {tabState === 3 ? (
+
+ ) : (
+ 3 ? "success" : "error"}
+ sx={{ width: "1.5rem", height: "1.5rem" }}
+ />
+ )}
-
+
-
+
تکمیل درخواست
-
+
تکمیل درخواست و ثبت نهایی
diff --git a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PhoneValidation.jsx b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PhoneValidation.jsx
index 305d76d..0c9cb30 100644
--- a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PhoneValidation.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/PhoneValidation.jsx
@@ -1,14 +1,14 @@
"use client";
-import {Box, Button, FormControl, InputLabel, OutlinedInput} from "@mui/material";
-import React, {useEffect, useState} from "react";
-import ForwardToInboxIcon from '@mui/icons-material/ForwardToInbox';
+import { Box, Button, FormControl, InputLabel, OutlinedInput } from "@mui/material";
+import React, { useEffect, useState } from "react";
+import ForwardToInboxIcon from "@mui/icons-material/ForwardToInbox";
import useRequest from "@/lib/hooks/useRequest";
-import {GET_OTP_TOKEN, VERIFY_OTP} from "@/core/utils/routes";
-import {formatCounter} from "@/core/utils/formatCounter";
+import { GET_OTP_TOKEN, VERIFY_OTP } from "@/core/utils/routes";
+import { formatCounter } from "@/core/utils/formatCounter";
-const PhoneValidation = ({tabState, setTabState}) => {
- const requestServer = useRequest({auth: true});
+const PhoneValidation = ({ tabState, setTabState }) => {
+ const requestServer = useRequest({ auth: true });
const [phoneNumber, setPhoneNumber] = useState("");
const [verificationCode, setVerificationCode] = useState("");
const [validPhone, setValidPhone] = useState(false);
@@ -18,7 +18,7 @@ const PhoneValidation = ({tabState, setTabState}) => {
const [readyToVerify, setReadyToVerify] = useState(false);
const handleNumericInput = (e) => {
- e.target.value = e.target.value.replace(/[^0-9]/g, '');
+ e.target.value = e.target.value.replace(/[^0-9]/g, "");
};
useEffect(() => {
@@ -41,7 +41,7 @@ const PhoneValidation = ({tabState, setTabState}) => {
}
if (delayPerRequest && counter > 0) {
const timer = setInterval(() => {
- setCounter(prevCounter => prevCounter - 1);
+ setCounter((prevCounter) => prevCounter - 1);
}, 1000);
return () => clearInterval(timer);
@@ -51,10 +51,8 @@ const PhoneValidation = ({tabState, setTabState}) => {
const sendOtp = () => {
if (!validPhone) return false;
requestServer(`${GET_OTP_TOKEN}?phone_number=${phoneNumber}`, "get")
- .then((response) => {
- })
- .catch(() => {
- });
+ .then((response) => {})
+ .catch(() => {});
//////////**** (mohammad) this part should keep in success but for now we go next level ****////////////
setOtpSended(true);
setDelayPerRequest(true);
@@ -65,25 +63,25 @@ const PhoneValidation = ({tabState, setTabState}) => {
formData.append("phone_number", phoneNumber);
formData.append("verification_code", verificationCode);
- setTabState(tabState + 1)
+ setTabState(tabState + 1);
requestServer(VERIFY_OTP, "post", {
data: formData,
})
- .then(() => {
- })
- .catch(() => {
- });
- }
+ .then(() => {})
+ .catch(() => {});
+ };
return (
-
-
+
+
شماره تلفن مامور گشت
{
onInput={handleNumericInput}
type="text"
inputProps={{
- maxLength: 11
+ maxLength: 11,
}}
/>
- }>
+ }
+ >
{delayPerRequest ? formatCounter(counter) : "دریافت کد"}
-
);
};
-export default PhoneValidation;
\ No newline at end of file
+export default PhoneValidation;
diff --git a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/SuperVisorInfo.jsx b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/SuperVisorInfo.jsx
index cfa7090..c70c5f4 100644
--- a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/SuperVisorInfo.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/SuperVisorInfo.jsx
@@ -1,30 +1,38 @@
"use client";
-import {Box, Card, IconButton, Stack, Typography} from "@mui/material";
-import AccountCircleIcon from '@mui/icons-material/AccountCircle';
-import DeleteIcon from '@mui/icons-material/Delete';
+import { Box, Card, IconButton, Stack, Typography } from "@mui/material";
+import AccountCircleIcon from "@mui/icons-material/AccountCircle";
+import DeleteIcon from "@mui/icons-material/Delete";
import React from "react";
-const SuperVisorInfo = ({superVisor, deleteSuperVisor}) => {
+const SuperVisorInfo = ({ superVisor, deleteSuperVisor }) => {
return (
-
-
-
-
- {superVisor.name}
+
+
+
+
+
+ {superVisor.name}
+
کد راهدار: {superVisor.code}
- deleteSuperVisor(superVisor.id)}>
+ deleteSuperVisor(superVisor.id)}>
+
+
);
};
-export default SuperVisorInfo;
\ No newline at end of file
+export default SuperVisorInfo;
diff --git a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/SuperVisorsDetail.jsx b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/SuperVisorsDetail.jsx
index ebf5506..668c546 100644
--- a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/SuperVisorsDetail.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/SuperVisorsDetail.jsx
@@ -1,15 +1,15 @@
"use client";
-import {Box, Button, Chip, Divider, Grid, Stack, Typography} from "@mui/material";
-import SaveAltIcon from '@mui/icons-material/SaveAlt';
-import React, {useEffect, useState} from "react";
+import { Box, Button, Chip, Divider, Grid, Stack, Typography } from "@mui/material";
+import SaveAltIcon from "@mui/icons-material/SaveAlt";
+import React, { useEffect, useState } from "react";
import RahdarCode from "@/core/components/RahdarCode";
import SuperVisorInfo from "@/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/SuperVisorInfo";
import KeyboardDoubleArrowRightIcon from "@mui/icons-material/KeyboardDoubleArrowRight";
import KeyboardDoubleArrowLeftIcon from "@mui/icons-material/KeyboardDoubleArrowLeft";
-import {Controller} from "react-hook-form";
+import { Controller } from "react-hook-form";
-const SuperVisorsDetail = ({control, watch, setValue, tabState, setTabState}) => {
+const SuperVisorsDetail = ({ control, watch, setValue, tabState, setTabState }) => {
const [SuperVisorList, setSuperVisorList] = useState([]);
const [readyToRequest, setReadyToRequest] = useState(false);
@@ -17,7 +17,7 @@ const SuperVisorsDetail = ({control, watch, setValue, tabState, setTabState}) =>
setSuperVisorList((prev) => [...prev, watch("road_patrol_rahdaran_id")]);
setReadyToRequest(false);
setValue("road_patrol_rahdaran_id", null);
- }
+ };
const deleteSuperVisor = (id) => {
setSuperVisorList((prev) => prev.filter((superVisor) => superVisor.id !== id));
@@ -30,7 +30,7 @@ const SuperVisorsDetail = ({control, watch, setValue, tabState, setTabState}) =>
const SendSuperVisor = () => {
setValue("road_patrol_rahdaran_id", SuperVisorList);
setTabState(tabState + 1);
- }
+ };
return (
flexDirection: "column",
alignItems: "center",
justifyContent: "center",
- my: 3
+ my: 3,
}}
>
-
-
-
+
+
+
{
+ render={({ field, fieldState: { error } }) => {
return (
name={"road_patrol_rahdaran_id"}
/>
- }
+ }
>
ثبت راهدار
-
-
+
+
{SuperVisorList.length !== 0 ? (
<>
-
+
{SuperVisorList.map((superVisor) => (
-
+
))}
@@ -103,8 +109,8 @@ const SuperVisorsDetail = ({control, watch, setValue, tabState, setTabState}) =>
}
- sx={{mt: 2}}
+ startIcon={}
+ sx={{ mt: 2 }}
>
بازگشت
@@ -112,16 +118,16 @@ const SuperVisorsDetail = ({control, watch, setValue, tabState, setTabState}) =>
variant="contained"
color="primary"
onClick={SendSuperVisor}
- endIcon={}
- sx={{mt: 2}}
+ endIcon={}
+ sx={{ mt: 2 }}
>
تایید اطلاعات و رفتن به مرحله بعد
>
) : (
-
-
+
+
ابتدا اطلاعات بالا را تکمیل نمایید
diff --git a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/index.jsx b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/index.jsx
index b349b7d..3c1c72c 100644
--- a/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/index.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Forms/CreatePatrol/index.jsx
@@ -1,15 +1,12 @@
"use client";
-import {Dialog} from "@mui/material";
+import { Dialog } from "@mui/material";
import PatrolForms from "./PatrolForms";
-const CreatePatrol = ({open, setOpen, mutate}) => {
+const CreatePatrol = ({ open, setOpen, mutate }) => {
return (
);
};
diff --git a/src/components/dashboard/roadPatrols/operator/Toolbar.jsx b/src/components/dashboard/roadPatrols/operator/Toolbar.jsx
index f652e04..d10e83d 100644
--- a/src/components/dashboard/roadPatrols/operator/Toolbar.jsx
+++ b/src/components/dashboard/roadPatrols/operator/Toolbar.jsx
@@ -1,12 +1,12 @@
import PrintExcel from "./ExcelPrint";
import OperatorCreate from "./Actions/Create";
-import {Box} from "@mui/material";
+import { Box } from "@mui/material";
-const Toolbar = ({table, filterData, mutate}) => {
+const Toolbar = ({ table, filterData, mutate }) => {
return (
-
-
-
+
+
+
);
};
diff --git a/src/components/dashboard/roadPatrols/operator/index.jsx b/src/components/dashboard/roadPatrols/operator/index.jsx
index dcf34af..a2b328c 100644
--- a/src/components/dashboard/roadPatrols/operator/index.jsx
+++ b/src/components/dashboard/roadPatrols/operator/index.jsx
@@ -1,13 +1,13 @@
"use client";
import PageTitle from "@/core/components/PageTitle";
-import {Stack} from "@mui/material";
+import { Stack } from "@mui/material";
import OperatorList from "./OperatorList";
const OperatorPage = () => {
return (
-
-
+
+
);
};
diff --git a/src/components/dashboard/roadPatrols/supervisor/index.jsx b/src/components/dashboard/roadPatrols/supervisor/index.jsx
index 5e2001d..67f9f63 100644
--- a/src/components/dashboard/roadPatrols/supervisor/index.jsx
+++ b/src/components/dashboard/roadPatrols/supervisor/index.jsx
@@ -1,13 +1,13 @@
"use client";
import PageTitle from "@/core/components/PageTitle";
-import {Stack} from "@mui/material";
+import { Stack } from "@mui/material";
import SuperviserList from "./SupervisorList";
const SupervisorPage = () => {
return (
-
-
+
+
);
};
diff --git a/src/core/utils/formatCounter.js b/src/core/utils/formatCounter.js
index 72b021a..7cf9122 100644
--- a/src/core/utils/formatCounter.js
+++ b/src/core/utils/formatCounter.js
@@ -1,5 +1,7 @@
export const formatCounter = (counter) => {
- const minutes = Math.floor(counter / 60).toString().padStart(2, '0');
- const seconds = (counter % 60).toString().padStart(2, '0');
+ const minutes = Math.floor(counter / 60)
+ .toString()
+ .padStart(2, "0");
+ const seconds = (counter % 60).toString().padStart(2, "0");
return `${minutes}:${seconds}`;
-};
\ No newline at end of file
+};
diff --git a/src/core/utils/pageMenu.js b/src/core/utils/pageMenu.js
index ec6fb21..bf392e4 100644
--- a/src/core/utils/pageMenu.js
+++ b/src/core/utils/pageMenu.js
@@ -28,7 +28,7 @@ export const pageMenu = [
label: "پیشخوان",
type: "page",
route: "/dashboard",
- icon: ,
+ icon: ,
permissions: ["all"],
},
{
@@ -36,14 +36,14 @@ export const pageMenu = [
label: "مدیریت کاربران",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/user_management",
- icon: ,
+ icon: ,
permissions: ["full-user-management", "limited-user-management"],
},
{
id: "projectsManagment",
label: "پروژه های راهداری",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
Subitems: [
{
@@ -51,7 +51,7 @@ export const pageMenu = [
label: "ثبت قرارداد و پروژه",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/rahdari_projects/finance",
- icon: ,
+ icon: ,
permissions: ["show-contract", "show-contract-province"],
},
{
@@ -59,7 +59,7 @@ export const pageMenu = [
label: "لیست پروژه ها",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/rahdari_projects/projects_list",
- icon: ,
+ icon: ,
permissions: ["all"],
},
{
@@ -67,7 +67,7 @@ export const pageMenu = [
label: "پروژه های پیشنهادی",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/rahdari_projects/proposal",
- icon: ,
+ icon: ,
permissions: ["show-proposal", "show-proposal-province"],
},
{
@@ -75,7 +75,7 @@ export const pageMenu = [
label: "درخواست نمایندگان",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/rahdari_projects/lawmakers",
- icon: ,
+ icon: ,
permissions: ["show-lawmaker", "show-lawmaker-province"],
},
{
@@ -83,7 +83,7 @@ export const pageMenu = [
label: "پراکندگی بر روی نقشه",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/map?type=rahdari_projects",
- icon: ,
+ icon: ,
permissions: ["all"],
},
],
@@ -92,7 +92,7 @@ export const pageMenu = [
id: "roadItemManagment",
label: "فعالیت های روزانه",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
badges: ["road_items.total"],
Subitems: [
@@ -100,7 +100,7 @@ export const pageMenu = [
id: "roadItemManagmentSupervisor",
label: "ارزیابی",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
badges: ["road_items.supervise_cnt"],
Subitems: [
@@ -120,7 +120,7 @@ export const pageMenu = [
id: "roadItemManagmentOparation",
label: "عملیات",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
badges: ["road_items.operation_cnt"],
Subitems: [
@@ -138,7 +138,7 @@ export const pageMenu = [
label: "پراکندگی بر روی نقشه",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/map?type=road_items",
- icon: ,
+ icon: ,
permissions: [
"show-road-item-supervise-cartable",
"show-road-item-supervise-cartable-province",
@@ -150,7 +150,7 @@ export const pageMenu = [
label: "گزارش ها",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/road_items/report",
- icon: ,
+ icon: ,
permissions: [
"show-road-item-supervise-cartable",
"show-road-item-supervise-cartable-province",
@@ -163,7 +163,7 @@ export const pageMenu = [
id: "roadPatrolManagment",
label: "گشت راهداری و ترابری",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
badges: ["road_patrols.total"],
Subitems: [
@@ -171,7 +171,7 @@ export const pageMenu = [
id: "roadPatrolManagmentSupervisor",
label: "ارزیابی",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
badges: ["road_patrols.supervise_cnt"],
Subitems: [
@@ -191,7 +191,7 @@ export const pageMenu = [
id: "roadPatrolManagmentOparation",
label: "عملیات",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
badges: ["road_patrols.operation_cnt"],
Subitems: [
@@ -209,7 +209,7 @@ export const pageMenu = [
label: "پراکندگی بر روی نقشه",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/map?type=road_patrols",
- icon: ,
+ icon: ,
permissions: [
"add-road-patrol",
"show-road-patrol-supervise-cartable",
@@ -221,7 +221,7 @@ export const pageMenu = [
label: "گزارش ها",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/road_patrols/report",
- icon: ,
+ icon: ,
permissions: [
"add-road-patrol",
"show-road-patrol-supervise-cartable",
@@ -234,7 +234,7 @@ export const pageMenu = [
id: "inquiryPrivacyManagment",
label: "استعلام حریم راه",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
Subitems: [
{
@@ -271,7 +271,7 @@ export const pageMenu = [
id: "safetyAndPrivacyManagment",
label: "نگهداری حریم راه",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
badges: ["safety_and_privacy.step_one", "safety_and_privacy.step_two"],
Subitems: [
@@ -279,7 +279,7 @@ export const pageMenu = [
id: "safetyAndPrivacyManagmentOparation",
label: "عملیات",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
Subitems: [
{
@@ -307,7 +307,7 @@ export const pageMenu = [
label: "پراکندگی بر روی نقشه",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/map?type=safety_and_privacy",
- icon: ,
+ icon: ,
permissions: [
"show-safety-and-privacy-operator-cartable",
"show-safety-and-privacy-operator-cartable-province",
@@ -320,7 +320,7 @@ export const pageMenu = [
label: "گزارش ها",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/safety_and_privacy/report",
- icon: ,
+ icon: ,
permissions: [
"show-safety-and-privacy-operator-cartable",
"show-safety-and-privacy-operator-cartable-province",
@@ -334,7 +334,7 @@ export const pageMenu = [
id: "roadObservationsManagment",
label: "واکنش سریع",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
badges: ["road_observations.total"],
Subitems: [
@@ -342,7 +342,7 @@ export const pageMenu = [
id: "roadObservationsManagmentSupervisor",
label: "ارزیابی",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
badges: ["road_observations.supervise_cnt"],
Subitems: [
@@ -360,14 +360,14 @@ export const pageMenu = [
label: "رسیدگی به شکایات",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/road_observations",
- icon: ,
+ icon: ,
permissions: ["show-fast-react", "show-fast-react-province", "show-fast-react-edarate-shahri"],
},
{
id: "roadObservationsManagmentOparation",
label: "عملیات",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
badges: ["road_observations.operation_cnt"],
Subitems: [
@@ -385,7 +385,7 @@ export const pageMenu = [
label: "پراکندگی بر روی نقشه",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/map?type=road_observations",
- icon: ,
+ icon: ,
permissions: ["all"],
},
{
@@ -393,7 +393,7 @@ export const pageMenu = [
label: "گزارش ها",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/road_observations/report/index",
- icon: ,
+ icon: ,
permissions: ["all"],
},
],
@@ -402,7 +402,7 @@ export const pageMenu = [
id: "winterCampManagment",
label: "قرارگاه زمستانی",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
Subitems: [
{
@@ -410,7 +410,7 @@ export const pageMenu = [
label: "محور های انسدادی",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/winter_camp",
- icon: ,
+ icon: ,
permissions: ["show-camp", "show-camp-province"],
},
{
@@ -418,7 +418,7 @@ export const pageMenu = [
label: "محور های حلقه اول",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/map?type=camp",
- icon: ,
+ icon: ,
permissions: ["show-camp", "show-camp-province"],
},
{
@@ -426,7 +426,7 @@ export const pageMenu = [
label: "گزارش ها",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/map?type=campNew",
- icon: ,
+ icon: ,
permissions: ["show-camp", "show-camp-province"],
},
],
@@ -435,14 +435,14 @@ export const pageMenu = [
id: "receiptManagment",
label: "خسارات وارده بر ابنیه فنی و تاسیسات راه",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
Subitems: [
{
id: "receiptManagmentOparation",
label: "عملیات",
type: "menu",
- icon: ,
+ icon: ,
hasSubitems: true,
Subitems: [
{
@@ -459,7 +459,7 @@ export const pageMenu = [
label: "گزارش ها",
type: "page",
route: process.env.NEXT_PUBLIC_API_URL + "/v2/receipt/report",
- icon: ,
+ icon: ,
permissions: ["all"],
},
],
@@ -469,7 +469,7 @@ export const pageMenu = [
label: "آزمایشات (OPTS)",
type: "page",
route: "/dashboard/azmayesh",
- icon: ,
+ icon: ,
permissions: ["azmayesh-management"],
},
{
@@ -477,7 +477,7 @@ export const pageMenu = [
label: "نوع آزمایشات",
type: "page",
route: "/dashboard/azmayesh_type",
- icon: ,
+ icon: ,
permissions: ["azmayesh-type-management"],
},
{
@@ -485,7 +485,7 @@ export const pageMenu = [
label: "اطلاعات خودرو",
type: "page",
route: "/dashboard/car-details",
- icon: ,
+ icon: ,
permissions: [""],
},
];
diff --git a/src/lib/hooks/useRequest.js b/src/lib/hooks/useRequest.js
index 3eb9f19..8e6d121 100644
--- a/src/lib/hooks/useRequest.js
+++ b/src/lib/hooks/useRequest.js
@@ -1,7 +1,7 @@
-import {errorResponse} from "@/core/utils/errorResponse";
-import {successRequest} from "@/core/utils/successRequest";
+import { errorResponse } from "@/core/utils/errorResponse";
+import { successRequest } from "@/core/utils/successRequest";
import axios from "axios";
-import {useAuth} from "../contexts/auth";
+import { useAuth } from "../contexts/auth";
const defaultOptions = {
data: {},
@@ -14,7 +14,7 @@ const defaultOptions = {
};
const useRequest = (initOptions) => {
- const {logout} = useAuth();
+ const { logout } = useAuth();
const _options = Object.assign({}, defaultOptions, initOptions);