diff --git a/src/components/dashboard/damages/operator/Actions/create/Forms/CreateFormContent.jsx b/src/components/dashboard/damages/operator/Actions/create/Forms/CreateFormContent.jsx
index 2123236..3d71438 100644
--- a/src/components/dashboard/damages/operator/Actions/create/Forms/CreateFormContent.jsx
+++ b/src/components/dashboard/damages/operator/Actions/create/Forms/CreateFormContent.jsx
@@ -32,29 +32,48 @@ const validationSchema = object({
province_id: number().required("لطفا استان را وارد کنید!!!"),
city_id: number().required("لطفا شهرستان را وارد کنید!!!"),
axis_name: string().required("لطفا نام محور را وارد کنید!!!"),
- driver_name: string().required("لطفا نام و نام خانوادگی را وارد کنید!!!"),
+ driver_name: string().when('isForeign', {
+ is: "0",
+ then: (schema) => schema.required("لطفا نام و نام خانوادگی را وارد کنید!!!"),
+ }),
phone_number: string()
- .matches(/^09\d{9}$/, "شماره موبایل باید با 09 شروع شده و 11 رقم باشد")
- .required("لطفا تلفن همراه را وارد کنید!!!"),
- national_code: mixed()
- .test("max", "کد ملی باید شامل 10 رقم باشد", (value) => value.toString().length === 10)
- .test("validation", "کد ملی صحیح نمی باشد", (value) => validateNationalCode(value))
- .required("لطفا کد ملی را وارد کنید!!!"),
+ .when('isForeign', {
+ is: "0",
+ then: (schema) => schema.matches(/^09\d{9}$/, "شماره موبایل باید با 09 شروع شده و 11 رقم باشد")
+ .required("لطفا تلفن همراه را وارد کنید!!!"),
+ }),
+ national_code: mixed().when('isForeign', {
+ is: "0",
+ then: (schema) => schema.test("max", "کد ملی باید شامل 10 رقم باشد", (value) => value.toString().length === 10)
+ .test("validation", "کد ملی صحیح نمی باشد", (value) => validateNationalCode(value))
+ .required("لطفا کد ملی را وارد کنید!!!"),
+ }),
start_point: mixed()
.test("start-point-required", "لطفاً نقطه تصادف را مشخص کنید!", function (value) {
return !!value;
})
.required("لطفاً نقطه تصادف را مشخص کنید!"),
plate_part1: mixed()
- .test("max", "2رقم", (value) => value.toString().length === 2)
- .required("plate_part1 الزامیست"),
- plate_part2: mixed().required("plate_part2 الزامیست"),
- plate_part3: mixed()
- .test("max", "3رقم", (value) => value.toString().length === 3)
- .required("plate_part3الزامیست"),
- plate_part4: mixed()
- .test("max", "2رقم", (value) => value.toString().length === 2)
- .required("plate_part4الزامیست"),
+ .when('isForeign', {
+ is: "0",
+ then: (schema) => schema.test("max", "2رقم", (value) => value.toString().length === 2)
+ .required("plate_part1 الزامیست"),
+ }),
+ plate_part2: mixed().when('isForeign', {
+ is: "0",
+ then: (schema) => schema.required("plate_part2 الزامیست"),
+ }),
+ plate_part3: mixed().when('isForeign', {
+ is: "0",
+ then: (schema) => schema.test("max", "3رقم", (value) => value.toString().length === 3)
+ .required("plate_part3الزامیست"),
+ }),
+
+ plate_part4: mixed().when('isForeign', {
+ is: "0",
+ then: (schema) => schema.test("max", "2رقم", (value) => value.toString().length === 2)
+ .required("plate_part4الزامیست"),
+ }),
damage_picture1: mixed().nullable().required("لطفا عکس تصادف را بارگذاری کنید!"),
damage_picture2: mixed().nullable().required("لطفا عکس تصادف را بارگذاری کنید!"),
police_serial: string().when("radio_button", {
@@ -75,6 +94,7 @@ const validationSchema = object({
const CreateFormContent = ({ setOpen, SubmitDamage, defaultData }) => {
const defaultValues = {
+ isForeign: defaultData.isForeign,
accident_date: defaultData.accident_date,
accident_time: defaultData.accident_time,
accident_type: defaultData.accident_type,
diff --git a/src/components/dashboard/damages/operator/Actions/create/Forms/DamageInfo.jsx b/src/components/dashboard/damages/operator/Actions/create/Forms/DamageInfo.jsx
index 7f823a5..8f61860 100644
--- a/src/components/dashboard/damages/operator/Actions/create/Forms/DamageInfo.jsx
+++ b/src/components/dashboard/damages/operator/Actions/create/Forms/DamageInfo.jsx
@@ -1,5 +1,5 @@
import { Controller, useWatch } from "react-hook-form";
-import { Grid, Stack, TextField } from "@mui/material";
+import { Grid, Stack, TextField, ToggleButton, ToggleButtonGroup } from "@mui/material";
import MuiDatePicker from "@/core/components/MuiDatePicker";
import MuiTimePicker from "@/core/components/MuiTimePicker";
import SelectBox from "@/core/components/SelectBox";
@@ -11,104 +11,129 @@ import LogesticController from "./LogesticController";
const DamageInfo = ({ control, setValue, errors }) => {
const StartPoint = useWatch({ control, name: "start_point" });
+ const IsForeign = useWatch({ control, name: "isForeign" });
return (
-
-
- (
-
+ (
+ field.onChange(newAlignment)}
+ >
+
+ ناوگان داخلی
+
+
+ ناوگان خارجی
+
+
+ )}
+ />
+
+ {IsForeign == "0" && (
+ <>
+
+
+ (
+
+ )}
/>
- )}
- />
-
-
- (
-
+
+ {
- const inputValue = event.target.value;
- if (isNaN(Number(inputValue))) {
- return;
- }
- field.onChange(inputValue);
- }}
- label="کد ملی راننده"
- placeholder={"کد ملی راننده را وارد کنید"}
- fullWidth
- size="small"
- error={error}
- helperText={error?.message}
- InputLabelProps={{ shrink: true }}
+ control={control}
+ render={({ field, fieldState: { error } }) => (
+ {
+ const inputValue = event.target.value;
+ if (isNaN(Number(inputValue))) {
+ return;
+ }
+ field.onChange(inputValue);
+ }}
+ label="کد ملی راننده"
+ placeholder={"کد ملی راننده را وارد کنید"}
+ fullWidth
+ size="small"
+ error={error}
+ helperText={error?.message}
+ InputLabelProps={{ shrink: true }}
+ />
+ )}
/>
- )}
- />
-
-
-
-
- (
-
+
+
+
+ {
- const inputValue = event.target.value;
- if (isNaN(Number(inputValue))) {
- return;
- }
- field.onChange(inputValue);
- }}
- label="شماره موبایل راننده"
- placeholder={"شماره موبایل راننده را وارد کنید"}
- fullWidth
- size="small"
- error={error}
- helperText={error?.message}
- InputLabelProps={{ shrink: true }}
+ control={control}
+ render={({ field, fieldState: { error } }) => (
+ {
+ const inputValue = event.target.value;
+ if (isNaN(Number(inputValue))) {
+ return;
+ }
+ field.onChange(inputValue);
+ }}
+ label="شماره موبایل راننده"
+ placeholder={"شماره موبایل راننده را وارد کنید"}
+ fullWidth
+ size="small"
+ error={error}
+ helperText={error?.message}
+ InputLabelProps={{ shrink: true }}
+ />
+ )}
/>
- )}
- />
-
-
-
-
-
+
+
+
+
+
+ >
+ )}
{
formData.append("province_id", result.province_id);
formData.append("city_id", result.city_id);
formData.append("axis_name", result.axis_name);
- formData.append("driver_name", result.driver_name);
- formData.append("driver_phone_number", result.phone_number);
- formData.append("driver_national_code", result.national_code);
- formData.append("plaque", PlateNumber);
+ formData.append("is_foreign", result.isForeign);
+ if (result.isForeign == '0') {
+ formData.append("driver_name", result.driver_name);
+ formData.append("driver_phone_number", result.phone_number);
+ formData.append("driver_national_code", result.national_code);
+ formData.append("plaque", PlateNumber);
+ }
formData.append("damage_picture1", result.damage_picture1);
formData.append("damage_picture2", result.damage_picture2);
formData.append("lat", result.start_point.lat);
@@ -51,9 +54,10 @@ const OperatorCreateForm = ({ open, setOpen, mutate }) => {
mutate();
setOpen(false);
})
- .catch(() => {});
+ .catch(() => { });
};
const defaultData = {
+ isForeign: "0",
accident_date: "",
accident_time: "",
accident_type: "",
diff --git a/src/components/dashboard/damages/operator/OperatorList.jsx b/src/components/dashboard/damages/operator/OperatorList.jsx
index 584be1b..9cdd314 100644
--- a/src/components/dashboard/damages/operator/OperatorList.jsx
+++ b/src/components/dashboard/damages/operator/OperatorList.jsx
@@ -21,7 +21,11 @@ const OperatorList = () => {
const { data: userPermissions } = usePermissions();
const hasCountryPermission = userPermissions?.includes("show-receipt");
const { user } = useAuth();
-
+ const foreginOptions = [
+ { value: "", label: "همه ناوگان ها" },
+ { value: 0, label: "داخلی" },
+ { value: 1, label: "خارجی" },
+ ];
const statusOptions = [
{ value: "", label: "همه وضعیت ها" },
{ value: 0, label: "بدون اقدام" },
@@ -158,8 +162,8 @@ const OperatorList = () => {
props.dependencyFieldValue?.value === ""
? "empty"
: loadingCityList
- ? "loading"
- : props.filterParameters.value
+ ? "loading"
+ : props.filterParameters.value
}
columnSelectOption={getColumnSelectOptions}
/>
@@ -215,6 +219,25 @@ const OperatorList = () => {
grow: false,
size: 120,
},
+ {
+ accessorKey: "is_foreign",
+ header: "نوع ناوگان",
+ id: "is_foreign",
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterMode: "equals",
+ grow: false,
+ size: 100,
+ columnSelectOption: () => {
+ return foreginOptions.map((status) => ({
+ value: status.value,
+ label: status.label,
+ }));
+ },
+ Cell: ({ row }) => {
+ return {row.original.is_foreign == "0" ? "داخلی" : "خارجی"};
+ },
+ },
{
accessorKey: "plaque",
header: "پلاک",
@@ -225,7 +248,7 @@ const OperatorList = () => {
enableSorting: false,
grow: false,
size: 100,
- Cell: ({ renderedCellValue }) => ,
+ Cell: ({ row, renderedCellValue }) => row.original.is_foreign == "0" ? : '',
},
{
accessorKey: "accident_type",
diff --git a/src/components/dashboard/damages/operator/RowActions/index.jsx b/src/components/dashboard/damages/operator/RowActions/index.jsx
index f146c12..8f93004 100644
--- a/src/components/dashboard/damages/operator/RowActions/index.jsx
+++ b/src/components/dashboard/damages/operator/RowActions/index.jsx
@@ -23,10 +23,10 @@ const RowActions = ({ row, mutate }) => {
)}
{[0, 1, 2].includes(row.original?.status) && }
- {hasEditPermission && [0, 1, 2].includes(row.original?.status) && (
+ {hasEditPermission && [0].includes(row.original?.status) && (
)}
- {hasDeletePermission && }
+ {(hasDeletePermission && [0].includes(row.original?.status)) && }
);
};
diff --git a/src/components/dashboard/damages/report/ReportLists.jsx b/src/components/dashboard/damages/report/ReportLists.jsx
index c961bf2..42abbb1 100644
--- a/src/components/dashboard/damages/report/ReportLists.jsx
+++ b/src/components/dashboard/damages/report/ReportLists.jsx
@@ -18,30 +18,111 @@ const ReportLists = ({ data, specialFilter }) => {
size: 50,
},
{
- accessorKey: "tedade",
- header: "تعداد کل",
- id: "tedade",
+ header: "تعداد خسارات ثبت شده",
+ id: 'countAll',
enableColumnFilter: false,
enableSorting: false,
datatype: "text",
grow: false,
size: 50,
- muiTableBodyCellProps: {
- sx: {
- textAlign: "center",
- borderLeft: "1px solid #e1e1e1",
- py: 0,
- "&:first-of-type": {
- borderLeft: "unset",
+ columns: [
+ {
+ accessorKey: "tedade",
+ header: "کل",
+ id: "tedade",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "text",
+ grow: false,
+ size: 50,
+ muiTableBodyCellProps: {
+ sx: {
+ textAlign: "center",
+ borderLeft: "1px solid #e1e1e1",
+ py: 0,
+ "&:first-of-type": {
+ borderLeft: "unset",
+ },
+ },
+ },
+ Cell: ({ renderedCellValue }) => {
+ return (renderedCellValue / 1).toLocaleString();
},
},
- },
- Cell: ({ renderedCellValue }) => {
- return (renderedCellValue / 1).toLocaleString();
- },
+ {
+ accessorKey: "egdam",
+ header: "در دست اقدام",
+ id: "egdam",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "text",
+ grow: false,
+ size: 50,
+ muiTableBodyCellProps: {
+ sx: {
+ textAlign: "center",
+ borderLeft: "1px solid #e1e1e1",
+ py: 0,
+ "&:first-of-type": {
+ borderLeft: "unset",
+ },
+ },
+ },
+ Cell: ({ renderedCellValue }) => {
+ return (renderedCellValue / 1).toLocaleString();
+ },
+ },
+ {
+ accessorKey: "pardakht",
+ header: "در حال پرداخت",
+ id: "pardakht",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "text",
+ grow: false,
+ size: 50,
+ muiTableBodyCellProps: {
+ sx: {
+ textAlign: "center",
+ borderLeft: "1px solid #e1e1e1",
+ py: 0,
+ "&:first-of-type": {
+ borderLeft: "unset",
+ },
+ },
+ },
+ Cell: ({ renderedCellValue }) => {
+ return (renderedCellValue / 1).toLocaleString();
+ },
+ },
+ {
+ accessorKey: "khatm",
+ header: "خاتمه یافته",
+ id: "khatm",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "text",
+ grow: false,
+ size: 50,
+ muiTableBodyCellProps: {
+ sx: {
+ textAlign: "center",
+ borderLeft: "1px solid #e1e1e1",
+ py: 0,
+ "&:first-of-type": {
+ borderLeft: "unset",
+ },
+ },
+ },
+ Cell: ({ renderedCellValue }) => {
+ return (renderedCellValue / 1).toLocaleString();
+ },
+ },
+ ]
},
{
header: "تعداد نحوه شناسایی خسارت",
+ id: 'police_rah_All',
enableColumnFilter: false,
enableSorting: false,
datatype: "text",
@@ -152,7 +233,7 @@ const ReportLists = ({ data, specialFilter }) => {
columns: [
{
accessorKey: "vasel_shode_final",
- header: "فیش",
+ header: "فاکتور",
id: "vasel_shode_final",
enableColumnFilter: false,
enableSorting: false,