ticket fix
This commit is contained in:
@@ -1,3 +1,3 @@
|
|||||||
VITE_TOKEN_NAME = 'negareh_t'
|
VITE_TOKEN_NAME = 'negareh_t'
|
||||||
VITE_REFRESH_TOKEN_NAME = 'negareh_rt'
|
VITE_REFRESH_TOKEN_NAME = 'negareh_rt'
|
||||||
VITE_API_BASE_URL = 'http://10.24.161.1:4000'
|
VITE_API_BASE_URL = 'http://192.168.99.218:4000'
|
||||||
|
|||||||
@@ -9,23 +9,10 @@ const OrderDetail: FC = () => {
|
|||||||
const { id } = useParams()
|
const { id } = useParams()
|
||||||
const { data } = useGetOrderDetails(id!)
|
const { data } = useGetOrderDetails(id!)
|
||||||
|
|
||||||
|
|
||||||
const orderData = {
|
|
||||||
orderId: '۱۲۲۴۵',
|
|
||||||
title: 'شاپینگ بک',
|
|
||||||
designer: 'عباس حسینی',
|
|
||||||
quantity: '۱۰۰',
|
|
||||||
estimatedDate: '۱۴۰۵/۰۶/۰۶/۱۳',
|
|
||||||
description: 'لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاق...'
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="w-full min-h-screen bg-[#eceef6] p-6">
|
<div className="w-full min-h-screen bg-[#eceef6] p-6">
|
||||||
{/* Header Section */}
|
{/* Header Section */}
|
||||||
<div className="flex items-start justify-between mb-6">
|
<div className="flex items-start justify-between mb-6">
|
||||||
|
|
||||||
|
|
||||||
<div className="text-sm text-[#8C90A3]">
|
<div className="text-sm text-[#8C90A3]">
|
||||||
سفارش #{data?.data?.orderNumber}
|
سفارش #{data?.data?.orderNumber}
|
||||||
</div>
|
</div>
|
||||||
@@ -60,7 +47,7 @@ const OrderDetail: FC = () => {
|
|||||||
</div>
|
</div>
|
||||||
<div className='flex items-center gap-2'>
|
<div className='flex items-center gap-2'>
|
||||||
<div className="text-xs text-desc">نام طرح:</div>
|
<div className="text-xs text-desc">نام طرح:</div>
|
||||||
<div className="text-sm font-medium text-black">{orderData.designer}</div>
|
<div className="text-sm font-medium text-black">{'orderData.designer'}</div>
|
||||||
</div>
|
</div>
|
||||||
<div className='flex items-center gap-2'>
|
<div className='flex items-center gap-2'>
|
||||||
<div className="text-xs text-desc">تعداد:</div>
|
<div className="text-xs text-desc">تعداد:</div>
|
||||||
|
|||||||
@@ -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 '../type/Types'
|
import type { AddTicketType } from '../type/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 { data: order } = useGetOrderDetails(id!)
|
||||||
|
const [itemId, setItemId] = useState<string>('')
|
||||||
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) => {
|
||||||
|
|||||||
@@ -67,14 +67,14 @@ export const getOrderDetails = async (id: string) => {
|
|||||||
return data;
|
return data;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getTickets = async (orderId: string) => {
|
export const getTickets = async (id: string) => {
|
||||||
const { data } = await axios.get<TicketsResponseType>(
|
const { data } = await axios.get<TicketsResponseType>(
|
||||||
`/public/ticket/order/${orderId}`
|
`/public/ticket/order/item/${id}`
|
||||||
);
|
);
|
||||||
return data;
|
return data;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const addTicket = async (orderId: string, params: AddTicketType) => {
|
export const addTicket = async (id: string, params: AddTicketType) => {
|
||||||
const { data } = await axios.post(`/public/ticket/order/${orderId}`, params);
|
const { data } = await axios.post(`/public/ticket/order/item/${id}`, params);
|
||||||
return data;
|
return data;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ export interface MyOrderType extends RowDataType {
|
|||||||
total: number;
|
total: number;
|
||||||
items: {
|
items: {
|
||||||
adminDescription?: string;
|
adminDescription?: string;
|
||||||
|
id: number;
|
||||||
attachments: {
|
attachments: {
|
||||||
type: string;
|
type: string;
|
||||||
url: string;
|
url: string;
|
||||||
|
|||||||
Reference in New Issue
Block a user