change submit order

This commit is contained in:
hamid zarghami
2026-01-31 09:29:58 +03:30
parent 10245bdb08
commit 8dbfcdad53
5 changed files with 29 additions and 11 deletions
@@ -43,7 +43,7 @@ const ManageAttribute: FC<Props> = (props) => {
<Select
placeholder={`انتخاب ${item.isRequired ? '(اجباری)' : '(اختاری)'}`}
label={item.name}
items={item.values?.map((value) => {
items={item.options?.map((value) => {
return {
label: value.value,
value: value.value
@@ -59,7 +59,7 @@ const ManageAttribute: FC<Props> = (props) => {
<div className='text-sm mb-3'>{item.name}</div>
<div className='flex gap-5 flex-wrap'>
{
item.values?.map((value) => {
item.options?.map((value) => {
const object = formik.values.attributes.find(o => o.attributeId === item.id)
return (
<div key={value.id} className='flex gap-2 items-center'>
@@ -82,7 +82,7 @@ const ManageAttribute: FC<Props> = (props) => {
<div key={item.id} className='mt-6'>
<div className='text-sm mb-3'>{item.name}</div>
<RadioGroup
items={item.values?.map((value) => {
items={item.options?.map((value) => {
return {
label: value.value,
value: value.value
+3 -2
View File
@@ -10,7 +10,7 @@ import ProductsSelect from './ProductsSelect'
import { useFormik } from 'formik'
import * as Yup from 'yup'
import type { AttachmentsType, OrderType, ProductType } from '../type/Types'
import { useGetProducts } from '../hooks/useOrderData'
import { useGetAttributes, useGetProducts } from '../hooks/useOrderData'
import ManageAttribute from './ManageAttribute'
import { useMultiUpload, useSingleUpload } from '@/pages/uploader/hooks/useUploader'
import { useOrderStore } from '../store/OrderStore'
@@ -29,6 +29,7 @@ const Order: FC<Props> = ({ addNewItem }) => {
const [productSelected, setProductSelected] = useState<ProductType>()
const [voiceFile, setVoiceFile] = useState<File>()
const [files, setFiles] = useState<File[]>([])
const { data: attributes } = useGetAttributes(productSelected?.id)
const singleUpload = useSingleUpload()
const multiUpload = useMultiUpload()
@@ -112,7 +113,7 @@ const Order: FC<Props> = ({ addNewItem }) => {
<div>
<ManageAttribute
attributes={productSelected?.attributes}
attributes={attributes?.data}
formik={formik}
/>
</div>
+8
View File
@@ -10,6 +10,14 @@ export const useGetProducts = () => {
});
};
export const useGetAttributes = (id?: number) => {
return useQuery({
queryKey: ["products-attributes", id],
queryFn: () => api.getAttributes(id),
enabled: !!id,
});
};
export const useSubmitOrder = () => {
return useMutation({
mutationFn: api.submitOrder,
+12 -4
View File
@@ -1,6 +1,7 @@
import axios from "@/config/axios";
import type {
AddTicketType,
AttributeResponseType,
MyOrdersResponseType,
OrderDetailResponseType,
OrderType,
@@ -14,6 +15,13 @@ export const getProducts = async () => {
return data;
};
export const getAttributes = async (productId?: number) => {
const { data } = await axios.get<AttributeResponseType>(
`/public/entity/${productId}/field`
);
return data;
};
export const submitOrder = async (params: OrderType[]) => {
const { data } = await axios.post(`/public/orders`, { items: params });
return data;
@@ -21,7 +29,7 @@ export const submitOrder = async (params: OrderType[]) => {
export const getMyOrders = async (
page: number = 1,
active: TabMyOrdersEnum,
active: TabMyOrdersEnum
) => {
const statuses =
active === TabMyOrdersEnum.IN_PROGRESS
@@ -47,21 +55,21 @@ export const getMyOrders = async (
query += `&statuses=${statuses}`;
}
const { data } = await axios.get<MyOrdersResponseType>(
`/public/orders${query}`,
`/public/orders${query}`
);
return data;
};
export const getOrderDetails = async (id: string) => {
const { data } = await axios.get<OrderDetailResponseType>(
`/public/orders/${id}`,
`/public/orders/${id}`
);
return data;
};
export const getTickets = async (orderId: string) => {
const { data } = await axios.get<TicketsResponseType>(
`/public/ticket/order/${orderId}`,
`/public/ticket/order/${orderId}`
);
return data;
};
+3 -2
View File
@@ -44,7 +44,7 @@ export type AttributeType = {
order: number;
product: number;
type: FieldTypeEnum;
values: AttributeValueType[];
options: AttributeValueType[];
};
export type ProductType = {
@@ -58,7 +58,6 @@ export type ProductType = {
order: number;
quantities: number[];
title: string;
attributes: AttributeType[];
};
export type ProductsResponseType = BaseResponse<ProductType[]>;
@@ -120,3 +119,5 @@ export type TicketType = {
};
export type TicketsResponseType = BaseResponse<TicketType[]>;
export type AttributeResponseType = BaseResponse<AttributeType[]>;