order Status
This commit is contained in:
@@ -26,7 +26,7 @@ const OrderItem: React.FC<OrderItemProps> = ({ order, getStatusText }) => {
|
||||
|
||||
<div className='mb-4 sm:mb-6 mt-3 sm:mt-4'>
|
||||
<div className='text-xs sm:text-sm text-[#7F7F7F]'>
|
||||
وضعیت سفارش : <span className='text-black'>{getStatusText(order.status || 'pending')}</span>
|
||||
وضعیت سفارش : <span className='text-black'>{getStatusText(order.orderStatus)}</span>
|
||||
</div>
|
||||
<div className='text-xs dltr text-right sm:text-sm text-[#7F7F7F] mt-3 sm:mt-4'>
|
||||
تاریخ ثبت سفارش: <span className='text-black'> {moment(order.payment?.createdAt, 'jYYYY/jMM/jDD HH:mm:ss').format('jYYYY-jMM-jDD')}</span>
|
||||
|
||||
@@ -2,24 +2,26 @@
|
||||
import React from 'react'
|
||||
|
||||
interface Tab {
|
||||
key: 'Processing' | 'Delivered' | 'Cancelled' | 'Returned'
|
||||
key: 'Processing' | 'Delivered' | 'Cancelled' | 'Returned' | ''
|
||||
label: string
|
||||
count: number
|
||||
}
|
||||
|
||||
interface OrderTabsProps {
|
||||
activeTab: 'Processing' | 'Delivered' | 'Cancelled' | 'Returned'
|
||||
setActiveTab: (tab: 'Processing' | 'Delivered' | 'Cancelled' | 'Returned') => void
|
||||
activeTab: 'Processing' | 'Delivered' | 'Cancelled' | 'Returned' | ''
|
||||
setActiveTab: (tab: 'Processing' | 'Delivered' | 'Cancelled' | 'Returned' | '') => void
|
||||
tabCounts: {
|
||||
current: number
|
||||
delivered: number
|
||||
returned: number
|
||||
cancelled: number
|
||||
all: number
|
||||
}
|
||||
}
|
||||
|
||||
const OrderTabs: React.FC<OrderTabsProps> = ({ activeTab, setActiveTab, tabCounts }) => {
|
||||
const tabs: Tab[] = [
|
||||
{ key: '', label: 'همه', count: tabCounts.all },
|
||||
{ key: 'Processing', label: 'جاری', count: tabCounts.current },
|
||||
{ key: 'Delivered', label: 'تحویل شده', count: tabCounts.delivered },
|
||||
{ key: 'Returned', label: 'مرجوع شده', count: tabCounts.returned },
|
||||
|
||||
@@ -6,7 +6,7 @@ export const useGetOrders = (activeTab: string) => {
|
||||
return useQuery<OrdersResponse>({
|
||||
queryKey: ["orders", activeTab],
|
||||
queryFn: () => api.getOrders(activeTab),
|
||||
enabled: !!activeTab,
|
||||
enabled: activeTab !== undefined,
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import { NextPage } from 'next'
|
||||
import React, { useState } from 'react'
|
||||
import Menu from '../components/Menu'
|
||||
import { useGetOrders, useGetReturnOrder } from './hooks/useOrdersData'
|
||||
import { Order, ReturnOrder } from './types/Types'
|
||||
import { Order, ReturnOrder, OrdersStatus } from './types/Types'
|
||||
import OrderTabs from './components/OrderTabs'
|
||||
import OrderItem from './components/OrderItem'
|
||||
import ReturnOrderItem from './components/ReturnOrderItem'
|
||||
@@ -12,21 +12,21 @@ import ReturnOrderItem from './components/ReturnOrderItem'
|
||||
|
||||
const Orders: NextPage = () => {
|
||||
|
||||
const [activeTab, setActiveTab] = useState<'Processing' | 'Delivered' | 'Cancelled' | 'Returned'>('Processing')
|
||||
const [activeTab, setActiveTab] = useState<'Processing' | 'Delivered' | 'Cancelled' | 'Returned' | ''>('')
|
||||
const { data: ordersData } = useGetOrders(activeTab);
|
||||
const { data: returnOrderData } = useGetReturnOrder();
|
||||
|
||||
// تابع تبدیل وضعیت به فارسی
|
||||
const getStatusText = (status: string) => {
|
||||
const statusMap: { [key: string]: string } = {
|
||||
'pending': 'در انتظار پرداخت',
|
||||
'processing': 'در حال پردازش',
|
||||
'shipped': 'در حال ارسال',
|
||||
'delivered': 'تحویل شده',
|
||||
'returned': 'مرجوع شده',
|
||||
'cancelled': 'لغو شده'
|
||||
[OrdersStatus.wait_payment]: 'در انتظار پرداخت',
|
||||
[OrdersStatus.process_by_seller]: 'در حال پردازش',
|
||||
[OrdersStatus.shipped]: 'در حال ارسال',
|
||||
[OrdersStatus.Delivered]: 'تحویل شده',
|
||||
[OrdersStatus.Cancelled]: 'لغو شده',
|
||||
[OrdersStatus.cancelled_system]: 'لغو شده توسط سیستم'
|
||||
};
|
||||
return statusMap[status.toLowerCase()] || status;
|
||||
return statusMap[status] || status;
|
||||
};
|
||||
|
||||
console.log('ordersData', ordersData);
|
||||
@@ -42,6 +42,7 @@ const Orders: NextPage = () => {
|
||||
activeTab={activeTab}
|
||||
setActiveTab={setActiveTab}
|
||||
tabCounts={{
|
||||
all: 0,
|
||||
cancelled: ordersData?.results?.userOrderCount.cancelled || 0,
|
||||
current: ordersData?.results?.userOrderCount.processing || 0,
|
||||
delivered: ordersData?.results?.userOrderCount.delivered || 0,
|
||||
@@ -52,7 +53,6 @@ const Orders: NextPage = () => {
|
||||
{/* Orders List */}
|
||||
<div className='mt-4 sm:mt-6 space-y-3 sm:space-y-4'>
|
||||
{activeTab === 'Returned' ? (
|
||||
// نمایش سفارشات مرجوعی
|
||||
returnOrderData?.results?.returnOrders?.map((order: ReturnOrder) => (
|
||||
<ReturnOrderItem
|
||||
key={order._id}
|
||||
@@ -60,7 +60,6 @@ const Orders: NextPage = () => {
|
||||
/>
|
||||
))
|
||||
) : (
|
||||
// نمایش سفارشات عادی
|
||||
ordersData?.results?.orders?.map((order: Order) => (
|
||||
<OrderItem
|
||||
key={order._id.toString()}
|
||||
|
||||
@@ -181,6 +181,7 @@ export interface Order {
|
||||
postingDate: string | null;
|
||||
postingReceipt: string | null;
|
||||
status: string;
|
||||
orderStatus: string;
|
||||
}
|
||||
|
||||
export interface User {
|
||||
@@ -294,6 +295,7 @@ export interface UserOrderCount {
|
||||
delivered: number;
|
||||
cancelled: number;
|
||||
returned: number;
|
||||
shipped: number;
|
||||
}
|
||||
|
||||
export interface OrdersResponse {
|
||||
@@ -364,3 +366,12 @@ export interface ReturnOrdersResponse {
|
||||
returnOrders: ReturnOrder[];
|
||||
};
|
||||
}
|
||||
|
||||
export const enum OrdersStatus {
|
||||
wait_payment = "wait_payment",
|
||||
process_by_seller = "process_by_sellers",
|
||||
shipped = "shipped",
|
||||
cancelled_system = "cancelled_system",
|
||||
Cancelled = "cancelled",
|
||||
Delivered = "Delivered",
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user