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='mb-4 sm:mb-6 mt-3 sm:mt-4'>
<div className='text-xs sm:text-sm text-[#7F7F7F]'> <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>
<div className='text-xs dltr text-right sm:text-sm text-[#7F7F7F] mt-3 sm:mt-4'> <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> تاریخ ثبت سفارش: <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' import React from 'react'
interface Tab { interface Tab {
key: 'Processing' | 'Delivered' | 'Cancelled' | 'Returned' key: 'Processing' | 'Delivered' | 'Cancelled' | 'Returned' | ''
label: string label: string
count: number count: number
} }
interface OrderTabsProps { interface OrderTabsProps {
activeTab: 'Processing' | 'Delivered' | 'Cancelled' | 'Returned' activeTab: 'Processing' | 'Delivered' | 'Cancelled' | 'Returned' | ''
setActiveTab: (tab: 'Processing' | 'Delivered' | 'Cancelled' | 'Returned') => void setActiveTab: (tab: 'Processing' | 'Delivered' | 'Cancelled' | 'Returned' | '') => void
tabCounts: { tabCounts: {
current: number current: number
delivered: number delivered: number
returned: number returned: number
cancelled: number cancelled: number
all: number
} }
} }
const OrderTabs: React.FC<OrderTabsProps> = ({ activeTab, setActiveTab, tabCounts }) => { const OrderTabs: React.FC<OrderTabsProps> = ({ activeTab, setActiveTab, tabCounts }) => {
const tabs: Tab[] = [ const tabs: Tab[] = [
{ key: '', label: 'همه', count: tabCounts.all },
{ key: 'Processing', label: 'جاری', count: tabCounts.current }, { key: 'Processing', label: 'جاری', count: tabCounts.current },
{ key: 'Delivered', label: 'تحویل شده', count: tabCounts.delivered }, { key: 'Delivered', label: 'تحویل شده', count: tabCounts.delivered },
{ key: 'Returned', label: 'مرجوع شده', count: tabCounts.returned }, { key: 'Returned', label: 'مرجوع شده', count: tabCounts.returned },
@@ -6,7 +6,7 @@ export const useGetOrders = (activeTab: string) => {
return useQuery<OrdersResponse>({ return useQuery<OrdersResponse>({
queryKey: ["orders", activeTab], queryKey: ["orders", activeTab],
queryFn: () => api.getOrders(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 React, { useState } from 'react'
import Menu from '../components/Menu' import Menu from '../components/Menu'
import { useGetOrders, useGetReturnOrder } from './hooks/useOrdersData' 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 OrderTabs from './components/OrderTabs'
import OrderItem from './components/OrderItem' import OrderItem from './components/OrderItem'
import ReturnOrderItem from './components/ReturnOrderItem' import ReturnOrderItem from './components/ReturnOrderItem'
@@ -12,21 +12,21 @@ import ReturnOrderItem from './components/ReturnOrderItem'
const Orders: NextPage = () => { 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: ordersData } = useGetOrders(activeTab);
const { data: returnOrderData } = useGetReturnOrder(); const { data: returnOrderData } = useGetReturnOrder();
// تابع تبدیل وضعیت به فارسی // تابع تبدیل وضعیت به فارسی
const getStatusText = (status: string) => { const getStatusText = (status: string) => {
const statusMap: { [key: string]: string } = { const statusMap: { [key: string]: string } = {
'pending': 'در انتظار پرداخت', [OrdersStatus.wait_payment]: 'در انتظار پرداخت',
'processing': 'در حال پردازش', [OrdersStatus.process_by_seller]: 'در حال پردازش',
'shipped': 'در حال ارسال', [OrdersStatus.shipped]: 'در حال ارسال',
'delivered': 'تحویل شده', [OrdersStatus.Delivered]: 'تحویل شده',
'returned': 'مرجوع شده', [OrdersStatus.Cancelled]: 'لغو شده',
'cancelled': 'لغو شده' [OrdersStatus.cancelled_system]: 'لغو شده توسط سیستم'
}; };
return statusMap[status.toLowerCase()] || status; return statusMap[status] || status;
}; };
console.log('ordersData', ordersData); console.log('ordersData', ordersData);
@@ -42,6 +42,7 @@ const Orders: NextPage = () => {
activeTab={activeTab} activeTab={activeTab}
setActiveTab={setActiveTab} setActiveTab={setActiveTab}
tabCounts={{ tabCounts={{
all: 0,
cancelled: ordersData?.results?.userOrderCount.cancelled || 0, cancelled: ordersData?.results?.userOrderCount.cancelled || 0,
current: ordersData?.results?.userOrderCount.processing || 0, current: ordersData?.results?.userOrderCount.processing || 0,
delivered: ordersData?.results?.userOrderCount.delivered || 0, delivered: ordersData?.results?.userOrderCount.delivered || 0,
@@ -52,7 +53,6 @@ const Orders: NextPage = () => {
{/* Orders List */} {/* Orders List */}
<div className='mt-4 sm:mt-6 space-y-3 sm:space-y-4'> <div className='mt-4 sm:mt-6 space-y-3 sm:space-y-4'>
{activeTab === 'Returned' ? ( {activeTab === 'Returned' ? (
// نمایش سفارشات مرجوعی
returnOrderData?.results?.returnOrders?.map((order: ReturnOrder) => ( returnOrderData?.results?.returnOrders?.map((order: ReturnOrder) => (
<ReturnOrderItem <ReturnOrderItem
key={order._id} key={order._id}
@@ -60,7 +60,6 @@ const Orders: NextPage = () => {
/> />
)) ))
) : ( ) : (
// نمایش سفارشات عادی
ordersData?.results?.orders?.map((order: Order) => ( ordersData?.results?.orders?.map((order: Order) => (
<OrderItem <OrderItem
key={order._id.toString()} key={order._id.toString()}
+11
View File
@@ -181,6 +181,7 @@ export interface Order {
postingDate: string | null; postingDate: string | null;
postingReceipt: string | null; postingReceipt: string | null;
status: string; status: string;
orderStatus: string;
} }
export interface User { export interface User {
@@ -294,6 +295,7 @@ export interface UserOrderCount {
delivered: number; delivered: number;
cancelled: number; cancelled: number;
returned: number; returned: number;
shipped: number;
} }
export interface OrdersResponse { export interface OrdersResponse {
@@ -364,3 +366,12 @@ export interface ReturnOrdersResponse {
returnOrders: ReturnOrder[]; 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",
}