From 6cf30a591c20679584a2934fe8b78d6f58c2a016 Mon Sep 17 00:00:00 2001 From: AminGhasempoor Date: Tue, 14 Jul 2026 08:59:49 +0330 Subject: [PATCH] add delete violation and base report page --- .../diverReports/DriverReportsList.jsx | 20 +++--- .../reports/diverReports/index.jsx | 62 +++++++---------- .../machinesReports/MachinesReportsList.jsx | 32 ++++++--- .../reports/machinesReports/index.jsx | 62 +++++++---------- .../MachinesReportsList.jsx | 22 ++++-- .../reports/machinesTypeReports/index.jsx | 69 ++++++++----------- .../Actions/DeleteViolation/DeleteContent.jsx | 42 +++++++++++ .../Actions/DeleteViolation/index.jsx | 33 +++++++++ .../violations/RowActions/index.jsx | 2 + .../violations/ViolationsList.jsx | 27 -------- src/core/utils/routes.js | 5 +- 11 files changed, 209 insertions(+), 167 deletions(-) create mode 100644 src/components/dashboard/roadMissions/violations/Actions/DeleteViolation/DeleteContent.jsx create mode 100644 src/components/dashboard/roadMissions/violations/Actions/DeleteViolation/index.jsx diff --git a/src/components/dashboard/roadMissions/reports/diverReports/DriverReportsList.jsx b/src/components/dashboard/roadMissions/reports/diverReports/DriverReportsList.jsx index bca2edf..1c18129 100644 --- a/src/components/dashboard/roadMissions/reports/diverReports/DriverReportsList.jsx +++ b/src/components/dashboard/roadMissions/reports/diverReports/DriverReportsList.jsx @@ -4,16 +4,18 @@ import { Box } from "@mui/material"; import { useMemo } from "react"; import Toolbar from "./Toolbar"; import RowActions from "./RowActions"; +import { GET_DRIVERS_ACTIVITY_REPORT } from "@/core/utils/routes"; -const DriverReportsList = ({ data, specialFilter }) => { +const DriverReportsList = ({ specialFilter }) => { const columns = useMemo(() => { return [ { accessorKey: "driver_id", header: "کد یکتا", id: "driver_id", - enableColumnFilter: false, - enableSorting: false, + enableColumnFilter: true, + columnFilterModeOptions: ["equals", "contains"], + enableSorting: true, datatype: "numeric", grow: false, size: 50, @@ -22,8 +24,9 @@ const DriverReportsList = ({ data, specialFilter }) => { accessorKey: "driver_name", header: "نام راننده", id: "driver_name", - enableColumnFilter: false, - enableSorting: false, + enableColumnFilter: true, + columnFilterModeOptions: ["equals", "contains"], + enableSorting: true, datatype: "text", grow: false, size: 50, @@ -33,7 +36,7 @@ const DriverReportsList = ({ data, specialFilter }) => { header: "کارکرد", id: "func", enableColumnFilter: false, - enableSorting: false, + enableSorting: true, datatype: "number", grow: false, size: 50, @@ -43,7 +46,7 @@ const DriverReportsList = ({ data, specialFilter }) => { header: "تعداد ماموریت", id: "missions", enableColumnFilter: false, - enableSorting: false, + enableSorting: true, datatype: "number", grow: false, size: 50, @@ -56,8 +59,9 @@ const DriverReportsList = ({ data, specialFilter }) => { { - const [data, setData] = useState(null); const { data: userPermissions } = usePermissions(); const { user } = useAuth(); - const requestServer = useRequest(); const hasProvincesPermission = userPermissions?.includes("mission-report-country"); const defaultValues = { @@ -32,38 +28,32 @@ const DriverReportsPage = () => { ]; const [specialFilter, setSpecialFilter] = useState(defaultFilter); - const onSearchSubmit = async (data) => { - const params = new URLSearchParams(); - params.set("from_date", `${data.from_date} 00:00:00`); - params.set("date_to", `${data.date_to} 23:59:59`); - setSpecialFilter([ - { value: `${data.province_id}`, datatype: "numeric", id: "province_id", fn: "equals" }, - { value: `${data.from_date} 00:00:00`, datatype: "date", id: "start_time", fn: "greaterThan" }, - { value: `${data.date_to} 23:59:59`, datatype: "date", id: "finish_time", fn: "lessThan" }, - ]); - if (data.province_id === "-1") { - try { - const response = await requestServer(`${GET_DRIVER_COUNTRY_ACTIVITY_REPORT}?${params}`); - const result = response.data.data; + const onSearchSubmit = (data) => { + const filters = [ + { + value: `${data.from_date} 00:00:00`, + datatype: "date", + id: "start_time", + fn: "greaterThan", + }, + { + value: `${data.date_to} 23:59:59`, + datatype: "date", + id: "finish_time", + fn: "lessThan", + }, + ]; - setData({ - data: result.activities, - filters: data, - }); - } catch (e) {} - } else { - try { - params.set("province_id", `${data.province_id}`); - const response = await requestServer(`${GET_DRIVER_PROVINCE_ACTIVITY_REPORT}?${params}`); - - const result = response.data.data; - - setData({ - data: result.activities, - filters: data, - }); - } catch (e) {} + if (data.province_id !== "-1") { + filters.unshift({ + value: data.province_id, + datatype: "numeric", + id: "province_id", + fn: "equals", + }); } + + setSpecialFilter(filters); }; useEffect(() => { @@ -100,7 +90,7 @@ const DriverReportsPage = () => { handleSubmit={handleSubmit} onSearchSubmit={onSearchSubmit} /> - {!data ? : } + ); }; diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/MachinesReportsList.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/MachinesReportsList.jsx index ca50d9c..baaa830 100644 --- a/src/components/dashboard/roadMissions/reports/machinesReports/MachinesReportsList.jsx +++ b/src/components/dashboard/roadMissions/reports/machinesReports/MachinesReportsList.jsx @@ -4,17 +4,23 @@ import { Box } from "@mui/material"; import { useMemo } from "react"; import Toolbar from "./Toolbar"; import RowActions from "./RowActions"; +import { + GET_MACHINES_ACTIVITY_REPORT, + GET_MACHINES_COUNTRY_ACTIVITY_REPORT, + GET_MACHINES_PROVINCE_ACTIVITY_REPORT, +} from "@/core/utils/routes"; -const MachinesReportsList = ({ data, specialFilter }) => { +const MachinesReportsList = ({ specialFilter }) => { const columns = useMemo(() => { return [ { accessorKey: "machine_id", header: "کد یکتا", id: "machine_id", - enableColumnFilter: false, - enableSorting: false, - datatype: "numeric", + enableColumnFilter: true, + columnFilterModeOptions: ["equals", "contains"], + enableSorting: true, + datatype: "text", grow: false, size: 50, }, @@ -22,8 +28,9 @@ const MachinesReportsList = ({ data, specialFilter }) => { accessorKey: "car_name", header: "مدل ماشین", id: "car_name", - enableColumnFilter: false, - enableSorting: false, + enableColumnFilter: true, + columnFilterModeOptions: ["equals", "contains"], + enableSorting: true, datatype: "text", grow: false, size: 50, @@ -32,8 +39,9 @@ const MachinesReportsList = ({ data, specialFilter }) => { accessorKey: "machine_code", header: "کد ماشین", id: "machine_code", - enableColumnFilter: false, - enableSorting: false, + enableColumnFilter: true, + columnFilterModeOptions: ["equals", "contains"], + enableSorting: true, datatype: "text", grow: false, size: 50, @@ -43,6 +51,7 @@ const MachinesReportsList = ({ data, specialFilter }) => { header: "کارکرد", id: "func", enableColumnFilter: false, + columnFilterModeOptions: ["equals", "contains"], enableSorting: false, datatype: "number", grow: false, @@ -53,7 +62,7 @@ const MachinesReportsList = ({ data, specialFilter }) => { header: "تعداد ماموریت", id: "missions", enableColumnFilter: false, - enableSorting: false, + enableSorting: true, datatype: "number", grow: false, size: 50, @@ -67,11 +76,12 @@ const MachinesReportsList = ({ data, specialFilter }) => { diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/index.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/index.jsx index af47ba9..8c4eb68 100644 --- a/src/components/dashboard/roadMissions/reports/machinesReports/index.jsx +++ b/src/components/dashboard/roadMissions/reports/machinesReports/index.jsx @@ -1,11 +1,9 @@ "use client"; import PageTitle from "@/core/components/PageTitle"; -import { GET_MACHINES_COUNTRY_ACTIVITY_REPORT, GET_MACHINES_PROVINCE_ACTIVITY_REPORT } from "@/core/utils/routes"; import { useAuth } from "@/lib/contexts/auth"; import { usePermissions } from "@/lib/hooks/usePermissions"; -import useRequest from "@/lib/hooks/useRequest"; import { yupResolver } from "@hookform/resolvers/yup"; -import { LinearProgress, Stack } from "@mui/material"; +import { Stack } from "@mui/material"; import moment from "jalali-moment"; import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; @@ -14,10 +12,8 @@ import MachinesReportsList from "./MachinesReportsList"; import SearchReportList from "./Search"; const MachinesReportsPage = () => { - const [data, setData] = useState(null); const { data: userPermissions } = usePermissions(); const { user } = useAuth(); - const requestServer = useRequest(); const hasProvincesPermission = userPermissions?.includes("mission-report-country"); const defaultValues = { @@ -32,38 +28,32 @@ const MachinesReportsPage = () => { ]; const [specialFilter, setSpecialFilter] = useState(defaultFilter); - const onSearchSubmit = async (data) => { - const params = new URLSearchParams(); - params.set("from_date", `${data.from_date} 00:00:00`); - params.set("date_to", `${data.date_to} 23:59:59`); - setSpecialFilter([ - { value: `${data.province_id}`, datatype: "numeric", id: "province_id", fn: "equals" }, - { value: `${data.from_date} 00:00:00`, datatype: "date", id: "start_time", fn: "greaterThan" }, - { value: `${data.date_to} 23:59:59`, datatype: "date", id: "finish_time", fn: "lessThan" }, - ]); - if (data.province_id === "-1") { - try { - const response = await requestServer(`${GET_MACHINES_COUNTRY_ACTIVITY_REPORT}?${params}`); - const result = response.data.data; + const onSearchSubmit = (data) => { + const filters = [ + { + value: `${data.from_date} 00:00:00`, + datatype: "date", + id: "start_time", + fn: "greaterThan", + }, + { + value: `${data.date_to} 23:59:59`, + datatype: "date", + id: "finish_time", + fn: "lessThan", + }, + ]; - setData({ - data: result.activities, - filters: data, - }); - } catch (e) {} - } else { - try { - params.set("province_id", `${data.province_id}`); - const response = await requestServer(`${GET_MACHINES_PROVINCE_ACTIVITY_REPORT}?${params}`); - - const result = response.data.data; - - setData({ - data: result.activities, - filters: data, - }); - } catch (e) {} + if (data.province_id !== "-1") { + filters.unshift({ + value: data.province_id, + datatype: "numeric", + id: "province_id", + fn: "equals", + }); } + + setSpecialFilter(filters); }; useEffect(() => { @@ -100,7 +90,7 @@ const MachinesReportsPage = () => { handleSubmit={handleSubmit} onSearchSubmit={onSearchSubmit} /> - {!data ? : } + ); }; diff --git a/src/components/dashboard/roadMissions/reports/machinesTypeReports/MachinesReportsList.jsx b/src/components/dashboard/roadMissions/reports/machinesTypeReports/MachinesReportsList.jsx index 4f8b994..198b001 100644 --- a/src/components/dashboard/roadMissions/reports/machinesTypeReports/MachinesReportsList.jsx +++ b/src/components/dashboard/roadMissions/reports/machinesTypeReports/MachinesReportsList.jsx @@ -3,17 +3,22 @@ import DataTableWithAuth from "@/core/components/DataTableWithAuth"; import { Box } from "@mui/material"; import { useMemo } from "react"; import Toolbar from "./Toolbar"; +import { + GET_MACHINES_TYPE_COUNTRY_ACTIVITY_REPORT, + GET_MACHINES_TYPE_PROVINCE_ACTIVITY_REPORT, +} from "@/core/utils/routes"; // import RowActions from "./RowActions"; -const MachinesReportsList = ({ data, specialFilter }) => { +const MachinesReportsList = ({ specialFilter }) => { const columns = useMemo(() => { return [ { accessorKey: "car_type", header: "نوع ماشین", id: "car_type", - enableColumnFilter: false, - enableSorting: false, + enableColumnFilter: true, + columnFilterModeOptions: ["equals", "contains"], + enableSorting: true, datatype: "text", grow: false, size: 50, @@ -23,7 +28,7 @@ const MachinesReportsList = ({ data, specialFilter }) => { header: "کارکرد", id: "func", enableColumnFilter: false, - enableSorting: false, + enableSorting: true, datatype: "number", grow: false, size: 50, @@ -33,7 +38,7 @@ const MachinesReportsList = ({ data, specialFilter }) => { header: "تعداد ماموریت", id: "missions", enableColumnFilter: false, - enableSorting: false, + enableSorting: true, datatype: "number", grow: false, size: 50, @@ -46,11 +51,16 @@ const MachinesReportsList = ({ data, specialFilter }) => { x.id === "province_id")?.value === "-1" + ? GET_MACHINES_TYPE_COUNTRY_ACTIVITY_REPORT + : GET_MACHINES_TYPE_PROVINCE_ACTIVITY_REPORT + } page_name={"roadMissionReportMachineTypeReport"} table_name={"roadMissionReportMachineTypeReportList"} enablePagination={false} specialFilter={specialFilter} + need_filter={true} // enableRowActions // RowActions={RowActions} /> diff --git a/src/components/dashboard/roadMissions/reports/machinesTypeReports/index.jsx b/src/components/dashboard/roadMissions/reports/machinesTypeReports/index.jsx index add1f5c..6982d6a 100644 --- a/src/components/dashboard/roadMissions/reports/machinesTypeReports/index.jsx +++ b/src/components/dashboard/roadMissions/reports/machinesTypeReports/index.jsx @@ -1,14 +1,9 @@ "use client"; import PageTitle from "@/core/components/PageTitle"; -import { - GET_MACHINES_TYPE_COUNTRY_ACTIVITY_REPORT, - GET_MACHINES_TYPE_PROVINCE_ACTIVITY_REPORT, -} from "@/core/utils/routes"; import { useAuth } from "@/lib/contexts/auth"; import { usePermissions } from "@/lib/hooks/usePermissions"; -import useRequest from "@/lib/hooks/useRequest"; import { yupResolver } from "@hookform/resolvers/yup"; -import { LinearProgress, Stack } from "@mui/material"; +import { Stack } from "@mui/material"; import moment from "jalali-moment"; import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; @@ -17,10 +12,8 @@ import MachinesReportsList from "./MachinesReportsList"; import SearchReportList from "./Search"; const MachinesTypeReportsPage = () => { - const [data, setData] = useState(null); const { data: userPermissions } = usePermissions(); const { user } = useAuth(); - const requestServer = useRequest(); const hasProvincesPermission = userPermissions?.includes("mission-report-country"); const defaultValues = { @@ -30,43 +23,37 @@ const MachinesTypeReportsPage = () => { }; const defaultFilter = [ { value: `${defaultValues.province_id}`, datatype: "numeric", id: "province_id", fn: "equals" }, - { value: `${defaultValues.from_date}`, datatype: "date", id: "from_date", fn: "between" }, - { value: `${defaultValues.date_to}`, datatype: "date", id: "date_to", fn: "between" }, + { value: `${defaultValues.from_date} 00:00:00`, datatype: "date", id: "start_time", fn: "greaterThan" }, + { value: `${defaultValues.date_to} 23:59:59`, datatype: "date", id: "finish_time", fn: "lessThan" }, ]; const [specialFilter, setSpecialFilter] = useState(defaultFilter); - const onSearchSubmit = async (data) => { - const params = new URLSearchParams(); - params.set("from_date", `${data.from_date} 00:00:00`); - params.set("date_to", `${data.date_to} 23:59:59`); - setSpecialFilter([ - { value: `${data.province_id}`, datatype: "numeric", id: "province_id", fn: "equals" }, - { value: `${data.from_date}`, datatype: "date", id: "from_date", fn: "between" }, - { value: `${data.date_to}`, datatype: "date", id: "date_to", fn: "between" }, - ]); - if (data.province_id === "-1") { - try { - const response = await requestServer(`${GET_MACHINES_TYPE_COUNTRY_ACTIVITY_REPORT}?${params}`); - const result = response.data.data; + const onSearchSubmit = (data) => { + const filters = [ + { + value: `${data.from_date} 00:00:00`, + datatype: "date", + id: "start_time", + fn: "greaterThan", + }, + { + value: `${data.date_to} 23:59:59`, + datatype: "date", + id: "finish_time", + fn: "lessThan", + }, + ]; - setData({ - data: result.activities, - filters: data, - }); - } catch (e) {} - } else { - try { - params.set("province_id", `${data.province_id}`); - const response = await requestServer(`${GET_MACHINES_TYPE_PROVINCE_ACTIVITY_REPORT}?${params}`); - - const result = response.data.data; - - setData({ - data: result.activities, - filters: data, - }); - } catch (e) {} + if (data.province_id !== "-1") { + filters.unshift({ + value: data.province_id, + datatype: "numeric", + id: "province_id", + fn: "equals", + }); } + + setSpecialFilter(filters); }; useEffect(() => { @@ -103,7 +90,7 @@ const MachinesTypeReportsPage = () => { handleSubmit={handleSubmit} onSearchSubmit={onSearchSubmit} /> - {!data ? : } + ); }; diff --git a/src/components/dashboard/roadMissions/violations/Actions/DeleteViolation/DeleteContent.jsx b/src/components/dashboard/roadMissions/violations/Actions/DeleteViolation/DeleteContent.jsx new file mode 100644 index 0000000..004dc4d --- /dev/null +++ b/src/components/dashboard/roadMissions/violations/Actions/DeleteViolation/DeleteContent.jsx @@ -0,0 +1,42 @@ +import { Button, DialogActions, DialogContent, Stack, Typography } from "@mui/material"; +import React, { useState } from "react"; +import useRequest from "@/lib/hooks/useRequest"; +import { DELETE_VIOLATION } from "@/core/utils/routes"; + +const DeleteContent = ({ rowId, mutate, setOpenDeleteDialog }) => { + const [submitting, setSubmitting] = useState(false); + const requestServer = useRequest({ notificationSuccess: true }); + const handleClick = () => { + setSubmitting(true); + requestServer(`${DELETE_VIOLATION}/${rowId}`, "post", { + hasSidebarUpdate: true, + }) + .then(() => { + mutate(); + setOpenDeleteDialog(false); + setSubmitting(false); + }) + .catch(() => { + setSubmitting(false); + }); + }; + return ( + <> + + + آیا از حذف تخلف اطمینان دارید؟ + + + + + + + + ); +}; + +export default DeleteContent; diff --git a/src/components/dashboard/roadMissions/violations/Actions/DeleteViolation/index.jsx b/src/components/dashboard/roadMissions/violations/Actions/DeleteViolation/index.jsx new file mode 100644 index 0000000..2d36395 --- /dev/null +++ b/src/components/dashboard/roadMissions/violations/Actions/DeleteViolation/index.jsx @@ -0,0 +1,33 @@ +import { useState } from "react"; +import { Dialog, DialogTitle, IconButton, Tooltip } from "@mui/material"; +import DeleteIcon from "@mui/icons-material/Delete"; +import DeleteContent from "./DeleteContent"; + +const DeleteViolation = ({ mutate, rowId }) => { + const [openDeleteDialog, setOpenDeleteDialog] = useState(false); + + return ( + <> + + setOpenDeleteDialog(true)}> + + + + setOpenDeleteDialog(false)} + PaperProps={{ + sx: { + boxShadow: "rgba(60, 64, 67, 0.3) 0px 1px 16px 0px, rgba(60, 64, 67, 0.15) 0px 1px 10px 0px", + }, + }} + dir="rtl" + maxWidth={"md"} + > + حذف تخلف + + + + ); +} +export default DeleteViolation \ No newline at end of file diff --git a/src/components/dashboard/roadMissions/violations/RowActions/index.jsx b/src/components/dashboard/roadMissions/violations/RowActions/index.jsx index 7d45f68..3725894 100644 --- a/src/components/dashboard/roadMissions/violations/RowActions/index.jsx +++ b/src/components/dashboard/roadMissions/violations/RowActions/index.jsx @@ -1,5 +1,6 @@ // import CreateWithoutProcess from "../Actions/CreateWithoutProcess"; import EditViolation from "../Actions/EditViolation"; +import DeleteViolation from "../Actions/DeleteViolation"; const RowActions = ({ row, mutate }) => { // const canEdit = row.original.status === 0 && row.original.type === 1; @@ -7,6 +8,7 @@ const RowActions = ({ row, mutate }) => { <> {!row.original.mileage && } {/*{canEdit && }*/} + ); }; diff --git a/src/components/dashboard/roadMissions/violations/ViolationsList.jsx b/src/components/dashboard/roadMissions/violations/ViolationsList.jsx index 0f4f5fe..0827966 100644 --- a/src/components/dashboard/roadMissions/violations/ViolationsList.jsx +++ b/src/components/dashboard/roadMissions/violations/ViolationsList.jsx @@ -61,23 +61,6 @@ const ViolationsList = () => { columnFilterModeOptions: ["equals", "contains"], grow: false, }, - { - accessorKey: "status", - header: "وضعیت", - id: "status", - enableColumnFilter: true, - datatype: "numeric", - filterMode: "equals", - sortDescFirst: true, - grow: false, - columnSelectOption: () => { - return violationsCategoryStatus.map((category) => ({ - value: category.id, - label: category.name_fa, - })); - }, - Cell: ({ row }) => (row.original.type === 1 ? "خروج بدون مجوز" : "عدم تحرک"), - }, { accessorKey: "machine_code", header: "کد خودرو", @@ -142,16 +125,6 @@ const ViolationsList = () => { grow: false, Cell: ({ row }) => row.original.machine?.car_name || "-", }, - { - accessorKey: "mission_id", - header: "کد ماموریت", - id: "mission_id", - enableColumnFilter: false, - datatype: "numeric", - filterMode: "equals", - grow: false, - Cell: ({ row }) => row.original.mission_id || "-", - }, { accessorKey: "request_date", header: "تاریخ تخلف", diff --git a/src/core/utils/routes.js b/src/core/utils/routes.js index e8cd60f..ce5e6ff 100644 --- a/src/core/utils/routes.js +++ b/src/core/utils/routes.js @@ -249,14 +249,14 @@ export const FINISH_MISSION = api + "/api/v3/missions/control_unit/finish"; export const GET_ROAD_MISSIONS_VIOLATIONS_LIST = api + "/api/v3/missions/violation_management"; export const GET_MISSION_PROVINCE_ACTIVITY_REPORT = api + "/api/v3/missions/report/country_activity"; export const GET_MISSION_CITY_ACTIVITY_REPORT = api + "/api/v3/missions/report/country_activity"; -export const GET_MACHINES_COUNTRY_ACTIVITY_REPORT = api + "/api/v3/missions/report_machine/country_machines_activity"; +export const GET_MACHINES_ACTIVITY_REPORT = api + "/api/v3/missions/report_machine/machines_activity"; export const GET_MACHINES_PROVINCE_ACTIVITY_REPORT = api + "/api/v3/missions/report_machine/province_machines_activity"; export const EXPORT_GET_MACHINES_COUNTRY_ACTIVITY_REPORT = api + "/api/v3/missions/report_machine/country_machines_activity_excel"; export const EXPORT_GET_MACHINES_PROVINCE_ACTIVITY_REPORT = api + "/api/v3/missions/report_machine/province_machines_activity_excel"; -export const GET_DRIVER_COUNTRY_ACTIVITY_REPORT = +export const GET_DRIVERS_ACTIVITY_REPORT = api + "/api/v3/missions/report_machine/country_machine_drivers_activity"; export const GET_DRIVER_PROVINCE_ACTIVITY_REPORT = api + "/api/v3/missions/report_machine/province_machine_drivers_activity"; @@ -275,6 +275,7 @@ export const EXPORT_GET_MACHINES_TYPE_PROVINCE_ACTIVITY_REPORT = api + "/api/v3/missions/report_machine/province_machine_types_activity_excel"; export const CREATE_VIOLATION = api + "/api/v3/missions/violation_management"; export const EDIT_VIOLATION = api + "/api/v3/missions/violation_management"; +export const DELETE_VIOLATION = api + "/api/v3/missions/violation_management"; export const EXPORT_COUNTRY_ROAD_MISSIONS_REPORTS = api + "/api/v3/missions/report/country_excel_activity"; export const EXPORT_PROVINCE_ROAD_MISSIONS_REPORTS = api + "/api/v3/missions/report/province_excel_activity";