Merge branch 'release/v1.4.2'
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
HOST="rms.witel.ir"
|
HOST="rms.witel.ir"
|
||||||
NEXT_PUBLIC_VERSION="1.4.0"
|
NEXT_PUBLIC_VERSION="1.4.2"
|
||||||
NEXT_PUBLIC_API_URL="https://rms.witel.ir"
|
NEXT_PUBLIC_API_URL="https://rms.witel.ir"
|
||||||
NEXT_PUBLIC_MAPTILE_ENDPOINT="https://rmsmap.rmto.ir/141map"
|
NEXT_PUBLIC_MAPTILE_ENDPOINT="https://rmsmap.rmto.ir/141map"
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
import ControlPage from "@/components/dashboard/roadMissions/control";
|
import ControlPage from "@/components/dashboard/roadMissions/control";
|
||||||
|
import WithPermission from "@/core/middlewares/withPermission";
|
||||||
|
|
||||||
export const metadata = {
|
export const metadata = {
|
||||||
title: "کارتابل کنترل",
|
title: "کارتابل کنترل",
|
||||||
@@ -6,10 +7,10 @@ export const metadata = {
|
|||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{/* <WithPermission permission_name={["create-road-item"]}> */}
|
<WithPermission permission_name={["manage-control-unit"]}>
|
||||||
<ControlPage />
|
<ControlPage />
|
||||||
{/* <ActivityCodeLog activity_code={1152} /> */}
|
{/* <ActivityCodeLog activity_code={1152} /> */}
|
||||||
{/* </WithPermission> */}
|
</WithPermission>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ export const metadata = {
|
|||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{/* <WithPermission permission_name={["create-road-item"]}> */}
|
<WithPermission permission_name={["manage-request-portal-country", "manage-request-portal-province", "manage-request-portal-city"]}>
|
||||||
<OperatorPage />
|
<OperatorPage />
|
||||||
{/* <ActivityCodeLog activity_code={1152} /> */}
|
{/* <ActivityCodeLog activity_code={1152} /> */}
|
||||||
{/* </WithPermission> */}
|
</WithPermission>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import TransportationPage from "@/components/dashboard/roadMissions/transportation";
|
import TransportationPage from "@/components/dashboard/roadMissions/transportation";
|
||||||
|
import WithPermission from "@/core/middlewares/withPermission";
|
||||||
|
|
||||||
export const metadata = {
|
export const metadata = {
|
||||||
title: "کارتابل نقلیه",
|
title: "کارتابل نقلیه",
|
||||||
@@ -6,10 +7,10 @@ export const metadata = {
|
|||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{/* <WithPermission permission_name={["create-road-item"]}> */}
|
<WithPermission permission_name={["manage-transportation-unit"]}>
|
||||||
<TransportationPage />
|
<TransportationPage />
|
||||||
{/* <ActivityCodeLog activity_code={1152} /> */}
|
{/* <ActivityCodeLog activity_code={1152} /> */}
|
||||||
{/* </WithPermission> */}
|
</WithPermission>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ const MissionDates = ({ control }) => {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
{type == 2 && (
|
{type == 1 && (
|
||||||
<Grid item xs={12} sm={6}>
|
<Grid item xs={12} sm={6}>
|
||||||
<Controller
|
<Controller
|
||||||
control={control}
|
control={control}
|
||||||
@@ -66,7 +66,7 @@ const MissionDates = ({ control }) => {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
{type == 2 && (
|
{type == 1 && (
|
||||||
<Grid item xs={12} sm={6}>
|
<Grid item xs={12} sm={6}>
|
||||||
<Controller
|
<Controller
|
||||||
control={control}
|
control={control}
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ const validationSchema = object({
|
|||||||
type: string().required("نوع ماموریت را مشخص کنید!"),
|
type: string().required("نوع ماموریت را مشخص کنید!"),
|
||||||
start_date: string().required("تاریخ شروع ماموریت را مشخص کنید!"),
|
start_date: string().required("تاریخ شروع ماموریت را مشخص کنید!"),
|
||||||
start_time: string().when("type", {
|
start_time: string().when("type", {
|
||||||
is: "2",
|
is: "1",
|
||||||
then: (schema) => schema.required("زمان شروع ماموریت را مشخص کنید!"),
|
then: (schema) => schema.required("زمان شروع ماموریت را مشخص کنید!"),
|
||||||
otherwise: (schema) => schema.notRequired(),
|
otherwise: (schema) => schema.notRequired(),
|
||||||
}),
|
}),
|
||||||
end_date: string().required("تاریخ پایان ماموریت را مشخص کنید!"),
|
end_date: string().required("تاریخ پایان ماموریت را مشخص کنید!"),
|
||||||
end_time: string().when("type", {
|
end_time: string().when("type", {
|
||||||
is: "2",
|
is: "1",
|
||||||
then: (schema) => schema.required("زمان شروع ماموریت را مشخص کنید!"),
|
then: (schema) => schema.required("زمان شروع ماموریت را مشخص کنید!"),
|
||||||
otherwise: (schema) => schema.notRequired(),
|
otherwise: (schema) => schema.notRequired(),
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import RahdarCode from "@/core/components/RahdarCode";
|
import RahdarCode from "@/core/components/RahdarCode";
|
||||||
import StyledForm from "@/core/components/StyledForm";
|
import StyledForm from "@/core/components/StyledForm";
|
||||||
import { yupResolver } from "@hookform/resolvers/yup";
|
import { yupResolver } from "@hookform/resolvers/yup";
|
||||||
|
import { Add } from "@mui/icons-material";
|
||||||
import { Button, Stack } from "@mui/material";
|
import { Button, Stack } from "@mui/material";
|
||||||
import { Controller, useForm } from "react-hook-form";
|
import { Controller, useForm } from "react-hook-form";
|
||||||
import { object } from "yup";
|
import { object } from "yup";
|
||||||
@@ -53,6 +54,7 @@ const RahdaranForm = ({ setRahdaran }) => {
|
|||||||
type="submit"
|
type="submit"
|
||||||
sx={{ textWrap: "nowrap", px: 3 }}
|
sx={{ textWrap: "nowrap", px: 3 }}
|
||||||
disabled={isSubmitting || !isValid}
|
disabled={isSubmitting || !isValid}
|
||||||
|
startIcon={<Add />}
|
||||||
>
|
>
|
||||||
افزودن راهدار
|
افزودن راهدار
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ const RequestMachinesForm = ({ requests, setRequests }) => {
|
|||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12} sm={5}>
|
<Grid item xs={12} sm={4}>
|
||||||
<Controller
|
<Controller
|
||||||
control={control}
|
control={control}
|
||||||
name={"count"}
|
name={"count"}
|
||||||
@@ -76,9 +76,9 @@ const RequestMachinesForm = ({ requests, setRequests }) => {
|
|||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12} sm={2}>
|
<Grid item xs={12} sm={3}>
|
||||||
<Button variant="outlined" type="submit" fullWidth startIcon={<Add />}>
|
<Button variant="outlined" type="submit" fullWidth startIcon={<Add />}>
|
||||||
افزودن
|
افزودن خودرو
|
||||||
</Button>
|
</Button>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ const Verify = ({ types, regions, allData, handlePrev, submitForm, submitting })
|
|||||||
<Stack direction={"row"} alignItems={"center"} spacing={1}>
|
<Stack direction={"row"} alignItems={"center"} spacing={1}>
|
||||||
<Typography variant="body2">تاریخ شروع ماموریت</Typography>
|
<Typography variant="body2">تاریخ شروع ماموریت</Typography>
|
||||||
<Divider sx={{ flex: 1 }} />
|
<Divider sx={{ flex: 1 }} />
|
||||||
{allData.type == 2 ? (
|
{allData.type == 1 ? (
|
||||||
<Chip
|
<Chip
|
||||||
size="small"
|
size="small"
|
||||||
label={`${moment(allData.start_time).format("HH:mm")} | ${moment(allData.start_date).locale("fa").format("YYYY/MM/DD")}`}
|
label={`${moment(allData.start_time).format("HH:mm")} | ${moment(allData.start_date).locale("fa").format("YYYY/MM/DD")}`}
|
||||||
@@ -57,7 +57,7 @@ const Verify = ({ types, regions, allData, handlePrev, submitForm, submitting })
|
|||||||
<Stack direction={"row"} alignItems={"center"} spacing={1}>
|
<Stack direction={"row"} alignItems={"center"} spacing={1}>
|
||||||
<Typography variant="body2">تاریخ پایان ماموریت</Typography>
|
<Typography variant="body2">تاریخ پایان ماموریت</Typography>
|
||||||
<Divider sx={{ flex: 1 }} />
|
<Divider sx={{ flex: 1 }} />
|
||||||
{allData.type == 2 ? (
|
{allData.type == 1 ? (
|
||||||
<Chip
|
<Chip
|
||||||
size="small"
|
size="small"
|
||||||
label={`${moment(allData.end_time).format("HH:mm")} | ${moment(allData.end_date).locale("fa").format("YYYY/MM/DD")}`}
|
label={`${moment(allData.end_time).format("HH:mm")} | ${moment(allData.end_date).locale("fa").format("YYYY/MM/DD")}`}
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import Area from "./Area";
|
|||||||
import Verify from "./Verify";
|
import Verify from "./Verify";
|
||||||
|
|
||||||
const types = [
|
const types = [
|
||||||
{ id: 1, name_fa: "روزانه" },
|
{ id: 1, name_fa: "ساعتی" },
|
||||||
{ id: 2, name_fa: "ساعتی" },
|
{ id: 2, name_fa: "روزانه" },
|
||||||
];
|
];
|
||||||
|
|
||||||
const regions = [
|
const regions = [
|
||||||
|
|||||||
@@ -30,15 +30,15 @@ const Create = ({ mutate }) => {
|
|||||||
type: result.type,
|
type: result.type,
|
||||||
zone: result.region,
|
zone: result.region,
|
||||||
end_point: result.end_point,
|
end_point: result.end_point,
|
||||||
...(result.type == 2
|
...(result.type == 1
|
||||||
? {
|
? {
|
||||||
start_date: `${result.start_date} ${moment(result.start_time).format("HH:mm")}`,
|
start_date: `${result.start_date} ${moment(result.start_time).format("HH:mm")}`,
|
||||||
end_date: `${result.end_date} ${moment(result.end_time).format("HH:mm")}`,
|
end_date: `${result.end_date} ${moment(result.end_time).format("HH:mm")}`,
|
||||||
}
|
}
|
||||||
: {
|
: {
|
||||||
start_date: result.start_date,
|
start_date: result.start_date,
|
||||||
end_date: result.end_date,
|
end_date: result.end_date,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
hasSidebarUpdate: true,
|
hasSidebarUpdate: true,
|
||||||
})
|
})
|
||||||
@@ -46,7 +46,7 @@ const Create = ({ mutate }) => {
|
|||||||
mutate();
|
mutate();
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
})
|
})
|
||||||
.catch((error) => {})
|
.catch((error) => { })
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -38,15 +38,15 @@ const EditController = ({ row, mutate, openEditDialog, setOpenEditDialog }) => {
|
|||||||
type: result.type,
|
type: result.type,
|
||||||
zone: result.region,
|
zone: result.region,
|
||||||
end_point: result.end_point,
|
end_point: result.end_point,
|
||||||
...(result.type == 2
|
...(result.type == 1
|
||||||
? {
|
? {
|
||||||
start_date: `${result.start_date} ${moment(result.start_time).format("HH:mm")}`,
|
start_date: `${result.start_date} ${moment(result.start_time).format("HH:mm")}`,
|
||||||
end_date: `${result.end_date} ${moment(result.end_time).format("HH:mm")}`,
|
end_date: `${result.end_date} ${moment(result.end_time).format("HH:mm")}`,
|
||||||
}
|
}
|
||||||
: {
|
: {
|
||||||
start_date: result.start_date,
|
start_date: result.start_date,
|
||||||
end_date: result.end_date,
|
end_date: result.end_date,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
hasSidebarUpdate: true,
|
hasSidebarUpdate: true,
|
||||||
notificationSuccess: true,
|
notificationSuccess: true,
|
||||||
@@ -55,7 +55,7 @@ const EditController = ({ row, mutate, openEditDialog, setOpenEditDialog }) => {
|
|||||||
mutate();
|
mutate();
|
||||||
setOpenEditDialog(false);
|
setOpenEditDialog(false);
|
||||||
})
|
})
|
||||||
.catch((error) => {})
|
.catch((error) => { })
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ const MachinesList = ({ request, dispatch, setOpenMachinesDialog }) => {
|
|||||||
<Box sx={{ mt: 3, p: 1 }}>
|
<Box sx={{ mt: 3, p: 1 }}>
|
||||||
<DataTableWithAuth
|
<DataTableWithAuth
|
||||||
need_filter={true}
|
need_filter={true}
|
||||||
|
table_title="لیست خودرو ها"
|
||||||
columns={columns}
|
columns={columns}
|
||||||
sorting={[{ id: "id", desc: true }]}
|
sorting={[{ id: "id", desc: true }]}
|
||||||
table_url={GET_MACHINES_TABLE_LIST}
|
table_url={GET_MACHINES_TABLE_LIST}
|
||||||
|
|||||||
@@ -7,10 +7,27 @@ import { toast } from "react-toastify";
|
|||||||
import useTableSetting from "@/lib/hooks/useTableSetting";
|
import useTableSetting from "@/lib/hooks/useTableSetting";
|
||||||
import { flattenObjectOfObjects } from "@/core/utils/flattenObjectOfObjects";
|
import { flattenObjectOfObjects } from "@/core/utils/flattenObjectOfObjects";
|
||||||
|
|
||||||
|
function filterFalseValues(obj) {
|
||||||
|
const result = {};
|
||||||
|
|
||||||
|
for (const [key, value] of Object.entries(obj)) {
|
||||||
|
if (value === false) {
|
||||||
|
result[key] = false;
|
||||||
|
} else if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
|
||||||
|
const nested = filterFalseValues(value);
|
||||||
|
if (Object.keys(nested).length > 0) {
|
||||||
|
result[key] = nested;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
function AskForKeepData({ filterData, sortData, hideData, user_id, page_name, table_name, columns }) {
|
function AskForKeepData({ filterData, sortData, hideData, user_id, page_name, table_name, columns }) {
|
||||||
const { filterAction, sortAction, hideAction } = useTableSetting();
|
const { filterAction, sortAction, hideAction } = useTableSetting();
|
||||||
|
|
||||||
const filteredHideData = Object.fromEntries(Object.entries(hideData).filter(([key, value]) => value === false));
|
const filteredHideData = filterFalseValues(hideData);
|
||||||
|
|
||||||
const flattenHideData = flattenObjectOfObjects(filteredHideData);
|
const flattenHideData = flattenObjectOfObjects(filteredHideData);
|
||||||
|
|
||||||
|
|||||||
@@ -102,21 +102,21 @@ export const pageMenuDev = [
|
|||||||
label: "کارتابل",
|
label: "کارتابل",
|
||||||
type: "page",
|
type: "page",
|
||||||
route: "/dashboard/road-missions/operator",
|
route: "/dashboard/road-missions/operator",
|
||||||
permissions: ["all"],
|
permissions: ["manage-request-portal-country", "manage-request-portal-province", "manage-request-portal-city"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "roadMissionsManagemnetNaqlie",
|
id: "roadMissionsManagemnetNaqlie",
|
||||||
label: "نقلیه",
|
label: "نقلیه",
|
||||||
type: "page",
|
type: "page",
|
||||||
route: "/dashboard/road-missions/transportation",
|
route: "/dashboard/road-missions/transportation",
|
||||||
permissions: ["all"],
|
permissions: ["manage-transportation-unit"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "roadMissionsManagemnetControl",
|
id: "roadMissionsManagemnetControl",
|
||||||
label: "کنترل",
|
label: "کنترل",
|
||||||
type: "page",
|
type: "page",
|
||||||
route: "/dashboard/road-missions/control",
|
route: "/dashboard/road-missions/control",
|
||||||
permissions: ["all"],
|
permissions: ["manage-control-unit"],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ const DataTableProvider = ({ children, user_id, page_name, table_name, columns,
|
|||||||
} else {
|
} else {
|
||||||
acc[column.id] = {
|
acc[column.id] = {
|
||||||
id: column.id,
|
id: column.id,
|
||||||
value: storeFilter?.value || "",
|
value: storeFilter?.value ?? "",
|
||||||
filterMode: storeFilter?.filterMode || column.filterMode,
|
filterMode: storeFilter?.filterMode || column.filterMode,
|
||||||
datatype: column.datatype,
|
datatype: column.datatype,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user