order Status

This commit is contained in:
hamid zarghami
2025-11-06 10:01:14 +03:30
parent 91ab1717ac
commit 8df0024f88
5 changed files with 28 additions and 16 deletions
@@ -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,
});
};
+10 -11
View File
@@ -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()}
+11
View File
@@ -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",
}