From 188c7c45af9c1712a6fd7283bba5a1f5fb6cc4a4 Mon Sep 17 00:00:00 2001 From: AminGhasempoor Date: Sun, 21 Jun 2026 15:03:20 +0330 Subject: [PATCH 1/6] base select options --- .../Form/GetItemInfo/ItemSelectField.jsx | 31 +++++++++++++++++ .../Form/GetItemInfo/SubItemSelectField.jsx | 28 ++++++++++++++++ .../Actions/Create/Form/GetItemInfo/index.jsx | 33 +++++++------------ .../operator/Actions/Create/index.jsx | 2 ++ 4 files changed, 73 insertions(+), 21 deletions(-) create mode 100644 src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/ItemSelectField.jsx create mode 100644 src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/SubItemSelectField.jsx diff --git a/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/ItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/ItemSelectField.jsx new file mode 100644 index 0000000..44fc09f --- /dev/null +++ b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/ItemSelectField.jsx @@ -0,0 +1,31 @@ +import useRoadItemGetItems from "@/lib/hooks/useRoadItemGetItems"; +import { Controller } from "react-hook-form"; +import SelectBox from "@/core/components/SelectBox"; + +const ItemSelectField = ({ control, setValue }) => { + const { itemsList, loadingItemsList, errorItemsList } = useRoadItemGetItems(); + + return ( + ( + { + field.onChange; + setValue("sub_item_id", ""); + + }} + /> + )} + /> + ); +}; +export default ItemSelectField \ No newline at end of file diff --git a/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/SubItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/SubItemSelectField.jsx new file mode 100644 index 0000000..82d30b2 --- /dev/null +++ b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/SubItemSelectField.jsx @@ -0,0 +1,28 @@ +import useRoadItemGetSubItems from "@/lib/hooks/useRoadItemGetISubtems"; +import { Controller } from "react-hook-form"; +import SelectBox from "@/core/components/SelectBox"; + +const SubItemSelectField = ({ control, watch }) => { + const itemId = watch("item_id"); + const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetSubItems(itemId); + + return ( + ( + + )} + /> + ); +}; +export default SubItemSelectField; \ No newline at end of file diff --git a/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/index.jsx index f4e66e5..a203436 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/index.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/index.jsx @@ -8,7 +8,11 @@ import { yupResolver } from "@hookform/resolvers/yup"; import { ExitToApp } from "@mui/icons-material"; import { Box, Button, DialogActions, DialogContent, Grid, Stack } from "@mui/material"; import { Controller, useForm } from "react-hook-form"; -import { array, object, string } from "yup"; +import { array, number, object, string } from "yup"; +import ItemSelectField + from "./ItemSelectField"; +import SubItemSelectField + from "./SubItemSelectField"; const validationSchema = object({ explanation: string().required("موضوع را مشخص کنید!"), @@ -25,6 +29,8 @@ const validationSchema = object({ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { const defaultValues = { + item_id: allData.item_id, + sub_item_id: allData.sub_item_id, explanation: allData.explanation, end_point: allData.end_point, region: allData.region, @@ -33,7 +39,7 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { road_observed_id: allData.road_observed_id, }; - const { control, handleSubmit } = useForm({ + const { control, handleSubmit, watch, setValue } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all", @@ -51,25 +57,10 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { - ( - - )} - /> + + + + { defaultValues={{ explanation: "", category_id: "", + item_id: null, + sub_item_id: null, road_observed_id: "", rahdaran: [], requested_machines: [], -- 2.49.1 From 40f80fac3a6387a2b829036fc3de43167e652e29 Mon Sep 17 00:00:00 2001 From: baslani Date: Mon, 22 Jun 2026 12:03:39 +0330 Subject: [PATCH 2/6] refactored explanation field on create flow road missions operator cartable --- .../Form/GetItemInfo/ItemSelectField.jsx | 11 ++++++---- .../Form/GetItemInfo/SubItemSelectField.jsx | 15 +++++++++++--- .../Actions/Create/Form/GetItemInfo/index.jsx | 20 +++++++++++-------- .../operator/Actions/Create/index.jsx | 2 ++ 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/ItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/ItemSelectField.jsx index 44fc09f..2804d4a 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/ItemSelectField.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/ItemSelectField.jsx @@ -4,6 +4,9 @@ import SelectBox from "@/core/components/SelectBox"; const ItemSelectField = ({ control, setValue }) => { const { itemsList, loadingItemsList, errorItemsList } = useRoadItemGetItems(); + function getItemName(val) { + return itemsList.find((item) => item.id === val)?.name; + } return ( { schema={{ name: "name", value: "id" }} error={errorItemsList} helperText={error?.message} - onChange={() => { - field.onChange; + onChange={(value) => { + field.onChange(value); + setValue("explanation", getItemName(value)); setValue("sub_item_id", ""); - }} /> )} /> ); }; -export default ItemSelectField \ No newline at end of file +export default ItemSelectField; diff --git a/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/SubItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/SubItemSelectField.jsx index 82d30b2..9d54a52 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/SubItemSelectField.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/SubItemSelectField.jsx @@ -2,10 +2,16 @@ import useRoadItemGetSubItems from "@/lib/hooks/useRoadItemGetISubtems"; import { Controller } from "react-hook-form"; import SelectBox from "@/core/components/SelectBox"; -const SubItemSelectField = ({ control, watch }) => { +const SubItemSelectField = ({ control, watch, setValue, getValues }) => { const itemId = watch("item_id"); const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetSubItems(itemId); + function createExplanation(val) { + const currentExplanation = getValues("explanation"); + const selectedItem = subItemsList.find((item) => item.id === val)?.name; + return `${currentExplanation}-${selectedItem}`; + } + return ( { schema={{ name: "name", value: "id" }} error={errorSubItemsList} helperText={error?.message} - onChange={field.onChange} + onChange={(val) => { + field.onChange(val); + setValue("explanation", createExplanation(val)); + }} /> )} /> ); }; -export default SubItemSelectField; \ No newline at end of file +export default SubItemSelectField; diff --git a/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/index.jsx index a203436..1a804de 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/index.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/index.jsx @@ -8,17 +8,16 @@ import { yupResolver } from "@hookform/resolvers/yup"; import { ExitToApp } from "@mui/icons-material"; import { Box, Button, DialogActions, DialogContent, Grid, Stack } from "@mui/material"; import { Controller, useForm } from "react-hook-form"; -import { array, number, object, string } from "yup"; -import ItemSelectField - from "./ItemSelectField"; -import SubItemSelectField - from "./SubItemSelectField"; +import { array, object, string } from "yup"; +import ItemSelectField from "./ItemSelectField"; +import SubItemSelectField from "./SubItemSelectField"; const validationSchema = object({ - explanation: string().required("موضوع را مشخص کنید!"), end_point: string().required("مقصد را مشخص کنید!"), region: string().required("محور ماموریت را مشخص کنید!"), category_id: string().required("نوع ماموریت را مشخص کنید!"), + item_id: string().required("موضوع را مشخص کنید!"), + sub_item_id: string().required("اقدام انجام شده را مشخص کنید!"), requested_machines: array().min(1, "نوع خودرو را مشخص کنید!").required("نوع خودرو را مشخص کنید!"), road_observed_id: string().when("category_id", { is: "3", @@ -39,7 +38,7 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { road_observed_id: allData.road_observed_id, }; - const { control, handleSubmit, watch, setValue } = useForm({ + const { control, handleSubmit, watch, setValue, getValues } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all", @@ -60,7 +59,12 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { - + { start_date: result.start_date, end_date: result.end_date, }), + item_id: result.item_id, + sub_item_id: result.sub_item_id, }, hasSidebarUpdate: true, }) -- 2.49.1 From 6115e0ded204fc6e8bbe9b188e2ac6c54d5649c1 Mon Sep 17 00:00:00 2001 From: baslani Date: Mon, 22 Jun 2026 14:56:02 +0330 Subject: [PATCH 3/6] refactored violations, add controller and edit replaced text explanation with select fields --- .../Form/GetItemInfo/ItemSelectField.jsx | 34 +++++++++++++++++ .../Form/GetItemInfo/SubItemSelectField.jsx | 37 +++++++++++++++++++ .../Form/GetItemInfo/index.jsx | 34 +++++++---------- .../MissionCorrection/Form/index.jsx | 5 +-- .../RowActions/MissionCorrection/index.jsx | 2 + .../Form/GetItemInfo/ItemSelectField.jsx | 34 +++++++++++++++++ .../Form/GetItemInfo/SubItemSelectField.jsx | 37 +++++++++++++++++++ .../Dialog/Form/GetItemInfo/index.jsx | 34 +++++++---------- .../Dialog/Form/Verify/index.jsx | 6 +-- .../Add/AddController/Dialog/index.jsx | 6 +++ .../RowActions/Edit/EditController/index.jsx | 4 ++ 11 files changed, 187 insertions(+), 46 deletions(-) create mode 100644 src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/ItemSelectField.jsx create mode 100644 src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/SubItemSelectField.jsx create mode 100644 src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/ItemSelectField.jsx create mode 100644 src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/SubItemSelectField.jsx diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/ItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/ItemSelectField.jsx new file mode 100644 index 0000000..f738e6a --- /dev/null +++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/ItemSelectField.jsx @@ -0,0 +1,34 @@ +import useRoadItemGetItems from "@/lib/hooks/useRoadItemGetItems"; +import { Controller } from "react-hook-form"; +import SelectBox from "@/core/components/SelectBox"; + +const ItemSelectField = ({ control, setValue }) => { + const { itemsList, loadingItemsList, errorItemsList } = useRoadItemGetItems(); + function getItemName(val) { + return itemsList.find((item) => item.id === val)?.name; + } + + return ( + ( + { + field.onChange(value); + setValue("explanation", getItemName(value)); + setValue("sub_item_id", ""); + }} + /> + )} + /> + ); +}; +export default ItemSelectField; diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/SubItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/SubItemSelectField.jsx new file mode 100644 index 0000000..9b05c37 --- /dev/null +++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/SubItemSelectField.jsx @@ -0,0 +1,37 @@ +import useRoadItemGetSubItems from "@/lib/hooks/useRoadItemGetISubtems"; +import { Controller } from "react-hook-form"; +import SelectBox from "@/core/components/SelectBox"; + +const SubItemSelectField = ({ control, watch, setValue, getValues }) => { + const itemId = watch("item_id"); + const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetSubItems(itemId); + + function createExplanation(val) { + const currentExplanation = getValues("explanation"); + const selectedItem = subItemsList.find((item) => item.id === val)?.name; + return `${currentExplanation}-${selectedItem}`; + } + + return ( + ( + { + field.onChange(val); + setValue("explanation", createExplanation(val)); + }} + /> + )} + /> + ); +}; +export default SubItemSelectField; diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/index.jsx index 666b1f9..e4a0c57 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/index.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/index.jsx @@ -8,10 +8,12 @@ import { ExitToApp } from "@mui/icons-material"; import { Box, Button, DialogActions, DialogContent, Grid, Stack } from "@mui/material"; import { Controller, useForm } from "react-hook-form"; import { object, string } from "yup"; -import FastReactCode from "./FastReactCode"; +import ItemSelectField from "./ItemSelectField"; +import SubItemSelectField from "./SubItemSelectField"; const validationSchema = object({ - explanation: string().required("موضوع را مشخص کنید!"), + item_id: string().required("موضوع را مشخص کنید!"), + sub_item_id: string().required("اقدام انجام شده را مشخص کنید!"), end_point: string().required("مقصد را مشخص کنید!"), region: string().required("محور ماموریت را مشخص کنید!"), category_id: string().required("نوع ماموریت را مشخص کنید!"), @@ -24,6 +26,8 @@ const validationSchema = object({ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { const defaultValues = { + item_id: allData.item_id, + sub_item_id: allData.sub_item_id, explanation: allData.explanation, end_point: allData.end_point, region: allData.region, @@ -31,7 +35,7 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { road_observed_id: allData.road_observed_id, }; - const { control, handleSubmit } = useForm({ + const { control, handleSubmit, watch, setValue, getValues } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all", @@ -49,24 +53,14 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { - + + + ( - - )} + watch={watch} + setValue={setValue} + getValues={getValues} /> diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/index.jsx index 2d5973e..32437c6 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/index.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/index.jsx @@ -1,12 +1,11 @@ -import { AccessTime, Engineering, InsertDriveFile, Person, Verified, Map } from "@mui/icons-material"; +import { Engineering, InsertDriveFile, Map, Person, Verified } from "@mui/icons-material"; import { Box, Tab, Tabs } from "@mui/material"; import { useReducer, useState } from "react"; -import GetDateTime from "./GetDateTime"; +import Area from "./Area"; import GetItemInfo from "./GetItemInfo"; import MachineAndDriver from "./MachineAndDriver"; import Rahdaran from "./Rahdaran"; import Verify from "./Verify"; -import Area from "./Area"; function TabPanel(props) { const { children, value, index } = props; diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/index.jsx index 8c3ea66..0663c6a 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/index.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/index.jsx @@ -26,6 +26,8 @@ const MissionCorrection = ({ row, mutate, baseMutate }) => { end_point: result.end_point, driver: result.driver.id, encoded_route: result.area, + item_id: result.item_id, + sub_item_id: result.sub_item_id, }, hasSidebarUpdate: true, }) diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/ItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/ItemSelectField.jsx new file mode 100644 index 0000000..f738e6a --- /dev/null +++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/ItemSelectField.jsx @@ -0,0 +1,34 @@ +import useRoadItemGetItems from "@/lib/hooks/useRoadItemGetItems"; +import { Controller } from "react-hook-form"; +import SelectBox from "@/core/components/SelectBox"; + +const ItemSelectField = ({ control, setValue }) => { + const { itemsList, loadingItemsList, errorItemsList } = useRoadItemGetItems(); + function getItemName(val) { + return itemsList.find((item) => item.id === val)?.name; + } + + return ( + ( + { + field.onChange(value); + setValue("explanation", getItemName(value)); + setValue("sub_item_id", ""); + }} + /> + )} + /> + ); +}; +export default ItemSelectField; diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/SubItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/SubItemSelectField.jsx new file mode 100644 index 0000000..9b05c37 --- /dev/null +++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/SubItemSelectField.jsx @@ -0,0 +1,37 @@ +import useRoadItemGetSubItems from "@/lib/hooks/useRoadItemGetISubtems"; +import { Controller } from "react-hook-form"; +import SelectBox from "@/core/components/SelectBox"; + +const SubItemSelectField = ({ control, watch, setValue, getValues }) => { + const itemId = watch("item_id"); + const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetSubItems(itemId); + + function createExplanation(val) { + const currentExplanation = getValues("explanation"); + const selectedItem = subItemsList.find((item) => item.id === val)?.name; + return `${currentExplanation}-${selectedItem}`; + } + + return ( + ( + { + field.onChange(val); + setValue("explanation", createExplanation(val)); + }} + /> + )} + /> + ); +}; +export default SubItemSelectField; diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/index.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/index.jsx index ce38e38..0edafdf 100644 --- a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/index.jsx +++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/index.jsx @@ -1,3 +1,4 @@ +import LtrTextField from "@/core/components/LtrTextField"; import PersianTextField from "@/core/components/PersianTextField"; import SelectBox from "@/core/components/SelectBox"; import StyledForm from "@/core/components/StyledForm"; @@ -8,7 +9,8 @@ import { ExitToApp } from "@mui/icons-material"; import { Box, Button, DialogActions, DialogContent, Grid, Stack } from "@mui/material"; import { Controller, useForm } from "react-hook-form"; import { object, string } from "yup"; -import LtrTextField from "@/core/components/LtrTextField"; +import ItemSelectField from "./ItemSelectField"; +import SubItemSelectField from "./SubItemSelectField"; const validationSchema = object({ explanation: string().required("موضوع را مشخص کنید!"), @@ -24,6 +26,8 @@ const validationSchema = object({ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { const defaultValues = { + item_id: allData.item_id, + sub_item_id: allData.sub_item_id, explanation: allData.explanation, end_point: allData.end_point, region: allData.region, @@ -31,7 +35,7 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { road_observed_id: allData.road_observed_id, }; - const { control, handleSubmit } = useForm({ + const { control, handleSubmit, watch, setValue, getValues } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all", @@ -49,24 +53,14 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { - + + + ( - - )} + watch={watch} + setValue={setValue} + getValues={getValues} /> @@ -126,7 +120,7 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { }} /> - + { خودرو - + } {/* راننده diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/index.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/index.jsx index 0c7f4d9..c94039d 100644 --- a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/index.jsx +++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/index.jsx @@ -9,6 +9,8 @@ const DialogAdd = ({ mutate, setOpen, oldBound, rahdaran, machine, row }) => { const requestServer = useRequest({ notificationSuccess: true }); const submitForm = async (result) => { + console.log("result: ", result); + setSubmitting(true); await requestServer(`${REQUEST_MISSION_CONTINUE_MISSION}/${row.original.id}`, "post", { data: { @@ -29,6 +31,8 @@ const DialogAdd = ({ mutate, setOpen, oldBound, rahdaran, machine, row }) => { end_point: result.end_point, category_id: result.category_id, explanation: result.explanation, + item_id: result.item_id, + sub_item_id: result.sub_item_id, ...(result.category_id == 3 ? { road_observed_id: result.road_observed_id, @@ -51,6 +55,8 @@ const DialogAdd = ({ mutate, setOpen, oldBound, rahdaran, machine, row }) => { !r.is_driver), bound_type: "polyline", diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Edit/EditController/index.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Edit/EditController/index.jsx index e838647..93b791c 100644 --- a/src/components/dashboard/roadMissions/operator/RowActions/Edit/EditController/index.jsx +++ b/src/components/dashboard/roadMissions/operator/RowActions/Edit/EditController/index.jsx @@ -51,6 +51,8 @@ const EditController = ({ row, mutate, openEditDialog, setOpenEditDialog }) => { await requestServer(`${UPDATE_REQUEST_MISSION}/${row.original.id}`, "post", { data: { explanation: result.explanation, + item_id: result.item_id, + sub_item_id: result.sub_item_id, category_id: result.category_id, ...(result.category_id == 3 @@ -101,6 +103,8 @@ const EditController = ({ row, mutate, openEditDialog, setOpenEditDialog }) => { Date: Mon, 22 Jun 2026 15:04:47 +0330 Subject: [PATCH 4/6] build & format --- .../Add/AddController/Dialog/Form/Verify/index.jsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Verify/index.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Verify/index.jsx index da32570..9f789e1 100644 --- a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Verify/index.jsx +++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Verify/index.jsx @@ -93,10 +93,12 @@ const Verify = ({ allData, handlePrev, submitForm, submitting }) => { خودرو - { - allData.machine && - } + {allData.machine && ( + + )} {/* راننده -- 2.49.1 From a26f07d2ad6c8431663d9e797144eddb14d3c7ae Mon Sep 17 00:00:00 2001 From: AminGhasempoor Date: Mon, 22 Jun 2026 15:14:02 +0330 Subject: [PATCH 5/6] 2 middle point --- .../operator/Actions/Create/Form/Area/Routing/index.jsx | 2 +- .../RowActions/MissionCorrection/Form/Area/Routing/index.jsx | 2 +- .../Add/AddController/Dialog/Form/Area/Routing/index.jsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/dashboard/roadMissions/operator/Actions/Create/Form/Area/Routing/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/Area/Routing/index.jsx index ef3f6a6..6d7fc4e 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/Create/Form/Area/Routing/index.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/Area/Routing/index.jsx @@ -11,7 +11,7 @@ import { useEffect, useRef, useState } from "react"; import DataBox from "./DataBox"; import AlarmText from "./AlarmText"; -const MAX_WAYPOINTS = 1; +const MAX_WAYPOINTS = 2; const Routing = ({ setArea, setLocations, locations, area }) => { const mapPrevSourceMarker = useRef(); diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/Area/Routing/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/Area/Routing/index.jsx index ef3f6a6..6d7fc4e 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/Area/Routing/index.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/Area/Routing/index.jsx @@ -11,7 +11,7 @@ import { useEffect, useRef, useState } from "react"; import DataBox from "./DataBox"; import AlarmText from "./AlarmText"; -const MAX_WAYPOINTS = 1; +const MAX_WAYPOINTS = 2; const Routing = ({ setArea, setLocations, locations, area }) => { const mapPrevSourceMarker = useRef(); diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Area/Routing/index.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Area/Routing/index.jsx index ef3f6a6..6d7fc4e 100644 --- a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Area/Routing/index.jsx +++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Area/Routing/index.jsx @@ -11,7 +11,7 @@ import { useEffect, useRef, useState } from "react"; import DataBox from "./DataBox"; import AlarmText from "./AlarmText"; -const MAX_WAYPOINTS = 1; +const MAX_WAYPOINTS = 2; const Routing = ({ setArea, setLocations, locations, area }) => { const mapPrevSourceMarker = useRef(); -- 2.49.1 From f94374958d675bf4bb1318a9932b959ce214b2d9 Mon Sep 17 00:00:00 2001 From: AminGhasempoor Date: Mon, 22 Jun 2026 15:15:04 +0330 Subject: [PATCH 6/6] build and format --- .../Form/GetItemInfo/ItemSelectField.jsx | 68 ++++++++--------- .../Form/GetItemInfo/SubItemSelectField.jsx | 74 +++++++++---------- .../Form/GetItemInfo/ItemSelectField.jsx | 68 ++++++++--------- .../Form/GetItemInfo/SubItemSelectField.jsx | 74 +++++++++---------- 4 files changed, 142 insertions(+), 142 deletions(-) diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/ItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/ItemSelectField.jsx index f738e6a..2804d4a 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/ItemSelectField.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/ItemSelectField.jsx @@ -1,34 +1,34 @@ -import useRoadItemGetItems from "@/lib/hooks/useRoadItemGetItems"; -import { Controller } from "react-hook-form"; -import SelectBox from "@/core/components/SelectBox"; - -const ItemSelectField = ({ control, setValue }) => { - const { itemsList, loadingItemsList, errorItemsList } = useRoadItemGetItems(); - function getItemName(val) { - return itemsList.find((item) => item.id === val)?.name; - } - - return ( - ( - { - field.onChange(value); - setValue("explanation", getItemName(value)); - setValue("sub_item_id", ""); - }} - /> - )} - /> - ); -}; -export default ItemSelectField; +import useRoadItemGetItems from "@/lib/hooks/useRoadItemGetItems"; +import { Controller } from "react-hook-form"; +import SelectBox from "@/core/components/SelectBox"; + +const ItemSelectField = ({ control, setValue }) => { + const { itemsList, loadingItemsList, errorItemsList } = useRoadItemGetItems(); + function getItemName(val) { + return itemsList.find((item) => item.id === val)?.name; + } + + return ( + ( + { + field.onChange(value); + setValue("explanation", getItemName(value)); + setValue("sub_item_id", ""); + }} + /> + )} + /> + ); +}; +export default ItemSelectField; diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/SubItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/SubItemSelectField.jsx index 9b05c37..9d54a52 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/SubItemSelectField.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/SubItemSelectField.jsx @@ -1,37 +1,37 @@ -import useRoadItemGetSubItems from "@/lib/hooks/useRoadItemGetISubtems"; -import { Controller } from "react-hook-form"; -import SelectBox from "@/core/components/SelectBox"; - -const SubItemSelectField = ({ control, watch, setValue, getValues }) => { - const itemId = watch("item_id"); - const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetSubItems(itemId); - - function createExplanation(val) { - const currentExplanation = getValues("explanation"); - const selectedItem = subItemsList.find((item) => item.id === val)?.name; - return `${currentExplanation}-${selectedItem}`; - } - - return ( - ( - { - field.onChange(val); - setValue("explanation", createExplanation(val)); - }} - /> - )} - /> - ); -}; -export default SubItemSelectField; +import useRoadItemGetSubItems from "@/lib/hooks/useRoadItemGetISubtems"; +import { Controller } from "react-hook-form"; +import SelectBox from "@/core/components/SelectBox"; + +const SubItemSelectField = ({ control, watch, setValue, getValues }) => { + const itemId = watch("item_id"); + const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetSubItems(itemId); + + function createExplanation(val) { + const currentExplanation = getValues("explanation"); + const selectedItem = subItemsList.find((item) => item.id === val)?.name; + return `${currentExplanation}-${selectedItem}`; + } + + return ( + ( + { + field.onChange(val); + setValue("explanation", createExplanation(val)); + }} + /> + )} + /> + ); +}; +export default SubItemSelectField; diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/ItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/ItemSelectField.jsx index f738e6a..2804d4a 100644 --- a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/ItemSelectField.jsx +++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/ItemSelectField.jsx @@ -1,34 +1,34 @@ -import useRoadItemGetItems from "@/lib/hooks/useRoadItemGetItems"; -import { Controller } from "react-hook-form"; -import SelectBox from "@/core/components/SelectBox"; - -const ItemSelectField = ({ control, setValue }) => { - const { itemsList, loadingItemsList, errorItemsList } = useRoadItemGetItems(); - function getItemName(val) { - return itemsList.find((item) => item.id === val)?.name; - } - - return ( - ( - { - field.onChange(value); - setValue("explanation", getItemName(value)); - setValue("sub_item_id", ""); - }} - /> - )} - /> - ); -}; -export default ItemSelectField; +import useRoadItemGetItems from "@/lib/hooks/useRoadItemGetItems"; +import { Controller } from "react-hook-form"; +import SelectBox from "@/core/components/SelectBox"; + +const ItemSelectField = ({ control, setValue }) => { + const { itemsList, loadingItemsList, errorItemsList } = useRoadItemGetItems(); + function getItemName(val) { + return itemsList.find((item) => item.id === val)?.name; + } + + return ( + ( + { + field.onChange(value); + setValue("explanation", getItemName(value)); + setValue("sub_item_id", ""); + }} + /> + )} + /> + ); +}; +export default ItemSelectField; diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/SubItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/SubItemSelectField.jsx index 9b05c37..9d54a52 100644 --- a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/SubItemSelectField.jsx +++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/SubItemSelectField.jsx @@ -1,37 +1,37 @@ -import useRoadItemGetSubItems from "@/lib/hooks/useRoadItemGetISubtems"; -import { Controller } from "react-hook-form"; -import SelectBox from "@/core/components/SelectBox"; - -const SubItemSelectField = ({ control, watch, setValue, getValues }) => { - const itemId = watch("item_id"); - const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetSubItems(itemId); - - function createExplanation(val) { - const currentExplanation = getValues("explanation"); - const selectedItem = subItemsList.find((item) => item.id === val)?.name; - return `${currentExplanation}-${selectedItem}`; - } - - return ( - ( - { - field.onChange(val); - setValue("explanation", createExplanation(val)); - }} - /> - )} - /> - ); -}; -export default SubItemSelectField; +import useRoadItemGetSubItems from "@/lib/hooks/useRoadItemGetISubtems"; +import { Controller } from "react-hook-form"; +import SelectBox from "@/core/components/SelectBox"; + +const SubItemSelectField = ({ control, watch, setValue, getValues }) => { + const itemId = watch("item_id"); + const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetSubItems(itemId); + + function createExplanation(val) { + const currentExplanation = getValues("explanation"); + const selectedItem = subItemsList.find((item) => item.id === val)?.name; + return `${currentExplanation}-${selectedItem}`; + } + + return ( + ( + { + field.onChange(val); + setValue("explanation", createExplanation(val)); + }} + /> + )} + /> + ); +}; +export default SubItemSelectField; -- 2.49.1