fixed bug
This commit is contained in:
@@ -61,6 +61,7 @@ const RoadSafetyReportMap = () => {
|
|||||||
filterMode: "equals",
|
filterMode: "equals",
|
||||||
datatype: "numeric",
|
datatype: "numeric",
|
||||||
value: "",
|
value: "",
|
||||||
|
enable: true,
|
||||||
SelectComponent: (props) => {
|
SelectComponent: (props) => {
|
||||||
const { provinces, errorProvinces, loadingProvinces } = useProvinces();
|
const { provinces, errorProvinces, loadingProvinces } = useProvinces();
|
||||||
const getSelectOptions = useMemo(() => {
|
const getSelectOptions = useMemo(() => {
|
||||||
@@ -94,6 +95,7 @@ const RoadSafetyReportMap = () => {
|
|||||||
datatype: "numeric",
|
datatype: "numeric",
|
||||||
dependencyId: "province_id",
|
dependencyId: "province_id",
|
||||||
value: "",
|
value: "",
|
||||||
|
enable: true,
|
||||||
SelectComponent: (props) => {
|
SelectComponent: (props) => {
|
||||||
const { edaratList, loadingEdaratList, errorEdaratList } = useEdaratLists(
|
const { edaratList, loadingEdaratList, errorEdaratList } = useEdaratLists(
|
||||||
props.dependencyFieldValue.value
|
props.dependencyFieldValue.value
|
||||||
@@ -144,6 +146,7 @@ const RoadSafetyReportMap = () => {
|
|||||||
filterMode: "equals",
|
filterMode: "equals",
|
||||||
datatype: "numeric",
|
datatype: "numeric",
|
||||||
value: "",
|
value: "",
|
||||||
|
enable: true,
|
||||||
SelectComponent: (props) => {
|
SelectComponent: (props) => {
|
||||||
const { itemsList, loadingItemsList, errorItemsList } = useSafetyAndPrivacyGetItems();
|
const { itemsList, loadingItemsList, errorItemsList } = useSafetyAndPrivacyGetItems();
|
||||||
|
|
||||||
@@ -178,6 +181,7 @@ const RoadSafetyReportMap = () => {
|
|||||||
filterMode: "equals",
|
filterMode: "equals",
|
||||||
datatype: "numeric",
|
datatype: "numeric",
|
||||||
value: "",
|
value: "",
|
||||||
|
enable: true,
|
||||||
selectOption: () => {
|
selectOption: () => {
|
||||||
return axisOptions.map((status) => ({
|
return axisOptions.map((status) => ({
|
||||||
value: status.value,
|
value: status.value,
|
||||||
@@ -191,6 +195,7 @@ const RoadSafetyReportMap = () => {
|
|||||||
filterMode: "equals",
|
filterMode: "equals",
|
||||||
datatype: "numeric",
|
datatype: "numeric",
|
||||||
value: "",
|
value: "",
|
||||||
|
enable: true,
|
||||||
selectOption: () => {
|
selectOption: () => {
|
||||||
return statusOptions.map((status) => ({
|
return statusOptions.map((status) => ({
|
||||||
value: status.value,
|
value: status.value,
|
||||||
@@ -204,6 +209,7 @@ const RoadSafetyReportMap = () => {
|
|||||||
filterMode: "between",
|
filterMode: "between",
|
||||||
datatype: "date",
|
datatype: "date",
|
||||||
value: ["", ""],
|
value: ["", ""],
|
||||||
|
enable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: "تاریخ بازدید",
|
header: "تاریخ بازدید",
|
||||||
@@ -211,6 +217,7 @@ const RoadSafetyReportMap = () => {
|
|||||||
filterMode: "between",
|
filterMode: "between",
|
||||||
datatype: "date",
|
datatype: "date",
|
||||||
value: ["", ""],
|
value: ["", ""],
|
||||||
|
enable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: "تاریخ بارگذاری مستندات",
|
header: "تاریخ بارگذاری مستندات",
|
||||||
@@ -218,6 +225,7 @@ const RoadSafetyReportMap = () => {
|
|||||||
filterMode: "between",
|
filterMode: "between",
|
||||||
datatype: "date",
|
datatype: "date",
|
||||||
value: ["", ""],
|
value: ["", ""],
|
||||||
|
enable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: "تاریخ اقدام",
|
header: "تاریخ اقدام",
|
||||||
@@ -225,6 +233,7 @@ const RoadSafetyReportMap = () => {
|
|||||||
filterMode: "between",
|
filterMode: "between",
|
||||||
datatype: "date",
|
datatype: "date",
|
||||||
value: ["", ""],
|
value: ["", ""],
|
||||||
|
enable: true,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
[]
|
[]
|
||||||
|
|||||||
@@ -4,14 +4,14 @@ import PageTitle from "@/core/components/PageTitle";
|
|||||||
import DataTableFilterDataStructure from "@/core/utils/DataTableFilterDataStructure";
|
import DataTableFilterDataStructure from "@/core/utils/DataTableFilterDataStructure";
|
||||||
import isArrayEmpty from "@/core/utils/isArrayEmpty";
|
import isArrayEmpty from "@/core/utils/isArrayEmpty";
|
||||||
import { GET_ROAD_SAFETY_CITY_ACTIVITY_REPORT, GET_ROAD_SAFETY_PROVINCE_ACTIVITY_REPORT } from "@/core/utils/routes";
|
import { GET_ROAD_SAFETY_CITY_ACTIVITY_REPORT, GET_ROAD_SAFETY_PROVINCE_ACTIVITY_REPORT } from "@/core/utils/routes";
|
||||||
|
import { useAuth } from "@/lib/contexts/auth";
|
||||||
import { usePermissions } from "@/lib/hooks/usePermissions";
|
import { usePermissions } from "@/lib/hooks/usePermissions";
|
||||||
import useProvinces from "@/lib/hooks/useProvince";
|
import useProvinces from "@/lib/hooks/useProvince";
|
||||||
import useRequest from "@/lib/hooks/useRequest";
|
import useRequest from "@/lib/hooks/useRequest";
|
||||||
import useSafetyAndPrivacyGetItems from "@/lib/hooks/useSafetyAndPrivacyGetItems";
|
import useSafetyAndPrivacyGetItems from "@/lib/hooks/useSafetyAndPrivacyGetItems";
|
||||||
import { Box, LinearProgress, Stack } from "@mui/material";
|
import { LinearProgress, Stack } from "@mui/material";
|
||||||
import { useEffect, useMemo, useState } from "react";
|
import { useEffect, useMemo, useState } from "react";
|
||||||
import ReportLists from "./ReportLists";
|
import ReportLists from "./ReportLists";
|
||||||
import { useAuth } from "@/lib/contexts/auth";
|
|
||||||
|
|
||||||
const statusOptions = [
|
const statusOptions = [
|
||||||
{ value: "", label: "همه وضعیت ها" },
|
{ value: "", label: "همه وضعیت ها" },
|
||||||
@@ -31,53 +31,52 @@ const axisOptions = [
|
|||||||
const ReportPage = () => {
|
const ReportPage = () => {
|
||||||
const { data: userPermissions } = usePermissions();
|
const { data: userPermissions } = usePermissions();
|
||||||
const hasProvincesPermission = userPermissions.includes("show-safety-and-privacy-operator-cartable");
|
const hasProvincesPermission = userPermissions.includes("show-safety-and-privacy-operator-cartable");
|
||||||
const { user } = useAuth()
|
const { user } = useAuth();
|
||||||
const requestServer = useRequest();
|
const requestServer = useRequest();
|
||||||
const [data, setData] = useState(null);
|
const [data, setData] = useState(null);
|
||||||
const [isLoading, setLoading] = useState(true);
|
const [isLoading, setLoading] = useState(true);
|
||||||
|
const defaultValues = useMemo(
|
||||||
const defaultValues = useMemo(() => {
|
() => [
|
||||||
const provinceFilter = {
|
{
|
||||||
header: "استان",
|
header: "استان",
|
||||||
id: "province_id",
|
id: "province_id",
|
||||||
filterMode: "equals",
|
filterMode: "equals",
|
||||||
datatype: "numeric",
|
datatype: "numeric",
|
||||||
value: "",
|
value: hasProvincesPermission ? "" : user.province_id,
|
||||||
SelectComponent: (props) => {
|
enable: hasProvincesPermission,
|
||||||
const { provinces, errorProvinces, loadingProvinces } = useProvinces();
|
SelectComponent: (props) => {
|
||||||
const getSelectOptions = useMemo(() => {
|
const { provinces, errorProvinces, loadingProvinces } = useProvinces();
|
||||||
if (loadingProvinces) {
|
const getSelectOptions = useMemo(() => {
|
||||||
return [{ value: "loading", label: "در حال بارگذاری..." }];
|
if (loadingProvinces) {
|
||||||
}
|
return [{ value: "loading", label: "در حال بارگذاری..." }];
|
||||||
if (errorProvinces) {
|
}
|
||||||
return [{ value: "error", label: "خطا در بارگذاری" }];
|
if (errorProvinces) {
|
||||||
}
|
return [{ value: "error", label: "خطا در بارگذاری" }];
|
||||||
return [
|
}
|
||||||
{ value: "", label: "کل کشور" },
|
return [
|
||||||
...provinces.map((province) => ({
|
{ value: "", label: "کل کشور" },
|
||||||
value: province.id,
|
...provinces.map((province) => ({
|
||||||
label: province.name_fa,
|
value: province.id,
|
||||||
})),
|
label: province.name_fa,
|
||||||
];
|
})),
|
||||||
}, [provinces, errorProvinces, loadingProvinces]);
|
];
|
||||||
return (
|
}, [provinces, errorProvinces, loadingProvinces]);
|
||||||
<CustomSelectByDependency
|
return (
|
||||||
{...props}
|
<CustomSelectByDependency
|
||||||
value={loadingProvinces ? "loading" : props.filterParameters.value}
|
{...props}
|
||||||
selectOption={getSelectOptions}
|
value={loadingProvinces ? "loading" : props.filterParameters.value}
|
||||||
/>
|
selectOption={getSelectOptions}
|
||||||
);
|
/>
|
||||||
|
);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
|
||||||
|
|
||||||
return [
|
|
||||||
...(hasProvincesPermission ? [provinceFilter] : []),
|
|
||||||
{
|
{
|
||||||
header: "مورد مشاهده شده",
|
header: "مورد مشاهده شده",
|
||||||
id: "info_id",
|
id: "info_id",
|
||||||
filterMode: "equals",
|
filterMode: "equals",
|
||||||
datatype: "numeric",
|
datatype: "numeric",
|
||||||
value: "",
|
value: "",
|
||||||
|
enable: true,
|
||||||
SelectComponent: (props) => {
|
SelectComponent: (props) => {
|
||||||
const { itemsList, loadingItemsList, errorItemsList } = useSafetyAndPrivacyGetItems();
|
const { itemsList, loadingItemsList, errorItemsList } = useSafetyAndPrivacyGetItems();
|
||||||
|
|
||||||
@@ -112,6 +111,7 @@ const ReportPage = () => {
|
|||||||
filterMode: "equals",
|
filterMode: "equals",
|
||||||
datatype: "numeric",
|
datatype: "numeric",
|
||||||
value: "",
|
value: "",
|
||||||
|
enable: true,
|
||||||
selectOption: () => {
|
selectOption: () => {
|
||||||
return axisOptions.map((status) => ({
|
return axisOptions.map((status) => ({
|
||||||
value: status.value,
|
value: status.value,
|
||||||
@@ -125,6 +125,7 @@ const ReportPage = () => {
|
|||||||
filterMode: "equals",
|
filterMode: "equals",
|
||||||
datatype: "numeric",
|
datatype: "numeric",
|
||||||
value: "",
|
value: "",
|
||||||
|
enable: true,
|
||||||
selectOption: () => {
|
selectOption: () => {
|
||||||
return statusOptions.map((status) => ({
|
return statusOptions.map((status) => ({
|
||||||
value: status.value,
|
value: status.value,
|
||||||
@@ -138,6 +139,7 @@ const ReportPage = () => {
|
|||||||
filterMode: "between",
|
filterMode: "between",
|
||||||
datatype: "date",
|
datatype: "date",
|
||||||
value: ["", ""],
|
value: ["", ""],
|
||||||
|
enable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: "تاریخ بازدید",
|
header: "تاریخ بازدید",
|
||||||
@@ -145,6 +147,7 @@ const ReportPage = () => {
|
|||||||
filterMode: "between",
|
filterMode: "between",
|
||||||
datatype: "date",
|
datatype: "date",
|
||||||
value: ["", ""],
|
value: ["", ""],
|
||||||
|
enable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: "تاریخ بارگذاری مستندات",
|
header: "تاریخ بارگذاری مستندات",
|
||||||
@@ -152,6 +155,7 @@ const ReportPage = () => {
|
|||||||
filterMode: "between",
|
filterMode: "between",
|
||||||
datatype: "date",
|
datatype: "date",
|
||||||
value: ["", ""],
|
value: ["", ""],
|
||||||
|
enable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: "تاریخ اقدام",
|
header: "تاریخ اقدام",
|
||||||
@@ -159,9 +163,11 @@ const ReportPage = () => {
|
|||||||
filterMode: "between",
|
filterMode: "between",
|
||||||
datatype: "date",
|
datatype: "date",
|
||||||
value: ["", ""],
|
value: ["", ""],
|
||||||
|
enable: true,
|
||||||
},
|
},
|
||||||
];
|
],
|
||||||
}, []);
|
[hasProvincesPermission, user.province_id]
|
||||||
|
);
|
||||||
|
|
||||||
const [filterData, setFilterData] = useState(
|
const [filterData, setFilterData] = useState(
|
||||||
defaultValues.reduce((acc, item) => {
|
defaultValues.reduce((acc, item) => {
|
||||||
@@ -172,33 +178,16 @@ const ReportPage = () => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const fetchData = async () => {
|
const fetchData = async () => {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
const province_id = hasProvincesPermission
|
const filters = DataTableFilterDataStructure(filterData, isArrayEmpty);
|
||||||
? filterData.province_id.value
|
|
||||||
: user.province_id;
|
|
||||||
|
|
||||||
const adjustedFilterData = hasProvincesPermission
|
|
||||||
? filterData
|
|
||||||
: {
|
|
||||||
...filterData,
|
|
||||||
province_id: {
|
|
||||||
id: "province_id",
|
|
||||||
filterMode: "equals",
|
|
||||||
datatype: "numeric",
|
|
||||||
value: province_id,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
const filters = DataTableFilterDataStructure(adjustedFilterData, isArrayEmpty);
|
|
||||||
|
|
||||||
const params = new URLSearchParams();
|
const params = new URLSearchParams();
|
||||||
params.set("filters", JSON.stringify(filters || []));
|
params.set("filters", JSON.stringify(filters || []));
|
||||||
|
if (filterData.province_id.value === "") {
|
||||||
if (province_id === "") {
|
|
||||||
try {
|
try {
|
||||||
const response = await requestServer(`${GET_ROAD_SAFETY_PROVINCE_ACTIVITY_REPORT}?${params.toString()}`);
|
const response = await requestServer(
|
||||||
|
`${GET_ROAD_SAFETY_PROVINCE_ACTIVITY_REPORT}?${params.toString()}`
|
||||||
|
);
|
||||||
const result = response.data.data;
|
const result = response.data.data;
|
||||||
const nationalReportForItem = result.activities.find((report) => report.province_id === -1);
|
const nationalReportForItem = result.activities.find((report) => report.province_id === -1);
|
||||||
const nationalReport = {
|
const nationalReport = {
|
||||||
@@ -222,9 +211,11 @@ const ReportPage = () => {
|
|||||||
console.log(e);
|
console.log(e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
params.set("province_id", province_id);
|
params.set("province_id", filterData.province_id.value);
|
||||||
try {
|
try {
|
||||||
const response = await requestServer(`${GET_ROAD_SAFETY_CITY_ACTIVITY_REPORT}?${params.toString()}`);
|
const response = await requestServer(
|
||||||
|
`${GET_ROAD_SAFETY_CITY_ACTIVITY_REPORT}?${params.toString()}`
|
||||||
|
);
|
||||||
const result = response.data.data;
|
const result = response.data.data;
|
||||||
const nationalReportForItem = result.activities.find(
|
const nationalReportForItem = result.activities.find(
|
||||||
(report) => report.edare_shahri_id == "-1"
|
(report) => report.edare_shahri_id == "-1"
|
||||||
@@ -245,7 +236,9 @@ const ReportPage = () => {
|
|||||||
};
|
};
|
||||||
}),
|
}),
|
||||||
]);
|
]);
|
||||||
} catch (e) { console.log(e); }
|
} catch (e) {
|
||||||
|
console.log(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
|
|||||||
@@ -111,24 +111,26 @@ const FilterDrawer = ({ defaultValues, setFilterData, closeDrawer }) => {
|
|||||||
<ScrollBox>
|
<ScrollBox>
|
||||||
<form onSubmit={handleSubmit(onSubmit)}>
|
<form onSubmit={handleSubmit(onSubmit)}>
|
||||||
<Box sx={formContainerSx}>
|
<Box sx={formContainerSx}>
|
||||||
{Object.values(defaultValues).map((item) =>
|
{Object.values(defaultValues).map(
|
||||||
item.dependencyId ? (
|
(item) =>
|
||||||
<FilterControllerWithDependency
|
item.enable &&
|
||||||
key={item.id}
|
(item.dependencyId ? (
|
||||||
item={item}
|
<FilterControllerWithDependency
|
||||||
control={control}
|
key={item.id}
|
||||||
errors={errors}
|
item={item}
|
||||||
reset={reset}
|
control={control}
|
||||||
/>
|
errors={errors}
|
||||||
) : (
|
reset={reset}
|
||||||
<FilterController
|
/>
|
||||||
key={item.id}
|
) : (
|
||||||
item={item}
|
<FilterController
|
||||||
control={control}
|
key={item.id}
|
||||||
errors={errors}
|
item={item}
|
||||||
reset={reset}
|
control={control}
|
||||||
/>
|
errors={errors}
|
||||||
)
|
reset={reset}
|
||||||
|
/>
|
||||||
|
))
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<Box sx={footerSx}>
|
<Box sx={footerSx}>
|
||||||
|
|||||||
Reference in New Issue
Block a user