diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/Dialog.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/Dialog.jsx
index 200b891..8cb7c67 100644
--- a/src/components/dashboard/roadMissions/operator/Actions/Violations/Dialog.jsx
+++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/Dialog.jsx
@@ -2,7 +2,7 @@ import { Close } from "@mui/icons-material";
import { Dialog, DialogTitle, IconButton } from "@mui/material";
import ViolationsList from "./ViolationsList";
-const ViolationsDialog = ({ open, setOpen, mutate, row }) => {
+const ViolationsDialog = ({ open, setOpen, mutate }) => {
return (
);
};
diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/MachineAndDriver/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/MachineAndDriver/index.jsx
index 912eb63..a054310 100644
--- a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/MachineAndDriver/index.jsx
+++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/MachineAndDriver/index.jsx
@@ -20,10 +20,7 @@ const MachineAndDriver = ({ setTabState, allData, setAllData, handlePrev }) => {
<>
راننده
-
+
>
diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/Rahdaran/List/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/Rahdaran/List/index.jsx
index be31897..7b99247 100644
--- a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/Rahdaran/List/index.jsx
+++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/Rahdaran/List/index.jsx
@@ -25,17 +25,17 @@ const RahdaranList = ({ rahdaran, setRahdaran }) => {
my: 1,
}}
>
-
+
نام و نام خانوادگی:
{rahdar.name}
-
- کدملی:
- {rahdar.code}
-
+ {/**/}
+ {/* کدملی:*/}
+ {/* - /!*{rahdar.code}*!/*/}
+ {/**/}
handleRemove(index)}>
diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/index.jsx
index 9010671..8c3ea66 100644
--- a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/index.jsx
+++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/index.jsx
@@ -5,7 +5,7 @@ import { Dialog, IconButton, Tooltip } from "@mui/material";
import { useState } from "react";
import CreateForm from "./Form";
-const MissionCorrection = ({ row, mutate }) => {
+const MissionCorrection = ({ row, mutate, baseMutate }) => {
const [submitting, setSubmitting] = useState(false);
const requestServer = useRequest({ notificationSuccess: true });
const [open, setOpen] = useState(false);
@@ -31,6 +31,7 @@ const MissionCorrection = ({ row, mutate }) => {
})
.then((response) => {
mutate();
+ baseMutate();
setOpen(false);
})
.catch((error) => {})
diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/index.jsx
index 24e9532..a384e03 100644
--- a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/index.jsx
+++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/index.jsx
@@ -1,9 +1,9 @@
import MissionCorrection from "./MissionCorrection";
-export default function RowActions({ row, mutate }) {
+export default function RowActions({ row, mutate, baseMutate }) {
return (
<>
-
+
>
);
}
diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/ViolationsList.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/ViolationsList.jsx
index 40edd7a..82a993d 100644
--- a/src/components/dashboard/roadMissions/operator/Actions/Violations/ViolationsList.jsx
+++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/ViolationsList.jsx
@@ -7,7 +7,7 @@ import useCities from "@/lib/hooks/useCities";
import CustomSelectByDependency from "@/core/components/DataTable/filter/fieldsType/CustomSelectByDependency";
import useProvinces from "@/lib/hooks/useProvince";
-const ViolationsList = ({ setOpen }) => {
+const ViolationsList = ({ setOpen, mutate }) => {
const columns = useMemo(() => {
const dynamicColumns = {
header: "استان",
@@ -132,7 +132,7 @@ const ViolationsList = ({ setOpen }) => {
table_name={"operatorViolationsList"}
enableRowActions
positionActionsColumn={"first"}
- RowActions={(props) => }
+ RowActions={(props) => }
/>
>
diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/index.jsx
index 3d5f48a..261fb4e 100644
--- a/src/components/dashboard/roadMissions/operator/Actions/Violations/index.jsx
+++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/index.jsx
@@ -4,7 +4,7 @@ import ViolationsDialog from "./Dialog";
import theme from "@/core/utils/theme";
import RemoveRoadIcon from "@mui/icons-material/RemoveRoad";
-const OperatorViolations = ({ row, mutate }) => {
+const OperatorViolations = ({ mutate }) => {
const [open, setOpen] = useState(false);
const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
return (
@@ -26,7 +26,7 @@ const OperatorViolations = ({ row, mutate }) => {
)}
-
+
>
);
};
diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/index.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/index.jsx
index 6e3afa0..ce38e38 100644
--- a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/index.jsx
+++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/index.jsx
@@ -8,6 +8,7 @@ import { ExitToApp } from "@mui/icons-material";
import { Box, Button, DialogActions, DialogContent, Grid, Stack } from "@mui/material";
import { Controller, useForm } from "react-hook-form";
import { object, string } from "yup";
+import LtrTextField from "@/core/components/LtrTextField";
const validationSchema = object({
explanation: string().required("موضوع را مشخص کنید!"),
@@ -125,6 +126,29 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => {
}}
/>
+
+
+ (
+ {
+ if (isNaN(Number(e.target.value))) return;
+ field.onChange(e.target.value);
+ }}
+ size="small"
+ fullWidth
+ label="کیلومتر خودرو / ساعت کار"
+ InputLabelProps={{ shrink: true }}
+ />
+ )}
+ />
+
+
diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Verify/index.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Verify/index.jsx
index 89e0b41..39f511f 100644
--- a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Verify/index.jsx
+++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Verify/index.jsx
@@ -60,6 +60,11 @@ const Verify = ({ allData, handlePrev, submitForm, submitting }) => {
+
+ کیلومتر خودرو / ساعت کار
+
+
+
تاریخ شروع ماموریت
diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/index.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/index.jsx
index 0adbb1f..48f0c44 100644
--- a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/index.jsx
+++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/index.jsx
@@ -25,8 +25,6 @@ const reducer = (state, action) => {
};
const CreateForm = ({ defaultValues, submitForm, setOpen, submitting, oldBound }) => {
- console.log("defaultValues", defaultValues);
-
const [allData, dispatch] = useReducer(reducer, defaultValues);
const [tabState, setTabState] = useState(0);
const handleClose = () => {
diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/index.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/index.jsx
index 31c0005..0c7f4d9 100644
--- a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/index.jsx
+++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/index.jsx
@@ -18,6 +18,7 @@ const DialogAdd = ({ mutate, setOpen, oldBound, rahdaran, machine, row }) => {
driver: row.original.driver_id,
zone: result.region,
type: result.type,
+ end_km: result.end_km,
...(result.type == 1
? {
end_date: `${result.end_date} ${moment(result.end_time).format("HH:mm")}`,
@@ -54,6 +55,7 @@ const DialogAdd = ({ mutate, setOpen, oldBound, rahdaran, machine, row }) => {
rahdaran: rahdaran.filter((r) => !r.is_driver),
bound_type: "polyline",
type: "",
+ end_km: "",
end_date: "",
end_time: null,
end_point: "",
diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Edit/EditController/index.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Edit/EditController/index.jsx
index 6d9cac7..e838647 100644
--- a/src/components/dashboard/roadMissions/operator/RowActions/Edit/EditController/index.jsx
+++ b/src/components/dashboard/roadMissions/operator/RowActions/Edit/EditController/index.jsx
@@ -3,61 +3,75 @@ import useRequest from "@/lib/hooks/useRequest";
import DialogLoading from "@/core/components/DialogLoading";
import CreateForm from "../../../Actions/Create/Form";
import moment from "jalali-moment";
-import L from "leaflet";
+import polyline from "@mapbox/polyline";
import { GET_RAHDARAN_BY_ID, UPDATE_REQUEST_MISSION } from "@/core/utils/routes";
const EditController = ({ row, mutate, openEditDialog, setOpenEditDialog }) => {
- const latLngs = useMemo(() => {
- return row.original.area.coordinates.map(([lng, lat]) => [lat, lng]);
- }, [row.original.area.coordinates]);
-
- const bound = useMemo(
- () => (row.original.area.type === "polygon" ? L.polygon(latLngs) : L.polyline(latLngs)),
- [row.original.area.type, latLngs]
- );
-
const [submitting, setSubmitting] = useState(false);
const [rahdaran, setRahdaran] = useState(null);
const [rahdaranLoading, setRahdaranLoading] = useState(true);
+
const requestServer = useRequest();
+ const locations = useMemo(() => {
+ if (!row.original.encoded_route) return [];
+
+ const decoded = polyline.decode(row.original.encoded_route, 6);
+
+ if (decoded.length === 0) return [];
+
+ return [
+ {
+ lat: decoded[0][0],
+ lon: decoded[0][1],
+ },
+ {
+ lat: decoded[decoded.length - 1][0],
+ lon: decoded[decoded.length - 1][1],
+ },
+ ];
+ }, [row.original.encoded_route]);
+
useEffect(() => {
setRahdaranLoading(true);
+
requestServer(`${GET_RAHDARAN_BY_ID}/${row.original.id}`, "get")
.then((response) => {
setRahdaran(response.data.data);
- setRahdaranLoading(false);
})
- .catch((e) => {
+ .catch(() => {})
+ .finally(() => {
setRahdaranLoading(false);
});
}, [row.original.id]);
const submitForm = async (result) => {
setSubmitting(true);
- const latlngs = result.bound.getLatLngs();
- const normalized = result.bound_type === "polygon" ? latlngs : [latlngs];
-
- const area = normalized.map((ring) => ring.map(({ lat, lng }) => [lat, lng]));
await requestServer(`${UPDATE_REQUEST_MISSION}/${row.original.id}`, "post", {
data: {
explanation: result.explanation,
category_id: result.category_id,
+
...(result.category_id == 3
? {
road_observed_id: result.road_observed_id,
}
: {}),
- area: {
- type: result.bound_type,
- coordinates: area[0],
- },
- ...(result.rahdaran.length != 0 ? { rahdaran: result.rahdaran.map((r) => r.id) } : {}),
+
+ encoded_route: result.area,
+
+ ...(result.rahdaran.length !== 0
+ ? {
+ rahdaran: result.rahdaran.map((r) => r.id),
+ }
+ : {}),
+
requested_machines: result.requested_machines,
type: result.type,
zone: result.region,
end_point: result.end_point,
+
...(result.type == 1
? {
start_date: `${result.start_date} ${moment(result.start_time).format("HH:mm")}`,
@@ -71,46 +85,51 @@ const EditController = ({ row, mutate, openEditDialog, setOpenEditDialog }) => {
hasSidebarUpdate: true,
notificationSuccess: true,
})
- .then((response) => {
+ .then(() => {
mutate();
setOpenEditDialog(false);
})
- .catch((error) => {})
+ .catch(() => {})
.finally(() => {
setSubmitting(false);
});
};
- return (
- <>
- {rahdaranLoading ? (
-
- ) : (
- !r.isDriver),
- requested_machines: row.original.requested_machines,
- bound: bound,
- bound_type: row.original.area.type,
- type: row.original.type,
- start_date: moment(row.original.start_date).format("YYYY-MM-DD"),
- start_time: moment(row.original.start_date).toDate(),
- end_date: moment(row.original.end_date).format("YYYY-MM-DD"),
- end_time: moment(row.original.end_date).toDate(),
- end_point: row.original.end_point,
- region: row.original.zone,
- }}
- submitForm={submitForm}
- submitting={submitting}
- open={openEditDialog}
- setOpen={setOpenEditDialog}
- mutate={mutate}
- />
- )}
- >
+ return rahdaranLoading ? (
+
+ ) : (
+ !r.isDriver),
+
+ requested_machines: row.original.requested_machines,
+
+ area: row.original.encoded_route,
+ locations,
+
+ type: row.original.type,
+
+ start_date: moment(row.original.start_date).format("YYYY-MM-DD"),
+ start_time: moment(row.original.start_date).toDate(),
+
+ end_date: moment(row.original.end_date).format("YYYY-MM-DD"),
+ end_time: moment(row.original.end_date).toDate(),
+
+ end_point: row.original.end_point,
+ region: row.original.zone,
+ }}
+ submitForm={submitForm}
+ submitting={submitting}
+ open={openEditDialog}
+ setOpen={setOpenEditDialog}
+ mutate={mutate}
+ />
);
};
+
export default EditController;
diff --git a/src/components/dashboard/roadMissions/operator/Toolbar.jsx b/src/components/dashboard/roadMissions/operator/Toolbar.jsx
index 071b9c0..b3f0e65 100644
--- a/src/components/dashboard/roadMissions/operator/Toolbar.jsx
+++ b/src/components/dashboard/roadMissions/operator/Toolbar.jsx
@@ -7,7 +7,7 @@ const Toolbar = ({ table, filterData, mutate }) => {
return (
-
+
{/**/}
);
diff --git a/src/components/dashboard/roadMissions/transportation/RowActions/Allocation/Form/MachinesDialog/MachineList/index.jsx b/src/components/dashboard/roadMissions/transportation/RowActions/Allocation/Form/MachinesDialog/MachineList/index.jsx
index 4173929..b602ea4 100644
--- a/src/components/dashboard/roadMissions/transportation/RowActions/Allocation/Form/MachinesDialog/MachineList/index.jsx
+++ b/src/components/dashboard/roadMissions/transportation/RowActions/Allocation/Form/MachinesDialog/MachineList/index.jsx
@@ -78,7 +78,6 @@ const MachinesList = ({ machineType, setMachine, setOpenMachinesDialog }) => {
columns={columns}
specialFilter={[
{ value: machineType, datatype: "text", id: "car_type", fn: "equals" },
- { value: 1, datatype: "numeric", id: "status", fn: "equals" },
{
value: city_id ? city_id : province_id,
datatype: "numeric",
diff --git a/src/components/dashboard/roadMissions/violations/Actions/EditViolation/EditController.jsx b/src/components/dashboard/roadMissions/violations/Actions/EditViolation/EditController.jsx
index 85fd833..d963867 100644
--- a/src/components/dashboard/roadMissions/violations/Actions/EditViolation/EditController.jsx
+++ b/src/components/dashboard/roadMissions/violations/Actions/EditViolation/EditController.jsx
@@ -11,6 +11,7 @@ const EditController = ({ rowId, mutate, setOpen, row }) => {
const defaultData = {
end_date: endDate,
+ end_km: "",
end_time: row?.original?.enter_time ? new Date(row.original.enter_time) : null,
};
const handleSubmit = async (result) => {
@@ -19,6 +20,7 @@ const EditController = ({ rowId, mutate, setOpen, row }) => {
if (result.end_date && result.end_time) {
payload.enter_time = `${result.end_date} ${moment(result.end_time).format("HH:mm")}`;
}
+ payload.end_km = result.end_km;
await requestServer(`${EDIT_VIOLATION}/${rowId}`, "post", {
data: payload,
diff --git a/src/components/dashboard/roadMissions/violations/Actions/EditViolation/EditViolationForm.jsx b/src/components/dashboard/roadMissions/violations/Actions/EditViolation/EditViolationForm.jsx
index 4beac95..7efdf23 100644
--- a/src/components/dashboard/roadMissions/violations/Actions/EditViolation/EditViolationForm.jsx
+++ b/src/components/dashboard/roadMissions/violations/Actions/EditViolation/EditViolationForm.jsx
@@ -1,9 +1,10 @@
-import { useForm } from "react-hook-form";
+import { Controller, useForm } from "react-hook-form";
import { yupResolver } from "@hookform/resolvers/yup";
import StyledForm from "@/core/components/StyledForm";
import { Box, Button, DialogActions, DialogContent, Grid, Stack } from "@mui/material";
import MissionDates from "./MissionDates";
import * as yup from "yup";
+import LtrTextField from "@/core/components/LtrTextField";
export const schema = yup
.object({
@@ -55,7 +56,7 @@ const EditViolationForm = ({ setOpenMachinesDialog, defaultValues, onSubmitBase
<>
-
+
@@ -73,7 +74,28 @@ const EditViolationForm = ({ setOpenMachinesDialog, defaultValues, onSubmitBase
)}
-
+
+ (
+ {
+ if (isNaN(Number(e.target.value))) return;
+ field.onChange(e.target.value);
+ }}
+ size="small"
+ fullWidth
+ label="کیلومتر خودرو / ساعت کار"
+ InputLabelProps={{ shrink: true }}
+ />
+ )}
+ />
+
+