ticket with order item

This commit is contained in:
hamid zarghami
2026-01-31 15:03:00 +03:30
parent a0d099b50f
commit 2ced4666c8
3 changed files with 25 additions and 6 deletions
+19 -4
View File
@@ -7,21 +7,24 @@ import { useVoiceRecorder } from '@/hooks/useVoiceRecorder'
import { Play, Pause } from 'iconsax-react' import { Play, Pause } from 'iconsax-react'
import { useMultiUpload, useSingleUpload } from '@/pages/uploader/hooks/useUploader' import { useMultiUpload, useSingleUpload } from '@/pages/uploader/hooks/useUploader'
import type { AddTicketType } from '../types/Types' import type { AddTicketType } from '../types/Types'
import { useAddTicket, useGetTickets } from '../hooks/useOrderData' import { useAddTicket, useGetOrderDetails, useGetTickets } from '../hooks/useOrderData'
import { useParams } from 'react-router-dom' import { useParams } from 'react-router-dom'
import { toast } from '@/shared/toast' import { toast } from '@/shared/toast'
import { extractErrorMessage, getFileNameAndExtensionFromUrl } from '@/config/func' import { extractErrorMessage, getFileNameAndExtensionFromUrl } from '@/config/func'
import VoicePlayer from '@/components/VoicePlayer' import VoicePlayer from '@/components/VoicePlayer'
import Select from '@/components/Select'
const TicketSection: FC = () => { const TicketSection: FC = () => {
const { id } = useParams() const { id } = useParams()
const [itemId, setItemId] = useState<string>('')
const { data: order } = useGetOrderDetails(id!)
const [message, setMessage] = useState('') const [message, setMessage] = useState('')
const [files, setFiles] = useState<File[]>([]) const [files, setFiles] = useState<File[]>([])
const addTicket = useAddTicket() const addTicket = useAddTicket()
const { data, refetch } = useGetTickets(id!) const { data, refetch } = useGetTickets(itemId)
const singleUpload = useSingleUpload() const singleUpload = useSingleUpload()
const multiUpload = useMultiUpload() const multiUpload = useMultiUpload()
@@ -66,7 +69,7 @@ const TicketSection: FC = () => {
}) })
} }
addTicket.mutate({ orderId: id!, params: params }, { addTicket.mutate({ orderId: itemId, params: params }, {
onSuccess: () => { onSuccess: () => {
toast('پیام شما با موفقیت ارسال شد') toast('پیام شما با موفقیت ارسال شد')
refetch() refetch()
@@ -90,12 +93,24 @@ const TicketSection: FC = () => {
return ( return (
<div className="bg-white rounded-2xl p-6"> <div className="bg-white rounded-2xl p-6">
{/* Designer Name */} {/* Designer Name */}
<div className="mt-6"> <div className="mt-6 rowTwoInput">
<Input <Input
label="نام طراح" label="نام طراح"
placeholder="عباس حسینی" placeholder="عباس حسینی"
readOnly readOnly
/> />
<Select
items={order?.data?.items?.map((item) => {
return {
label: item.product?.title,
value: item.id + ''
}
}) || []}
onChange={(e) => setItemId(e.target.value)}
label='انتخاب محصول'
placeholder='انتخاب'
/>
</div> </div>
{ {
data?.data?.map((item) => { data?.data?.map((item) => {
+5 -2
View File
@@ -25,7 +25,10 @@ export const getTickets = async (orderId: string) => {
return data; return data;
}; };
export const addTicket = async (orderId: string, params: AddTicketType) => { export const addTicket = async (ticketId: string, params: AddTicketType) => {
const { data } = await axios.post(`/admin/ticket/order/${orderId}`, params); const { data } = await axios.post(
`/admin/ticket/order/item/${ticketId}`,
params
);
return data; return data;
}; };
+1
View File
@@ -118,6 +118,7 @@ export interface MyOrderType extends RowDataType {
} }
export type OrderItemType = { export type OrderItemType = {
id: number;
adminDescription?: string; adminDescription?: string;
attachments: { attachments: {
type: string; type: string;