fixed bug

This commit is contained in:
AmirHossein Mahmoodi
2025-04-15 15:14:55 +03:30
parent b5a2d2971b
commit 586cd3712c
3 changed files with 88 additions and 84 deletions

View File

@@ -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,
}, },
], ],
[] []

View File

@@ -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);

View File

@@ -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}>