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