You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.1 KiB
74 lines
2.1 KiB
import { Alert, Button, Modal } from "antd";
|
|
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
import { api } from "../../api";
|
|
import { useFilters } from "../../stores/useFilters";
|
|
import { usePointSelection } from "../../stores/usePointSelection";
|
|
import { STATUSES } from "../../config";
|
|
import { useUpdateLayerCounter } from "../../stores/useUpdateLayerCounter";
|
|
import { useState } from "react";
|
|
|
|
export const TakeToWorkButton = () => {
|
|
const { filters } = useFilters();
|
|
const { prediction, categories } = filters;
|
|
const { selection } = usePointSelection();
|
|
const queryClient = useQueryClient();
|
|
const { toggleUpdateCounter } = useUpdateLayerCounter();
|
|
|
|
const [isSuccessModalOpened, setIsSuccessModalOpened] = useState(false);
|
|
|
|
const { mutate } = useMutation({
|
|
mutationFn: () => {
|
|
const params = new URLSearchParams({
|
|
status: STATUSES.approve,
|
|
"prediction_current[]": prediction,
|
|
"categories[]": categories,
|
|
"included[]": [...selection.included],
|
|
"excluded[]": [...selection.excluded],
|
|
});
|
|
|
|
return api.put(
|
|
`/api/placement_points/update_status?${params.toString()}`
|
|
);
|
|
},
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries(["table", 1, filters]);
|
|
toggleUpdateCounter();
|
|
setIsSuccessModalOpened(true);
|
|
},
|
|
});
|
|
|
|
const takeToWork = () => {
|
|
mutate();
|
|
};
|
|
|
|
return (
|
|
<>
|
|
<Button type="primary" block className={"mt-2"} onClick={takeToWork}>
|
|
Взять в работу
|
|
</Button>
|
|
<Modal
|
|
title={" "}
|
|
centered
|
|
open={isSuccessModalOpened}
|
|
footer={[
|
|
<Button
|
|
key="ok-button"
|
|
type="primary"
|
|
onClick={() => setIsSuccessModalOpened(false)}
|
|
>
|
|
Хорошо
|
|
</Button>,
|
|
]}
|
|
>
|
|
<Alert
|
|
message="Успешно"
|
|
description="Выбранные точки отправлены на согласование. Посмотреть на них можно во второй
|
|
вкладке"
|
|
type="success"
|
|
showIcon
|
|
/>
|
|
</Modal>
|
|
</>
|
|
);
|
|
};
|