shify ,cycle , co-driver (date and time)

dilmurod
Dilmurod 5 days ago
parent 428d4a7137
commit a2a90b1184

@ -26,6 +26,7 @@
"lodash": "^4.17.21", "lodash": "^4.17.21",
"moment-timezone": "^0.5.43", "moment-timezone": "^0.5.43",
"react": "^18.2.0", "react": "^18.2.0",
"react-country-flag": "^3.1.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-final-form": "^6.5.9", "react-final-form": "^6.5.9",
"react-icons": "^4.11.0", "react-icons": "^4.11.0",

@ -638,6 +638,7 @@ const AccountingCurrent: React.FC = () => {
placeholder="Team" placeholder="Team"
onChange={(value: any) => setTeam(value)} onChange={(value: any) => setTeam(value)}
options={teamOptions} options={teamOptions}
allowClear
/> />
<Select <Select
style={{ width: 260 }} style={{ width: 260 }}

@ -1,6 +1,6 @@
import { Modal, Form, Input, DatePicker, Switch } from "antd"; import { Modal, Form, Input, Switch, Row, Col } from "antd";
import { useState } from "react"; import { useState } from "react";
import dayjs from "dayjs";
import { TTask } from "../../../types/Tasks/TTasks"; import { TTask } from "../../../types/Tasks/TTasks";
interface ShiftAndCoDriverCreateModalProps { interface ShiftAndCoDriverCreateModalProps {
@ -21,14 +21,7 @@ const ShiftAndCoDriverCreateModal: React.FC<
try { try {
const values = await form.validateFields(); const values = await form.validateFields();
const formattedValues = Object.fromEntries( onOk(values);
Object.entries(values).map(([key, value]) => [
key,
dayjs.isDayjs(value) ? value.format("YYYY-MM-DD HH:mm:ss") : value,
])
);
onOk(formattedValues);
form.resetFields(); form.resetFields();
} catch (err) { } catch (err) {
console.log("Validation error:", err); console.log("Validation error:", err);
@ -56,11 +49,7 @@ const ShiftAndCoDriverCreateModal: React.FC<
name="shift_date" name="shift_date"
rules={[{ required: true, message: "Please select date" }]} rules={[{ required: true, message: "Please select date" }]}
> >
<DatePicker <Input placeholder="Date and Time" />
style={{ width: "100%" }}
format="MM-DD-YYYY hh:mm:ss A"
showTime={{ format: "hh:mm:ss A" }}
/>
</Form.Item> </Form.Item>
<Form.Item <Form.Item
@ -78,11 +67,7 @@ const ShiftAndCoDriverCreateModal: React.FC<
name="cycle_date" name="cycle_date"
rules={[{ required: true, message: "Please select date" }]} rules={[{ required: true, message: "Please select date" }]}
> >
<DatePicker <Input placeholder="Date and Time" />
style={{ width: "100%" }}
format="MM-DD-YYYY hh:mm:ss A"
showTime={{ format: "hh:mm:ss A" }}
/>
</Form.Item> </Form.Item>
<Form.Item <Form.Item
@ -101,7 +86,11 @@ const ShiftAndCoDriverCreateModal: React.FC<
onChange={(checked) => { onChange={(checked) => {
setNeedsPickUp(checked); setNeedsPickUp(checked);
if (!checked) { if (!checked) {
form.resetFields(["pickup_date", "cycle_location"]); form.resetFields([
"pickup_date",
"pickup_location",
"pickup_time",
]);
} }
}} }}
/> />
@ -109,21 +98,30 @@ const ShiftAndCoDriverCreateModal: React.FC<
{needsPickUp && ( {needsPickUp && (
<> <>
<Form.Item <Row gutter={8}>
label="Pick Up Date" <Col span={12}>
name="pickup_date" <Form.Item
rules={[{ required: true, message: "Please select date" }]} label="Pick Up Date"
> name="pickup_date"
<DatePicker rules={[{ required: true, message: "Please select date" }]}
style={{ width: "100%" }} >
format="MM-DD-YYYY hh:mm:ss A" <Input placeholder="Date" />
showTime={{ format: "hh:mm:ss A" }} </Form.Item>
/> </Col>
</Form.Item> <Col span={12}>
<Form.Item
label="Pick Up Time"
name="pickup_time"
rules={[{ required: true, message: "Please select time" }]}
>
<Input placeholder="Time" />
</Form.Item>
</Col>
</Row>
<Form.Item <Form.Item
label="Pick Up Location" label="Pick Up Location"
name="cycle_location" name="pickup_location"
rules={[{ required: true, message: "Please enter location" }]} rules={[{ required: true, message: "Please enter location" }]}
> >
<Input placeholder="Enter location" /> <Input placeholder="Enter location" />
@ -133,7 +131,7 @@ const ShiftAndCoDriverCreateModal: React.FC<
{/* DRIVER INFO */} {/* DRIVER INFO */}
<Form.Item label="CO-Driver Info"> <Form.Item label="Co-Driver Info">
<Switch <Switch
checked={needsDriver} checked={needsDriver}
onChange={(checked) => { onChange={(checked) => {
@ -143,8 +141,10 @@ const ShiftAndCoDriverCreateModal: React.FC<
"driver_name", "driver_name",
"co_driver_name", "co_driver_name",
"co_driver_pickup_date", "co_driver_pickup_date",
"co_driver_pickup_time",
"co_driver_pickup_location", "co_driver_pickup_location",
"co_driver_drop_date", "co_driver_drop_date",
"co_driver_drop_time",
"co_driver_drop_location", "co_driver_drop_location",
]); ]);
} }
@ -154,26 +154,45 @@ const ShiftAndCoDriverCreateModal: React.FC<
{needsDriver && ( {needsDriver && (
<> <>
<Form.Item label="Driver Name" name="driver_name"> <Form.Item
label="Driver Name"
name="driver_name"
rules={[{ required: true, message: "Please enter driver name" }]}
>
<Input placeholder="Driver name" /> <Input placeholder="Driver name" />
</Form.Item> </Form.Item>
<Form.Item label="Co-Driver Name" name="co_driver_name">
<Input placeholder="Co-driver name" />
</Form.Item>
<Form.Item <Form.Item
label="Co-Driver Pick Up Date" label="Co-Driver Name"
name="co_driver_pickup_date" name="co_driver_name"
rules={[{ required: true, message: "Please select pickup date" }]} rules={[
{ required: true, message: "Please enter co driver name" },
]}
> >
<DatePicker <Input placeholder="Co-driver name" />
style={{ width: "100%" }}
format="MM-DD-YYYY hh:mm:ss A"
showTime={{ format: "hh:mm:ss A" }}
/>
</Form.Item> </Form.Item>
<Row gutter={8}>
<Col span={12}>
<Form.Item
label="Co-Driver Pick Up Date"
name="co_driver_pickup_date"
rules={[{ required: true, message: "Please select date" }]}
>
<Input placeholder="Date" />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
label="Co-Driver Pick Up Time"
name="co_driver_pickup_time"
rules={[{ required: true, message: "Please select time" }]}
>
<Input placeholder="Time" />
</Form.Item>
</Col>
</Row>
<Form.Item <Form.Item
label="Co-Driver Pick Up Location" label="Co-Driver Pick Up Location"
name="co_driver_pickup_location" name="co_driver_pickup_location"
@ -184,17 +203,27 @@ const ShiftAndCoDriverCreateModal: React.FC<
<Input placeholder="Enter pickup location" /> <Input placeholder="Enter pickup location" />
</Form.Item> </Form.Item>
<Form.Item <Row gutter={8}>
label="Co-Driver Drop Date" <Col span={12}>
name="co_driver_drop_date" <Form.Item
rules={[{ required: true, message: "Please select date" }]} label="Co-Driver Drop Date"
> name="co_driver_drop_date"
<DatePicker rules={[{ required: true, message: "Please select date" }]}
style={{ width: "100%" }} >
format="MM-DD-YYYY hh:mm:ss A" <Input placeholder="Date" />
showTime={{ format: "hh:mm:ss A" }} </Form.Item>
/> </Col>
</Form.Item> <Col span={12}>
<Form.Item
label="Co-Driver Drop Time"
name="co_driver_drop_time"
rules={[{ required: true, message: "Please select time" }]}
>
<Input placeholder="Time" />
</Form.Item>
</Col>
</Row>
<Form.Item <Form.Item
label="Co-Driver Drop Location" label="Co-Driver Drop Location"
name="co_driver_drop_location" name="co_driver_drop_location"

@ -1,6 +1,6 @@
import React, { useEffect } from "react"; import React, { useEffect } from "react";
import { Modal, Form, Input, DatePicker } from "antd"; import { Modal, Form, Input, Row, Col } from "antd";
import dayjs from "dayjs";
import { taskController } from "../../../API/LayoutApi/tasks"; import { taskController } from "../../../API/LayoutApi/tasks";
interface ShiftAndCoDriverEditModalProps { interface ShiftAndCoDriverEditModalProps {
@ -19,26 +19,23 @@ const ShiftAndCoDriverEditModal: React.FC<ShiftAndCoDriverEditModalProps> = ({
useEffect(() => { useEffect(() => {
if (recordTask) { if (recordTask) {
form.setFieldsValue({ form.setFieldsValue({
shift_date: recordTask.shift_date ? dayjs(recordTask.shift_date) : null, shift_date: recordTask.shift_date,
shift_location: recordTask.shift_location, shift_location: recordTask.shift_location,
cycle_date: recordTask.cycle_date ? dayjs(recordTask.cycle_date) : null, cycle_date: recordTask.cycle_date,
cycle_location: recordTask.cycle_location, cycle_location: recordTask.cycle_location,
pickup_date: recordTask.pickup_date pickup_date: recordTask.pickup_date,
? dayjs(recordTask.pickup_date) pickup_time: recordTask.pickup_time,
: null,
pickup_location: recordTask.pickup_location, pickup_location: recordTask.pickup_location,
driver_name: recordTask.driver_name, driver_name: recordTask.driver_name,
co_driver_name: recordTask.co_driver_name, co_driver_name: recordTask.co_driver_name,
co_driver_pickup_date: recordTask.co_driver_pickup_date,
co_driver_pickup_time: recordTask.co_driver_pickup_time,
co_driver_pickup_location: recordTask.co_driver_pickup_location, co_driver_pickup_location: recordTask.co_driver_pickup_location,
co_driver_pickup_date: recordTask.co_driver_pickup_date co_driver_drop_date: recordTask.co_driver_drop_date,
? dayjs(recordTask.co_driver_pickup_date) co_driver_drop_time: recordTask.co_driver_drop_time,
: null,
co_driver_drop_date: recordTask.co_driver_drop_date
? dayjs(recordTask.co_driver_drop_date)
: null,
co_driver_drop_location: recordTask.co_driver_drop_location, co_driver_drop_location: recordTask.co_driver_drop_location,
}); });
} }
@ -47,22 +44,7 @@ const ShiftAndCoDriverEditModal: React.FC<ShiftAndCoDriverEditModalProps> = ({
const handleOk = async () => { const handleOk = async () => {
try { try {
const values = await form.validateFields(); const values = await form.validateFields();
// Date fieldlarni string formatga o'tkazib yuboramiz taskController.taskPatch(values, recordTask.id);
const formattedValues = {
...values,
shift_date: values.shift_date ? values.shift_date.toISOString() : null,
pickup_date: values.pickup_date
? values.pickup_date.toISOString()
: null,
cycle_date: values.cycle_date ? values.cycle_date.toISOString() : null,
co_driver_pickup_date: values.co_driver_pickup_date
? values.co_driver_pickup_date.toISOString()
: null,
co_driver_drop_date: values.co_driver_drop_date
? values.co_driver_drop_date.toISOString()
: null,
};
taskController.taskPatch(formattedValues, recordTask.id);
onCancel(); onCancel();
form.resetFields(); form.resetFields();
} catch (error) { } catch (error) {
@ -83,11 +65,7 @@ const ShiftAndCoDriverEditModal: React.FC<ShiftAndCoDriverEditModalProps> = ({
<Form form={form} layout="vertical"> <Form form={form} layout="vertical">
{/* shift */} {/* shift */}
<Form.Item label="Shift Date" name="shift_date"> <Form.Item label="Shift Date" name="shift_date">
<DatePicker <Input placeholder="Date and Time" />
style={{ width: "100%" }}
format="MM-DD-YYYY hh:mm:ss A"
showTime={{ format: "hh:mm:ss A" }}
/>
</Form.Item> </Form.Item>
<Form.Item label="Shift Location" name="shift_location"> <Form.Item label="Shift Location" name="shift_location">
@ -97,11 +75,7 @@ const ShiftAndCoDriverEditModal: React.FC<ShiftAndCoDriverEditModalProps> = ({
{/* cycle */} {/* cycle */}
<Form.Item label="Cycle Date" name="cycle_date"> <Form.Item label="Cycle Date" name="cycle_date">
<DatePicker <Input placeholder="Date and Time" />
style={{ width: "100%" }}
format="MM-DD-YYYY hh:mm:ss A"
showTime={{ format: "hh:mm:ss A" }}
/>
</Form.Item> </Form.Item>
<Form.Item label="Cycle Location" name="cycle_location"> <Form.Item label="Cycle Location" name="cycle_location">
@ -110,15 +84,20 @@ const ShiftAndCoDriverEditModal: React.FC<ShiftAndCoDriverEditModalProps> = ({
{/* pick up */} {/* pick up */}
<Form.Item label="Pick Up Date" name="pickup_date"> <Row gutter={8}>
<DatePicker <Col span={12}>
style={{ width: "100%" }} <Form.Item label="Pick Up Date" name="pickup_date">
format="MM-DD-YYYY hh:mm:ss A" <Input placeholder="Date" />
showTime={{ format: "hh:mm:ss A" }} </Form.Item>
/> </Col>
</Form.Item> <Col span={12}>
<Form.Item label="Pick Up Time" name="pickup_time">
<Form.Item label="Pick Up Location" name="cycle_location"> <Input placeholder="Time" />
</Form.Item>
</Col>
</Row>
<Form.Item label="Pick Up Location" name="pickup_location">
<Input placeholder="Enter location" /> <Input placeholder="Enter location" />
</Form.Item> </Form.Item>
@ -132,13 +111,24 @@ const ShiftAndCoDriverEditModal: React.FC<ShiftAndCoDriverEditModalProps> = ({
<Input placeholder="Co-driver name" /> <Input placeholder="Co-driver name" />
</Form.Item> </Form.Item>
<Form.Item label="Co-Driver Pick Up Date" name="co_driver_pickup_date"> <Row gutter={8}>
<DatePicker <Col span={12}>
style={{ width: "100%" }} <Form.Item
format="MM-DD-YYYY hh:mm:ss A" label="Co-Driver Pick Up Date"
showTime={{ format: "hh:mm:ss A" }} name="co_driver_pickup_date"
/> >
</Form.Item> <Input placeholder="Date" />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
label="Co-Driver Pick Up Time"
name="co_driver_pickup_time"
>
<Input placeholder="Time" />
</Form.Item>
</Col>
</Row>
<Form.Item <Form.Item
label="Co-Driver Pick Up Location" label="Co-Driver Pick Up Location"
@ -147,13 +137,19 @@ const ShiftAndCoDriverEditModal: React.FC<ShiftAndCoDriverEditModalProps> = ({
<Input placeholder="Enter pickup location" /> <Input placeholder="Enter pickup location" />
</Form.Item> </Form.Item>
<Form.Item label="Co-Driver Drop Date" name="co_driver_drop_date"> <Row gutter={8}>
<DatePicker <Col span={12}>
style={{ width: "100%" }} <Form.Item label="Co-Driver Drop Date" name="co_driver_drop_date">
format="MM-DD-YYYY hh:mm:ss A" <Input placeholder="Date" />
showTime={{ format: "hh:mm:ss A" }} </Form.Item>
/> </Col>
</Form.Item> <Col span={12}>
<Form.Item label="Co-Driver Drop Date" name="co_driver_drop_time">
<Input placeholder="Time" />
</Form.Item>
</Col>
</Row>
<Form.Item <Form.Item
label="Co-Driver Drop Location" label="Co-Driver Drop Location"
name="co_driver_drop_location" name="co_driver_drop_location"

@ -1,6 +1,5 @@
import { Button, Card, message } from "antd"; import { Button, Card, message } from "antd";
import { CopyOutlined, EditOutlined } from "@ant-design/icons"; import { CopyOutlined, EditOutlined } from "@ant-design/icons";
import dayjs from "dayjs";
import { useState } from "react"; import { useState } from "react";
import ShiftAndCoDriverEditModal from "./ShiftAndCoDriverEditModal"; import ShiftAndCoDriverEditModal from "./ShiftAndCoDriverEditModal";
@ -11,17 +10,12 @@ interface ShiftDataTabProps {
const ShiftDataTab: React.FC<ShiftDataTabProps> = ({ recordTask }) => { const ShiftDataTab: React.FC<ShiftDataTabProps> = ({ recordTask }) => {
const [isModalOpen, setIsModalOpen] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false);
const formatDateTime = (date?: string) =>
date ? dayjs(date).format("MM-DD-YYYY hh:mm:ss A") : null;
const displayValue = (val?: string | null) => val ?? "—";
const shiftInfo = { const shiftInfo = {
pickUpDate: formatDateTime(recordTask?.pickup_date), pickUpDate: recordTask?.pickup_date,
pickUpLocation: recordTask?.pickup_location ?? null, pickUpLocation: recordTask?.pickup_location ?? null,
shiftDate: formatDateTime(recordTask?.shift_date), shiftDate: recordTask?.shift_date,
shiftLocation: recordTask?.shift_location ?? null, shiftLocation: recordTask?.shift_location ?? null,
cycleDate: formatDateTime(recordTask?.cycle_date), cycleDate: recordTask?.cycle_date,
cycleLocation: recordTask?.cycle_location ?? null, cycleLocation: recordTask?.cycle_location ?? null,
}; };
@ -29,9 +23,9 @@ const ShiftDataTab: React.FC<ShiftDataTabProps> = ({ recordTask }) => {
driverName: recordTask?.driver_name ?? null, driverName: recordTask?.driver_name ?? null,
coDriverName: recordTask?.co_driver_name ?? null, coDriverName: recordTask?.co_driver_name ?? null,
coDriverPickUpLocation: recordTask?.co_driver_pickup_location ?? null, coDriverPickUpLocation: recordTask?.co_driver_pickup_location ?? null,
coDriverPickUpDate: formatDateTime(recordTask?.co_driver_pickup_date), coDriverPickUpDate: recordTask?.co_driver_pickup_date,
coDriverDropLocation: recordTask?.co_driver_drop_location ?? null, coDriverDropLocation: recordTask?.co_driver_drop_location ?? null,
coDriverDropDate: formatDateTime(recordTask?.co_driver_drop_date), coDriverDropDate: recordTask?.co_driver_drop_date,
}; };
const buildTextBlock = (title: string, items: [string, string | null][]) => { const buildTextBlock = (title: string, items: [string, string | null][]) => {
@ -75,7 +69,7 @@ const ShiftDataTab: React.FC<ShiftDataTabProps> = ({ recordTask }) => {
["Дата сайкла", shiftInfo.cycleDate], ["Дата сайкла", shiftInfo.cycleDate],
["Место сайкла", shiftInfo.cycleLocation], ["Место сайкла", shiftInfo.cycleLocation],
]), ]),
buildTextBlock("ИНФОРМАЦИЯ О СО-ВОДИТЕЛЕ", [ buildTextBlock("ИНФОРМАЦИЯ О КО-ДРАЙВЕРЕ", [
["Имя драйвера", coDriverInfo.driverName], ["Имя драйвера", coDriverInfo.driverName],
["Имя ко-драйвера", coDriverInfo.coDriverName], ["Имя ко-драйвера", coDriverInfo.coDriverName],
["Время пикапа ко-драйвера", coDriverInfo.coDriverPickUpDate], ["Время пикапа ко-драйвера", coDriverInfo.coDriverPickUpDate],
@ -154,7 +148,7 @@ const ShiftDataTab: React.FC<ShiftDataTabProps> = ({ recordTask }) => {
<p>Дата пикапа: {shiftInfo.pickUpDate}</p> <p>Дата пикапа: {shiftInfo.pickUpDate}</p>
<p>Место пикапа: {shiftInfo.pickUpLocation}</p> <p>Место пикапа: {shiftInfo.pickUpLocation}</p>
<h4>ИНФОРМАЦИЯ О СО-ВОДИТЕЛЕ</h4> <h4>ИНФОРМАЦИЯ О КО-ДРАЙВЕРЕ</h4>
<p>Имя драйвера: {coDriverInfo.driverName}</p> <p>Имя драйвера: {coDriverInfo.driverName}</p>
<p>Имя ко-драйвера: {coDriverInfo.coDriverName}</p> <p>Имя ко-драйвера: {coDriverInfo.coDriverName}</p>
<p>Место пикапа ко-драйвера: {coDriverInfo.coDriverPickUpLocation}</p> <p>Место пикапа ко-драйвера: {coDriverInfo.coDriverPickUpLocation}</p>

@ -19,52 +19,40 @@ import { useTeamData } from "../../Hooks/Teams";
import { TTeam } from "../../types/Team/TTeam"; import { TTeam } from "../../types/Team/TTeam";
import { import {
ArrowRightOutlined, ArrowRightOutlined,
CaretRightOutlined,
CloseOutlined, CloseOutlined,
CopyOutlined,
DatabaseOutlined, DatabaseOutlined,
EditOutlined, EditOutlined,
ForwardOutlined,
RotateRightOutlined,
UploadOutlined, UploadOutlined,
} from "@ant-design/icons"; } from "@ant-design/icons";
import ShiftAndCoDriverCreateModal from "./ShiftInfo/ShiftAndCoDriverCreateModal"; import ShiftAndCoDriverCreateModal from "./ShiftInfo/ShiftAndCoDriverCreateModal";
import { TSocket } from "../../types/common/TSocket"; import { TSocket } from "../../types/common/TSocket";
// @ts-ignore
import closeIcon from "../../assets/closeIcon.png";
// @ts-ignore
import editIcon from "../../assets/editIcon.png";
// @ts-ignore
import historyIcon from "../../assets/hisoryIcon.png"; import historyIcon from "../../assets/hisoryIcon.png";
// @ts-ignore
import attachmentIcon from "../../assets/attachmentIcon.png"; import attachmentIcon from "../../assets/attachmentIcon.png";
// @ts-ignore
import infoIcon from "../../assets/infoIcon.png"; import infoIcon from "../../assets/infoIcon.png";
// @ts-ignore
import uploadIcon from "../../assets/uploadIcon.png";
// @ts-ignore
import pdficon from "../../assets/pdficon.png"; import pdficon from "../../assets/pdficon.png";
// @ts-ignore
import letssee from "../../assets/letssee.png"; import letssee from "../../assets/letssee.png";
// @ts-ignore
import svgicon from "../../assets/svgicon.png"; import svgicon from "../../assets/svgicon.png";
// @ts-ignore
import pngicon from "../../assets/pngicon.png"; import pngicon from "../../assets/pngicon.png";
// @ts-ignore
import jpgicon from "../../assets/jpgicon.png"; import jpgicon from "../../assets/jpgicon.png";
// @ts-ignore
import jpegicon from "../../assets/jpegicon.png"; import jpegicon from "../../assets/jpegicon.png";
// @ts-ignore
import xlsicon from "../../assets/xlsicon.png"; import xlsicon from "../../assets/xlsicon.png";
// @ts-ignore
import docicon from "../../assets/docicon.png"; import docicon from "../../assets/docicon.png";
// @ts-ignore
import forwardIcon from "../../assets/forward.png";
// @ts-ignore
import driverIcon from "../../assets/drivericon.png"; import driverIcon from "../../assets/drivericon.png";
// @ts-ignore
import userIcon from "../../assets/userIcon.png"; import userIcon from "../../assets/userIcon.png";
import ShiftDataTab from "./ShiftInfo/ShiftDataTab"; import ShiftDataTab from "./ShiftInfo/ShiftDataTab";

@ -1,4 +1,5 @@
import { Button, message, Modal, Space, Table, Tooltip } from "antd"; import { Button, message, Modal, Space, Table, Tooltip } from "antd";
import ReactCountryFlag from "react-country-flag";
import "../../App.css"; import "../../App.css";
import { useEffect, useMemo, useState } from "react"; import { useEffect, useMemo, useState } from "react";
import { taskController } from "../../API/LayoutApi/tasks"; import { taskController } from "../../API/LayoutApi/tasks";
@ -18,13 +19,13 @@ import tt from "../../assets/tticon.svg";
import tagIcon from "../../assets/tagIcon.svg"; import tagIcon from "../../assets/tagIcon.svg";
// @ts-ignore // @ts-ignore
import tgIcon from "../../assets/telegram.png"; import tgIcon from "../../assets/telegram.png";
//
import webIcon from "../../assets/web.png"; import webIcon from "../../assets/web.png";
//
import { isMobile, role } from "../../App"; import { isMobile, role } from "../../App";
import { theme } from "antd"; import { theme } from "antd";
import dayjs from "dayjs";
import ShiftAndCoDriverCreateModal from "./ShiftInfo/ShiftAndCoDriverCreateModal"; import ShiftAndCoDriverCreateModal from "./ShiftInfo/ShiftAndCoDriverCreateModal";
const admin_id = localStorage.getItem("admin_id"); const admin_id = localStorage.getItem("admin_id");
@ -58,7 +59,7 @@ const TaskTable = ({
status: "Checking", status: "Checking",
}; };
taskController.taskPatch(value, record?.id).then((response: any) => { taskController.taskPatch(value, record?.id).then((response: any) => {
if (response?.status == 403) { if (response?.status === 403) {
showErrorModal(response); showErrorModal(response);
} }
}); });
@ -81,7 +82,7 @@ const TaskTable = ({
// } // }
if (record.status === "Checking") { if (record.status === "Checking") {
// 1) Break / PTI holati // 1) Break / PTI
if ( if (
record?.service?.title === "Break" || record?.service?.title === "Break" ||
record?.service?.title === "PTI" record?.service?.title === "PTI"
@ -92,12 +93,12 @@ const TaskTable = ({
); );
if (response?.status === 400) { if (response?.status === 400) {
setRecordTask(record); setRecordTask(record);
setIsModalOpen(true); // ❌ error qaytsa modal ochiladi setIsModalOpen(true);
} }
return; return;
} }
// 2) needs_extra_info false bolsa // 2) needs_extra_info false
if (record?.company?.needs_extra_info === false) { if (record?.company?.needs_extra_info === false) {
const response = await taskController.taskPatch( const response = await taskController.taskPatch(
{ status: "Done" }, { status: "Done" },
@ -105,12 +106,11 @@ const TaskTable = ({
); );
if (response?.status === 400) { if (response?.status === 400) {
setRecordTask(record); setRecordTask(record);
setIsModalOpen(true); // ❌ error qaytsa modal ochiladi setIsModalOpen(true);
} }
return; return;
} }
// 3) boshqa hollarda -> bevosita modal
setRecordTask(record); setRecordTask(record);
setIsModalOpen(true); setIsModalOpen(true);
} }
@ -180,16 +180,13 @@ const TaskTable = ({
return ""; return "";
}; };
const formatDateTime = (date?: string) =>
date ? dayjs(date).format("MM-DD-YYYY hh:mm:ss A") : null;
const handleCopy = (record: any, lang: "en" | "ru") => { const handleCopy = (record: any, lang: "en" | "ru") => {
const shiftInfo = { const shiftInfo = {
pickUpDate: formatDateTime(record?.pickup_date), pickUpDate: record?.pickup_date,
pickUpLocation: record?.pickup_location ?? null, pickUpLocation: record?.pickup_location ?? null,
shiftDate: formatDateTime(record?.shift_date), shiftDate: record?.shift_date,
shiftLocation: record?.shift_location ?? null, shiftLocation: record?.shift_location ?? null,
cycleDate: formatDateTime(record?.cycle_date), cycleDate: record?.cycle_date,
cycleLocation: record?.cycle_location ?? null, cycleLocation: record?.cycle_location ?? null,
}; };
@ -197,9 +194,9 @@ const TaskTable = ({
driverName: record?.driver_name ?? null, driverName: record?.driver_name ?? null,
coDriverName: record?.co_driver_name ?? null, coDriverName: record?.co_driver_name ?? null,
coDriverPickUpLocation: record?.co_driver_pickup_location ?? null, coDriverPickUpLocation: record?.co_driver_pickup_location ?? null,
coDriverPickUpDate: formatDateTime(record?.co_driver_pickup_date), coDriverPickUpDate: record?.co_driver_pickup_date,
coDriverDropLocation: record?.co_driver_drop_location ?? null, coDriverDropLocation: record?.co_driver_drop_location ?? null,
coDriverDropDate: formatDateTime(record?.co_driver_drop_date), coDriverDropDate: record?.co_driver_drop_date,
}; };
const buildTextBlock = ( const buildTextBlock = (
@ -245,7 +242,7 @@ const TaskTable = ({
["Дата сайкла", shiftInfo.cycleDate], ["Дата сайкла", shiftInfo.cycleDate],
["Место сайкла", shiftInfo.cycleLocation], ["Место сайкла", shiftInfo.cycleLocation],
]), ]),
buildTextBlock("ИНФОРМАЦИЯ О СО-ВОДИТЕЛЕ", [ buildTextBlock("ИНФОРМАЦИЯ О КО-ДРАЙВЕРЕ", [
["Имя драйвера", coDriverInfo.driverName], ["Имя драйвера", coDriverInfo.driverName],
["Имя ко-драйвера", coDriverInfo.coDriverName], ["Имя ко-драйвера", coDriverInfo.coDriverName],
["Время пикапа ко-драйвера", coDriverInfo.coDriverPickUpDate], ["Время пикапа ко-драйвера", coDriverInfo.coDriverPickUpDate],
@ -511,7 +508,14 @@ const TaskTable = ({
placement="topLeft" placement="topLeft"
title={"Copy shift data in English"} title={"Copy shift data in English"}
> >
🇬🇧 <ReactCountryFlag
countryCode="GB"
svg
style={{
width: "1.2em",
height: "1.2em",
}}
/>
</Tooltip> </Tooltip>
</Button> </Button>
<Button onClick={() => handleCopy(record, "ru")} type="text"> <Button onClick={() => handleCopy(record, "ru")} type="text">
@ -519,7 +523,14 @@ const TaskTable = ({
placement="topLeft" placement="topLeft"
title={"Copy shift data in Russian"} title={"Copy shift data in Russian"}
> >
🇷🇺 <ReactCountryFlag
countryCode="RU"
svg
style={{
width: "1.2em",
height: "1.2em",
}}
/>
</Tooltip> </Tooltip>
</Button> </Button>
</> </>
@ -633,7 +644,7 @@ const TaskTable = ({
taskController taskController
.taskPatch(payload, recordTask.id) .taskPatch(payload, recordTask.id)
.then((response: any) => { .then((response: any) => {
if (response?.status == 403) { if (response?.status === 403) {
showErrorModal(response); showErrorModal(response);
} else { } else {
setIsModalOpen(false); setIsModalOpen(false);

@ -8610,6 +8610,11 @@ react-app-polyfill@^3.0.0:
regenerator-runtime "^0.13.9" regenerator-runtime "^0.13.9"
whatwg-fetch "^3.6.2" whatwg-fetch "^3.6.2"
react-country-flag@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/react-country-flag/-/react-country-flag-3.1.0.tgz#f0c4c332934a77d3e894ba4800634f7a887e53d4"
integrity sha512-JWQFw1efdv9sTC+TGQvTKXQg1NKbDU2mBiAiRWcKM9F1sK+/zjhP2yGmm8YDddWyZdXVkR8Md47rPMJmo4YO5g==
react-dev-utils@^12.0.1: react-dev-utils@^12.0.1:
version "12.0.1" version "12.0.1"
resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz" resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz"

Loading…
Cancel
Save