Compare commits
16 Commits
ecced23bf4
...
v1.8.8
| Author | SHA1 | Date | |
|---|---|---|---|
| cab6677bca | |||
| b0a0facea8 | |||
| 58fc9135ac | |||
| 3a28da9b39 | |||
| 80da9a1e40 | |||
| 83587962fd | |||
| 0bfb747d3f | |||
| 24d099ae8c | |||
| 5071f7287f | |||
| 5dadece9f3 | |||
| 4dea6f5294 | |||
| 24abe2d07c | |||
| a192781bcf | |||
| cc65c1e5f1 | |||
| 38dbd1c141 | |||
| ce2b7c7a6f |
@@ -1,5 +1,5 @@
|
|||||||
HOST="rms.witel.ir"
|
HOST="rms.witel.ir"
|
||||||
HOST_RMTO="rms.rmto.ir"
|
HOST_RMTO="rms.rmto.ir"
|
||||||
NEXT_PUBLIC_VERSION="1.8.6"
|
NEXT_PUBLIC_VERSION="1.8.8"
|
||||||
NEXT_PUBLIC_API_URL="https://rms.witel.ir"
|
NEXT_PUBLIC_API_URL="https://rms.witel.ir"
|
||||||
NEXT_PUBLIC_MAPTILE_ENDPOINT="https://rmsmap.rmto.ir/141map"
|
NEXT_PUBLIC_MAPTILE_ENDPOINT="https://rmsmap.rmto.ir/141map"
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import WithPermission from "@/core/middlewares/withPermission";
|
import WithPermission from "@/core/middlewares/withPermission";
|
||||||
import MissionsReportPage from "@/components/dashboard/roadMissions/reports/missionsReports";
|
import MissionsReportPage from "@/components/dashboard/roadMissions/reports/taradodReports";
|
||||||
export const metadata = {
|
export const metadata = {
|
||||||
title: "کارتابل گزارش ترددها",
|
title: "کارتابل گزارش ترددها",
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import useCities from "@/lib/hooks/useCities";
|
|||||||
const ControlList = () => {
|
const ControlList = () => {
|
||||||
const columns = useMemo(() => {
|
const columns = useMemo(() => {
|
||||||
const dynamicColumns = {
|
const dynamicColumns = {
|
||||||
|
accessorKey: "province_id",
|
||||||
header: "استان",
|
header: "استان",
|
||||||
id: "province_id",
|
id: "province_id",
|
||||||
enableColumnFilter: true,
|
enableColumnFilter: true,
|
||||||
|
|||||||
@@ -1,14 +1,47 @@
|
|||||||
|
import LtrTextField from "@/core/components/LtrTextField";
|
||||||
|
import MuiDatePicker from "@/core/components/MuiDatePicker";
|
||||||
|
import MuiTimePicker from "@/core/components/MuiTimePicker";
|
||||||
import { FINISH_MISSION } from "@/core/utils/routes";
|
import { FINISH_MISSION } from "@/core/utils/routes";
|
||||||
import useRequest from "@/lib/hooks/useRequest";
|
import useRequest from "@/lib/hooks/useRequest";
|
||||||
|
import { yupResolver } from "@hookform/resolvers/yup";
|
||||||
import { Button, DialogActions, DialogContent, Stack, Typography } from "@mui/material";
|
import { Button, DialogActions, DialogContent, Stack, Typography } from "@mui/material";
|
||||||
|
import { format } from "date-fns-jalali";
|
||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
|
import { Controller, useForm } from "react-hook-form";
|
||||||
|
import { mixed, object, string } from "yup";
|
||||||
|
|
||||||
const FinishMissionContent = ({ rowId, mutate, setOpenFinishMissionDialog }) => {
|
const FinishMissionContent = ({ rowId, mutate, setOpenFinishMissionDialog }) => {
|
||||||
const [submitting, setSubmitting] = useState(false);
|
const [submitting, setSubmitting] = useState(false);
|
||||||
const requestServer = useRequest({ notificationSuccess: true });
|
const requestServer = useRequest({ notificationSuccess: true });
|
||||||
const handleClick = () => {
|
|
||||||
setSubmitting(true);
|
const validationSchema = object().shape({
|
||||||
|
end_km: string().required("لطفاً کیلومتر را وارد کنید."),
|
||||||
|
start_date: mixed().required("تاریخ خروج خودرو را مشخص کنید."),
|
||||||
|
start_time: mixed().required("ساعت خروج خودرو را مشخص کنید."),
|
||||||
|
});
|
||||||
|
|
||||||
|
const {
|
||||||
|
control,
|
||||||
|
handleSubmit,
|
||||||
|
formState: { isSubmitting },
|
||||||
|
} = useForm({
|
||||||
|
defaultValues: {
|
||||||
|
end_km: "",
|
||||||
|
start_date: null,
|
||||||
|
start_time: null,
|
||||||
|
},
|
||||||
|
resolver: yupResolver(validationSchema),
|
||||||
|
mode: "all",
|
||||||
|
});
|
||||||
|
|
||||||
|
const onSubmit = (values) => {
|
||||||
|
const formattedDate = values.start_date;
|
||||||
|
const formattedTime = format(values.start_time, "HH:mm");
|
||||||
requestServer(`${FINISH_MISSION}/${rowId}`, "post", {
|
requestServer(`${FINISH_MISSION}/${rowId}`, "post", {
|
||||||
|
data: {
|
||||||
|
end_km: values.end_km,
|
||||||
|
time: `${formattedDate} ${formattedTime}`,
|
||||||
|
},
|
||||||
hasSidebarUpdate: true,
|
hasSidebarUpdate: true,
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
@@ -20,18 +53,76 @@ const FinishMissionContent = ({ rowId, mutate, setOpenFinishMissionDialog }) =>
|
|||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<DialogContent>
|
<DialogContent>
|
||||||
<Stack alignItems="center" spacing={2}>
|
<Stack alignItems="center" spacing={2}>
|
||||||
<Typography mt={2}>آیا از ورود خودرو و پایان ماموریت اطمینان دارید؟</Typography>
|
<Typography mt={2}>آیا از ورود خودرو و پایان ماموریت اطمینان دارید؟</Typography>
|
||||||
|
<Stack>
|
||||||
|
<Controller
|
||||||
|
control={control}
|
||||||
|
name={"end_km"}
|
||||||
|
render={({ field, fieldState: { error } }) => (
|
||||||
|
<LtrTextField
|
||||||
|
autoComplete="off"
|
||||||
|
type="tel"
|
||||||
|
value={field.value}
|
||||||
|
onChange={(e) => {
|
||||||
|
if (isNaN(Number(e.target.value))) return;
|
||||||
|
field.onChange(e.target.value);
|
||||||
|
}}
|
||||||
|
size="small"
|
||||||
|
fullWidth
|
||||||
|
label="کیلومتر خودرو / ساعت کار"
|
||||||
|
InputLabelProps={{ shrink: true }}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
|
<Stack>
|
||||||
|
<Controller
|
||||||
|
control={control}
|
||||||
|
name={"start_date"}
|
||||||
|
render={({ field, fieldState: { error } }) => (
|
||||||
|
<MuiDatePicker
|
||||||
|
name="start_date"
|
||||||
|
error={error}
|
||||||
|
value={field.value || null}
|
||||||
|
disableFuture={false}
|
||||||
|
placeholder={"تاریخ پایان ماموریت را وارد کنید"}
|
||||||
|
label={"تاریخ پایان ماموریت"}
|
||||||
|
setFieldValue={(name, value) => field.onChange(value || null)}
|
||||||
|
helperText={error ? error.message : null}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
|
<Stack>
|
||||||
|
<Controller
|
||||||
|
control={control}
|
||||||
|
name={"start_time"}
|
||||||
|
render={({ field, fieldState: { error } }) => (
|
||||||
|
<MuiTimePicker
|
||||||
|
name="start_time"
|
||||||
|
error={error}
|
||||||
|
value={field.value || null}
|
||||||
|
views={["hours", "minutes"]}
|
||||||
|
placeholder={"زمان پایان ماموریت را وارد کنید"}
|
||||||
|
label={"زمان پایان ماموریت"}
|
||||||
|
setFieldValue={(name, value) => field.onChange(value || null)}
|
||||||
|
helperText={error ? error.message : null}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
</Stack>
|
</Stack>
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
<DialogActions sx={{ justifyContent: "center", paddingBottom: 2, width: "100%" }}>
|
<DialogActions sx={{ justifyContent: "center", paddingBottom: 2, width: "100%" }}>
|
||||||
<Button onClick={() => setOpenFinishMissionDialog(false)} variant="outlined" color="secondary">
|
<Button onClick={() => setOpenFinishMissionDialog(false)} variant="outlined" color="secondary">
|
||||||
خیر !
|
خیر !
|
||||||
</Button>
|
</Button>
|
||||||
<Button onClick={handleClick} variant="contained" color="primary" disabled={submitting}>
|
<Button onClick={handleSubmit(onSubmit)} variant="contained" color="primary" disabled={submitting}>
|
||||||
{submitting ? "درحال ثبت..." : "بله اطمینان دارم"}
|
{submitting ? "درحال ثبت..." : "بله اطمینان دارم"}
|
||||||
</Button>
|
</Button>
|
||||||
</DialogActions>
|
</DialogActions>
|
||||||
|
|||||||
@@ -1,17 +1,23 @@
|
|||||||
import LtrTextField from "@/core/components/LtrTextField";
|
import LtrTextField from "@/core/components/LtrTextField";
|
||||||
|
import MuiDatePicker from "@/core/components/MuiDatePicker";
|
||||||
|
import MuiTimePicker from "@/core/components/MuiTimePicker";
|
||||||
import { START_MISSION } from "@/core/utils/routes";
|
import { START_MISSION } from "@/core/utils/routes";
|
||||||
import useRequest from "@/lib/hooks/useRequest";
|
import useRequest from "@/lib/hooks/useRequest";
|
||||||
import { yupResolver } from "@hookform/resolvers/yup";
|
import { yupResolver } from "@hookform/resolvers/yup";
|
||||||
import { Button, DialogActions, DialogContent, Stack, Typography } from "@mui/material";
|
import { Button, DialogActions, DialogContent, Stack, Typography } from "@mui/material";
|
||||||
|
import { format } from "date-fns-jalali";
|
||||||
import { Controller, useForm } from "react-hook-form";
|
import { Controller, useForm } from "react-hook-form";
|
||||||
import { object, string } from "yup";
|
import { mixed, object, string } from "yup";
|
||||||
|
|
||||||
const StartMissionContent = ({ rowId, mutate, setOpenStartMissionDialog }) => {
|
const StartMissionContent = ({ rowId, mutate, setOpenStartMissionDialog }) => {
|
||||||
const requestServer = useRequest({ notificationSuccess: true });
|
const requestServer = useRequest({ notificationSuccess: true });
|
||||||
|
const now = new Date();
|
||||||
|
|
||||||
const validationSchema = object().shape({
|
const validationSchema = object().shape({
|
||||||
code: string().length(6, "کد خروج باید 6 رقم باشد").required("لطفاً کد خروج را وارد کنید."),
|
code: string().length(6, "کد خروج باید 6 رقم باشد").required("لطفاً کد خروج را وارد کنید."),
|
||||||
km: string().required("لطفاً کیلومتر را وارد کنید."),
|
km: string().required("لطفاً کیلومتر را وارد کنید."),
|
||||||
|
start_date: mixed().required("تاریخ خروج خودرو را مشخص کنید."),
|
||||||
|
start_time: mixed().required("ساعت خروج خودرو را مشخص کنید."),
|
||||||
});
|
});
|
||||||
|
|
||||||
const {
|
const {
|
||||||
@@ -22,16 +28,23 @@ const StartMissionContent = ({ rowId, mutate, setOpenStartMissionDialog }) => {
|
|||||||
defaultValues: {
|
defaultValues: {
|
||||||
code: "",
|
code: "",
|
||||||
km: "",
|
km: "",
|
||||||
|
start_date: null,
|
||||||
|
start_time: null,
|
||||||
},
|
},
|
||||||
resolver: yupResolver(validationSchema),
|
resolver: yupResolver(validationSchema),
|
||||||
mode: "all",
|
mode: "all",
|
||||||
});
|
});
|
||||||
|
|
||||||
const onSubmit = (values) => {
|
const onSubmit = (values) => {
|
||||||
|
const formattedDate = values.start_date;
|
||||||
|
const formattedTime = format(values.start_time, "HH:mm");
|
||||||
|
console.log(formattedDate, formattedTime);
|
||||||
|
|
||||||
requestServer(`${START_MISSION}/${rowId}`, "post", {
|
requestServer(`${START_MISSION}/${rowId}`, "post", {
|
||||||
data: {
|
data: {
|
||||||
code: values.code,
|
code: values.code,
|
||||||
km: values.km,
|
km: values.km,
|
||||||
|
time: `${formattedDate} ${formattedTime}`,
|
||||||
},
|
},
|
||||||
hasSidebarUpdate: true,
|
hasSidebarUpdate: true,
|
||||||
})
|
})
|
||||||
@@ -93,6 +106,43 @@ const StartMissionContent = ({ rowId, mutate, setOpenStartMissionDialog }) => {
|
|||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
<Stack>
|
||||||
|
<Controller
|
||||||
|
control={control}
|
||||||
|
name={"start_date"}
|
||||||
|
render={({ field, fieldState: { error } }) => (
|
||||||
|
<MuiDatePicker
|
||||||
|
name="start_date"
|
||||||
|
error={error}
|
||||||
|
value={field.value || null}
|
||||||
|
disableFuture={false}
|
||||||
|
minDate={now}
|
||||||
|
placeholder={"تاریخ شروع ماموریت را وارد کنید"}
|
||||||
|
label={"تاریخ شروع ماموریت"}
|
||||||
|
setFieldValue={(name, value) => field.onChange(value || null)}
|
||||||
|
helperText={error ? error.message : null}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
|
<Stack>
|
||||||
|
<Controller
|
||||||
|
control={control}
|
||||||
|
name={"start_time"}
|
||||||
|
render={({ field, fieldState: { error } }) => (
|
||||||
|
<MuiTimePicker
|
||||||
|
name="start_time"
|
||||||
|
error={error}
|
||||||
|
value={field.value || null}
|
||||||
|
views={["hours", "minutes"]}
|
||||||
|
placeholder={"زمان شروع ماموریت را وارد کنید"}
|
||||||
|
label={"زمان شروع ماموریت"}
|
||||||
|
setFieldValue={(name, value) => field.onChange(value || null)}
|
||||||
|
helperText={error ? error.message : null}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
</Stack>
|
</Stack>
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
<DialogActions sx={{ justifyContent: "center", paddingBottom: 2, width: "100%" }}>
|
<DialogActions sx={{ justifyContent: "center", paddingBottom: 2, width: "100%" }}>
|
||||||
|
|||||||
@@ -2,9 +2,7 @@ import MapLoading from "@/core/components/MapLayer/Loading";
|
|||||||
import { Box, Button, DialogActions, DialogContent, Stack } from "@mui/material";
|
import { Box, Button, DialogActions, DialogContent, Stack } from "@mui/material";
|
||||||
import dynamic from "next/dynamic";
|
import dynamic from "next/dynamic";
|
||||||
import { useCallback, useState } from "react";
|
import { useCallback, useState } from "react";
|
||||||
import MapControlPolygon from "./MapControlPolygon";
|
|
||||||
import MapControlPolyline from "./MapControlPolyline";
|
import MapControlPolyline from "./MapControlPolyline";
|
||||||
import SelectBoundType from "./SelectBoundType";
|
|
||||||
const MapLayer = dynamic(() => import("@/core/components/MapLayer"), {
|
const MapLayer = dynamic(() => import("@/core/components/MapLayer"), {
|
||||||
loading: () => <MapLoading />,
|
loading: () => <MapLoading />,
|
||||||
ssr: false,
|
ssr: false,
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ const MissionDates = ({ control }) => {
|
|||||||
name="start_time"
|
name="start_time"
|
||||||
error={error}
|
error={error}
|
||||||
value={field.value}
|
value={field.value}
|
||||||
views={["hours"]}
|
|
||||||
minTime={
|
minTime={
|
||||||
start_date && new Date(start_date).toDateString() === now.toDateString()
|
start_date && new Date(start_date).toDateString() === now.toDateString()
|
||||||
? now
|
? now
|
||||||
@@ -100,7 +99,6 @@ const MissionDates = ({ control }) => {
|
|||||||
name="end_time"
|
name="end_time"
|
||||||
error={error}
|
error={error}
|
||||||
value={field.value}
|
value={field.value}
|
||||||
views={["hours"]}
|
|
||||||
minTime={startDateTime ?? null}
|
minTime={startDateTime ?? null}
|
||||||
placeholder={"زمان پایان ماموریت را وارد کنید"}
|
placeholder={"زمان پایان ماموریت را وارد کنید"}
|
||||||
label={"زمان پایان ماموریت"}
|
label={"زمان پایان ماموریت"}
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ const MapLayer = dynamic(() => import("@/core/components/MapLayer"), {
|
|||||||
|
|
||||||
const Area = ({ allData, setAllData, handlePrev, setTabState }) => {
|
const Area = ({ allData, setAllData, handlePrev, setTabState }) => {
|
||||||
const [bound, setBound] = useState(allData.bound);
|
const [bound, setBound] = useState(allData.bound);
|
||||||
const [boundType, setBoundType] = useState(allData.bound_type);
|
|
||||||
|
|
||||||
const handleNext = useCallback(() => {
|
const handleNext = useCallback(() => {
|
||||||
setAllData({ bound: bound });
|
setAllData({ bound: bound });
|
||||||
@@ -23,19 +22,9 @@ const Area = ({ allData, setAllData, handlePrev, setTabState }) => {
|
|||||||
<>
|
<>
|
||||||
<DialogContent dividers>
|
<DialogContent dividers>
|
||||||
<Stack spacing={2}>
|
<Stack spacing={2}>
|
||||||
<SelectBoundType
|
|
||||||
boundType={boundType}
|
|
||||||
setBoundType={setBoundType}
|
|
||||||
setBound={setBound}
|
|
||||||
setAllData={setAllData}
|
|
||||||
/>
|
|
||||||
<Box sx={{ width: "100%", height: "400px" }}>
|
<Box sx={{ width: "100%", height: "400px" }}>
|
||||||
<MapLayer style={{ borderRadius: "4px" }}>
|
<MapLayer style={{ borderRadius: "4px" }}>
|
||||||
{boundType == "polygon" ? (
|
<MapControlPolygon bound={bound} setBound={setBound} boundType={"polyline"} />
|
||||||
<MapControlPolygon bound={bound} setBound={setBound} boundType={boundType} />
|
|
||||||
) : (
|
|
||||||
<MapControlPolyline bound={bound} setBound={setBound} boundType={boundType} />
|
|
||||||
)}
|
|
||||||
</MapLayer>
|
</MapLayer>
|
||||||
</Box>
|
</Box>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import Area from "@/components/dashboard/roadMissions/operator/Actions/Create/Form/Area";
|
import Area from "./Area";
|
||||||
import { AccessTime, Engineering, InsertDriveFile, LocalShipping, Route, Verified } from "@mui/icons-material";
|
import { AccessTime, Engineering, InsertDriveFile, LocalShipping, Route, Verified } from "@mui/icons-material";
|
||||||
import { Box, Tab, Tabs } from "@mui/material";
|
import { Box, Tab, Tabs } from "@mui/material";
|
||||||
import { useReducer, useState } from "react";
|
import { useReducer, useState } from "react";
|
||||||
|
|||||||
@@ -4,10 +4,7 @@ import { Box } from "@mui/material";
|
|||||||
import { useEffect, useMemo } from "react";
|
import { useEffect, useMemo } from "react";
|
||||||
import Toolbar from "./Toolbar";
|
import Toolbar from "./Toolbar";
|
||||||
|
|
||||||
const MissionsReportLists = ({ data, specialFilter }) => {
|
const TaradodReportLists = ({ data, specialFilter }) => {
|
||||||
useEffect(() => {
|
|
||||||
console.log(data);
|
|
||||||
}, [data]);
|
|
||||||
const columns = useMemo(() => {
|
const columns = useMemo(() => {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
@@ -138,4 +135,4 @@ const MissionsReportLists = ({ data, specialFilter }) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default MissionsReportLists;
|
export default TaradodReportLists;
|
||||||
@@ -15,7 +15,7 @@ const ToDateController = ({ control }) => {
|
|||||||
maxDate={new Date()}
|
maxDate={new Date()}
|
||||||
error={!!error}
|
error={!!error}
|
||||||
value={value}
|
value={value}
|
||||||
label={"تاریخ شروع (تا تاریخ)"}
|
label={"تاریخ پایان (تا تاریخ)"}
|
||||||
placeholder={"تا تاریخ"}
|
placeholder={"تا تاریخ"}
|
||||||
setFieldValue={(name, newValue) => {
|
setFieldValue={(name, newValue) => {
|
||||||
const formattedDate = moment(new Date(newValue)).locale("en").format("YYYY-MM-DD");
|
const formattedDate = moment(new Date(newValue)).locale("en").format("YYYY-MM-DD");
|
||||||
@@ -5,10 +5,7 @@ const SearchReportList = ({ handleSubmit, onSearchSubmit, control, hasProvincesP
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<StyledForm onSubmit={handleSubmit(onSearchSubmit)}>
|
<StyledForm onSubmit={handleSubmit(onSearchSubmit)}>
|
||||||
<SearchReportField
|
<SearchReportField control={control} hasProvincesPermission={hasProvincesPermission} />
|
||||||
control={control}
|
|
||||||
// hasProvincesPermission={hasProvincesPermission}
|
|
||||||
/>
|
|
||||||
</StyledForm>
|
</StyledForm>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
@@ -13,20 +13,21 @@ import moment from "jalali-moment";
|
|||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { useForm } from "react-hook-form";
|
import { useForm } from "react-hook-form";
|
||||||
import * as yup from "yup";
|
import * as yup from "yup";
|
||||||
import MissionsReportLists from "./MissionsReportLists";
|
import TaradodReportLists from "./MissionsReportLists";
|
||||||
import SearchReportList from "./Search";
|
import SearchReportList from "./Search";
|
||||||
|
|
||||||
const MissionsReportPage = () => {
|
const TaradodReportPage = () => {
|
||||||
const [data, setData] = useState(null);
|
const [data, setData] = useState(null);
|
||||||
const { data: userPermissions } = usePermissions();
|
const { data: userPermissions } = usePermissions();
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
const requestServer = useRequest();
|
const requestServer = useRequest();
|
||||||
// const hasProvincesPermission = userPermissions?.includes("mission-report-country");
|
const [provinceId, setProvinceId] = useState(user.province_id || "-1");
|
||||||
|
const hasProvincesPermission = userPermissions?.includes("mission-report-country");
|
||||||
|
|
||||||
const defaultValues = {
|
const defaultValues = {
|
||||||
from_date: moment(new Date()).format("YYYY-MM-DD"),
|
from_date: moment(new Date()).format("YYYY-MM-DD"),
|
||||||
date_to: moment(new Date()).format("YYYY-MM-DD"),
|
date_to: moment(new Date()).format("YYYY-MM-DD"),
|
||||||
province_id: user.province_id || "-1",
|
province_id: provinceId,
|
||||||
};
|
};
|
||||||
const defaultFilter = [
|
const defaultFilter = [
|
||||||
{ value: `${defaultValues.province_id}`, datatype: "numeric", id: "province_id", fn: "equals" },
|
{ value: `${defaultValues.province_id}`, datatype: "numeric", id: "province_id", fn: "equals" },
|
||||||
@@ -127,15 +128,15 @@ const MissionsReportPage = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Stack spacing={1}>
|
<Stack spacing={1}>
|
||||||
<PageTitle title={"کارتابل گزارش ماموریت"} />
|
<PageTitle title={"کارتابل گزارش تردد ها"} />
|
||||||
<SearchReportList
|
<SearchReportList
|
||||||
control={control}
|
control={control}
|
||||||
// hasProvincesPermission={hasProvincesPermission}
|
hasProvincesPermission={hasProvincesPermission}
|
||||||
handleSubmit={handleSubmit}
|
handleSubmit={handleSubmit}
|
||||||
onSearchSubmit={onSearchSubmit}
|
onSearchSubmit={onSearchSubmit}
|
||||||
/>
|
/>
|
||||||
{!data ? <LinearProgress /> : <MissionsReportLists specialFilter={specialFilter} data={data} />}
|
{!data ? <LinearProgress /> : <TaradodReportLists specialFilter={specialFilter} data={data} />}
|
||||||
</Stack>
|
</Stack>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
export default MissionsReportPage;
|
export default TaradodReportPage;
|
||||||
@@ -5,10 +5,7 @@ const SearchReportList = ({ handleSubmit, onSearchSubmit, control, hasProvincesP
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<StyledForm onSubmit={handleSubmit(onSearchSubmit)}>
|
<StyledForm onSubmit={handleSubmit(onSearchSubmit)}>
|
||||||
<SearchReportField
|
<SearchReportField control={control} hasProvincesPermission={hasProvincesPermission} />
|
||||||
control={control}
|
|
||||||
// hasProvincesPermission={hasProvincesPermission}
|
|
||||||
/>
|
|
||||||
</StyledForm>
|
</StyledForm>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -5,9 +5,6 @@ import { useEffect, useMemo } from "react";
|
|||||||
import Toolbar from "./Toolbar";
|
import Toolbar from "./Toolbar";
|
||||||
|
|
||||||
const ViolationsReportsList = ({ data, specialFilter }) => {
|
const ViolationsReportsList = ({ data, specialFilter }) => {
|
||||||
useEffect(() => {
|
|
||||||
console.log(data);
|
|
||||||
}, [data]);
|
|
||||||
const columns = useMemo(() => {
|
const columns = useMemo(() => {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ const ViolationsReportsPage = () => {
|
|||||||
const { data: userPermissions } = usePermissions();
|
const { data: userPermissions } = usePermissions();
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
const requestServer = useRequest();
|
const requestServer = useRequest();
|
||||||
// const hasProvincesPermission = userPermissions?.includes("mission-report-country");
|
const hasProvincesPermission = userPermissions?.includes("mission-report-country");
|
||||||
|
|
||||||
const defaultValues = {
|
const defaultValues = {
|
||||||
from_date: moment(new Date()).format("YYYY-MM-DD"),
|
from_date: moment(new Date()).format("YYYY-MM-DD"),
|
||||||
@@ -130,7 +130,7 @@ const ViolationsReportsPage = () => {
|
|||||||
<PageTitle title={"کارتابل گزارش ماموریت"} />
|
<PageTitle title={"کارتابل گزارش ماموریت"} />
|
||||||
<SearchReportList
|
<SearchReportList
|
||||||
control={control}
|
control={control}
|
||||||
// hasProvincesPermission={hasProvincesPermission}
|
hasProvincesPermission={hasProvincesPermission}
|
||||||
handleSubmit={handleSubmit}
|
handleSubmit={handleSubmit}
|
||||||
onSearchSubmit={onSearchSubmit}
|
onSearchSubmit={onSearchSubmit}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -115,5 +115,6 @@ export const machineType = [
|
|||||||
{ id: "تجهیزات ثابت", name_fa: "تجهیزات ثابت" },
|
{ id: "تجهیزات ثابت", name_fa: "تجهیزات ثابت" },
|
||||||
{ id: "دریل واگن", name_fa: "دریل واگن" },
|
{ id: "دریل واگن", name_fa: "دریل واگن" },
|
||||||
{ id: "کامیون سرویس سیار", name_fa: "کامیون سرویس سیار" },
|
{ id: "کامیون سرویس سیار", name_fa: "کامیون سرویس سیار" },
|
||||||
|
{ id: "کامیون سوخت رسان", name_fa: "کامیون سوخت رسان" },
|
||||||
{ id: "میکسر آب نمک", name_fa: "میکسر آب نمک" },
|
{ id: "میکسر آب نمک", name_fa: "میکسر آب نمک" },
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -47,23 +47,21 @@ export const GET_COUNTRY_ACTIVITY_REPORT = api + "/api/v3/missions/report/countr
|
|||||||
export const EXPORT_COUNTRY_ROAD_PATROL_REPORTS = api + "/api/v3/road_patrols/report/country_activity_excel";
|
export const EXPORT_COUNTRY_ROAD_PATROL_REPORTS = api + "/api/v3/road_patrols/report/country_activity_excel";
|
||||||
export const EXPORT_PROVINCE_ROAD_PATROL_REPORTS = api + "/api/v3/road_patrols/report/province_activity_excel";
|
export const EXPORT_PROVINCE_ROAD_PATROL_REPORTS = api + "/api/v3/road_patrols/report/province_activity_excel";
|
||||||
|
|
||||||
export const GET_MISSIONS_REPORT_TARADOD_COUNTRY_ACTIVITY =
|
export const GET_MISSIONS_REPORT_TARADOD_COUNTRY_ACTIVITY = api + "/api/v3/missions/report_taradod/country_activity";
|
||||||
"http://192.168.1.132:8000" + "/api/v3/missions/report_taradod/country_activity";
|
export const GET_MISSIONS_REPORT_TARADOD_PROVINCE_ACTIVITY = api + "/api/v3/missions/report_taradod/province_activity";
|
||||||
export const GET_MISSIONS_REPORT_TARADOD_PROVINCE_ACTIVITY =
|
|
||||||
"http://192.168.1.132:8000" + "/api/v3/missions/report_taradod/province_activity";
|
|
||||||
export const EXPORT_MISSIONS_REPORT_TARADOD_COUNTRY_EXCEL_ACTIVITY =
|
export const EXPORT_MISSIONS_REPORT_TARADOD_COUNTRY_EXCEL_ACTIVITY =
|
||||||
"http://192.168.1.132:8000" + "/api/v3/missions/report_taradod/country_excel_activity";
|
api + "/api/v3/missions/report_taradod/country_excel_activity";
|
||||||
export const EXPORT_MISSIONS_REPORT_TARADOD_PROVINCE_EXCEL_ACTIVITY =
|
export const EXPORT_MISSIONS_REPORT_TARADOD_PROVINCE_EXCEL_ACTIVITY =
|
||||||
"http://192.168.1.132:8000" + "/api/v3/missions/report_taradod/province_excel_activity";
|
api + "/api/v3/missions/report_taradod/province_excel_activity";
|
||||||
|
|
||||||
export const GET_MISSIONS_REPORT_VIOLATION_COUNTRY_ACTIVITY =
|
export const GET_MISSIONS_REPORT_VIOLATION_COUNTRY_ACTIVITY =
|
||||||
"http://192.168.1.132:8000" + "/api/v3/missions/report_violation/country_activity";
|
api + "/api/v3/missions/report_violation/country_activity";
|
||||||
export const GET_MISSIONS_REPORT_VIOLATION_PROVINCE_ACTIVITY =
|
export const GET_MISSIONS_REPORT_VIOLATION_PROVINCE_ACTIVITY =
|
||||||
"http://192.168.1.132:8000" + "/api/v3/missions/report_violation/province_activity";
|
api + "/api/v3/missions/report_violation/province_activity";
|
||||||
export const EXPORT_MISSIONS_REPORT_VIOLATION_COUNTRY_EXCEL_ACTIVITY =
|
export const EXPORT_MISSIONS_REPORT_VIOLATION_COUNTRY_EXCEL_ACTIVITY =
|
||||||
"http://192.168.1.132:8000" + "/api/v3/missions/report_violation/country_excel_activity";
|
api + "/api/v3/missions/report_violation/country_excel_activity";
|
||||||
export const EXPORT_MISSIONS_REPORT_VIOLATION_PROVINCE_EXCEL_ACTIVITY =
|
export const EXPORT_MISSIONS_REPORT_VIOLATION_PROVINCE_EXCEL_ACTIVITY =
|
||||||
"http://192.168.1.132:8000" + "/api/v3/missions/report_violation/province_excel_activity";
|
api + "/api/v3/missions/report_violation/province_excel_activity";
|
||||||
|
|
||||||
// road items
|
// road items
|
||||||
export const GET_ROAD_ITEMS_SUPERVISOR_LIST = api + "/api/v3/road_items/supervisor";
|
export const GET_ROAD_ITEMS_SUPERVISOR_LIST = api + "/api/v3/road_items/supervisor";
|
||||||
|
|||||||
Reference in New Issue
Block a user