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='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,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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()}
|
||||||
|
|||||||
@@ -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",
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user