diff --git a/src/app/(withAuth)/(dashboardLayout)/dashboard/inquiry-privacy/assistant/page.js b/src/app/(withAuth)/(dashboardLayout)/dashboard/inquiry-privacy/technical-deputy/page.js similarity index 70% rename from src/app/(withAuth)/(dashboardLayout)/dashboard/inquiry-privacy/assistant/page.js rename to src/app/(withAuth)/(dashboardLayout)/dashboard/inquiry-privacy/technical-deputy/page.js index c13a78d..ebcc6c3 100644 --- a/src/app/(withAuth)/(dashboardLayout)/dashboard/inquiry-privacy/assistant/page.js +++ b/src/app/(withAuth)/(dashboardLayout)/dashboard/inquiry-privacy/technical-deputy/page.js @@ -1,3 +1,4 @@ +import TechnicalDeputy from "@/components/dashboard/inquiryPrivacy/technical-deputy"; import WithPermission from "@/core/middlewares/withPermission"; export const metadata = { title: "کارتابل معاون", @@ -5,7 +6,7 @@ export const metadata = { const Page = () => { return ( -

کارتابل معاون

+
); }; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/ConfirmRoadSafetyDialog.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/ConfirmRoadSafetyDialog.jsx new file mode 100644 index 0000000..7b8e90e --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/ConfirmRoadSafetyDialog.jsx @@ -0,0 +1,48 @@ +import DialogLoading from "@/core/components/DialogLoading"; +import { GET_REQUEST_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT_DETAILS } from "@/core/utils/routes"; +import useRequest from "@/lib/hooks/useRequest"; +import { DialogContent, Typography } from "@mui/material"; +import { useEffect, useState } from "react"; +import ConfirmRoadSafetyFormContext from "./ConfirmRoadSafetyFormContext"; + +const ConfirmRoadSafetyDialog = ({ row, handleClose, rowId, mutate }) => { + const [loading, setLoading] = useState(true); + const [data, setData] = useState(null); + const request = useRequest(); + + useEffect(() => { + const fetchData = async () => { + try { + setLoading(true); + const response = await request(`${GET_REQUEST_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT_DETAILS}/${rowId}`); + setData(response.data.data); + } catch (error) { + } finally { + setLoading(false); + } + }; + + fetchData(); + }, [request, rowId]); + + return ( + <> + {loading ? ( + + ) : data ? ( + + ) : ( + + اطلاعات درخواست در سامانه یافت نشد + + )} + + ); +}; +export default ConfirmRoadSafetyDialog; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/ConfirmRoadSafetyFormContext.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/ConfirmRoadSafetyFormContext.jsx new file mode 100644 index 0000000..ac10bf7 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/ConfirmRoadSafetyFormContext.jsx @@ -0,0 +1,85 @@ +import ApplicantRequestDetail from "@/core/components/ApplicantRequestDetail"; +import { Engineering, ExitToApp, InsertDriveFile, Route } from "@mui/icons-material"; +import { Button, DialogActions, DialogContent, Stack, Tab, Tabs } from "@mui/material"; +import { useState } from "react"; +import PrevCartableOpinion from "./PrevCartableOpinion"; +import Questions from "./Questions"; +import TabPanel from "@/core/components/TabPanel"; + +const ConfirmRoadSafetyFormContext = ({ row, data, rowId, mutate, handleClose }) => { + const [tabState, setTabState] = useState(0); + + const handleChangeTab = (event, newValue) => { + setTabState(newValue); + }; + + const handlePrev = () => { + if (tabState === 0) { + handleClose(); + } else { + setTabState((t) => t - 1); + } + }; + + return ( + <> + + } label="اطلاعات طرح متقاضی" /> + } label="جریان فرایند" /> + } label="تاییدیه ایمنی راه" /> + + + + + + + + + + + + + + {data.histories.map((item, index) => ( + + ))} + + + + + + + + + + + + ); +}; +export default ConfirmRoadSafetyFormContext; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/PrevCartableOpinion.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/PrevCartableOpinion.jsx new file mode 100644 index 0000000..37fe672 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/PrevCartableOpinion.jsx @@ -0,0 +1,16 @@ +import { Card, CardContent, CircularProgress, Stack, Typography } from "@mui/material"; + +const PrevCartableOpinion = ({ item }) => { + + return ( + + + + {item.previous_state_name}: {item.action_name} + توضیحات: {item.expert_description} + + + + ); +}; +export default PrevCartableOpinion; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/DescriptionForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/DescriptionForm.jsx new file mode 100644 index 0000000..a7099e7 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/DescriptionForm.jsx @@ -0,0 +1,29 @@ +import { Stack, TextField } from "@mui/material"; +import { Controller } from "react-hook-form"; + +const DescriptionForm = ({ control }) => { + return ( + + ( + + )} + /> + + ); +}; +export default DescriptionForm; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/QuestionVerifyNeedRoadForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/QuestionVerifyNeedRoadForm.jsx new file mode 100644 index 0000000..0a9a724 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/QuestionVerifyNeedRoadForm.jsx @@ -0,0 +1,34 @@ +import { + Card, + CardContent, + Stack, + Typography +} from "@mui/material"; + +const QuestionVerifyNeedRoadForm = ({ row }) => { + return ( + + + + + آیا نیاز به راه دسترسی است؟ + + + دفتر حریم راه : + + {row.original.need_road_access == 1 ? "بله" : "خیر"} + + + + + + ); +}; +export default QuestionVerifyNeedRoadForm; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/QuestionVerifyRoadSafetyForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/QuestionVerifyRoadSafetyForm.jsx new file mode 100644 index 0000000..1775856 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/QuestionVerifyRoadSafetyForm.jsx @@ -0,0 +1,34 @@ +import { + Card, + CardContent, + Stack, + Typography +} from "@mui/material"; + +const QuestionVerifyRoadSafetyForm = ({ row }) => { + return ( + + + + + آیا ایمنی راه این طرح مورد تایید است؟ + + + دفتر حریم راه : + + {row.original.is_possible == 1 ? "بله" : "خیر"} + + + + + + ); +}; +export default QuestionVerifyRoadSafetyForm; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/Refer/Form.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/Refer/Form.jsx new file mode 100644 index 0000000..3dfc3ee --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/Refer/Form.jsx @@ -0,0 +1,78 @@ +import StyledForm from "@/core/components/StyledForm"; +import { REFER_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT } from "@/core/utils/routes"; +import useRequest from "@/lib/hooks/useRequest"; +import { yupResolver } from "@hookform/resolvers/yup"; +import { Button, DialogActions, DialogContent, Stack, TextField } from "@mui/material"; +import { Controller, useForm } from "react-hook-form"; +import { object, string } from "yup"; + +const validationSchema = object({ + description: string().required("وارد کردن توضیحات الزامیست!"), +}); + +const defaultValues = { + description: "", +}; + +const ReferForm = ({ rowId, mutate, handleClose, setOpenReferDialog }) => { + const requestServer = useRequest({ notificationSuccess: true }); + const { + control, + handleSubmit, + formState: { isSubmitting }, + } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all" }); + + const onSubmit = async (data) => { + await requestServer(`${REFER_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT}/${rowId}`, "post", { + data: { + expert_description: data.description, + }, + }) + .then(() => { + handleClose(); + setOpenReferDialog(false); + mutate(); + }) + .catch(() => {}); + }; + + return ( + <> + + + ( + + )} + /> + + + + + + + ); +}; +export default ReferForm; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/Refer/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/Refer/index.jsx new file mode 100644 index 0000000..1fc664c --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/Refer/index.jsx @@ -0,0 +1,34 @@ +import { Close } from "@mui/icons-material"; +import { Button, Dialog, DialogTitle, IconButton } from "@mui/material" +import { useState } from "react"; +import ReferForm from "./Form"; + +const Refer = ({ rowId, mutate, handleClose, isSubmitting }) => { + const [openReferDialog, setOpenReferDialog] = useState(false); + + return ( + <> + + { setOpenReferDialog(false) }} maxWidth="xs" fullWidth> + setOpenReferDialog(false)} + sx={{ + position: "absolute", + right: 8, + top: 8, + zIndex: 10, + color: (theme) => theme.palette.grey[500], + }} + > + + + مخالفت و ارجاع به دفتر حریم + {openReferDialog && } + + + ) +} +export default Refer \ No newline at end of file diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/index.jsx new file mode 100644 index 0000000..c35313e --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/index.jsx @@ -0,0 +1,72 @@ +import StyledForm from "@/core/components/StyledForm"; +import { CONFIRM_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT } from "@/core/utils/routes"; +import useRequest from "@/lib/hooks/useRequest"; +import { yupResolver } from "@hookform/resolvers/yup"; +import { Button, DialogActions, DialogContent, Stack } from "@mui/material"; +import { useForm } from "react-hook-form"; +import { object, string } from "yup"; +import QuestionVerifyNeedRoadForm from "./QuestionVerifyNeedRoadForm"; +import QuestionVerifyRoadSafetyForm from "./QuestionVerifyRoadSafetyForm"; +import Refer from "./Refer"; +import DescriptionForm from "./DescriptionForm"; + +const validationSchema = object({ + description: string().required("وارد کردن توضیحات الزامیست!"), +}); + +const defaultValues = { + description: "", +}; + +const Questions = ({ row, rowId, mutate, handleClose, handlePrev }) => { + const requestServer = useRequest({ notificationSuccess: true }); + + const { + control, + handleSubmit, + formState: { isSubmitting }, + } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all" }); + + const onSubmit = async (data) => { + await requestServer(`${CONFIRM_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT}/${rowId}`, "post", { + data: { + expert_description: data.description, + }, + }) + .then(() => { + handleClose(); + mutate(); + }) + .catch(() => {}); + }; + + return ( + + + + + + + + + + + + + + + + + ); +}; +export default Questions; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/index.jsx new file mode 100644 index 0000000..8104adc --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/index.jsx @@ -0,0 +1,51 @@ +import { Close, Engineering } from "@mui/icons-material"; +import { Dialog, IconButton, Stack, Tooltip } from "@mui/material"; +import { useState } from "react"; +import ConfirmRoadSafetyDialog from "./ConfirmRoadSafetyDialog"; + +const ConfirmRoadSafetyForm = ({ row, rowId, mutate }) => { + const [openConfirmRoadSafetyForm, setOpenConfirmRoadSafetyForm] = useState(false); + + const openRoadSafetyDialog = () => { + setOpenConfirmRoadSafetyForm(true); + }; + + const handleClose = () => { + setOpenConfirmRoadSafetyForm(false); + }; + + return ( + + + { + openRoadSafetyDialog(); + }} + > + + + + + handleClose()} + sx={{ + position: "absolute", + right: 8, + top: 8, + zIndex: 10, + color: (theme) => theme.palette.grey[500], + }} + > + + + {openConfirmRoadSafetyForm && ( + + )} + + + ); +}; +export default ConfirmRoadSafetyForm; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/ConfirmRoadSafetyDialog.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/ConfirmRoadSafetyDialog.jsx new file mode 100644 index 0000000..8305cf4 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/ConfirmRoadSafetyDialog.jsx @@ -0,0 +1,49 @@ +import DialogLoading from "@/core/components/DialogLoading"; +import { GET_REQUEST_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT_DETAILS } from "@/core/utils/routes"; +import useRequest from "@/lib/hooks/useRequest"; +import { DialogContent, Typography } from "@mui/material"; +import { useEffect, useState } from "react"; +import ConfirmRoadSafetyFormContext from "./ConfirmRoadSafetyFormContext"; + +const ConfirmRoadSafetyDialog = ({ row, handleClose, rowId, mutate }) => { + const [loading, setLoading] = useState(true); + const [data, setData] = useState(null); + const request = useRequest(); + + useEffect(() => { + const fetchData = async () => { + try { + setLoading(true); + const response = await request(`${GET_REQUEST_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT_DETAILS}/${rowId}`); + setData(response.data.data); + } catch (error) { + } finally { + setLoading(false); + } + }; + + fetchData(); + }, [request, rowId]); + + return ( + <> + {loading ? ( +
Loading...
+ ) : // + data ? ( + + ) : ( + + اطلاعات درخواست در سامانه یافت نشد + + )} + + ); +}; +export default ConfirmRoadSafetyDialog; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/ConfirmRoadSafetyFormContext.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/ConfirmRoadSafetyFormContext.jsx new file mode 100644 index 0000000..41e1139 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/ConfirmRoadSafetyFormContext.jsx @@ -0,0 +1,92 @@ +import ApplicantRequestDetail from "@/core/components/ApplicantRequestDetail"; +import TabPanel from "@/core/components/TabPanel"; +import { ExitToApp, InsertDriveFile, Route, ThumbUp } from "@mui/icons-material"; +import { Button, DialogActions, DialogContent, Stack, Tab, Tabs } from "@mui/material"; +import { useState } from "react"; +import PrevCartableOpinion from "./PrevCartableOpinion"; +import Questions from "./Questions"; + + + +const ConfirmRoadSafetyFormContext = ({ row, data, rowId, mutate, handleClose }) => { + const [tabState, setTabState] = useState(0); + + const handleChangeTab = (event, newValue) => { + setTabState(newValue); + }; + + const handlePrev = () => { + if (tabState === 0) { + handleClose(); + } else { + setTabState((t) => t - 1); + } + }; + + return ( + <> + + } label="اطلاعات طرح متقاضی" /> + } label="جریان فرایند" /> + } label="تاییدیه ضمانت نامه ها" /> + + + + + + + + + + + + + + {data.histories.map((item, index) => ( + + ))} + + + + + + + + + + + + ); +}; +export default ConfirmRoadSafetyFormContext; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/PrevCartableOpinion.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/PrevCartableOpinion.jsx new file mode 100644 index 0000000..37fe672 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/PrevCartableOpinion.jsx @@ -0,0 +1,16 @@ +import { Card, CardContent, CircularProgress, Stack, Typography } from "@mui/material"; + +const PrevCartableOpinion = ({ item }) => { + + return ( + + + + {item.previous_state_name}: {item.action_name} + توضیحات: {item.expert_description} + + + + ); +}; +export default PrevCartableOpinion; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/DescriptionForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/DescriptionForm.jsx new file mode 100644 index 0000000..a7099e7 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/DescriptionForm.jsx @@ -0,0 +1,29 @@ +import { Stack, TextField } from "@mui/material"; +import { Controller } from "react-hook-form"; + +const DescriptionForm = ({ control }) => { + return ( + + ( + + )} + /> + + ); +}; +export default DescriptionForm; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/QuestionVerifyNeedRoadForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/QuestionVerifyNeedRoadForm.jsx new file mode 100644 index 0000000..a39fdec --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/QuestionVerifyNeedRoadForm.jsx @@ -0,0 +1,34 @@ +import { + Card, + CardContent, + Stack, + Typography +} from "@mui/material"; + +const QuestionVerifyNeedRoadForm = () => { + return ( + + + + + آیا ضمانت نامه ها مورد تایید است؟ + + + دفتر حریم راه : + + بله + + + + + + ); +}; +export default QuestionVerifyNeedRoadForm; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/QuestionVerifyRoadSafetyForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/QuestionVerifyRoadSafetyForm.jsx new file mode 100644 index 0000000..edd3232 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/QuestionVerifyRoadSafetyForm.jsx @@ -0,0 +1,34 @@ +import { + Card, + CardContent, + Stack, + Typography +} from "@mui/material"; + +const QuestionVerifyRoadSafetyForm = ({ row }) => { + return ( + + + + + آیا ایمنی راه این طرح مورد تایید است؟ + + + دفتر حریم راه : + + {row.original.isSafety ? "بله" : "خیر"} + + + + + + ); +}; +export default QuestionVerifyRoadSafetyForm; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/Refer/Form.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/Refer/Form.jsx new file mode 100644 index 0000000..cf2095e --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/Refer/Form.jsx @@ -0,0 +1,70 @@ +import { REFER_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT } from "@/core/utils/routes"; +import useRequest from "@/lib/hooks/useRequest"; +import { yupResolver } from "@hookform/resolvers/yup"; +import { Button, DialogActions, DialogContent, Stack, TextField } from "@mui/material"; +import { Controller, useForm } from "react-hook-form"; +import { object, string } from "yup"; +const validationSchema = object({ + description: string().required("وارد کردن توضیحات الزامیست!"), +}); + +const defaultValues = { + description: "", +}; + +const ReferForm = ({ rowId, mutate, handleClose, setOpenReferDialog }) => { + const requestServer = useRequest({ notificationSuccess: true }); + const { + control, + handleSubmit, + formState: { isSubmitting }, + } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all" }); + + const onSubmit = async (data) => { + await requestServer(`${REFER_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT}/${rowId}`, "post", { + data: { + expert_description: data.description + }, + }) + .then(() => { + handleClose(); + setOpenReferDialog(false) + mutate(); + }) + .catch(() => { }); + }; + + return ( + <> + + + ( + + )} + /> + + + + + + + ) +} +export default ReferForm \ No newline at end of file diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/Refer/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/Refer/index.jsx new file mode 100644 index 0000000..1fc664c --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/Refer/index.jsx @@ -0,0 +1,34 @@ +import { Close } from "@mui/icons-material"; +import { Button, Dialog, DialogTitle, IconButton } from "@mui/material" +import { useState } from "react"; +import ReferForm from "./Form"; + +const Refer = ({ rowId, mutate, handleClose, isSubmitting }) => { + const [openReferDialog, setOpenReferDialog] = useState(false); + + return ( + <> + + { setOpenReferDialog(false) }} maxWidth="xs" fullWidth> + setOpenReferDialog(false)} + sx={{ + position: "absolute", + right: 8, + top: 8, + zIndex: 10, + color: (theme) => theme.palette.grey[500], + }} + > + + + مخالفت و ارجاع به دفتر حریم + {openReferDialog && } + + + ) +} +export default Refer \ No newline at end of file diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/index.jsx new file mode 100644 index 0000000..b8b016b --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/index.jsx @@ -0,0 +1,65 @@ +import StyledForm from "@/core/components/StyledForm"; +import { CONFIRM_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT, CONFIRM_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT } from "@/core/utils/routes"; +import useRequest from "@/lib/hooks/useRequest"; +import { yupResolver } from "@hookform/resolvers/yup"; +import { Button, DialogActions, DialogContent, Stack } from "@mui/material"; +import { useForm } from "react-hook-form"; +import { object, string } from "yup"; +import QuestionVerifyNeedRoadForm from "./QuestionVerifyNeedRoadForm"; +import QuestionVerifyRoadSafetyForm from "./QuestionVerifyRoadSafetyForm"; +import Refer from "./Refer"; +import DescriptionForm from "./DescriptionForm"; + +const validationSchema = object({ + description: string().required("وارد کردن توضیحات الزامیست!"), +}); + +const defaultValues = { + description: "", +}; + +const Questions = ({ row, rowId, mutate, handleClose, handlePrev }) => { + const requestServer = useRequest({ notificationSuccess: true }); + + const { + control, + handleSubmit, + formState: { isSubmitting }, + } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all" }); + + const onSubmit = async (data) => { + await requestServer(`${CONFIRM_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT}/${rowId}`, "post", { + data: { + expert_description: data.description + }, + }) + .then(() => { + handleClose(); + mutate(); + }) + .catch(() => { }); + }; + + return ( + + + + + + + + + + + + + + + + ) +} +export default Questions \ No newline at end of file diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/index.jsx new file mode 100644 index 0000000..d1548ed --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/index.jsx @@ -0,0 +1,51 @@ +import { Close, ThumbUp } from "@mui/icons-material"; +import { Dialog, IconButton, Stack, Tooltip } from "@mui/material"; +import { useState } from "react"; +import ConfirmRoadSafetyDialog from "./ConfirmRoadSafetyDialog"; + +const ConfirmVerifyLicenseForm = ({ row, rowId, mutate }) => { + const [openConfirmVerifyLicenseForm, setOpenConfirmVerifyLicenseForm] = useState(false); + + const openConfirmVerifyLicenseFormDialog = () => { + setOpenConfirmVerifyLicenseForm(true); + }; + + const handleClose = () => { + setOpenConfirmVerifyLicenseForm(false); + }; + + return ( + + + { + openConfirmVerifyLicenseFormDialog(); + }} + > + + + + + handleClose()} + sx={{ + position: "absolute", + right: 8, + top: 8, + zIndex: 10, + color: (theme) => theme.palette.grey[500], + }} + > + + + {openConfirmVerifyLicenseForm && ( + + )} + + + ); +}; +export default ConfirmVerifyLicenseForm; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/ConfirmRoadSafetyDialog.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/ConfirmRoadSafetyDialog.jsx new file mode 100644 index 0000000..f3a693a --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/ConfirmRoadSafetyDialog.jsx @@ -0,0 +1,43 @@ +import DialogLoading from "@/core/components/DialogLoading"; +import { GET_REQUEST_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT_DETAILS } from "@/core/utils/routes"; +import useRequest from "@/lib/hooks/useRequest"; +import { DialogContent, Typography } from "@mui/material"; +import { useEffect, useState } from "react"; +import ConfirmRoadSafetyFormContext from "./ConfirmRoadSafetyFormContext"; + +const ConfirmRoadSafetyDialog = ({ row, handleClose, rowId, mutate }) => { + const [loading, setLoading] = useState(true); + const [data, setData] = useState(null); + const request = useRequest(); + + useEffect(() => { + const fetchData = async () => { + try { + setLoading(true); + const response = await request(`${GET_REQUEST_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT_DETAILS}/${rowId}`); + setData(response.data.data); + } catch (error) { + } finally { + setLoading(false); + } + }; + + fetchData(); + }, [rowId]); + + return ( + <> + {loading ? ( + + ) : data ? ( + + ) : ( + + اطلاعات درخواست در سامانه یافت نشد + + )} + + ); + +} +export default ConfirmRoadSafetyDialog \ No newline at end of file diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/ConfirmRoadSafetyFormContext.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/ConfirmRoadSafetyFormContext.jsx new file mode 100644 index 0000000..7b1fd02 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/ConfirmRoadSafetyFormContext.jsx @@ -0,0 +1,92 @@ +import ApplicantRequestDetail from "@/core/components/ApplicantRequestDetail"; +import TabPanel from "@/core/components/TabPanel"; +import { DoneAll, ExitToApp, InsertDriveFile, Route } from "@mui/icons-material"; +import { Button, DialogActions, DialogContent, Stack, Tab, Tabs } from "@mui/material"; +import { useState } from "react"; +import PrevCartableOpinion from "./PrevCartableOpinion"; +import Questions from "./Questions"; + + + +const ConfirmRoadSafetyFormContext = ({ row, data, rowId, mutate, handleClose }) => { + const [tabState, setTabState] = useState(0); + + const handleChangeTab = (event, newValue) => { + setTabState(newValue); + }; + + const handlePrev = () => { + if (tabState === 0) { + handleClose(); + } else { + setTabState((t) => t - 1); + } + }; + + return ( + <> + + } label="اطلاعات طرح متقاضی" /> + } label="جریان فرایند" /> + } label="تاییدیه دسترسی راه" /> + + + + + + + + + + + + + + {data.histories.map((item, index) => ( + + ))} + + + + + + + + + + + + ); +}; +export default ConfirmRoadSafetyFormContext; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/PrevCartableOpinion.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/PrevCartableOpinion.jsx new file mode 100644 index 0000000..37fe672 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/PrevCartableOpinion.jsx @@ -0,0 +1,16 @@ +import { Card, CardContent, CircularProgress, Stack, Typography } from "@mui/material"; + +const PrevCartableOpinion = ({ item }) => { + + return ( + + + + {item.previous_state_name}: {item.action_name} + توضیحات: {item.expert_description} + + + + ); +}; +export default PrevCartableOpinion; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/DescriptionForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/DescriptionForm.jsx new file mode 100644 index 0000000..a7099e7 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/DescriptionForm.jsx @@ -0,0 +1,29 @@ +import { Stack, TextField } from "@mui/material"; +import { Controller } from "react-hook-form"; + +const DescriptionForm = ({ control }) => { + return ( + + ( + + )} + /> + + ); +}; +export default DescriptionForm; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/QuestionVerifyNeedRoadForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/QuestionVerifyNeedRoadForm.jsx new file mode 100644 index 0000000..558d200 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/QuestionVerifyNeedRoadForm.jsx @@ -0,0 +1,34 @@ +import { + Card, + CardContent, + Stack, + Typography +} from "@mui/material"; + +const QuestionVerifyNeedRoadForm = ({ row }) => { + return ( + + + + + آیا دسترسی به راه مورد تایید است؟ + + + دفتر حریم راه : + + {row.original.is_file_good == 1 ? "بله" : "خیر"} + + + + + + ); +}; +export default QuestionVerifyNeedRoadForm; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/Refer/Form.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/Refer/Form.jsx new file mode 100644 index 0000000..cf2095e --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/Refer/Form.jsx @@ -0,0 +1,70 @@ +import { REFER_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT } from "@/core/utils/routes"; +import useRequest from "@/lib/hooks/useRequest"; +import { yupResolver } from "@hookform/resolvers/yup"; +import { Button, DialogActions, DialogContent, Stack, TextField } from "@mui/material"; +import { Controller, useForm } from "react-hook-form"; +import { object, string } from "yup"; +const validationSchema = object({ + description: string().required("وارد کردن توضیحات الزامیست!"), +}); + +const defaultValues = { + description: "", +}; + +const ReferForm = ({ rowId, mutate, handleClose, setOpenReferDialog }) => { + const requestServer = useRequest({ notificationSuccess: true }); + const { + control, + handleSubmit, + formState: { isSubmitting }, + } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all" }); + + const onSubmit = async (data) => { + await requestServer(`${REFER_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT}/${rowId}`, "post", { + data: { + expert_description: data.description + }, + }) + .then(() => { + handleClose(); + setOpenReferDialog(false) + mutate(); + }) + .catch(() => { }); + }; + + return ( + <> + + + ( + + )} + /> + + + + + + + ) +} +export default ReferForm \ No newline at end of file diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/Refer/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/Refer/index.jsx new file mode 100644 index 0000000..1fc664c --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/Refer/index.jsx @@ -0,0 +1,34 @@ +import { Close } from "@mui/icons-material"; +import { Button, Dialog, DialogTitle, IconButton } from "@mui/material" +import { useState } from "react"; +import ReferForm from "./Form"; + +const Refer = ({ rowId, mutate, handleClose, isSubmitting }) => { + const [openReferDialog, setOpenReferDialog] = useState(false); + + return ( + <> + + { setOpenReferDialog(false) }} maxWidth="xs" fullWidth> + setOpenReferDialog(false)} + sx={{ + position: "absolute", + right: 8, + top: 8, + zIndex: 10, + color: (theme) => theme.palette.grey[500], + }} + > + + + مخالفت و ارجاع به دفتر حریم + {openReferDialog && } + + + ) +} +export default Refer \ No newline at end of file diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/index.jsx new file mode 100644 index 0000000..a52b00c --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/index.jsx @@ -0,0 +1,64 @@ +import StyledForm from "@/core/components/StyledForm"; +import { CONFIRM_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT } from "@/core/utils/routes"; +import useRequest from "@/lib/hooks/useRequest"; +import { yupResolver } from "@hookform/resolvers/yup"; +import { Button, DialogActions, DialogContent, Stack } from "@mui/material"; +import { useForm } from "react-hook-form"; +import { object, string } from "yup"; +import QuestionVerifyNeedRoadForm from "./QuestionVerifyNeedRoadForm"; +import Refer from "./Refer"; +import DescriptionForm from "./DescriptionForm"; + +const validationSchema = object({ + description: string().required("وارد کردن توضیحات الزامیست!"), +}); + +const defaultValues = { + description: "", +}; + +const Questions = ({ row, rowId, mutate, handleClose, handlePrev }) => { + const requestServer = useRequest({ notificationSuccess: true }); + + const { + control, + handleSubmit, + formState: { isSubmitting }, + } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all" }); + + const onSubmit = async (data) => { + await requestServer(`${CONFIRM_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT}/${rowId}`, "post", { + data: { + expert_description: data.description + }, + }) + .then(() => { + handleClose(); + mutate(); + }) + .catch(() => { }); + }; + + return ( + + + + + + + + + + + + + + + + ) +} +export default Questions \ No newline at end of file diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/index.jsx new file mode 100644 index 0000000..213d593 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/index.jsx @@ -0,0 +1,51 @@ +import { Close, DoneAll } from "@mui/icons-material"; +import { Dialog, IconButton, Stack, Tooltip } from "@mui/material"; +import { useState } from "react"; +import ConfirmRoadSafetyDialog from "./ConfirmRoadSafetyDialog"; + +const ConfirmVerifyRoadSafetyForm = ({ row, rowId, mutate }) => { + const [openConfirmVerifyRoadSafetyForm, setOpenConfirmVerifyRoadSafetyForm] = useState(false); + + const openConfirmVerifyRoadSafetyDialog = () => { + setOpenConfirmVerifyRoadSafetyForm(true); + }; + + const handleClose = () => { + setOpenConfirmVerifyRoadSafetyForm(false); + }; + + return ( + + + { + openConfirmVerifyRoadSafetyDialog(); + }} + > + + + + + handleClose()} + sx={{ + position: "absolute", + right: 8, + top: 8, + zIndex: 10, + color: (theme) => theme.palette.grey[500], + }} + > + + + {openConfirmVerifyRoadSafetyForm && ( + + )} + + + ); +}; +export default ConfirmVerifyRoadSafetyForm; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/index.jsx new file mode 100644 index 0000000..58261f4 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/index.jsx @@ -0,0 +1,22 @@ +import { Box } from "@mui/material"; +import ConfirmRoadSafetyForm from "./ConfirmRoadSafetyForm"; +import ConfirmVerifyRoadSafetyForm from "./ConfirmVerifyRoadSafetyForm"; +import ConfirmVerifyLicenseForm from "./ConfirmVerifyLicenseForm"; + +const RowActions = ({ row, mutate }) => { + return ( + <> + // + // {row.original.state_id == 3 && ( + // + // )} + // {row.original.state_id == 6 && ( + // + // )} + // {row.original.state_id == 14 && ( + // + // )} + // + ); +}; +export default RowActions; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/ShowPrimaryArea/ShowBound.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/ShowPrimaryArea/ShowBound.jsx new file mode 100644 index 0000000..24db476 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/ShowPrimaryArea/ShowBound.jsx @@ -0,0 +1,29 @@ +import { useEffect, useRef } from "react"; +import { FeatureGroup, useMap } from "react-leaflet"; + +const ShowBound = ({ bound }) => { + const map = useMap(); + const featureRef = useRef(null); + + const safeFitBounds = (layer) => { + if (!layer || !map) return; + try { + const latLngs = layer.getLatLngs(); + map.fitBounds(latLngs, { + paddingTopLeft: [20, 20], + paddingBottomRight: [20, 20], + }); + } catch (e) { + console.warn("fitBounds failed:", e); + } + }; + + useEffect(() => { + bound?.editing?.disable(); + featureRef.current.addLayer(bound); + safeFitBounds(bound); + }, []); + + return ; +}; +export default ShowBound; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/ShowPrimaryArea/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/ShowPrimaryArea/index.jsx new file mode 100644 index 0000000..e4714de --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/ShowPrimaryArea/index.jsx @@ -0,0 +1,60 @@ +const { IconButton, Tooltip, Box, Dialog, DialogTitle, Typography, DialogContent } = require("@mui/material"); +import MapLayer from "@/core/components/MapLayer"; +import CloseIcon from "@mui/icons-material/Close"; +import LayersIcon from "@mui/icons-material/Layers"; +import { useMemo, useState } from "react"; +import ShowBound from "./ShowBound"; +import L from "leaflet"; + +const ShowPrimaryArea = ({ primaryArea }) => { + const [openShowAreaDialog, setOpenShowAreaDialog] = useState(false); + const bound = useMemo(() => { + const latLngCoords = primaryArea.coordinates.map((coord) => [coord[1], coord[0]]); + return primaryArea.type === "polygon" ? L.polygon(latLngCoords) : L.polyline(latLngCoords); + }, [primaryArea]); + + return ( + + + setOpenShowAreaDialog(true)}> + + + + setOpenShowAreaDialog(false)} + PaperProps={{ + sx: { + transition: "all .3s", + boxShadow: "rgba(60, 64, 67, 0.3) 0px 1px 16px 0px, rgba(60, 64, 67, 0.15) 0px 1px 10px 0px", + borderRadius: 2, + padding: 1, + }, + }} + maxWidth="sm" + fullWidth + dir="rtl" + > + + + محدوده طرح + + setOpenShowAreaDialog(false)} size="small"> + + + + + + + + + + + + + + + ); +}; + +export default ShowPrimaryArea; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/TechnicalDeputyList.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/TechnicalDeputyList.jsx new file mode 100644 index 0000000..bb3ec27 --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/TechnicalDeputyList.jsx @@ -0,0 +1,190 @@ +"use client"; + +import DataTableWithAuth from "@/core/components/DataTableWithAuth"; +import { GET_INQUIRY_PRIVACY_TABLE_LIST } from "@/core/utils/routes"; +import { Box, Stack } from "@mui/material"; +import moment from "jalali-moment"; +import { useMemo } from "react"; +import RowActions from "./RowActions"; +import ShowPrimaryArea from "./ShowPrimaryArea"; + +const TechnicalDeputyList = () => { + const columns = useMemo( + () => [ + { + accessorKey: "id", + header: "کد یکتا", + id: "id", + enableColumnFilter: false, + datatype: "text", + filterMode: "notEquals", + size: 100, + }, + { + accessorKey: "panjare_vahed_id", + header: "کدرهگیری پنجره واحد", + id: "panjare_vahed_id", + enableColumnFilter: true, + datatype: "text", + filterMode: "equals", + sortDescFirst: false, + columnFilterModeOptions: ["equals", "contains"], + grow: false, + size: 150, + }, + { + accessorKey: "national_id", + header: "کد ملی", + id: "national_id", + enableColumnFilter: true, + datatype: "text", + filterMode: "equals", + sortDescFirst: false, + columnFilterModeOptions: ["equals", "contains"], + size: 120, + }, + { + accessorKey: "phone_number", + header: "تلفن", + id: "phone_number", + enableColumnFilter: true, + datatype: "text", + filterMode: "equals", + size: 120, + }, + { + accessorKey: "state_name", + header: "وضعیت درخواست", + id: "state_name", + enableColumnFilter: false, + datatype: "text", + filterMode: "equals", + }, + { + accessorKey: "payment_amount", + header: "مبلغ پرداختی", + id: "payment_amount", + enableColumnFilter: true, + datatype: "text", + filterMode: "between", + Cell: ({ row }) => <>{row.original.payment_amount || "-"}, + }, + { + accessorKey: "requested_organization", + header: "دستگاه صادر کننده", + id: "requested_organization", + enableColumnFilter: true, + datatype: "text", + filterMode: "equals", + sortDescFirst: false, + columnFilterModeOptions: ["equals", "contains"], + }, + { + accessorKey: "province_name", + header: "استان", + id: "province_name", + enableColumnFilter: false, + datatype: "text", + filterMode: "equals", + }, + { + accessorKey: "city_name", + header: "شهر", + id: "city_name", + enableColumnFilter: false, + datatype: "text", + filterMode: "equals", + }, + { + accessorKey: "plan_group", + header: "گروه طرح", + id: "plan_group", + enableColumnFilter: true, + datatype: "text", + filterMode: "equals", + sortDescFirst: false, + columnFilterModeOptions: ["equals", "contains"], + }, + { + accessorKey: "plan_title", + header: "عنوان طرح", + id: "plan_title", + enableColumnFilter: true, + datatype: "text", + filterMode: "equals", + sortDescFirst: false, + columnFilterModeOptions: ["equals", "contains"], + }, + { + accessorKey: "primary_area", + header: "نمایش محدوده طرح", + id: "primary_area", + enableColumnFilter: true, + datatype: "text", + filterMode: "equals", + sortDescFirst: false, + columnFilterModeOptions: ["equals", "contains"], + grow: false, + size: 100, + Cell: ({ row }) => + row.original.primary_area ? ( + + + + ) : ( + "-" + ), + }, + { + accessorKey: "worksheet_id", + header: "شناسه کاربرگ", + id: "worksheet_id", + enableColumnFilter: true, + datatype: "text", + filterMode: "equals", + sortDescFirst: false, + columnFilterModeOptions: ["equals", "contains"], + }, + { + accessorKey: "isic", + header: "کد آیسیک", + id: "isic", + enableColumnFilter: true, + datatype: "text", + filterMode: "equals", + sortDescFirst: false, + columnFilterModeOptions: ["equals", "contains"], + }, + { + accessorFn: (row) => moment(row.request_date).locale("fa").format("YYYY/MM/DD"), + header: "تاریخ درخواست", + id: "request_date", + enableColumnFilter: true, + datatype: "date", + filterMode: "between", + grow: false, + size: 120, + }, + ], + [] + ); + + return ( + <> + + + + + ); +}; +export default TechnicalDeputyList; diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/index.jsx new file mode 100644 index 0000000..2b9a26a --- /dev/null +++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/index.jsx @@ -0,0 +1,15 @@ +"use client"; + +import PageTitle from "@/core/components/PageTitle"; +import { Stack } from "@mui/material"; +import TechnicalDeputyList from "./TechnicalDeputyList"; + +const TechnicalDeputy = () => { + return ( + + + + + ); +}; +export default TechnicalDeputy; diff --git a/src/core/components/TabPanel.jsx b/src/core/components/TabPanel.jsx new file mode 100644 index 0000000..529fad0 --- /dev/null +++ b/src/core/components/TabPanel.jsx @@ -0,0 +1,11 @@ +import { Box } from "@mui/material"; + +const TabPanel = (props) => { + const { children, value, index } = props; + return ( + + ); +}; +export default TabPanel; diff --git a/src/core/utils/pageMenuDev.js b/src/core/utils/pageMenuDev.js index 23c42d7..7a68cb6 100644 --- a/src/core/utils/pageMenuDev.js +++ b/src/core/utils/pageMenuDev.js @@ -318,7 +318,7 @@ export const pageMenuDev = [ id: "assistant", label: "کارتابل معاون", type: "page", - route: "/dashboard/inquiry-privacy/assistant", + route: "/dashboard/inquiry-privacy/technical-deputy", icon: , permissions: ["all"], }, diff --git a/src/core/utils/routes.js b/src/core/utils/routes.js index b2bb76d..e9e7119 100644 --- a/src/core/utils/routes.js +++ b/src/core/utils/routes.js @@ -241,3 +241,4 @@ export const GET_INQUIRY_PRIVACY_STATE_LIST = api + "/api/v3/harim/detail/states export const CITY_ADMIN_FEEDBACK = api + "/api/v3/harim/province_office/feedback"; export const GET_PRIVACY_ADMIN_LIST = api + "/api/v3/harim/harim_office"; export const PRIVACY_ADMIN_ACTION_API = api + "/api/v3/harim/harim_office"; +export const GET_INQUIRY_PRIVACY_TABLE_LIST = api + "/api/v3/harim/technical_deputy";