add back and refresh button
deploy to danak / build_and_deploy (push) Has been cancelled

This commit is contained in:
2026-07-02 23:52:16 +03:30
parent 505ff2f7b5
commit 54e2cb6b28
15 changed files with 165 additions and 52 deletions
+13 -9
View File
@@ -8,6 +8,7 @@ import { Link, useSearchParams } from 'react-router-dom'
import { Paths } from '@/config/Paths'
import type { OrderListItemType } from './types/Types'
import Button from '@/components/Button'
import RefreshButton from '@/components/RefreshButton'
import UserSearch from '../user/UserSearch'
import DesignerSearch from '../designer/DesignerSearch'
import CategoriesSelect from '../product/components/CategoriesSelect'
@@ -50,20 +51,23 @@ const OrdersList: FC = () => {
}, { replace: true })
}
const { data } = useGetOrders({ designId, categoryId, userId, ...filters })
const { data, refetch, isFetching } = useGetOrders({ designId, categoryId, userId, ...filters })
return (
<div className='mt-5'>
<div className='flex justify-between items-center'>
<h1 className='text-lg font-light'>سفارش ها</h1>
<Link to={Paths.convertToOrder}>
<Button className='w-fit px-6'>
<div className='flex gap-2 items-center'>
<AddSquare size={18} color='black' />
سفارش جدید
</div>
</Button>
</Link>
<div className='flex items-center gap-3'>
<RefreshButton onClick={() => refetch()} isLoading={isFetching} />
<Link to={Paths.convertToOrder}>
<Button className='w-fit px-6'>
<div className='flex gap-2 items-center'>
<AddSquare size={18} color='black' />
سفارش جدید
</div>
</Button>
</Link>
</div>
</div>
<div className='mt-8 flex flex-wrap items-end gap-4'>
+10 -3
View File
@@ -2,6 +2,9 @@ import { type FC } from 'react'
import { useParams } from 'react-router-dom'
import moment from 'moment-jalaali'
import { User } from 'iconsax-react'
import BackButton from '@/components/BackButton'
import RefreshButton from '@/components/RefreshButton'
import { Paths } from '@/config/Paths'
import { useGetOrderDetails } from './hooks/useOrderData'
import TicketSection from './components/TicketSection'
import OrderItem from './components/OrderItem'
@@ -20,7 +23,7 @@ const InfoRow: FC<{ label: string; value?: string | number | null }> = ({ label,
const OrderDetail: FC = () => {
const { id } = useParams()
const { data } = useGetOrderDetails(id!)
const { data, refetch, isFetching } = useGetOrderDetails(id!)
const order = data?.data as (OrderDetailDataType & { items?: OrderItemType[] }) | undefined
const creator = order?.creator
const creatorName = creator ? `${creator.firstName} ${creator.lastName}`.trim() : ''
@@ -28,8 +31,12 @@ const OrderDetail: FC = () => {
return (
<div className="w-full min-h-screen bg-[#eceef6] p-6">
{/* Header */}
<header className="mb-6">
<span className="text-sm text-[#8C90A3]">سفارش #{order?.orderNumber}</span>
<header className="flex items-center justify-between mb-6">
<BackButton to={Paths.order.list} />
<div className="flex items-center gap-3">
<RefreshButton onClick={() => refetch()} isLoading={isFetching} />
<span className="text-sm text-[#8C90A3]">سفارش #{order?.orderNumber}</span>
</div>
</header>
{/* اطلاعات سفارش */}
+6 -1
View File
@@ -1,4 +1,5 @@
import Button from '@/components/Button'
import RefreshButton from '@/components/RefreshButton'
import UploadBox from '@/components/UploadBox'
import { Microphone, Paperclip2 } from 'iconsax-react'
import { useState, type FC } from 'react'
@@ -20,7 +21,7 @@ const TicketSection: FC = () => {
const [message, setMessage] = useState('')
const [files, setFiles] = useState<File[]>([])
const addTicket = useAddTicket()
const { data, refetch } = useGetTickets(id!)
const { data, refetch, isFetching } = useGetTickets(id!)
const singleUpload = useSingleUpload()
const multiUpload = useMultiUpload()
@@ -88,6 +89,10 @@ const TicketSection: FC = () => {
return (
<div className="bg-white rounded-2xl p-6">
<div className="flex items-center justify-between mb-2">
<h2 className="text-lg font-light">گفتگو</h2>
<RefreshButton onClick={() => refetch()} isLoading={isFetching} />
</div>
{
data?.data?.map((item) => {
if (item.user)