feat: total price and products count display for deals

This commit is contained in:
2025-10-11 16:21:31 +04:00
parent a899177623
commit 2052737561
6 changed files with 55 additions and 14 deletions

View File

@ -11,9 +11,16 @@ import { DealSchema } from "@/lib/client";
const DealsTable: FC = () => {
const isMobile = useIsMobile();
const { selectedProject } = useProjectsContext();
const { deals, paginationInfo, page, setPage, sortingForm, dealsCrud } =
useDealsContext();
const { selectedProject, modulesSet } = useProjectsContext();
const {
deals,
paginationInfo,
page,
setPage,
sortingForm,
dealsCrud,
refetchDeals,
} = useDealsContext();
const { openDrawer } = useDrawersContext();
const onEditClick = useCallback(
@ -26,12 +33,13 @@ const DealsTable: FC = () => {
onDelete: dealsCrud.onDelete,
project: selectedProject,
},
onClose: refetchDeals,
});
},
[openDrawer, dealsCrud]
);
const columns = useDealsTableColumns({ onEditClick });
const columns = useDealsTableColumns({ onEditClick, modulesSet });
return (
<Stack

View File

@ -4,13 +4,15 @@ import { DataTableColumn } from "mantine-datatable";
import ActionIconWithTip from "@/components/ui/ActionIconWithTip/ActionIconWithTip";
import useIsMobile from "@/hooks/utils/useIsMobile";
import { DealSchema } from "@/lib/client";
import { ModuleNames } from "@/modules/modules";
import { utcDateTimeToLocalString } from "@/utils/datetime";
type Props = {
onEditClick: (deal: DealSchema) => void;
modulesSet: Set<ModuleNames>;
};
const useDealsTableColumns = ({ onEditClick }: Props) => {
const useDealsTableColumns = ({ onEditClick, modulesSet }: Props) => {
const isMobile = useIsMobile();
return useMemo(
@ -35,19 +37,30 @@ const useDealsTableColumns = ({ onEditClick }: Props) => {
accessor: "id",
title: isMobile ? "№" : "Номер",
sortable: true,
width: "20%",
},
{
accessor: "name",
title: "Название",
width: "45%",
},
{
title: "Дата создания",
accessor: "createdAt",
render: deal => utcDateTimeToLocalString(deal.createdAt),
sortable: true,
width: "35%",
},
{
title: "Клиент",
accessor: "client.name",
hidden: !modulesSet.has(ModuleNames.CLIENTS),
},
{
title: "Общая стоимость",
accessor: "totalPrice",
render: deal =>
deal.totalPrice
? `${deal.totalPrice.toLocaleString("ru")}`
: "0₽",
hidden: !modulesSet.has(ModuleNames.FULFILLMENT_BASE),
},
] as DataTableColumn<DealSchema>[],
[onEditClick]