From 1c8e5aa849586ca6e2b1b2d64a83b280e669d3de Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Mon, 23 Feb 2026 15:15:34 +0330 Subject: [PATCH] ticket section --- src/pages/admin/hooks/useAdminData.ts | 4 ++-- src/pages/admin/service/AdminService.ts | 4 ++-- src/pages/order/ConvertToOrders.tsx | 19 ++++++++++++++++++ src/pages/order/components/TicketSection.tsx | 21 +++----------------- src/pages/order/service/OrderService.ts | 7 ++----- src/pages/order/types/Types.ts | 1 + src/pages/requests/Detail.tsx | 3 +++ src/router/AuthRouter.tsx | 2 +- 8 files changed, 33 insertions(+), 28 deletions(-) diff --git a/src/pages/admin/hooks/useAdminData.ts b/src/pages/admin/hooks/useAdminData.ts index a201844..e450705 100644 --- a/src/pages/admin/hooks/useAdminData.ts +++ b/src/pages/admin/hooks/useAdminData.ts @@ -2,10 +2,10 @@ import * as api from "../service/AdminService"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import type { CreateAdminType } from "../types/Types"; -export const useGetAdmins = (page: number) => { +export const useGetAdmins = (page: number = 1, limit: number = 10) => { return useQuery({ queryKey: ["admins", page], - queryFn: () => api.getAdmins(page), + queryFn: () => api.getAdmins(page, limit), }); }; diff --git a/src/pages/admin/service/AdminService.ts b/src/pages/admin/service/AdminService.ts index 9511bb3..a762077 100644 --- a/src/pages/admin/service/AdminService.ts +++ b/src/pages/admin/service/AdminService.ts @@ -6,9 +6,9 @@ import type { AdminDetailResponseType, } from "../types/Types"; -export const getAdmins = async (page: number) => { +export const getAdmins = async (page: number, limit: number = 10) => { const { data } = await axios.get("/admin/admins", { - params: { page }, + params: { page, limit }, }); return data; }; diff --git a/src/pages/order/ConvertToOrders.tsx b/src/pages/order/ConvertToOrders.tsx index 7b77334..15aacb4 100644 --- a/src/pages/order/ConvertToOrders.tsx +++ b/src/pages/order/ConvertToOrders.tsx @@ -15,6 +15,7 @@ import { useNavigate, useSearchParams } from 'react-router-dom' import { toast } from 'react-toastify' import { Paths } from '@/config/Paths' import { extractErrorMessage } from '@/config/func' +import { useGetAdmins } from '../admin/hooks/useAdminData' const getInitialValues = (invoiceItemId: string | null): ConvertToOrderItemType => ({ invoiceItemId: invoiceItemId ?? '', @@ -25,6 +26,7 @@ const getInitialValues = (invoiceItemId: string | null): ConvertToOrderItemType title: '', description: '', attachments: [], + designerId: '' }) const getValidationSchema = (invoiceItemId: string | null) => @@ -36,6 +38,7 @@ const getValidationSchema = (invoiceItemId: string | null) => estimatedDays: Yup.number().required('تخمین روز اجباری است.').min(0, 'باید عدد مثبت باشد'), title: Yup.string().required('عنوان اجباری است.'), description: Yup.string(), + designerId: Yup.string().required('این فیلد اجباری است') }) const ConvertToOrders: FC = () => { @@ -48,6 +51,7 @@ const ConvertToOrders: FC = () => { const { data: categories } = useGetCategory() const { data: users } = useGetUsers() const { data: products } = useGetProducts() + const { data: admins } = useGetAdmins(1, 50) const { mutate: converToOrder, isPending } = useConverToOrder() @@ -133,6 +137,21 @@ const ConvertToOrders: FC = () => {
+ ({ diff --git a/src/pages/order/components/TicketSection.tsx b/src/pages/order/components/TicketSection.tsx index aaec1f7..39213ef 100644 --- a/src/pages/order/components/TicketSection.tsx +++ b/src/pages/order/components/TicketSection.tsx @@ -7,24 +7,21 @@ import { useVoiceRecorder } from '@/hooks/useVoiceRecorder' import { Play, Pause } from 'iconsax-react' import { useMultiUpload, useSingleUpload } from '@/pages/uploader/hooks/useUploader' import type { AddTicketType } from '../types/Types' -import { useAddTicket, useGetOrderDetails, useGetTickets } from '../hooks/useOrderData' +import { useAddTicket, useGetTickets } from '../hooks/useOrderData' import { useParams } from 'react-router-dom' import { toast } from '@/shared/toast' import { extractErrorMessage, getFileNameAndExtensionFromUrl } from '@/config/func' import VoicePlayer from '@/components/VoicePlayer' -import Select from '@/components/Select' const TicketSection: FC = () => { const { id } = useParams() - const [itemId, setItemId] = useState('') - const { data: order } = useGetOrderDetails(id!) const [message, setMessage] = useState('') const [files, setFiles] = useState([]) const addTicket = useAddTicket() - const { data, refetch } = useGetTickets(itemId) + const { data, refetch } = useGetTickets(id!) const singleUpload = useSingleUpload() const multiUpload = useMultiUpload() @@ -69,7 +66,7 @@ const TicketSection: FC = () => { }) } - addTicket.mutate({ orderId: itemId, params: params }, { + addTicket.mutate({ orderId: id!, params: params }, { onSuccess: () => { toast('پیام شما با موفقیت ارسال شد') refetch() @@ -99,18 +96,6 @@ const TicketSection: FC = () => { placeholder="عباس حسینی" readOnly /> - -