fix: modal for place qr code cards, deal services editing
This commit is contained in:
		@@ -44,6 +44,7 @@ import CreateProjectModal
 | 
				
			|||||||
import CardTagModal from "../pages/CardsPage/drawers/ProjectEditDrawer/tabs/Tags/modals/CardTagModal.tsx";
 | 
					import CardTagModal from "../pages/CardsPage/drawers/ProjectEditDrawer/tabs/Tags/modals/CardTagModal.tsx";
 | 
				
			||||||
import PlaceTypeModal from "../pages/AdminPage/tabs/WarehouseManagement/placeType/modals/PlaceTypeModal.tsx";
 | 
					import PlaceTypeModal from "../pages/AdminPage/tabs/WarehouseManagement/placeType/modals/PlaceTypeModal.tsx";
 | 
				
			||||||
import PlaceModal from "../pages/AdminPage/tabs/WarehouseManagement/place/modals/PlaceModal.tsx";
 | 
					import PlaceModal from "../pages/AdminPage/tabs/WarehouseManagement/place/modals/PlaceModal.tsx";
 | 
				
			||||||
 | 
					import SelectPlaceQrType from "../pages/AdminPage/tabs/WarehouseManagement/place/modals/SelectPlaceQrType.tsx";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const modals = {
 | 
					export const modals = {
 | 
				
			||||||
    enterDeadline: EnterDeadlineModal,
 | 
					    enterDeadline: EnterDeadlineModal,
 | 
				
			||||||
@@ -86,4 +87,5 @@ export const modals = {
 | 
				
			|||||||
    cardTagModal: CardTagModal,
 | 
					    cardTagModal: CardTagModal,
 | 
				
			||||||
    placeTypeModal: PlaceTypeModal,
 | 
					    placeTypeModal: PlaceTypeModal,
 | 
				
			||||||
    placeModal: PlaceModal,
 | 
					    placeModal: PlaceModal,
 | 
				
			||||||
 | 
					    selectPlaceQrType: SelectPlaceQrType,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,7 @@ import { RootState } from "../../../../../../redux/store.ts";
 | 
				
			|||||||
import useCardProductAndServiceTabState from "../../hooks/useProductAndServiceTabState.tsx";
 | 
					import useCardProductAndServiceTabState from "../../hooks/useProductAndServiceTabState.tsx";
 | 
				
			||||||
import LockCheckbox from "../../../../../../components/LockCheckbox/LockCheckbox.tsx";
 | 
					import LockCheckbox from "../../../../../../components/LockCheckbox/LockCheckbox.tsx";
 | 
				
			||||||
import { useDebouncedCallback } from "@mantine/hooks";
 | 
					import { useDebouncedCallback } from "@mantine/hooks";
 | 
				
			||||||
 | 
					import { isDealLocked } from "../../../../../../pages/CardsPage/utils/isDealPaid.ts";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type RestProps = {
 | 
					type RestProps = {
 | 
				
			||||||
    onKitAdd?: (kit: GetServiceKitSchema) => void;
 | 
					    onKitAdd?: (kit: GetServiceKitSchema) => void;
 | 
				
			||||||
@@ -31,7 +32,7 @@ const CardServicesTable: FC<Props> = ({
 | 
				
			|||||||
    const authState = useSelector((state: RootState) => state.auth);
 | 
					    const authState = useSelector((state: RootState) => state.auth);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const { cardState } = useCardProductAndServiceTabState();
 | 
					    const { cardState } = useCardProductAndServiceTabState();
 | 
				
			||||||
    const isLocked = Boolean(cardState.card?.billRequests) || Boolean(cardState.card?.group?.billRequests);
 | 
					    const isLocked = isDealLocked(cardState.card);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const [currentService, setCurrentService] = useState<
 | 
					    const [currentService, setCurrentService] = useState<
 | 
				
			||||||
        CardServiceSchema | undefined
 | 
					        CardServiceSchema | undefined
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
import { PlaceSchema } from "../../../../../../client";
 | 
					import { PlaceSchema } from "../../../../../../client";
 | 
				
			||||||
import { IconBoxAlignBottom, IconPlaylistAdd, IconQrcode, IconTrash } from "@tabler/icons-react";
 | 
					import { IconPlaylistAdd, IconQrcode, IconTrash } from "@tabler/icons-react";
 | 
				
			||||||
import { ActionIcon, Flex, Tooltip } from "@mantine/core";
 | 
					import { ActionIcon, Flex, Tooltip } from "@mantine/core";
 | 
				
			||||||
import React, { ReactNode } from "react";
 | 
					import React, { ReactNode } from "react";
 | 
				
			||||||
import { useWarehouseManagementTabContext } from "../../placeType/contexts/WarehouseManagementTabContext.tsx";
 | 
					import { useWarehouseManagementTabContext } from "../../placeType/contexts/WarehouseManagementTabContext.tsx";
 | 
				
			||||||
@@ -37,14 +37,9 @@ const PlaceActions = ({ place }: Props) => {
 | 
				
			|||||||
    const actions = [
 | 
					    const actions = [
 | 
				
			||||||
        getAction(
 | 
					        getAction(
 | 
				
			||||||
            "Распечатать QR-код",
 | 
					            "Распечатать QR-код",
 | 
				
			||||||
            () => generateQrCode(place, false),
 | 
					            () => generateQrCode(place),
 | 
				
			||||||
            <IconQrcode />,
 | 
					            <IconQrcode />,
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        getAction(
 | 
					 | 
				
			||||||
            "Распечатать QR-код ",
 | 
					 | 
				
			||||||
            () => generateQrCode(place, true),
 | 
					 | 
				
			||||||
            <IconBoxAlignBottom />,
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        getAction(
 | 
					        getAction(
 | 
				
			||||||
            "Добавить",
 | 
					            "Добавить",
 | 
				
			||||||
            () => onCreatePlace(place),
 | 
					            () => onCreatePlace(place),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					import { ContextModalProps } from "@mantine/modals";
 | 
				
			||||||
 | 
					import { PlaceSchema } from "../../../../../../client";
 | 
				
			||||||
 | 
					import { Stack } from "@mantine/core";
 | 
				
			||||||
 | 
					import InlineButton from "../../../../../../components/InlineButton/InlineButton.tsx";
 | 
				
			||||||
 | 
					import { IconBoxAlignBottom, IconQrcode } from "@tabler/icons-react";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Props = {
 | 
				
			||||||
 | 
					    place: PlaceSchema;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const SelectPlaceQrType = ({
 | 
				
			||||||
 | 
					                               context,
 | 
				
			||||||
 | 
					                               id,
 | 
				
			||||||
 | 
					                               innerProps,
 | 
				
			||||||
 | 
					                           }: ContextModalProps<Props>) => {
 | 
				
			||||||
 | 
					    const { place } = innerProps;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const closeModal = () => {
 | 
				
			||||||
 | 
					        context.closeContextModal(id);
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const generateQrCode = (isShort: boolean) => {
 | 
				
			||||||
 | 
					        const pdfWindow = window.open(
 | 
				
			||||||
 | 
					            `${import.meta.env.VITE_API_URL}/wms/place/pdf/${place.id}/${isShort}`,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        if (!pdfWindow) return;
 | 
				
			||||||
 | 
					        pdfWindow.print();
 | 
				
			||||||
 | 
					        closeModal();
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return (
 | 
				
			||||||
 | 
					        <Stack>
 | 
				
			||||||
 | 
					            <InlineButton onClick={() => generateQrCode(false)}>
 | 
				
			||||||
 | 
					                <IconQrcode />
 | 
				
			||||||
 | 
					                Целая наклейка
 | 
				
			||||||
 | 
					            </InlineButton>
 | 
				
			||||||
 | 
					            <InlineButton onClick={() => generateQrCode(true)}>
 | 
				
			||||||
 | 
					                <IconBoxAlignBottom />
 | 
				
			||||||
 | 
					                Половина наклейки
 | 
				
			||||||
 | 
					            </InlineButton>
 | 
				
			||||||
 | 
					        </Stack>
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default SelectPlaceQrType;
 | 
				
			||||||
@@ -14,7 +14,7 @@ type WarehouseManagementTabContextState = {
 | 
				
			|||||||
    placeCrud: PlaceCrud;
 | 
					    placeCrud: PlaceCrud;
 | 
				
			||||||
    places: PlaceSchema[];
 | 
					    places: PlaceSchema[];
 | 
				
			||||||
    onCreatePlace: (place?: PlaceSchema) => void;
 | 
					    onCreatePlace: (place?: PlaceSchema) => void;
 | 
				
			||||||
    generateQrCode: (place: PlaceSchema, isShort: boolean) => void;
 | 
					    generateQrCode: (place: PlaceSchema) => void;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const WarehouseManagementTabContext = createContext<WarehouseManagementTabContextState | undefined>(
 | 
					const WarehouseManagementTabContext = createContext<WarehouseManagementTabContextState | undefined>(
 | 
				
			||||||
@@ -59,12 +59,15 @@ const useWarehouseManagementTabContextState = () => {
 | 
				
			|||||||
            .catch(err => console.log(err));
 | 
					            .catch(err => console.log(err));
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const generateQrCode = (place: PlaceSchema, isShort: boolean) => {
 | 
					    const generateQrCode = (place: PlaceSchema) => {
 | 
				
			||||||
        const pdfWindow = window.open(
 | 
					        modals.openContextModal({
 | 
				
			||||||
            `${import.meta.env.VITE_API_URL}/wms/place/pdf/${place.id}/${isShort}`,
 | 
					            modal: "selectPlaceQrType",
 | 
				
			||||||
        );
 | 
					            withCloseButton: false,
 | 
				
			||||||
        if (!pdfWindow) return;
 | 
					            centered: true,
 | 
				
			||||||
        pdfWindow.print();
 | 
					            innerProps: {
 | 
				
			||||||
 | 
					                place,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user