feat: deal card, deal status, deal new dates, indicator, hide navbar

This commit is contained in:
2024-09-30 08:52:21 +03:00
parent 31d2c86770
commit 99b71b9da9
15 changed files with 313 additions and 146 deletions

View File

@@ -8,7 +8,7 @@ import PageBlock from "../../../components/PageBlock/PageBlock.tsx";
import DealEditDrawer from "../drawers/DealEditDrawer/DealEditDrawer.tsx";
import { DealPageContextProvider } from "../contexts/DealPageContext.tsx";
import { modals } from "@mantine/modals";
import { DealService, DealSummary, DealSummaryReorderRequest } from "../../../client";
import { DealService, DealSummaryReorderRequest } from "../../../client";
import { ActionIcon, Flex, NumberInput, rem, Text } from "@mantine/core";
import classNames from "classnames";
import { notifications } from "../../../shared/lib/notifications.ts";
@@ -19,6 +19,7 @@ import BaseMarketplaceSelect from "../../../components/Selects/BaseMarketplaceSe
import ClientSelectNew from "../../../components/Selects/ClientSelectNew/ClientSelectNew.tsx";
import DealsTable from "../../DealsPage/components/DealsTable/DealsTable.tsx";
import { motion } from "framer-motion";
import { dateWithoutTimezone } from "../../../shared/lib/date.ts";
enum DisplayMode {
BOARD,
@@ -31,11 +32,11 @@ export const LeadsPage: FC = () => {
const { summariesRaw, refetch } = useDealSummaries();
const [summaries, setSummaries] = useState(summariesRaw);
const [displayMode, setDisplayMode] = useState<DisplayMode>(
DisplayMode.BOARD
DisplayMode.BOARD,
);
const [isDragEnded, setIsDragEnded] = useState(true);
const [selectedDeals, setSelectedDeals] = useState<DealSummary[]>([]);
// const [selectedDeals, setSelectedDeals] = useState<DealSummary[]>([]);
useEffect(() => {
setSummaries(summariesRaw);
@@ -129,19 +130,18 @@ export const LeadsPage: FC = () => {
});
return;
}
modals.openContextModal({
modal: "enterDeadline",
title: "Необходимо указать дедлайн",
innerProps: {
onSubmit: event =>
DealService.reorderDealSummaries({
requestBody: event,
}).then(async response => {
setSummaries(response.summaries);
await refetch();
}),
request: request,
DealService.reorderDealSummaries({
requestBody: {
dealId: dealId,
status: status,
index: result.destination.index,
comment: "",
deadline: dateWithoutTimezone(new Date()),
},
}).then(async response => {
setSummaries(response.summaries);
await refetch();
});
};
const getTableBody = () => {
@@ -151,7 +151,9 @@ export const LeadsPage: FC = () => {
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
transition={{ duration: 0.2 }}>
<DealsTable items={data} onSelectionChange={setSelectedDeals} />
<DealsTable items={data}
// onSelectionChange={setSelectedDeals}
/>
</motion.div>
);
};
@@ -188,6 +190,15 @@ export const LeadsPage: FC = () => {
droppableId={"AWAITING_ACCEPTANCE"}
color={"#4A90E2"}
/>
<Board
summaries={summaries.filter(
summary =>
summary.status == DealStatus.READY_FOR_WORK,
)}
title={"Готов к работе"}
droppableId={"READY_FOR_WORK"}
color={"#D3D3D3"}
/>
<Board
summaries={summaries.filter(
summary =>
@@ -207,6 +218,15 @@ export const LeadsPage: FC = () => {
droppableId={"AWAITING_SHIPMENT"}
color={"#7ED321"}
/>
<Board
summaries={summaries.filter(
summary =>
summary.status == DealStatus.IN_DELIVERY,
)}
title={"В доставке"}
droppableId={"IN_DELIVERY"}
color={"#6A0DAD"}
/>
<Board
summaries={summaries.filter(
summary =>