From 8d886396b97c7b3bb1eb14a9ed4f5e8a8c32c15e Mon Sep 17 00:00:00 2001 From: AmirHossein Mahmoodi Date: Wed, 30 Jul 2025 10:20:09 +0330 Subject: [PATCH 1/4] add rahdaran --- src/core/utils/pageMenu.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/core/utils/pageMenu.js b/src/core/utils/pageMenu.js index 396762f..9331de5 100644 --- a/src/core/utils/pageMenu.js +++ b/src/core/utils/pageMenu.js @@ -21,6 +21,7 @@ import AssignmentLateIcon from "@mui/icons-material/AssignmentLate"; import LockPersonIcon from "@mui/icons-material/LockPerson"; import LineAxisIcon from "@mui/icons-material/LineAxis"; import ScienceIcon from "@mui/icons-material/Science"; +import HandymanIcon from "@mui/icons-material/Handyman"; import DriveEtaIcon from "@mui/icons-material/DriveEta"; import BiotechIcon from "@mui/icons-material/Biotech"; import Mediation from "@mui/icons-material/Mediation"; @@ -539,6 +540,14 @@ export const pageMenu = [ icon: , permissions: ["azmayesh-type-management"], }, + { + id: "rahdaran", + label: "راهداران", + type: "page", + route: "/dashboard/rahdaran", + icon: , + permissions: ["show-rahdaran"], + }, { id: "adminManagement", label: "مدیریت سامانه", From 75b94fd92d97704331bd6e4aff3101f20225ac52 Mon Sep 17 00:00:00 2001 From: AmirHossein Mahmoodi Date: Wed, 13 Aug 2025 10:17:49 +0000 Subject: [PATCH 2/4] Feature/amiriis add image to road safety --- .../Actions/create/Forms/ImageUpload.jsx | 4 +- .../Form/RegisterInsurance/ImageUpload.jsx | 4 +- .../Form/registerAction/ImageUpload.jsx | 4 +- .../Actions/Create/Forms/ImageUpload.jsx | 8 +- .../RowActions/ImageUpload.jsx | 4 +- .../Form/StepOne/CreateFormContent.jsx | 36 ++++---- .../operator/Form/StepOne/GetSubItemInfo.jsx | 19 ++++- .../operator/Form/StepOne/ImageUpload.jsx | 4 +- .../operator/Form/StepThree/ImageUpload.jsx | 4 +- .../Form/StepThree/StepThreeContent.jsx | 69 ++++++++++++---- .../operator/Form/StepThree/index.jsx | 2 +- .../roadSafety/operator/OperatorList.jsx | 23 ++++-- .../RowActions/ActionPictureDialog/List.jsx | 13 +++ .../RowActions/ActionPictureDialog/index.jsx | 8 +- .../RecognizePictureDialog/List.jsx | 12 +++ .../RecognizePictureDialog/index.jsx | 6 +- .../DialogInfoItem/ContentInfoItem.jsx | 82 +++++++++++++++---- .../RowActions/ActionPictureDialog/List.jsx | 13 +++ .../RowActions/ActionPictureDialog/index.jsx | 8 +- .../RecognizePictureDialog/List.jsx | 12 +++ .../RecognizePictureDialog/index.jsx | 6 +- .../roadSafety/supervisor/SupervisorList.jsx | 23 ++++-- .../Form/CreateTollHouse/ImageUpload.jsx | 4 +- .../dashboard/headerWithSidebar/index.jsx | 2 +- 24 files changed, 274 insertions(+), 96 deletions(-) create mode 100644 src/components/dashboard/roadSafety/operator/RowActions/ActionPictureDialog/List.jsx create mode 100644 src/components/dashboard/roadSafety/operator/RowActions/RecognizePictureDialog/List.jsx create mode 100644 src/components/dashboard/roadSafety/supervisor/RowActions/ActionPictureDialog/List.jsx create mode 100644 src/components/dashboard/roadSafety/supervisor/RowActions/RecognizePictureDialog/List.jsx diff --git a/src/components/dashboard/damages/operator/Actions/create/Forms/ImageUpload.jsx b/src/components/dashboard/damages/operator/Actions/create/Forms/ImageUpload.jsx index 7697cfb..84c312d 100644 --- a/src/components/dashboard/damages/operator/Actions/create/Forms/ImageUpload.jsx +++ b/src/components/dashboard/damages/operator/Actions/create/Forms/ImageUpload.jsx @@ -46,12 +46,12 @@ const ImageUpload = ({ name, value, onChange, error, title }) => { > { > { info_id: null, axis_type_id: "", recognize_picture: null, + recognize_picture_2: null, activity_date: "", activity_time: "", start_point: "", @@ -59,7 +60,13 @@ const CreateFormContent = ({ setOpen, mutate }) => { const handlePrev = () => { if (tabState === 2) { - const fieldsToReset = ["recognize_picture", "activity_time", "activity_date", "start_point"]; + const fieldsToReset = [ + "recognize_picture", + "recognize_picture_2", + "activity_time", + "activity_date", + "start_point", + ]; fieldsToReset.forEach((field) => resetField(field)); } if (tabState === 0) { @@ -87,6 +94,7 @@ const CreateFormContent = ({ setOpen, mutate }) => { formData.append("info_id", data.info_id); formData.append("axis_type_id", data.axis_type_id); formData.append("recognize_picture", data.recognize_picture); + formData.append("recognize_picture_2", data.recognize_picture_2); formData.append("point", startPoint); await requestServer(FIRST_STEP_STORE, "post", { data: formData, diff --git a/src/components/dashboard/roadSafety/operator/Form/StepOne/GetSubItemInfo.jsx b/src/components/dashboard/roadSafety/operator/Form/StepOne/GetSubItemInfo.jsx index 1433bcc..7d864b0 100644 --- a/src/components/dashboard/roadSafety/operator/Form/StepOne/GetSubItemInfo.jsx +++ b/src/components/dashboard/roadSafety/operator/Form/StepOne/GetSubItemInfo.jsx @@ -95,7 +95,7 @@ const GetSubItemInfo = ({ itemsList, control, setValue, errors }) => { name={"activity_time"} /> - + { value={field.value} error={error} onChange={field.onChange} - title={"تصویر مورد مشاهده شده"} + title={"تصویر بازدید 1"} + /> + )} + /> + + + ( + )} /> diff --git a/src/components/dashboard/roadSafety/operator/Form/StepOne/ImageUpload.jsx b/src/components/dashboard/roadSafety/operator/Form/StepOne/ImageUpload.jsx index 7697cfb..84c312d 100644 --- a/src/components/dashboard/roadSafety/operator/Form/StepOne/ImageUpload.jsx +++ b/src/components/dashboard/roadSafety/operator/Form/StepOne/ImageUpload.jsx @@ -46,12 +46,12 @@ const ImageUpload = ({ name, value, onChange, error, title }) => { > { > { action_date: "", action_time: "", action_picture: null, + finish_picture: null, + evidence_picture: null, }; const validationSchema = object({ action_date: string().required("لطفا تاریخ اقدام را انتخاب کنید!"), action_time: string().required("لطفا ساعت اقدام را انتخاب کنید!"), - action_picture: mixed().nullable().required("لطفا عکس اقدام را بارگذاری کنید!"), + action_picture: mixed().nullable().required("لطفا تصویر در حین انجام را بارگذاری کنید!"), + finish_picture: mixed().nullable().required("لطفا تصویر بعد از انجام را بارگذاری کنید!"), + evidence_picture: mixed().nullable().required("لطفا تصویر بعد صورت جلسه را بارگذاری کنید!"), }); const { control, @@ -34,6 +38,8 @@ const StepThreeContent = ({ setOpen, mutate, rowId }) => { const formData = new FormData(); formData.append("action_date", `${data.action_date} ${data.action_time.toString().padStart(2, "0")}:00`); formData.append("action_picture", data.action_picture); + formData.append("finish_picture", data.finish_picture); + formData.append("evidence_picture", data.evidence_picture); await requestServer(`${THIRD_STEP_STORE}/${rowId}`, "post", { data: formData, hasSidebarUpdate: true, @@ -85,19 +91,54 @@ const StepThreeContent = ({ setOpen, mutate, rowId }) => { /> - ( - + + + ( + + )} /> - )} - /> + + + ( + + )} + /> + + + ( + + )} + /> + + diff --git a/src/components/dashboard/roadSafety/operator/Form/StepThree/index.jsx b/src/components/dashboard/roadSafety/operator/Form/StepThree/index.jsx index 8b868c1..300687f 100644 --- a/src/components/dashboard/roadSafety/operator/Form/StepThree/index.jsx +++ b/src/components/dashboard/roadSafety/operator/Form/StepThree/index.jsx @@ -24,7 +24,7 @@ const StepThree = ({ mutate, rowId }) => { fullWidth > ثبت اقدام - + {open && } ); diff --git a/src/components/dashboard/roadSafety/operator/OperatorList.jsx b/src/components/dashboard/roadSafety/operator/OperatorList.jsx index 27ab825..56d37d3 100644 --- a/src/components/dashboard/roadSafety/operator/OperatorList.jsx +++ b/src/components/dashboard/roadSafety/operator/OperatorList.jsx @@ -293,7 +293,7 @@ const OperatorList = () => { columns: [ { accessorKey: "recognize_picture", - header: "تصویر بازدید", + header: "تصاویر بازدید", id: "recognize_picture", enableColumnFilter: false, enableSorting: false, @@ -309,10 +309,13 @@ const OperatorList = () => { }, }, }, - Cell: ({ renderedCellValue }) => { - return renderedCellValue ? ( + Cell: ({ row }) => { + return row.original.recognize_picture ? ( - + ) : ( <>- @@ -431,7 +434,7 @@ const OperatorList = () => { columns: [ { accessorKey: "action_picture", - header: "تصویر اقدام", + header: "تصاویر اقدام", id: "action_picture", enableColumnFilter: false, enableSorting: false, @@ -447,10 +450,14 @@ const OperatorList = () => { }, }, }, - Cell: ({ renderedCellValue }) => { - return renderedCellValue ? ( + Cell: ({ row }) => { + return row.original.action_picture ? ( - + ) : ( <>- diff --git a/src/components/dashboard/roadSafety/operator/RowActions/ActionPictureDialog/List.jsx b/src/components/dashboard/roadSafety/operator/RowActions/ActionPictureDialog/List.jsx new file mode 100644 index 0000000..8f3bfb2 --- /dev/null +++ b/src/components/dashboard/roadSafety/operator/RowActions/ActionPictureDialog/List.jsx @@ -0,0 +1,13 @@ +import { Stack } from "@mui/material"; +import ActionPictureContent from "./ActionPictureContent"; + +const List = ({ image1, image2, image3 }) => { + return ( + + + + + + ); +}; +export default List; diff --git a/src/components/dashboard/roadSafety/operator/RowActions/ActionPictureDialog/index.jsx b/src/components/dashboard/roadSafety/operator/RowActions/ActionPictureDialog/index.jsx index 79736f4..cd116d0 100644 --- a/src/components/dashboard/roadSafety/operator/RowActions/ActionPictureDialog/index.jsx +++ b/src/components/dashboard/roadSafety/operator/RowActions/ActionPictureDialog/index.jsx @@ -1,14 +1,14 @@ import PhotoLibraryIcon from "@mui/icons-material/PhotoLibrary"; import { Button, Dialog, DialogActions, DialogContent, IconButton, Tooltip } from "@mui/material"; import { useState } from "react"; -import ActionPictureContent from "./ActionPictureContent"; +import List from "./List"; -const ActionPictureDialog = ({ image }) => { +const ActionPictureDialog = ({ image1, image2, image3 }) => { const [openImageDialog, setOpenImageDialog] = useState(false); return ( <> - + setOpenImageDialog(true)}> @@ -26,7 +26,7 @@ const ActionPictureDialog = ({ image }) => { scroll="paper" > - +