From 586cd3712c8b57937d4f300a63b92ad56bdaa24d Mon Sep 17 00:00:00 2001 From: AmirHossein Mahmoodi Date: Tue, 15 Apr 2025 15:14:55 +0330 Subject: [PATCH] fixed bug --- .../roadSafety/reports/map/index.jsx | 9 ++ .../roadSafety/reports/reportPage/index.jsx | 125 +++++++++--------- src/core/components/FilterDrawer/index.jsx | 38 +++--- 3 files changed, 88 insertions(+), 84 deletions(-) diff --git a/src/components/dashboard/roadSafety/reports/map/index.jsx b/src/components/dashboard/roadSafety/reports/map/index.jsx index 315a6a5..91c0979 100644 --- a/src/components/dashboard/roadSafety/reports/map/index.jsx +++ b/src/components/dashboard/roadSafety/reports/map/index.jsx @@ -61,6 +61,7 @@ const RoadSafetyReportMap = () => { filterMode: "equals", datatype: "numeric", value: "", + enable: true, SelectComponent: (props) => { const { provinces, errorProvinces, loadingProvinces } = useProvinces(); const getSelectOptions = useMemo(() => { @@ -94,6 +95,7 @@ const RoadSafetyReportMap = () => { datatype: "numeric", dependencyId: "province_id", value: "", + enable: true, SelectComponent: (props) => { const { edaratList, loadingEdaratList, errorEdaratList } = useEdaratLists( props.dependencyFieldValue.value @@ -144,6 +146,7 @@ const RoadSafetyReportMap = () => { filterMode: "equals", datatype: "numeric", value: "", + enable: true, SelectComponent: (props) => { const { itemsList, loadingItemsList, errorItemsList } = useSafetyAndPrivacyGetItems(); @@ -178,6 +181,7 @@ const RoadSafetyReportMap = () => { filterMode: "equals", datatype: "numeric", value: "", + enable: true, selectOption: () => { return axisOptions.map((status) => ({ value: status.value, @@ -191,6 +195,7 @@ const RoadSafetyReportMap = () => { filterMode: "equals", datatype: "numeric", value: "", + enable: true, selectOption: () => { return statusOptions.map((status) => ({ value: status.value, @@ -204,6 +209,7 @@ const RoadSafetyReportMap = () => { filterMode: "between", datatype: "date", value: ["", ""], + enable: true, }, { header: "تاریخ بازدید", @@ -211,6 +217,7 @@ const RoadSafetyReportMap = () => { filterMode: "between", datatype: "date", value: ["", ""], + enable: true, }, { header: "تاریخ بارگذاری مستندات", @@ -218,6 +225,7 @@ const RoadSafetyReportMap = () => { filterMode: "between", datatype: "date", value: ["", ""], + enable: true, }, { header: "تاریخ اقدام", @@ -225,6 +233,7 @@ const RoadSafetyReportMap = () => { filterMode: "between", datatype: "date", value: ["", ""], + enable: true, }, ], [] diff --git a/src/components/dashboard/roadSafety/reports/reportPage/index.jsx b/src/components/dashboard/roadSafety/reports/reportPage/index.jsx index dff0300..a8f8998 100644 --- a/src/components/dashboard/roadSafety/reports/reportPage/index.jsx +++ b/src/components/dashboard/roadSafety/reports/reportPage/index.jsx @@ -4,14 +4,14 @@ import PageTitle from "@/core/components/PageTitle"; import DataTableFilterDataStructure from "@/core/utils/DataTableFilterDataStructure"; import isArrayEmpty from "@/core/utils/isArrayEmpty"; 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 useProvinces from "@/lib/hooks/useProvince"; import useRequest from "@/lib/hooks/useRequest"; 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 ReportLists from "./ReportLists"; -import { useAuth } from "@/lib/contexts/auth"; const statusOptions = [ { value: "", label: "همه وضعیت ها" }, @@ -31,53 +31,52 @@ const axisOptions = [ const ReportPage = () => { const { data: userPermissions } = usePermissions(); const hasProvincesPermission = userPermissions.includes("show-safety-and-privacy-operator-cartable"); - const { user } = useAuth() + const { user } = useAuth(); const requestServer = useRequest(); const [data, setData] = useState(null); const [isLoading, setLoading] = useState(true); - - const defaultValues = useMemo(() => { - const provinceFilter = { - header: "استان", - id: "province_id", - filterMode: "equals", - datatype: "numeric", - value: "", - SelectComponent: (props) => { - const { provinces, errorProvinces, loadingProvinces } = useProvinces(); - const getSelectOptions = useMemo(() => { - if (loadingProvinces) { - return [{ value: "loading", label: "در حال بارگذاری..." }]; - } - if (errorProvinces) { - return [{ value: "error", label: "خطا در بارگذاری" }]; - } - return [ - { value: "", label: "کل کشور" }, - ...provinces.map((province) => ({ - value: province.id, - label: province.name_fa, - })), - ]; - }, [provinces, errorProvinces, loadingProvinces]); - return ( - - ); + const defaultValues = useMemo( + () => [ + { + header: "استان", + id: "province_id", + filterMode: "equals", + datatype: "numeric", + value: hasProvincesPermission ? "" : user.province_id, + enable: hasProvincesPermission, + SelectComponent: (props) => { + const { provinces, errorProvinces, loadingProvinces } = useProvinces(); + const getSelectOptions = useMemo(() => { + if (loadingProvinces) { + return [{ value: "loading", label: "در حال بارگذاری..." }]; + } + if (errorProvinces) { + return [{ value: "error", label: "خطا در بارگذاری" }]; + } + return [ + { value: "", label: "کل کشور" }, + ...provinces.map((province) => ({ + value: province.id, + label: province.name_fa, + })), + ]; + }, [provinces, errorProvinces, loadingProvinces]); + return ( + + ); + }, }, - }; - - return [ - ...(hasProvincesPermission ? [provinceFilter] : []), { header: "مورد مشاهده شده", id: "info_id", filterMode: "equals", datatype: "numeric", value: "", + enable: true, SelectComponent: (props) => { const { itemsList, loadingItemsList, errorItemsList } = useSafetyAndPrivacyGetItems(); @@ -112,6 +111,7 @@ const ReportPage = () => { filterMode: "equals", datatype: "numeric", value: "", + enable: true, selectOption: () => { return axisOptions.map((status) => ({ value: status.value, @@ -125,6 +125,7 @@ const ReportPage = () => { filterMode: "equals", datatype: "numeric", value: "", + enable: true, selectOption: () => { return statusOptions.map((status) => ({ value: status.value, @@ -138,6 +139,7 @@ const ReportPage = () => { filterMode: "between", datatype: "date", value: ["", ""], + enable: true, }, { header: "تاریخ بازدید", @@ -145,6 +147,7 @@ const ReportPage = () => { filterMode: "between", datatype: "date", value: ["", ""], + enable: true, }, { header: "تاریخ بارگذاری مستندات", @@ -152,6 +155,7 @@ const ReportPage = () => { filterMode: "between", datatype: "date", value: ["", ""], + enable: true, }, { header: "تاریخ اقدام", @@ -159,9 +163,11 @@ const ReportPage = () => { filterMode: "between", datatype: "date", value: ["", ""], + enable: true, }, - ]; - }, []); + ], + [hasProvincesPermission, user.province_id] + ); const [filterData, setFilterData] = useState( defaultValues.reduce((acc, item) => { @@ -172,33 +178,16 @@ const ReportPage = () => { useEffect(() => { const fetchData = async () => { - try { setLoading(true); - const province_id = hasProvincesPermission - ? 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 filters = DataTableFilterDataStructure(filterData, isArrayEmpty); const params = new URLSearchParams(); params.set("filters", JSON.stringify(filters || [])); - - if (province_id === "") { + if (filterData.province_id.value === "") { 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 nationalReportForItem = result.activities.find((report) => report.province_id === -1); const nationalReport = { @@ -222,9 +211,11 @@ const ReportPage = () => { console.log(e); } } else { - params.set("province_id", province_id); + params.set("province_id", filterData.province_id.value); 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 nationalReportForItem = result.activities.find( (report) => report.edare_shahri_id == "-1" @@ -245,7 +236,9 @@ const ReportPage = () => { }; }), ]); - } catch (e) { console.log(e); } + } catch (e) { + console.log(e); + } } } catch (error) { console.log(error); diff --git a/src/core/components/FilterDrawer/index.jsx b/src/core/components/FilterDrawer/index.jsx index 2fc5d8e..a231b71 100644 --- a/src/core/components/FilterDrawer/index.jsx +++ b/src/core/components/FilterDrawer/index.jsx @@ -111,24 +111,26 @@ const FilterDrawer = ({ defaultValues, setFilterData, closeDrawer }) => {
- {Object.values(defaultValues).map((item) => - item.dependencyId ? ( - - ) : ( - - ) + {Object.values(defaultValues).map( + (item) => + item.enable && + (item.dependencyId ? ( + + ) : ( + + )) )}