From 199fbe4987ce8ba1303e0aeef65628cb631c8b74 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Mon, 2 Feb 2026 16:11:02 +0330 Subject: [PATCH] edit print form --- src/pages/order/hooks/useOrderData.ts | 10 +++++++++- src/pages/order/service/OrderService.ts | 8 ++++++++ src/pages/order/types/Types.ts | 7 ++++++- src/pages/print/Form.tsx | 16 +++++++++++++++- src/pages/print/components/ManageForms.tsx | 13 ++++++++----- 5 files changed, 46 insertions(+), 8 deletions(-) diff --git a/src/pages/order/hooks/useOrderData.ts b/src/pages/order/hooks/useOrderData.ts index d7b30c7..1f1340f 100644 --- a/src/pages/order/hooks/useOrderData.ts +++ b/src/pages/order/hooks/useOrderData.ts @@ -64,8 +64,16 @@ export const useGetProducts = () => { export const useGetAttributes = (id?: number) => { return useQuery({ - queryKey: ["attributes"], + queryKey: ["attributes", id], queryFn: () => api.getAttributes(id), enabled: !!id, }); }; + +export const useGetOrderItem = (id?: number) => { + return useQuery({ + queryKey: ["order-item", id], + queryFn: () => api.getOrderItem(id), + enabled: !!id, + }); +}; diff --git a/src/pages/order/service/OrderService.ts b/src/pages/order/service/OrderService.ts index ac5f8ae..f96d889 100644 --- a/src/pages/order/service/OrderService.ts +++ b/src/pages/order/service/OrderService.ts @@ -3,6 +3,7 @@ import type { AddTicketType, CreateFinalOrderType, OrderDetailResponseType, + OrderItemResponseType, OrderResponseType, TicketsResponseType, } from "../types/Types"; @@ -62,3 +63,10 @@ export const getAttributes = async (productId?: number) => { ); return data; }; + +export const getOrderItem = async (itemId?: number) => { + const { data } = await axios.get( + `/admin/orders/item/${itemId}` + ); + return data; +}; diff --git a/src/pages/order/types/Types.ts b/src/pages/order/types/Types.ts index a5f0adb..0700eed 100644 --- a/src/pages/order/types/Types.ts +++ b/src/pages/order/types/Types.ts @@ -40,7 +40,10 @@ export interface OrderItem { adminDescription: string | null; attachments: string[]; printAttachments: null; - printAttributes: null; + printAttributes?: { + value: string; + fieldId: number; + }[]; confirmedAt: string | null; createdAt: string; deletedAt: string | null; @@ -48,6 +51,8 @@ export interface OrderItem { total: string; } +export type OrderItemResponseType = BaseResponse; + export interface Product { id: string; createdAt: string; diff --git a/src/pages/print/Form.tsx b/src/pages/print/Form.tsx index 94c57e7..a9ff301 100644 --- a/src/pages/print/Form.tsx +++ b/src/pages/print/Form.tsx @@ -1,4 +1,4 @@ -import { type FC } from 'react' +import { useEffect, type FC } from 'react' import { useNavigate, useParams } from 'react-router-dom' import { useCreatePrintForm, useGetSections } from './hooks/usePrintData' import { useFormik } from 'formik' @@ -8,14 +8,17 @@ import { toast } from '@/shared/toast' import { extractErrorMessage } from '@/config/func' import Button from '@/components/Button' import { TickSquare } from 'iconsax-react' +import { useGetOrderItem } from '../order/hooks/useOrderData' const PrintForm: FC = () => { const navigate = useNavigate() const { itemId, orderId } = useParams() + const { data: item } = useGetOrderItem(+itemId!) const { isPending, mutate } = useCreatePrintForm() const { data } = useGetSections() + const formik = useFormik({ initialValues: { printAttributes: [] @@ -33,6 +36,17 @@ const PrintForm: FC = () => { } }) + useEffect(() => { + + if (item?.data && item?.data?.printAttributes?.length) { + formik.setValues({ + printAttributes: item?.data?.printAttributes + }) + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [item?.data]) + return (
diff --git a/src/pages/print/components/ManageForms.tsx b/src/pages/print/components/ManageForms.tsx index 0858153..9e337f8 100644 --- a/src/pages/print/components/ManageForms.tsx +++ b/src/pages/print/components/ManageForms.tsx @@ -34,11 +34,12 @@ const ManageForms: FC = (props) => { return (
{ attributes?.map((item) => { + const value = formik.values.printAttributes?.find(o => o.fieldId === item.id) if (item?.type === FieldTypeEnum.select) return (
@@ -52,6 +53,7 @@ const ManageForms: FC = (props) => { } })} onChange={(e) => handleChange(item.id, e.target.value)} + value={value?.value} />
) @@ -62,13 +64,12 @@ const ManageForms: FC = (props) => {
{ item.options?.map((value) => { - const object = formik.values.printAttributes.find(o => o.fieldId === item.id) return (
{value.value}
handleChange(item.id, checked ? value.value : '')} />
@@ -79,7 +80,6 @@ const ManageForms: FC = (props) => {
) else if (item.type === FieldTypeEnum.radio) { - const object = formik.values.printAttributes.find(o => o.fieldId === item.id) return (
{item.name}
@@ -91,7 +91,7 @@ const ManageForms: FC = (props) => { } })} onChange={(v) => handleChange(item.id, v)} - selected={object?.value + '' || ''} + selected={value?.value + '' || ''} />
) @@ -104,6 +104,7 @@ const ManageForms: FC = (props) => { onChange={(date) => handleChange(item.id, date)} placeholder='' label={item.name} + defaultValue={value?.value} />
) @@ -114,6 +115,7 @@ const ManageForms: FC = (props) => { label={item.name} type={item.type} onChange={(e) => handleChange(item.id, e.target.value)} + value={value?.value} />
) @@ -123,6 +125,7 @@ const ManageForms: FC = (props) => {