order progressing
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
import { type FC } from 'react';
|
import { type FC } from 'react';
|
||||||
import { Eye } from 'iconsax-react';
|
import { Eye } from 'iconsax-react';
|
||||||
|
import { Link } from 'react-router-dom';
|
||||||
import StatusCircle from '@/components/StatusCircle';
|
import StatusCircle from '@/components/StatusCircle';
|
||||||
|
import { Paths } from '@/config/Paths';
|
||||||
import { type Order, type OrderStatus } from './types/OrderTypes';
|
import { type Order, type OrderStatus } from './types/OrderTypes';
|
||||||
|
|
||||||
// کامپوننت رندر شماره سفارش
|
// کامپوننت رندر شماره سفارش
|
||||||
@@ -37,7 +39,7 @@ export const OrderDateRenderer: FC<{ order: Order }> = ({ order }) => {
|
|||||||
|
|
||||||
// کامپوننت رندر وضعیت سفارش
|
// کامپوننت رندر وضعیت سفارش
|
||||||
export const OrderStatusRenderer: FC<{ order: Order }> = ({ order }) => {
|
export const OrderStatusRenderer: FC<{ order: Order }> = ({ order }) => {
|
||||||
const getStatusConfig = (status: OrderStatus) => {
|
const getStatusConfig = (status: OrderStatus | string) => {
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case 'در حال طراحی':
|
case 'در حال طراحی':
|
||||||
return {
|
return {
|
||||||
@@ -93,14 +95,11 @@ export const OrderMessagesRenderer: FC<{ order: Order }> = ({ order }) => {
|
|||||||
// کامپوننت رندر آیکون مشاهده
|
// کامپوننت رندر آیکون مشاهده
|
||||||
export const OrderViewRenderer: FC<{ order: Order }> = ({ order }) => {
|
export const OrderViewRenderer: FC<{ order: Order }> = ({ order }) => {
|
||||||
return (
|
return (
|
||||||
<button
|
<Link
|
||||||
className="p-1 hover:bg-gray-100 rounded-full transition-colors"
|
to={Paths.orderDetails + order.id}
|
||||||
onClick={() => {
|
className="p-1 hover:bg-gray-100 rounded-full transition-colors inline-block"
|
||||||
// اینجا میتوانید منطق مشاهده جزئیات را اضافه کنید
|
|
||||||
console.log('View order:', order.id);
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
<Eye color='black' size={16} />
|
<Eye color="black" size={16} />
|
||||||
</button>
|
</Link>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,7 +2,10 @@ import Table from '@/components/Table'
|
|||||||
import { type FC } from 'react'
|
import { type FC } from 'react'
|
||||||
import { type ColumnType } from '@/components/types/TableTypes'
|
import { type ColumnType } from '@/components/types/TableTypes'
|
||||||
import { type Order } from './types/OrderTypes'
|
import { type Order } from './types/OrderTypes'
|
||||||
import { ordersData } from './data/ordersData'
|
import { useGetMyOrders } from '@/pages/order/hooks/useOrderData'
|
||||||
|
import { TabMyRequestsEnum } from '@/pages/order/enum/OrderEnum'
|
||||||
|
import { orderStatusLabels } from '@/pages/order/constants/statusLabels'
|
||||||
|
import moment from 'moment-jalaali'
|
||||||
import {
|
import {
|
||||||
OrderNumberRenderer,
|
OrderNumberRenderer,
|
||||||
OrderTitleRenderer,
|
OrderTitleRenderer,
|
||||||
@@ -11,8 +14,24 @@ import {
|
|||||||
OrderMessagesRenderer,
|
OrderMessagesRenderer,
|
||||||
OrderViewRenderer
|
OrderViewRenderer
|
||||||
} from './OrderTableComponents'
|
} from './OrderTableComponents'
|
||||||
|
import type { OrderType } from '@/pages/order/type/Types'
|
||||||
|
|
||||||
|
const mapOrderToRow = (order: OrderType): Order => ({
|
||||||
|
id: order.id,
|
||||||
|
number: String(order.orderNumber ?? order.id),
|
||||||
|
title: order.title,
|
||||||
|
creationDate: {
|
||||||
|
gregorian: moment(order.createdAt).format('YYYY-MM-DD'),
|
||||||
|
persian: moment(order.createdAt).format('jYYYY/jMM/jDD')
|
||||||
|
},
|
||||||
|
status: orderStatusLabels[order.status] ?? order.status,
|
||||||
|
unreadMessages: 0
|
||||||
|
})
|
||||||
|
|
||||||
const Orders: FC = () => {
|
const Orders: FC = () => {
|
||||||
|
const { data, isLoading } = useGetMyOrders(1, TabMyRequestsEnum.IN_PROGRESS)
|
||||||
|
const orders: Order[] = (data?.data ?? []).map(mapOrderToRow)
|
||||||
|
|
||||||
const columns: ColumnType<Order>[] = [
|
const columns: ColumnType<Order>[] = [
|
||||||
{
|
{
|
||||||
title: 'شماره',
|
title: 'شماره',
|
||||||
@@ -55,7 +74,8 @@ const Orders: FC = () => {
|
|||||||
|
|
||||||
<Table<Order>
|
<Table<Order>
|
||||||
columns={columns}
|
columns={columns}
|
||||||
data={ordersData}
|
data={orders}
|
||||||
|
isLoading={isLoading}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ export interface Order extends RowDataType {
|
|||||||
gregorian: string;
|
gregorian: string;
|
||||||
persian: string;
|
persian: string;
|
||||||
};
|
};
|
||||||
status: OrderStatus;
|
status: OrderStatus | string;
|
||||||
unreadMessages: number;
|
unreadMessages: number;
|
||||||
[key: string]: unknown;
|
[key: string]: unknown;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,25 +5,7 @@ import moment from 'moment-jalaali'
|
|||||||
import { useGetOrderDetails } from './hooks/useOrderData'
|
import { useGetOrderDetails } from './hooks/useOrderData'
|
||||||
import TicketSection from './components/TicketSection'
|
import TicketSection from './components/TicketSection'
|
||||||
import { getFileNameAndExtensionFromUrl } from '@/config/func'
|
import { getFileNameAndExtensionFromUrl } from '@/config/func'
|
||||||
import { RequestStatusEnum } from './enum/OrderEnum'
|
import { orderStatusLabels } from './constants/statusLabels'
|
||||||
|
|
||||||
const statusLabels: Record<string, string> = {
|
|
||||||
[RequestStatusEnum.CREATED]: 'ایجاد شده',
|
|
||||||
[RequestStatusEnum.INVOICED]: 'فاکتور شده',
|
|
||||||
[RequestStatusEnum.WAITING_to_CONFIRM_INVOICE]: 'در انتظار تایید فاکتور',
|
|
||||||
[RequestStatusEnum.DESIGN_INITIATED]: 'شروع طراحی',
|
|
||||||
[RequestStatusEnum.DESIGN_FINISHED]: 'طراحی تمام شده',
|
|
||||||
[RequestStatusEnum.DESIGN_REVISION]: 'بازنگری طراحی',
|
|
||||||
[RequestStatusEnum.READY_TO_PRINTING]: 'آماده چاپ',
|
|
||||||
[RequestStatusEnum.IN_PRINTING]: 'در حال چاپ',
|
|
||||||
[RequestStatusEnum.AFTER_PRINT_COVER]: 'پس از چاپ جلد',
|
|
||||||
[RequestStatusEnum.AFTER_PRINT_CARTONING]: 'کارتنسازی',
|
|
||||||
[RequestStatusEnum.AFTER_PRINT_BOXING]: 'بستهبندی',
|
|
||||||
[RequestStatusEnum.READY_FOR_DELIVERY]: 'آماده ارسال',
|
|
||||||
[RequestStatusEnum.DELIVERED]: 'تحویل شده',
|
|
||||||
[RequestStatusEnum.FINISHED]: 'پایان یافته',
|
|
||||||
[RequestStatusEnum.CANCELED]: 'لغو شده',
|
|
||||||
}
|
|
||||||
|
|
||||||
const OrderDetail: FC = () => {
|
const OrderDetail: FC = () => {
|
||||||
const { id } = useParams()
|
const { id } = useParams()
|
||||||
@@ -84,7 +66,7 @@ const OrderDetail: FC = () => {
|
|||||||
<div className="text-xs text-desc">وضعیت:</div>
|
<div className="text-xs text-desc">وضعیت:</div>
|
||||||
<div className="text-sm font-medium text-black">
|
<div className="text-sm font-medium text-black">
|
||||||
{order?.status
|
{order?.status
|
||||||
? statusLabels[order.status] ?? order.status
|
? orderStatusLabels[order.status] ?? order.status
|
||||||
: '-'}
|
: '-'}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
import { RequestStatusEnum } from '../enum/OrderEnum'
|
||||||
|
|
||||||
|
export const orderStatusLabels: Record<string, string> = {
|
||||||
|
[RequestStatusEnum.CREATED]: 'ایجاد شده',
|
||||||
|
[RequestStatusEnum.INVOICED]: 'فاکتور شده',
|
||||||
|
[RequestStatusEnum.WAITING_to_CONFIRM_INVOICE]: 'در انتظار تایید فاکتور',
|
||||||
|
[RequestStatusEnum.DESIGN_INITIATED]: 'شروع طراحی',
|
||||||
|
[RequestStatusEnum.DESIGN_FINISHED]: 'طراحی تمام شده',
|
||||||
|
[RequestStatusEnum.DESIGN_REVISION]: 'بازنگری طراحی',
|
||||||
|
[RequestStatusEnum.READY_TO_PRINTING]: 'آماده چاپ',
|
||||||
|
[RequestStatusEnum.IN_PRINTING]: 'در حال چاپ',
|
||||||
|
[RequestStatusEnum.AFTER_PRINT_COVER]: 'پس از چاپ جلد',
|
||||||
|
[RequestStatusEnum.AFTER_PRINT_CARTONING]: 'کارتنسازی',
|
||||||
|
[RequestStatusEnum.AFTER_PRINT_BOXING]: 'بستهبندی',
|
||||||
|
[RequestStatusEnum.READY_FOR_DELIVERY]: 'آماده ارسال',
|
||||||
|
[RequestStatusEnum.DELIVERED]: 'تحویل شده',
|
||||||
|
[RequestStatusEnum.FINISHED]: 'پایان یافته',
|
||||||
|
[RequestStatusEnum.CANCELED]: 'لغو شده',
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user